#include "DatabasesPage.h" #include "catalog/models/DatabasesTableModel.h" #include "SqlCodePreview.h" #include "SqlFormattingUtils.h" #include "catalog/PgDatabaseCatalog.h" #include "util/PgLabTableView.h" #include DatabasesPage::DatabasesPage(std::shared_ptr opendatabase, QWidget * parent) : QSplitter(Qt::Horizontal, parent) , m_databasesTableView(this, new DatabasesTableModel(opendatabase, this)) { auto tv = m_databasesTableView.tableView(); tv->setSelectionMode(QAbstractItemView::SingleSelection); // m_detailsTabs = new QTabWidget(this); addWidget(tv); // addWidget(m_detailsTabs); m_tableSql = new SqlCodePreview(this); // m_detailsTabs->addTab(m_tableSql, ""); addWidget(m_tableSql); connect(m_databasesTableView.tableView()->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &DatabasesPage::databaseSelectionChanged); } void DatabasesPage::setCatalog(std::shared_ptr cat) { m_catalog = cat; m_databasesTableView.dataModel()->setDatabaseList(cat); m_databasesTableView.tableView()->resizeColumnsToContents(); } void DatabasesPage::updateDatabaseDetails(const PgDatabase &db) { updateSqlTab(db); } void DatabasesPage::updateSqlTab(const PgDatabase &db) { QString drop_sql = db.dropSql(); QString create_sql = db.createSql(); create_sql += "\n\n-- set Privileges\n"; create_sql += db.grantSql() % "\n"; create_sql += "-- set comment\n"; create_sql += db.commentSql() % "\n"; m_tableSql->setPlainText(drop_sql % "\n\n" % create_sql); } void DatabasesPage::databaseSelectionChanged(const QModelIndex ¤t, const QModelIndex &previous) { if (current.row() == previous.row()) return; auto db = m_databasesTableView.rowItemForProxyIndex(current); updateDatabaseDetails(db); }