List of databases and roles moved to a "Server tab" within the database window.

Opened by selecting "Inspect Server" from the menu.
This commit is contained in:
eelke 2021-04-10 14:27:04 +02:00
parent 50cd865b1a
commit f0e5488ce0
12 changed files with 271 additions and 2 deletions

View file

@ -0,0 +1,32 @@
#include "DatabasesPage.h"
#include "DatabasesTableModel.h"
#include "catalog/PgDatabaseCatalog.h"
#include "PgLabTableView.h"
DatabasesPage::DatabasesPage(QWidget * parent)
: QSplitter(Qt::Horizontal, parent)
, m_databasesTableView(this)
{
auto tv = m_databasesTableView.tableView();
tv->setSelectionMode(QAbstractItemView::SingleSelection);
m_detailsTabs = new QTabWidget(this);
addWidget(tv);
addWidget(m_detailsTabs);
}
void DatabasesPage::setCatalog(std::shared_ptr<PgDatabaseCatalog> cat)
{
m_catalog = cat;
m_databasesTableView.dataModel()->setDatabaseList(cat);
m_databasesTableView.tableView()->resizeColumnsToContents();
}

View file

@ -0,0 +1,28 @@
#pragma once
#include <QSplitter>
#include <QWidget>
#include "PgLabTableViewHelper.h"
class DatabasesTableModel;
class PgDatabaseCatalog;
class PgLabTableView;
class QSortFilterProxyModel;
class DatabasesPage: public QSplitter {
public:
explicit DatabasesPage(QWidget * parent = nullptr);
void setCatalog(std::shared_ptr<PgDatabaseCatalog> cat);
void retranslateUi(bool all = true);
private:
PgLabTableViewHelper<DatabasesTableModel> m_databasesTableView;
QTabWidget *m_detailsTabs = nullptr;
std::shared_ptr<PgDatabaseCatalog> m_catalog;
};

View file

@ -0,0 +1,23 @@
#include "RolesPage.h"
#include "catalog/PgDatabaseCatalog.h"
#include "RolesTableModel.h"
RolesPage::RolesPage(QWidget * parent)
: QSplitter(Qt::Horizontal, parent)
, m_rolesTableView(this)
{
auto tv = m_rolesTableView.tableView();
tv->setSelectionMode(QAbstractItemView::SingleSelection);
m_detailsTabs = new QTabWidget(this);
addWidget(tv);
addWidget(m_detailsTabs);
}
void RolesPage::setCatalog(std::shared_ptr<PgDatabaseCatalog> cat)
{
m_catalog = cat;
m_rolesTableView.dataModel()->setRoleList(cat->authIds());
m_rolesTableView.tableView()->resizeColumnsToContents();
}

View file

@ -0,0 +1,26 @@
#pragma once
#include <QSplitter>
#include <QWidget>
#include "PgLabTableViewHelper.h"
class RolesTableModel;
class PgDatabaseCatalog;
class PgLabTableView;
class QSortFilterProxyModel;
class RolesPage: public QSplitter {
public:
RolesPage(QWidget * parent = nullptr);
void setCatalog(std::shared_ptr<PgDatabaseCatalog> cat);
private:
PgLabTableViewHelper<RolesTableModel> m_rolesTableView;
QTabWidget *m_detailsTabs = nullptr;
std::shared_ptr<PgDatabaseCatalog> m_catalog;
};

View file

@ -0,0 +1,44 @@
#include "ServerInspector.h"
#include "DatabasesPage.h"
#include "OpenDatabase.h"
#include "RolesPage.h"
#include <QTabWidget>
#include <QVBoxLayout>
ServerInspector::ServerInspector(std::shared_ptr<OpenDatabase> open_database, QWidget *parent)
: QWidget(parent)
{
m_databasesPage = new DatabasesPage(this);
m_rolesPage = new RolesPage(this);
m_tabWidget = new QTabWidget(this);
m_tabWidget->addTab(m_databasesPage, tr("Databases"));
m_tabWidget->addTab(m_rolesPage, tr("Roles"));
auto layout = new QVBoxLayout(this);
setLayout(layout);
layout->addWidget(m_tabWidget);
setCatalog(open_database->catalog());
retranslateUi(false);
}
void ServerInspector::setCatalog(std::shared_ptr<PgDatabaseCatalog> cat)
{
m_catalog = cat;
m_databasesPage->setCatalog(cat);
m_rolesPage->setCatalog(cat);
// m_tablesPage->setCatalog(cat);
// m_functionsPage->setCatalog(cat);
// m_sequencesPage->setCatalog(cat);
// m_typesPage->setCatalog(cat);
}
void ServerInspector::retranslateUi(bool )
{
// m_tabWidget->setTabText(m_tabWidget->indexOf(m_namespacePage),
// QApplication::translate("CatalogInspector", "Schemas", nullptr));
}

View file

@ -0,0 +1,29 @@
#pragma once
#include <QWidget>
#include <memory>
class DatabasesPage;
class OpenDatabase;
class PgDatabaseCatalog;
class QTabWidget;
class RolesPage;
class ServerInspector : public QWidget {
Q_OBJECT
public:
explicit ServerInspector(std::shared_ptr<OpenDatabase> open_database, QWidget *parent = nullptr);
void setCatalog(std::shared_ptr<PgDatabaseCatalog> cat);
private:
QTabWidget *m_tabWidget = nullptr;
DatabasesPage *m_databasesPage = nullptr;
RolesPage *m_rolesPage = nullptr;
std::shared_ptr<PgDatabaseCatalog> m_catalog;
void retranslateUi(bool all = true);
};