Introduced the MasterController as part of working on loading catalogue information.
Need a central piece to manage the catalogue data per database to prevent loading this multiple times. MasterController is now also used to enable reopening the connection manager from a query window after the connection manager has been closed.
This commit is contained in:
parent
b6d986051b
commit
6370050204
36 changed files with 769 additions and 71 deletions
80
querytab.cpp
80
querytab.cpp
|
|
@ -13,6 +13,7 @@
|
|||
#include "explaintreemodelitem.h"
|
||||
#include "json/json.h"
|
||||
#include "mainwindow.h"
|
||||
#include "pgtypecontainer.h"
|
||||
#include "util.h"
|
||||
|
||||
QueryTab::QueryTab(MainWindow *win, QWidget *parent) :
|
||||
|
|
@ -39,6 +40,9 @@ QueryTab::QueryTab(MainWindow *win, QWidget *parent) :
|
|||
ui->queryEdit->setFont(font);
|
||||
highlighter.reset(new SqlHighlighter(ui->queryEdit->document()));
|
||||
|
||||
ui->paramTableView->setModel(&m_paramList);
|
||||
ui->paramTableView->setItemDelegateForColumn(1, &m_typeDelegate);
|
||||
|
||||
connect(ui->queryEdit, &QPlainTextEdit::textChanged, this, &QueryTab::queryTextChanged);
|
||||
// m_stopwatch.setOutputLabel(ui->lblElapsedTime);
|
||||
// ui->lblElapsedTime->clear();
|
||||
|
|
@ -49,6 +53,7 @@ QueryTab::~QueryTab()
|
|||
{
|
||||
m_dbConnection.closeConnection();
|
||||
m_dbConnection.setStateCallback(nullptr);
|
||||
// delete m_pgTypes;
|
||||
delete ui;
|
||||
}
|
||||
|
||||
|
|
@ -279,26 +284,47 @@ void QueryTab::queryTextChanged()
|
|||
|
||||
void QueryTab::connectionStateChanged(ASyncDBConnection::State state)
|
||||
{
|
||||
QString status_str;
|
||||
switch (state) {
|
||||
case ASyncDBConnection::State::NotConnected:
|
||||
status_str = tr("Geen verbinding");
|
||||
break;
|
||||
case ASyncDBConnection::State::Connecting:
|
||||
status_str = tr("Verbinden");
|
||||
break;
|
||||
case ASyncDBConnection::State::Connected:
|
||||
status_str = tr("Verbonden");
|
||||
break;
|
||||
case ASyncDBConnection::State::QuerySend:
|
||||
status_str = tr("Query verstuurd");
|
||||
break;
|
||||
case ASyncDBConnection::State::CancelSend:
|
||||
status_str = tr("Query geannuleerd");
|
||||
break;
|
||||
// QString status_str;
|
||||
// switch (state) {
|
||||
// case ASyncDBConnection::State::NotConnected:
|
||||
// status_str = tr("Geen verbinding");
|
||||
// break;
|
||||
// case ASyncDBConnection::State::Connecting:
|
||||
// status_str = tr("Verbinden");
|
||||
// break;
|
||||
// case ASyncDBConnection::State::Connected:
|
||||
// status_str = tr("Verbonden");
|
||||
// break;
|
||||
// case ASyncDBConnection::State::QuerySend:
|
||||
// status_str = tr("Query verstuurd");
|
||||
// break;
|
||||
// case ASyncDBConnection::State::CancelSend:
|
||||
// status_str = tr("Query geannuleerd");
|
||||
// break;
|
||||
// }
|
||||
// addLog(status_str);
|
||||
|
||||
QTabWidget *tabwidget = getTabWidget();
|
||||
if (tabwidget) {
|
||||
int i = tabwidget->indexOf(this);
|
||||
QString iconname;
|
||||
switch (state) {
|
||||
case ASyncDBConnection::State::NotConnected:
|
||||
case ASyncDBConnection::State::Connecting:
|
||||
iconname = ":/icons/16x16/document_red.png";
|
||||
break;
|
||||
case ASyncDBConnection::State::Connected:
|
||||
iconname = ":/icons/16x16/document_green.png";
|
||||
break;
|
||||
case ASyncDBConnection::State::QuerySend:
|
||||
case ASyncDBConnection::State::CancelSend:
|
||||
iconname = ":/icons/16x16/document_yellow.png";
|
||||
break;
|
||||
}
|
||||
tabwidget->setTabIcon(i, QIcon(iconname));
|
||||
}
|
||||
addLog(status_str);
|
||||
// statusBar()->showMessage(status_str);
|
||||
|
||||
// statusBar()->showMessage(status_str);
|
||||
|
||||
// bool connected = ASyncDBConnection::State::Connected == state;
|
||||
// ui->actionExecute_SQL->setEnabled(connected);
|
||||
|
|
@ -409,11 +435,17 @@ std::string QueryTab::getCommand() const
|
|||
return command.toUtf8().data();
|
||||
}
|
||||
|
||||
void QueryTab::setTabCaption(const QString &caption, const QString &tooltip)
|
||||
QTabWidget *QueryTab::getTabWidget()
|
||||
{
|
||||
QWidget * w = parentWidget();
|
||||
QWidget * p = w->parentWidget();
|
||||
QTabWidget *tabwidget = dynamic_cast<QTabWidget*>(p);
|
||||
QTabWidget *tw = dynamic_cast<QTabWidget*>(p);
|
||||
return tw;
|
||||
}
|
||||
|
||||
void QueryTab::setTabCaption(const QString &caption, const QString &tooltip)
|
||||
{
|
||||
QTabWidget *tabwidget = getTabWidget();
|
||||
if (tabwidget) {
|
||||
int i = tabwidget->indexOf(this);
|
||||
if (i >= 0) {
|
||||
|
|
@ -437,7 +469,11 @@ void QueryTab::query_ready(std::shared_ptr<Pgsql::Result> dbres, qint64 elapsedm
|
|||
TuplesResultWidget *trw = new TuplesResultWidget;
|
||||
trw->setResult(result_model, elapsedms);
|
||||
resultList.push_back(trw);
|
||||
ui->tabWidget->addTab(trw, "Data");
|
||||
ui->tabWidget->addTab(trw, "Data");
|
||||
if (resultList.size() == 1)
|
||||
ui->tabWidget->setCurrentWidget(trw);
|
||||
|
||||
|
||||
// ui->lblRowCount->setText(rowcount_str);
|
||||
// resultModel.reset(new QueryResultModel(nullptr , dbres));
|
||||
// ui->ResultView->setModel(resultModel.get());
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue