diff --git a/src/DatabasesTableModel.cpp b/src/DatabasesTableModel.cpp index ccd42c6..864625e 100644 --- a/src/DatabasesTableModel.cpp +++ b/src/DatabasesTableModel.cpp @@ -1,15 +1,18 @@ #include "DatabasesTableModel.h" +#include "PgsqlDatabaseCatalogue.h" #include "PgDatabaseContainer.h" +#include "PgAuthIdContainer.h" DatabasesTableModel::DatabasesTableModel(QObject *parent) : QAbstractTableModel(parent) { } -void DatabasesTableModel::setDatabaseList(const PgDatabaseContainer* databases) +void DatabasesTableModel::setDatabaseList(const PgsqlDatabaseCatalogue* cat) { beginResetModel(); - m_databases = databases; + m_catalog = cat; + m_databases = cat->databases(); endResetModel(); } @@ -87,7 +90,10 @@ QVariant DatabasesTableModel::data(const QModelIndex &index, int role) const break; case DbaCol: // todo lookup role name - v = db.dba; + { + const auto& roles = m_catalog->authIds(); + v = QString("%1 (%2)").arg(roles->getByOid(db.dba).name).arg(db.dba); + } break; case EncodingCol: // todo lookup encoding name diff --git a/src/DatabasesTableModel.h b/src/DatabasesTableModel.h index daa19cc..55cde5d 100644 --- a/src/DatabasesTableModel.h +++ b/src/DatabasesTableModel.h @@ -4,6 +4,7 @@ #include class PgDatabaseContainer; +class PgsqlDatabaseCatalogue; /** Class for displaying the list of databases of a server in a QTableView * @@ -21,7 +22,7 @@ public: explicit DatabasesTableModel(QObject *parent); - void setDatabaseList(const PgDatabaseContainer* databases); + void setDatabaseList(const PgsqlDatabaseCatalogue* cat); // Header: QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; @@ -33,6 +34,7 @@ public: QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; private: + const PgsqlDatabaseCatalogue *m_catalog = nullptr; const PgDatabaseContainer *m_databases = nullptr; }; diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 6b4791b..4efb187 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -183,6 +183,22 @@ void MainWindow::closeEvent(QCloseEvent *event) } } } + + QString s; + for (const auto& e : files_to_save) { + s += e + "\n"; + } + + QMessageBox msgBox; + msgBox.setIcon(QMessageBox::Warning); + msgBox.setText("The following documents need to be saved"); + msgBox.setInformativeText(s); + msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); + msgBox.setDefaultButton(QMessageBox::Cancel); + //int ret = + msgBox.exec(); + + // if (!m_queryTextChanged || continueWithoutSaving()) { // event->accept(); // } diff --git a/src/ServerWindow.cpp b/src/ServerWindow.cpp index 53dcf02..a3f05ae 100644 --- a/src/ServerWindow.cpp +++ b/src/ServerWindow.cpp @@ -32,7 +32,7 @@ void ServerWindow::setConfig(const ConnectionConfig &config) m_database = res.get(); auto cat = m_database->catalogue(); if (cat) { - m_databasesModel->setDatabaseList(cat->databases()); + m_databasesModel->setDatabaseList(cat); m_rolesModel->setRoleList(cat->authIds()); } }