2017-08-23 13:27:23 +02:00
|
|
|
|
#include "ConnectionManagerWindow.h"
|
|
|
|
|
|
#include "ui_ConnectionManagerWindow.h"
|
2017-02-01 19:59:07 +01:00
|
|
|
|
//#include "mainwindow.h"
|
2017-02-01 18:01:02 +01:00
|
|
|
|
#include "MasterController.h"
|
2017-01-14 22:03:58 +01:00
|
|
|
|
#include <QDataWidgetMapper>
|
2017-01-15 21:01:40 +01:00
|
|
|
|
#include <QMessageBox>
|
2017-01-14 22:03:58 +01:00
|
|
|
|
#include <QStandardItemModel>
|
2017-08-23 13:27:23 +02:00
|
|
|
|
#include "ConnectionListModel.h"
|
2017-01-14 20:07:12 +01:00
|
|
|
|
|
2018-11-04 11:26:20 +01:00
|
|
|
|
|
|
|
|
|
|
#include <QDir>
|
|
|
|
|
|
#include <QStandardPaths>
|
|
|
|
|
|
|
|
|
|
|
|
QString pskFileName()
|
|
|
|
|
|
{
|
|
|
|
|
|
QString path = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
|
|
|
|
|
|
QDir dir(path);
|
|
|
|
|
|
if (!dir.exists()) {
|
|
|
|
|
|
dir.mkpath(".");
|
|
|
|
|
|
}
|
|
|
|
|
|
path += "/psk.ini";
|
|
|
|
|
|
return path;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-02-01 18:01:02 +01:00
|
|
|
|
ConnectionManagerWindow::ConnectionManagerWindow(MasterController *master, QWidget *parent)
|
2017-01-14 20:07:12 +01:00
|
|
|
|
: QMainWindow(parent)
|
|
|
|
|
|
, ui(new Ui::ConnectionManagerWindow)
|
2017-02-01 18:01:02 +01:00
|
|
|
|
, m_masterController(master)
|
2019-08-19 10:05:05 +02:00
|
|
|
|
, m_connectionController(master->connectionController())
|
2017-01-14 20:07:12 +01:00
|
|
|
|
{
|
|
|
|
|
|
ui->setupUi(this);
|
2019-08-19 10:05:05 +02:00
|
|
|
|
ui->listView->setModel(m_connectionController->getConnectionListModel());
|
2017-01-14 20:07:12 +01:00
|
|
|
|
|
2017-01-15 12:27:36 +01:00
|
|
|
|
setupWidgetMappings();
|
2017-01-14 22:03:58 +01:00
|
|
|
|
|
2017-01-14 20:07:12 +01:00
|
|
|
|
connect(ui->listView->selectionModel(),
|
|
|
|
|
|
SIGNAL(currentChanged(QModelIndex,QModelIndex)),
|
|
|
|
|
|
this, SLOT(on_currentChanged(QModelIndex,QModelIndex)));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2017-01-14 22:03:58 +01:00
|
|
|
|
|
2017-01-14 20:07:12 +01:00
|
|
|
|
ConnectionManagerWindow::~ConnectionManagerWindow()
|
|
|
|
|
|
{
|
|
|
|
|
|
delete ui;
|
2017-01-14 22:03:58 +01:00
|
|
|
|
delete m_mapper;
|
2017-01-14 20:07:12 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ConnectionManagerWindow::on_actionAdd_Connection_triggered()
|
|
|
|
|
|
{
|
2019-08-19 10:05:05 +02:00
|
|
|
|
auto clm = m_connectionController->getConnectionListModel();
|
2017-02-26 19:29:50 +01:00
|
|
|
|
clm->newItem();
|
2017-01-18 20:48:31 +01:00
|
|
|
|
|
|
|
|
|
|
// Select the new row
|
2017-02-01 18:01:02 +01:00
|
|
|
|
auto idx = clm->index(clm->rowCount() - 1, 0);
|
2017-01-18 20:48:31 +01:00
|
|
|
|
ui->listView->selectionModel()->setCurrentIndex(idx, QItemSelectionModel::Select);
|
2017-01-14 20:07:12 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ConnectionManagerWindow::on_currentChanged(const QModelIndex ¤t,
|
2017-02-02 07:22:54 +01:00
|
|
|
|
const QModelIndex &)
|
2017-01-14 20:07:12 +01:00
|
|
|
|
{
|
|
|
|
|
|
int currow = current.row();
|
2019-08-19 10:05:05 +02:00
|
|
|
|
auto clm = m_connectionController->getConnectionListModel();
|
2018-11-04 11:26:20 +01:00
|
|
|
|
if (prevSelection)
|
|
|
|
|
|
clm->save(*prevSelection);
|
2017-01-14 22:03:58 +01:00
|
|
|
|
m_mapper->setCurrentIndex(currow);
|
2018-11-04 11:26:20 +01:00
|
|
|
|
if (currow >= 0)
|
|
|
|
|
|
prevSelection = static_cast<size_t>(currow);
|
|
|
|
|
|
else
|
|
|
|
|
|
prevSelection.reset();
|
2017-01-14 20:07:12 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ConnectionManagerWindow::on_actionDelete_connection_triggered()
|
|
|
|
|
|
{
|
|
|
|
|
|
auto ci = ui->listView->selectionModel()->currentIndex();
|
|
|
|
|
|
if (ci.isValid()) {
|
2018-04-30 20:17:44 +02:00
|
|
|
|
auto res = QMessageBox::question(this, "pglab",
|
|
|
|
|
|
tr("Are you sure you want to remove this connection?"), QMessageBox::Yes, QMessageBox::No);
|
|
|
|
|
|
if (res == QMessageBox::Yes) {
|
2019-08-19 10:05:05 +02:00
|
|
|
|
auto clm = m_connectionController->getConnectionListModel();
|
2018-04-30 20:17:44 +02:00
|
|
|
|
clm->removeRow(ci.row());
|
|
|
|
|
|
}
|
2017-01-14 20:07:12 +01:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2017-01-14 22:03:58 +01:00
|
|
|
|
|
|
|
|
|
|
|
2017-01-15 12:27:36 +01:00
|
|
|
|
void ConnectionManagerWindow::setupWidgetMappings()
|
2017-01-14 22:03:58 +01:00
|
|
|
|
{
|
2019-08-19 10:05:05 +02:00
|
|
|
|
auto clm = m_connectionController->getConnectionListModel();
|
2017-01-15 12:27:36 +01:00
|
|
|
|
m_mapper = new QDataWidgetMapper(this);
|
2017-02-01 18:01:02 +01:00
|
|
|
|
m_mapper->setModel(clm);
|
2017-01-15 12:27:36 +01:00
|
|
|
|
m_mapper->addMapping(ui->edtName, 1);
|
|
|
|
|
|
m_mapper->addMapping(ui->edtHost, 2);
|
|
|
|
|
|
m_mapper->addMapping(ui->spinPort, 3);
|
|
|
|
|
|
m_mapper->addMapping(ui->edtUser, 4);
|
|
|
|
|
|
m_mapper->addMapping(ui->edtDbname, 6);
|
|
|
|
|
|
m_mapper->toFirst();
|
2017-01-14 22:03:58 +01:00
|
|
|
|
}
|
2017-01-15 21:01:40 +01:00
|
|
|
|
|
|
|
|
|
|
void ConnectionManagerWindow::on_actionConnect_triggered()
|
|
|
|
|
|
{
|
|
|
|
|
|
auto ci = ui->listView->selectionModel()->currentIndex();
|
2018-11-04 11:26:20 +01:00
|
|
|
|
if (ci.isValid()) {
|
|
|
|
|
|
auto r = static_cast<size_t>(ci.row());
|
2019-08-19 10:05:05 +02:00
|
|
|
|
m_connectionController->openSqlWindowForConnection(r);
|
2018-11-04 11:26:20 +01:00
|
|
|
|
}
|
2017-01-15 21:01:40 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ConnectionManagerWindow::on_actionQuit_application_triggered()
|
|
|
|
|
|
{
|
|
|
|
|
|
auto res = QMessageBox::question(this, "pglab",
|
|
|
|
|
|
tr("Close ALL windows?"), QMessageBox::Yes, QMessageBox::No);
|
|
|
|
|
|
if (res == QMessageBox::Yes) {
|
|
|
|
|
|
QApplication::quit();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2017-02-01 18:01:02 +01:00
|
|
|
|
|
|
|
|
|
|
void ConnectionManagerWindow::on_actionBackup_database_triggered()
|
|
|
|
|
|
{
|
2017-03-05 21:23:36 +01:00
|
|
|
|
auto ci = ui->listView->selectionModel()->currentIndex();
|
2019-08-19 10:05:05 +02:00
|
|
|
|
m_connectionController->openBackupDlgForConnection(ci.row());
|
2017-02-01 18:01:02 +01:00
|
|
|
|
}
|
2017-02-12 08:13:38 +01:00
|
|
|
|
|
|
|
|
|
|
void ConnectionManagerWindow::on_actionManage_server_triggered()
|
|
|
|
|
|
{
|
|
|
|
|
|
auto ci = ui->listView->selectionModel()->currentIndex();
|
2019-08-19 10:05:05 +02:00
|
|
|
|
m_connectionController->openServerWindowForConnection(ci.row());
|
2017-02-12 08:13:38 +01:00
|
|
|
|
}
|
2017-02-26 19:29:50 +01:00
|
|
|
|
|
2019-08-19 19:32:40 +02:00
|
|
|
|
void ConnectionManagerWindow::on_listView_activated(const QModelIndex &index)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (index.isValid()) {
|
|
|
|
|
|
auto r = static_cast<size_t>(index.row());
|
|
|
|
|
|
m_connectionController->openSqlWindowForConnection(r);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|