From 38fc9398609e2770bf227d41fd8f359214c9e498 Mon Sep 17 00:00:00 2001 From: eelke Date: Sun, 4 Jul 2021 20:24:05 +0200 Subject: [PATCH] cleanup DatabaseWindow.cpp --- pglab/DatabaseWindow.cpp | 95 +++++++++++++++++++--------------------- pglab/DatabaseWindow.h | 5 +++ 2 files changed, 49 insertions(+), 51 deletions(-) diff --git a/pglab/DatabaseWindow.cpp b/pglab/DatabaseWindow.cpp index 0877411..b10dbed 100644 --- a/pglab/DatabaseWindow.cpp +++ b/pglab/DatabaseWindow.cpp @@ -380,24 +380,26 @@ void DatabaseWindow::newCatalogInspectorPage(QString caption, NamespaceFilter fi void DatabaseWindow::newServerInspectorPage() { auto si = new ServerInspector(m_database, this); -// si->addAction(actionRefreshCatalog); addPage(si, tr("Server")); - } void DatabaseWindow::closeTab(int index) { - QWidget *widget = m_tabWidget->widget(index); + if (index < 0) + return; - auto mp = dynamic_cast(widget); - if (mp) { - if (mp->CanClose(true)) { - m_tabWidget->removeTab(index); - } - } - else if (index >= 0) { + if (canCloseTab(index)) m_tabWidget->removeTab(index); - } +} + +bool DatabaseWindow::canCloseTab(int index) const +{ + QWidget *widget = m_tabWidget->widget(index); + auto mp = dynamic_cast(widget); + if (mp) { + return mp->CanClose(true); + } + return true; } void DatabaseWindow::openSqlFile(QString file_name) @@ -471,75 +473,73 @@ void DatabaseWindow::on_actionClose_triggered() void DatabaseWindow::on_actionCopy_triggered() { QWidget *w = QApplication::focusWidget(); - QTableView *tv = dynamic_cast(w); - if (tv) { + if (w == nullptr) + return; + + QTableView *tv = dynamic_cast(w); + if (tv) copySelectionToClipboard(tv); - } - else { - const QMetaObject *meta = w->metaObject(); - int i = meta->indexOfMethod("copy()"); - if (i != -1) { - QMetaMethod method = meta->method(i); - method.invoke(w, Qt::AutoConnection); - } - } + else + InvokeCopyIfPresent(w); +} + +void DatabaseWindow::InvokeCopyIfPresent(QWidget *w) +{ + const QMetaObject *meta = w->metaObject(); + int i = meta->indexOfMethod("copy()"); + if (i != -1) { + QMetaMethod method = meta->method(i); + method.invoke(w, Qt::AutoConnection); + } } void DatabaseWindow::on_actionCopyAsCString_triggered() { auto query_tool = GetActiveQueryTool(); - if (query_tool) { + if (query_tool) query_tool->copyQueryAsCString(); - } } void DatabaseWindow::on_actionCopyAsRawCppString_triggered() { auto query_tool = GetActiveQueryTool(); - if (query_tool) { + if (query_tool) query_tool->copyQueryAsRawCppString(); - } } void DatabaseWindow::on_actionExecuteQuery_triggered() { auto query_tool = GetActiveQueryTool(); - if (query_tool) { + if (query_tool) query_tool->execute(); - } } void DatabaseWindow::on_actionExplain_triggered() { auto query_tool = GetActiveQueryTool(); - if (query_tool) { + if (query_tool) query_tool->explain(false); - } } void DatabaseWindow::on_actionExplainAnalyze_triggered() { auto query_tool = GetActiveQueryTool(); - if (query_tool) { + if (query_tool) query_tool->explain(true); - } } void DatabaseWindow::on_actionExportData_triggered() { auto query_tool = GetActiveQueryTool(); - if (query_tool) { + if (query_tool) query_tool->exportData(); - } } void DatabaseWindow::on_actionGenerateCode_triggered() { auto query_tool = GetActiveQueryTool(); - if (query_tool) { + if (query_tool) query_tool->generateCode(); - //newCodeGenPage - } } void DatabaseWindow::on_actionInspectInformationSchema_triggered() @@ -581,9 +581,8 @@ void DatabaseWindow::on_actionOpenSql_triggered() void DatabaseWindow::on_actionPasteLangString_triggered() { auto query_tool = GetActiveQueryTool(); - if (query_tool) { + if (query_tool) query_tool->pasteLangString(); - } } void DatabaseWindow::on_actionRefreshCatalog_triggered() @@ -594,33 +593,29 @@ void DatabaseWindow::on_actionRefreshCatalog_triggered() void DatabaseWindow::on_actionRefreshCrud_triggered() { auto crud = GetActiveCrud(); - if (crud) { + if (crud) crud->refresh(); - } } void DatabaseWindow::on_actionSaveSql_triggered() { auto query_tool = GetActiveQueryTool(); - if (query_tool) { + if (query_tool) query_tool->save(); - } } void DatabaseWindow::on_actionSaveSqlAs_triggered() { auto query_tool = GetActiveQueryTool(); - if (query_tool) { + if (query_tool) query_tool->saveAs(); - } } void DatabaseWindow::on_actionSaveCopyOfSqlAs_triggered() { auto query_tool = GetActiveQueryTool(); - if (query_tool) { + if (query_tool) query_tool->saveCopyAs(); - } } void DatabaseWindow::on_actionShowConnectionManager_triggered() @@ -657,9 +652,8 @@ void DatabaseWindow::setTitleForWidget(QWidget *widget, QString title, QString h void DatabaseWindow::setIconForWidget(QWidget *widget, QIcon icon) { int i = m_tabWidget->indexOf(widget); - if (i >= 0) { + if (i >= 0) m_tabWidget->setTabIcon(i, icon); - } } @@ -676,9 +670,8 @@ void DatabaseWindow::showStatusBarMessage(QString message) void DatabaseWindow::dragEnterEvent(QDragEnterEvent *event) { - if (event->mimeData()->hasUrls()) { + if (event->mimeData()->hasUrls()) event->acceptProposedAction(); - } } void DatabaseWindow::dropEvent(QDropEvent *event) diff --git a/pglab/DatabaseWindow.h b/pglab/DatabaseWindow.h index 846f85b..6094fad 100644 --- a/pglab/DatabaseWindow.h +++ b/pglab/DatabaseWindow.h @@ -128,8 +128,13 @@ private: void newCatalogInspectorPage(QString caption, NamespaceFilter filter); void newServerInspectorPage(); void closeTab(int index); + bool canCloseTab(int index) const; void openSqlFile(QString file_name); + /// Uses introspection to determine if the specific widget has a copy function. + /// If it has it invokes this method using reflection. + static void InvokeCopyIfPresent(QWidget *w); + private slots: void catalogLoaded(); void tableSelected(Oid tableoid);