summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2021-12-17 07:06:30 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2021-12-17 07:06:30 -0500
commit1fdc150116cad39aae5c5da407c3312b47a59e3a (patch)
tree123c79a4d7ad2d45781ba03ce939f7539fb428d8 /SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp
parentfeda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 (diff)
New upstream version 3.3.3+dfsg1.upstream/3.3.3+dfsg1
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp68
1 files changed, 41 insertions, 27 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp
index c7ec7d8..2181934 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/viewwindow.cpp
@@ -45,8 +45,8 @@ ViewWindow::ViewWindow(Db* db, QWidget* parent) :
{
newView();
init();
+ ui->dbCombo->setCurrentDb(db);
applyInitialTab();
- updateDbRelatedUiElements();
}
ViewWindow::ViewWindow(const ViewWindow& win) :
@@ -59,7 +59,6 @@ ViewWindow::ViewWindow(const ViewWindow& win) :
init();
initView();
applyInitialTab();
- updateDbRelatedUiElements();
}
ViewWindow::ViewWindow(QWidget* parent, Db* db, const QString& database, const QString& view) :
@@ -72,7 +71,6 @@ ViewWindow::ViewWindow(QWidget* parent, Db* db, const QString& database, const Q
init();
initView();
applyInitialTab();
- updateDbRelatedUiElements();
}
ViewWindow::~ViewWindow()
@@ -94,6 +92,9 @@ void ViewWindow::changeEvent(QEvent *e)
QVariant ViewWindow::saveSession()
{
+ if (!db || DBLIST->isTemporary(db))
+ return QVariant();
+
QHash<QString,QVariant> sessionValue;
sessionValue["view"] = view;
sessionValue["db"] = db->getName();
@@ -139,7 +140,6 @@ bool ViewWindow::restoreSession(const QVariant& sessionValue)
initView();
applyInitialTab();
- updateDbRelatedUiElements();
return true;
}
@@ -192,7 +192,7 @@ void ViewWindow::setupDefShortcuts()
bool ViewWindow::restoreSessionNextTime()
{
- return existingView;
+ return existingView && db && !DBLIST->isTemporary(db);
}
QToolBar* ViewWindow::getToolBar(int toolbar) const
@@ -253,6 +253,7 @@ void ViewWindow::init()
updateOutputColumnsVisibility();
updateTabsOrder();
+ createDbCombo();
updateFont();
refreshTriggers();
@@ -268,6 +269,13 @@ void ViewWindow::updateAfterInit()
ui->tabWidget->setTabEnabled(ui->tabWidget->indexOf(tab), existingView);
}
+void ViewWindow::createDbCombo()
+{
+ ui->dbCombo->setFixedWidth(100);
+ ui->dbCombo->setToolTip(tr("Database"));
+ connect(ui->dbCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(dbChanged()));
+}
+
void ViewWindow::newView()
{
existingView = false;
@@ -283,14 +291,16 @@ void ViewWindow::initView()
if (!createView)
return; // error occured while parsing ddl, window will be closed
+ ui->dbCombo->setCurrentDb(db);
if (existingView)
{
dataModel->setDb(db);
dataModel->setQuery(originalCreateView->select->detokenize());
dataModel->setView(view);
+ ui->dbCombo->setDisabled(true);
}
-
ui->queryEdit->setDb(db);
+
ui->queryEdit->setPlainText(createView->select->detokenize());
if (createView->columns.size() > 0)
@@ -301,8 +311,6 @@ void ViewWindow::initView()
updateDdlTab();
- ui->ddlEdit->setSqliteVersion(db->getVersion());
-
refreshTriggers();
connect(db, SIGNAL(dbObjectDeleted(QString,QString,DbObjectType)), this, SLOT(checkIfViewDeleted(QString,QString,DbObjectType)));
@@ -454,7 +462,7 @@ QString ViewWindow::getCurrentTrigger() const
int row = ui->triggersList->currentRow();
QTableWidgetItem* item = ui->triggersList->item(row, 0);
if (!item)
- return QString::null;
+ return QString();
return item->text();
}
@@ -475,7 +483,7 @@ QString ViewWindow::getCurrentDdl() const
columnsStr = "(" + collectColumnNames().join(", ") + ")";
return ddlTpl.arg(
- wrapObjIfNeeded(ui->nameEdit->text(), db->getDialect()),
+ wrapObjIfNeeded(ui->nameEdit->text()),
columnsStr,
ui->queryEdit->toPlainText()
);
@@ -492,10 +500,9 @@ QStringList ViewWindow::indexedColumnsToNamesOnly(const QList<SqliteIndexedColum
QStringList ViewWindow::collectColumnNames() const
{
- Dialect dialect = db ? db->getDialect() : Dialect::Sqlite3;
QStringList cols;
for (int row = 0; row < ui->outputColumnsTable->count(); row++)
- cols << wrapObjIfNeeded(ui->outputColumnsTable->item(row)->text(), dialect);
+ cols << wrapObjIfNeeded(ui->outputColumnsTable->item(row)->text());
return cols;
}
@@ -627,17 +634,20 @@ void ViewWindow::changesSuccessfullyCommitted()
database = createView->database;
QString oldView = view;
view = createView->view;
+
+ if (!existingView)
+ notifyInfo(tr("View '%1' was committed successfully.").arg(view));
+ else if (oldView.compare(view, Qt::CaseInsensitive) == 0)
+ notifyInfo(tr("Committed changes for view '%1' successfully.").arg(view));
+ else
+ notifyInfo(tr("Committed changes for view '%1' (named before '%2') successfully.").arg(view, oldView));
+
existingView = true;
initView();
updateQueryToolbarStatus();
updateWindowTitle();
updateAfterInit();
- if (oldView.compare(view, Qt::CaseInsensitive) == 0)
- notifyInfo(tr("Committed changes for view '%1' successfully.").arg(view));
- else
- notifyInfo(tr("Committed changes for view '%1' (named before '%2') successfully.").arg(view, oldView));
-
DBTREE->refreshSchema(db);
}
@@ -675,6 +685,7 @@ void ViewWindow::prevTab()
void ViewWindow::dbClosedFinalCleanup()
{
+ db = nullptr;
dataModel->setDb(nullptr);
ui->queryEdit->setDb(nullptr);
structureExecutor->setDb(nullptr);
@@ -827,13 +838,6 @@ void ViewWindow::generateOutputColumns()
}
}
-void ViewWindow::updateDbRelatedUiElements()
-{
- bool enabled = db->getDialect() == Dialect::Sqlite3;
- outputColumnsCheck->setVisible(enabled);
- outputColumnsSeparator->setVisible(enabled);
-}
-
void ViewWindow::updateTabsOrder()
{
tabsMoving = true;
@@ -927,7 +931,6 @@ void ViewWindow::parseDdl()
{
createView = SqliteCreateViewPtr::create();
createView->view = view;
- createView->dialect = db->getDialect();
}
originalCreateView = SqliteCreateViewPtr::create(*createView);
@@ -972,7 +975,7 @@ bool ViewWindow::validate(bool skipWarnings)
// Rebuilding createView statement and validating it on the fly.
QString ddl = getCurrentDdl();
- Parser parser(db->getDialect());
+ Parser parser;
if (!parser.parse(ddl) || parser.getQueries().size() < 1)
{
notifyError(tr("The SELECT statement could not be parsed. Please correct the query and retry.\nDetails: %1").arg(parser.getErrorString()));
@@ -1005,7 +1008,7 @@ void ViewWindow::executeStructureChanges()
}
else
{
- Parser parser(db->getDialect());
+ Parser parser;
if (!parser.parse(theDdl))
{
qCritical() << "Could not re-parse the view for executing it:" << parser.getErrorString();
@@ -1069,3 +1072,14 @@ void ViewWindow::updateFont()
view->verticalHeader()->setDefaultSectionSize(fm.height() + 4);
}
}
+
+void ViewWindow::dbChanged()
+{
+ disconnect(db, SIGNAL(dbObjectDeleted(QString,QString,DbObjectType)), this, SLOT(checkIfViewDeleted(QString,QString,DbObjectType)));
+
+ db = ui->dbCombo->currentDb();
+ dataModel->setDb(db);
+ ui->queryEdit->setDb(db);
+
+ connect(db, SIGNAL(dbObjectDeleted(QString,QString,DbObjectType)), this, SLOT(checkIfViewDeleted(QString,QString,DbObjectType)));
+}