From f5eab84c244382ad9bec921dc0f0e71ee1aa6171 Mon Sep 17 00:00:00 2001 From: Eelke Klein Date: Sat, 14 Jan 2017 20:07:12 +0100 Subject: [PATCH] Working on the connection manager. Made a list model for displaying them in a list. Also added controles to edit the most important properties. --- Ivory.pro | 18 ++- connectionconfig.cpp | 202 +++++++++++++++++++++++++++++++ connectionconfig.h | 82 +++++++++++++ connectionlistmodel.cpp | 89 ++++++++++++++ connectionlistmodel.h | 35 ++++++ connectionmanagerwindow.cpp | 57 +++++++++ connectionmanagerwindow.h | 30 +++++ connectionmanagerwindow.ui | 190 ++++++++++++++++++++++++++++++ databasewindow.cpp | 14 +++ databasewindow.h | 22 ++++ databasewindow.ui | 48 ++++++++ main.cpp | 14 ++- ui_connectionmanagerwindow.h | 222 +++++++++++++++++++++++++++++++++++ ui_databasewindow.h | 86 ++++++++++++++ 14 files changed, 1100 insertions(+), 9 deletions(-) create mode 100644 connectionconfig.cpp create mode 100644 connectionconfig.h create mode 100644 connectionlistmodel.cpp create mode 100644 connectionlistmodel.h create mode 100644 connectionmanagerwindow.cpp create mode 100644 connectionmanagerwindow.h create mode 100644 connectionmanagerwindow.ui create mode 100644 databasewindow.cpp create mode 100644 databasewindow.h create mode 100644 databasewindow.ui create mode 100644 ui_connectionmanagerwindow.h create mode 100644 ui_databasewindow.h diff --git a/Ivory.pro b/Ivory.pro index 3dd848c..f5c2af8 100644 --- a/Ivory.pro +++ b/Ivory.pro @@ -13,7 +13,7 @@ TEMPLATE = app INCLUDEPATH += C:\prog\include DEFINES += WIN32_LEAN_AND_MEAN NOMINMAX -LIBS += c:\prog\lib\libpq.lib User32.lib +LIBS += c:\prog\lib\libpq.lib User32.lib ws2_32.lib SOURCES += main.cpp\ mainwindow.cpp \ @@ -29,7 +29,11 @@ SOURCES += main.cpp\ tsqueue.cpp \ win32event.cpp \ waithandlelist.cpp \ - csvwriter.cpp + csvwriter.cpp \ + databasewindow.cpp \ + connectionmanagerwindow.cpp \ + connectionlistmodel.cpp \ + connectionconfig.cpp HEADERS += mainwindow.h \ serverproperties.h \ @@ -43,7 +47,13 @@ HEADERS += mainwindow.h \ tsqueue.h \ win32event.h \ waithandlelist.h \ - csvwriter.h + csvwriter.h \ + databasewindow.h \ + connectionmanagerwindow.h \ + connectionlistmodel.h \ + connectionconfig.h FORMS += mainwindow.ui \ - serverproperties.ui + serverproperties.ui \ + databasewindow.ui \ + connectionmanagerwindow.ui diff --git a/connectionconfig.cpp b/connectionconfig.cpp new file mode 100644 index 0000000..5d4ba51 --- /dev/null +++ b/connectionconfig.cpp @@ -0,0 +1,202 @@ +#include "connectionconfig.h" +#include + +namespace { + + struct { + SslMode mode; + const char* string; + } SslModeStringTable[] = { + { SslMode::disable, "disable" }, + { SslMode::allow, "allow" }, + { SslMode::prefer, "prefer" }, + { SslMode::require, "require" }, + { SslMode::verify_ca, "verify-ca" }, + { SslMode::verify_full, "verify-full" } + }; + + inline const char *valuePtr(const std::string &v) + { + return v.empty() ? nullptr : v.c_str(); + } + +} // end unnamed namespace + +std::string SslModeToString(SslMode sm) +{ + std::string result; + for (auto e : SslModeStringTable) { + if (e.mode == sm) { + result = e.string; + } + } + return result; +} + +SslMode StringToSslMode(std::string s) +{ + SslMode result = SslMode::allow; + for (auto e : SslModeStringTable) { + if (e.string == s) { + result = e.mode; + } + } + return result; +} + + +std::vector ConnectionConfig::s_keywords = { + "host", "hostaddr", "port", "user", "password", "dbname", + "sslmode", "sslcert", "sslkey", "sslrootcrt", "sslcrl", + "client_encoding", "application_name", nullptr }; + + +ConnectionConfig::ConnectionConfig() + : m_applicationName(QCoreApplication::applicationName().toUtf8().data()) + , m_values(s_keywords.size(), nullptr) +{} + +void ConnectionConfig::setDescription(std::string desc) +{ + m_description = std::move(desc); +} + +const std::string& ConnectionConfig::description() const +{ + return m_description; +} + +void ConnectionConfig::setHost(std::string host) +{ + m_host = std::move(host); + m_values[0] = valuePtr(m_host); +} + +const std::string& ConnectionConfig::host() const +{ + return m_host; +} + +void ConnectionConfig::setHostAddr(std::string v) +{ + m_hostaddr = std::move(v); + m_values[1] = valuePtr(m_hostaddr); +} + +const std::string& ConnectionConfig::hostAddr() const +{ + return m_hostaddr; +} + +void ConnectionConfig::setPort(unsigned short port) +{ + m_port = std::to_string(port); + m_values[2] = valuePtr(m_port); +} + +unsigned short ConnectionConfig::port() const +{ + return static_cast(std::stoi(m_port)); +} + +void ConnectionConfig::setUser(std::string v) +{ + m_user = std::move(v); + m_values[3] = valuePtr(m_user); +} + +const std::string& ConnectionConfig::user() const +{ + return m_user; +} + +void ConnectionConfig::setPassword(std::string v) +{ + m_password = std::move(v); + m_values[4] = valuePtr(m_password); +} + +const std::string& ConnectionConfig::password() const +{ + return m_password; +} + +void ConnectionConfig::setDbname(std::string v) +{ + m_dbname = std::move(v); + m_values[5] = valuePtr(m_dbname); +} + +const std::string& ConnectionConfig::dbname() const +{ + return m_dbname; +} + +void ConnectionConfig::setSslMode(SslMode m) +{ + m_sslMode = SslModeToString(m); + m_values[6] = valuePtr(m_sslMode); +} + +SslMode ConnectionConfig::sslMode() const +{ + return StringToSslMode(m_sslMode); +} + +void ConnectionConfig::setSslCert(std::string v) +{ + m_sslCert = std::move(v); + m_values[7] = valuePtr(m_sslCert); +} + +const std::string& ConnectionConfig::sslCert() const +{ + return m_sslCert; +} + +void ConnectionConfig::setSslKey(std::string v) +{ + m_sslKey = std::move(v); + m_values[8] = valuePtr(m_sslKey); +} + +const std::string& ConnectionConfig::sslKey() const +{ + return m_sslKey; +} + +void ConnectionConfig::setSslRootCert(std::string v) +{ + m_sslRootCert = std::move(v); + m_values[9] = valuePtr(m_sslRootCert); +} + +const std::string& ConnectionConfig::sslRootCert() const +{ + return m_sslRootCert; +} + +void ConnectionConfig::setSslCrl(std::string v) +{ + m_sslCrl = std::move(v); + m_values[10] = valuePtr(m_sslCrl); +} + +const std::string& ConnectionConfig::sslCrl() const +{ + return m_sslCrl; +} + + +const char * const * ConnectionConfig::getKeywords() const +{ + return s_keywords.data(); +} + +const char * const * ConnectionConfig::getValues() const +{ + m_values[11] = "utf8"; + m_values[12] = valuePtr(m_applicationName); + + return m_values.data(); +} diff --git a/connectionconfig.h b/connectionconfig.h new file mode 100644 index 0000000..f33d20b --- /dev/null +++ b/connectionconfig.h @@ -0,0 +1,82 @@ +#ifndef CONNECTION_H +#define CONNECTION_H + +#include +#include + +enum class SslMode { + disable=0, + allow=1, + prefer=2, + require=3, + verify_ca=4, + verify_full=5 +}; + +class ConnectionConfig { +public: + ConnectionConfig(); + + void setDescription(std::string desc); + const std::string& description() const; + + void setHost(std::string host); + const std::string& host() const; + + void setHostAddr(std::string v); + const std::string& hostAddr() const; + + void setPort(unsigned short port); + unsigned short port() const; + + void setUser(std::string v); + const std::string& user() const; + + void setPassword(std::string v); + const std::string& password() const; + + void setDbname(std::string v); + const std::string& dbname() const; + + void setSslMode(SslMode m); + SslMode sslMode() const; + + void setSslCert(std::string v); + const std::string& sslCert() const; + + void setSslKey(std::string v); + const std::string& sslKey() const; + + void setSslRootCert(std::string v); + const std::string& sslRootCert() const; + + void setSslCrl(std::string v); + const std::string& sslCrl() const; + + const char * const * getKeywords() const; + const char * const * getValues() const; + +private: + std::string m_description; + std::string m_host; + std::string m_hostaddr; + std::string m_port = "5432"; + + std::string m_user; + std::string m_password; + std::string m_dbname; + + std::string m_sslMode; + std::string m_sslCert; + std::string m_sslKey; + std::string m_sslRootCert; + std::string m_sslCrl; + + std::string m_applicationName; + + static std::vector s_keywords; + mutable std::vector m_values; +}; + + +#endif // CONNECTION_H diff --git a/connectionlistmodel.cpp b/connectionlistmodel.cpp new file mode 100644 index 0000000..406844e --- /dev/null +++ b/connectionlistmodel.cpp @@ -0,0 +1,89 @@ +#include "connectionlistmodel.h" +#include + + +inline QString stdStrToQ(const std::string &s) +{ + return QString::fromUtf8(s.c_str()); +} + +inline std::string qStrToStd(const QString &s) +{ + return std::string(s.toUtf8().data()); +} + +inline std::string qvarToStdStr(const QVariant &c) +{ + return qStrToStd(c.toString()); +} + + +/** Saves a connection configuration. + +Before calling this you may want to call beginGroup. +*/ +void SaveConnectionConfig(QSettings &settings, const ConnectionConfig &cc) +{ + settings.setValue("description", stdStrToQ(cc.description())); + settings.setValue("host", stdStrToQ(cc.host())); + settings.setValue("hostaddr", stdStrToQ(cc.hostAddr())); + settings.setValue("port", cc.port()); + settings.setValue("user", stdStrToQ(cc.user())); + settings.setValue("password", stdStrToQ(cc.password())); + settings.setValue("dbname", stdStrToQ(cc.dbname())); + settings.setValue("sslmode", (int)cc.sslMode()); + settings.setValue("sslcert", stdStrToQ(cc.sslCert())); + settings.setValue("sslkey", stdStrToQ(cc.sslKey())); + settings.setValue("sslrootcert", stdStrToQ(cc.sslRootCert())); + settings.setValue("sslcrl", stdStrToQ(cc.sslCrl())); +} + +void LoadConnectionConfig(QSettings &settings, ConnectionConfig &cc) +{ + cc.setDescription(qvarToStdStr(settings.value("description"))); + cc.setHost(qvarToStdStr(settings.value("host"))); + cc.setHostAddr(qvarToStdStr(settings.value("hostaddr"))); + cc.setPort(settings.value("port", 5432).toInt()); + cc.setUser(qvarToStdStr(settings.value("user"))); + cc.setPassword(qvarToStdStr(settings.value("password"))); + cc.setDbname(qvarToStdStr(settings.value("dbname"))); + cc.setSslMode((SslMode)settings.value("sslmode").toInt()); + cc.setSslCert(qvarToStdStr(settings.value("sslcert"))); + cc.setSslKey(qvarToStdStr(settings.value("sslkey"))); + cc.setSslRootCert(qvarToStdStr(settings.value("sslrootcert"))); + cc.setSslCrl(qvarToStdStr(settings.value("sslcrl"))); +} + + + +ConnectionListModel::ConnectionListModel(QObject *parent) + : QAbstractListModel(parent) +{} + +int ConnectionListModel::rowCount(const QModelIndex &parent) const +{ + return m_connections.size(); +} + +QVariant ConnectionListModel::data(const QModelIndex &index, int role) const +{ + QVariant result; + if (role == Qt::DisplayRole) { + int row = index.row(); + result = makeLongDescription(m_connections.at(row)); + } + return result; +} + +QString ConnectionListModel::makeLongDescription(const ConnectionConfig &cfg) +{ + std::string result(cfg.description()); + result += " ("; + result += cfg.user(); + result += "@"; + result += cfg.host(); + result += "/"; + result += cfg.dbname(); + result += ")"; + return stdStrToQ(result); +} diff --git a/connectionlistmodel.h b/connectionlistmodel.h new file mode 100644 index 0000000..e99b51d --- /dev/null +++ b/connectionlistmodel.h @@ -0,0 +1,35 @@ +#ifndef CONNECTIONLISTMODEL_H +#define CONNECTIONLISTMODEL_H + +#include +#include + +#include + +#include "connectionconfig.h" + + +class ConnectionListModel : public QAbstractListModel { + Q_OBJECT +public: + ConnectionListModel(QObject *parent); + + virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override; + virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + // virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; + + void add(const ConnectionConfig &cfg) + { + m_connections.push_back(cfg); + auto idx = createIndex(m_connections.size()-1, 0); + emit dataChanged(idx, idx); + } + +private: + using t_Connections = std::vector; + t_Connections m_connections; + + static QString makeLongDescription(const ConnectionConfig &cfg); +}; + +#endif // CONNECTIONLISTMODEL_H diff --git a/connectionmanagerwindow.cpp b/connectionmanagerwindow.cpp new file mode 100644 index 0000000..2855c09 --- /dev/null +++ b/connectionmanagerwindow.cpp @@ -0,0 +1,57 @@ +#include "connectionmanagerwindow.h" +#include "ui_connectionmanagerwindow.h" + +#include "connectionlistmodel.h" + +ConnectionManagerWindow::ConnectionManagerWindow(QWidget *parent) + : QMainWindow(parent) + , ui(new Ui::ConnectionManagerWindow) + , m_listModel(new ConnectionListModel(this)) +{ + ui->setupUi(this); + + ConnectionConfig c; + c.setDescription("test"); + m_listModel->add(c); + + ui->listView->setModel(m_listModel); + + connect(ui->listView->selectionModel(), + SIGNAL(currentChanged(QModelIndex,QModelIndex)), + this, SLOT(on_currentChanged(QModelIndex,QModelIndex))); +} + +ConnectionManagerWindow::~ConnectionManagerWindow() +{ + delete ui; + delete m_listModel; +} + +void ConnectionManagerWindow::on_actionAdd_Connection_triggered() +{ + ConnectionConfig c; + c.setDescription("new"); + m_listModel->add(c); +} + +void ConnectionManagerWindow::on_currentChanged(const QModelIndex ¤t, + const QModelIndex &previous) +{ + int currow = current.row(); + int prevrow = previous.row(); + ui->lineEdit->setText(QString::number(currow)); + ui->lineEdit_2->setText(QString::number(prevrow)); +// if(selection.indexes().isEmpty()) { +// clearMyView(); +// } else { +// displayModelIndexInMyView(selection.indexes().first()); +// } +} + +void ConnectionManagerWindow::on_actionDelete_connection_triggered() +{ + auto ci = ui->listView->selectionModel()->currentIndex(); + if (ci.isValid()) { + //m_listModel->removeRow(ci.row()); + } +} diff --git a/connectionmanagerwindow.h b/connectionmanagerwindow.h new file mode 100644 index 0000000..0dcdf5b --- /dev/null +++ b/connectionmanagerwindow.h @@ -0,0 +1,30 @@ +#ifndef CONNECTIONMANAGERWINDOW_H +#define CONNECTIONMANAGERWINDOW_H + +#include + +namespace Ui { +class ConnectionManagerWindow; +} + +class ConnectionListModel; + +class ConnectionManagerWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit ConnectionManagerWindow(QWidget *parent = 0); + ~ConnectionManagerWindow(); + +private slots: + void on_actionAdd_Connection_triggered(); + void on_currentChanged(const QModelIndex ¤t, const QModelIndex &previous); + void on_actionDelete_connection_triggered(); + +private: + Ui::ConnectionManagerWindow *ui; + ConnectionListModel *m_listModel = nullptr; +}; + +#endif // CONNECTIONMANAGERWINDOW_H diff --git a/connectionmanagerwindow.ui b/connectionmanagerwindow.ui new file mode 100644 index 0000000..6f7031f --- /dev/null +++ b/connectionmanagerwindow.ui @@ -0,0 +1,190 @@ + + + ConnectionManagerWindow + + + + 0 + 0 + 800 + 600 + + + + MainWindow + + + + + + + Qt::Horizontal + + + + true + + + true + + + + + + + + Name + + + + + + + + + + Host + + + + + + + + + + Port + + + + + + + 65535 + + + + + + + Maintenance DB + + + + + + + true + + + 0 + + + + postgres + + + + + template1 + + + + + + + + Username + + + + + + + + + + Password + + + + + + + QLineEdit::Password + + + + + + + + + + + + + 0 + 0 + 800 + 25 + + + + + + + toolBar + + + false + + + false + + + TopToolBarArea + + + false + + + + + + + + + ../../../Users/eelke/fatcow-hosting-icons-900/server_add.png + ../../../Users/eelke/icons/server_add.png../../../Users/eelke/fatcow-hosting-icons-900/server_add.png + + + Add Connection + + + + + + ../../../Users/eelke/fatcow-hosting-icons-900/server_delete.png + ../../../Users/eelke/icons/server_delete.png../../../Users/eelke/fatcow-hosting-icons-900/server_delete.png + + + Delete connection + + + Delete + + + + + + ../../../Users/eelke/fatcow-hosting-icons-900/server_go.png../../../Users/eelke/fatcow-hosting-icons-900/server_go.png + + + Connect + + + + + + diff --git a/databasewindow.cpp b/databasewindow.cpp new file mode 100644 index 0000000..1dda978 --- /dev/null +++ b/databasewindow.cpp @@ -0,0 +1,14 @@ +#include "databasewindow.h" +#include "ui_databasewindow.h" + +DatabaseWindow::DatabaseWindow(QWidget *parent) : + QMainWindow(parent), + ui(new Ui::DatabaseWindow) +{ + ui->setupUi(this); +} + +DatabaseWindow::~DatabaseWindow() +{ + delete ui; +} diff --git a/databasewindow.h b/databasewindow.h new file mode 100644 index 0000000..98ddda3 --- /dev/null +++ b/databasewindow.h @@ -0,0 +1,22 @@ +#ifndef DATABASEWINDOW_H +#define DATABASEWINDOW_H + +#include + +namespace Ui { +class DatabaseWindow; +} + +class DatabaseWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit DatabaseWindow(QWidget *parent = 0); + ~DatabaseWindow(); + +private: + Ui::DatabaseWindow *ui; +}; + +#endif // DATABASEWINDOW_H diff --git a/databasewindow.ui b/databasewindow.ui new file mode 100644 index 0000000..62d1c1d --- /dev/null +++ b/databasewindow.ui @@ -0,0 +1,48 @@ + + + DatabaseWindow + + + + 0 + 0 + 800 + 600 + + + + MainWindow + + + + + + + + Tab 1 + + + + + Tab 2 + + + + + + + + + + 0 + 0 + 800 + 25 + + + + + + + + diff --git a/main.cpp b/main.cpp index 0fdde4e..2697488 100644 --- a/main.cpp +++ b/main.cpp @@ -1,10 +1,9 @@ -#include "mainwindow.h" +//#include "mainwindow.h" +//#include "databasewindow.h" +#include "connectionmanagerwindow.h" #include #include -// Need to link with Ws2_32.lib -#pragma comment(lib, "ws2_32.lib") - int main(int argc, char *argv[]) { @@ -20,7 +19,12 @@ int main(int argc, char *argv[]) } QApplication a(argc, argv); - MainWindow w; + + QCoreApplication::setOrganizationName("MySoft"); + QCoreApplication::setOrganizationDomain("eelkeklein.nl"); + QCoreApplication::setApplicationName("Ivory"); + + ConnectionManagerWindow w; w.show(); int result = a.exec(); diff --git a/ui_connectionmanagerwindow.h b/ui_connectionmanagerwindow.h new file mode 100644 index 0000000..7f5adab --- /dev/null +++ b/ui_connectionmanagerwindow.h @@ -0,0 +1,222 @@ +/******************************************************************************** +** Form generated from reading UI file 'connectionmanagerwindow.ui' +** +** Created by: Qt User Interface Compiler version 5.7.1 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_CONNECTIONMANAGERWINDOW_H +#define UI_CONNECTIONMANAGERWINDOW_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_ConnectionManagerWindow +{ +public: + QAction *actionAdd_Connection; + QAction *actionDelete_connection; + QAction *actionConnect; + QWidget *centralwidget; + QVBoxLayout *verticalLayout; + QSplitter *splitter; + QListView *listView; + QWidget *layoutWidget; + QFormLayout *formLayout_2; + QLabel *label; + QLineEdit *lineEdit; + QLabel *label_2; + QLineEdit *lineEdit_2; + QLabel *label_3; + QSpinBox *spinBox; + QLabel *label_4; + QComboBox *comboBox; + QLabel *label_5; + QLineEdit *lineEdit_3; + QLabel *label_6; + QLineEdit *lineEdit_4; + QMenuBar *menubar; + QStatusBar *statusbar; + QToolBar *toolBar; + + void setupUi(QMainWindow *ConnectionManagerWindow) + { + if (ConnectionManagerWindow->objectName().isEmpty()) + ConnectionManagerWindow->setObjectName(QStringLiteral("ConnectionManagerWindow")); + ConnectionManagerWindow->resize(800, 600); + actionAdd_Connection = new QAction(ConnectionManagerWindow); + actionAdd_Connection->setObjectName(QStringLiteral("actionAdd_Connection")); + QIcon icon; + icon.addFile(QStringLiteral("../../../Users/eelke/fatcow-hosting-icons-900/server_add.png"), QSize(), QIcon::Normal, QIcon::Off); + icon.addFile(QStringLiteral("../../../Users/eelke/icons/server_add.png"), QSize(), QIcon::Normal, QIcon::On); + actionAdd_Connection->setIcon(icon); + actionDelete_connection = new QAction(ConnectionManagerWindow); + actionDelete_connection->setObjectName(QStringLiteral("actionDelete_connection")); + QIcon icon1; + icon1.addFile(QStringLiteral("../../../Users/eelke/fatcow-hosting-icons-900/server_delete.png"), QSize(), QIcon::Normal, QIcon::Off); + icon1.addFile(QStringLiteral("../../../Users/eelke/icons/server_delete.png"), QSize(), QIcon::Normal, QIcon::On); + actionDelete_connection->setIcon(icon1); + actionConnect = new QAction(ConnectionManagerWindow); + actionConnect->setObjectName(QStringLiteral("actionConnect")); + QIcon icon2; + icon2.addFile(QStringLiteral("../../../Users/eelke/fatcow-hosting-icons-900/server_go.png"), QSize(), QIcon::Normal, QIcon::Off); + actionConnect->setIcon(icon2); + centralwidget = new QWidget(ConnectionManagerWindow); + centralwidget->setObjectName(QStringLiteral("centralwidget")); + verticalLayout = new QVBoxLayout(centralwidget); + verticalLayout->setObjectName(QStringLiteral("verticalLayout")); + splitter = new QSplitter(centralwidget); + splitter->setObjectName(QStringLiteral("splitter")); + splitter->setOrientation(Qt::Horizontal); + listView = new QListView(splitter); + listView->setObjectName(QStringLiteral("listView")); + listView->setAlternatingRowColors(true); + listView->setUniformItemSizes(true); + splitter->addWidget(listView); + layoutWidget = new QWidget(splitter); + layoutWidget->setObjectName(QStringLiteral("layoutWidget")); + formLayout_2 = new QFormLayout(layoutWidget); + formLayout_2->setObjectName(QStringLiteral("formLayout_2")); + formLayout_2->setContentsMargins(0, 0, 0, 0); + label = new QLabel(layoutWidget); + label->setObjectName(QStringLiteral("label")); + + formLayout_2->setWidget(0, QFormLayout::LabelRole, label); + + lineEdit = new QLineEdit(layoutWidget); + lineEdit->setObjectName(QStringLiteral("lineEdit")); + + formLayout_2->setWidget(0, QFormLayout::FieldRole, lineEdit); + + label_2 = new QLabel(layoutWidget); + label_2->setObjectName(QStringLiteral("label_2")); + + formLayout_2->setWidget(1, QFormLayout::LabelRole, label_2); + + lineEdit_2 = new QLineEdit(layoutWidget); + lineEdit_2->setObjectName(QStringLiteral("lineEdit_2")); + + formLayout_2->setWidget(1, QFormLayout::FieldRole, lineEdit_2); + + label_3 = new QLabel(layoutWidget); + label_3->setObjectName(QStringLiteral("label_3")); + + formLayout_2->setWidget(2, QFormLayout::LabelRole, label_3); + + spinBox = new QSpinBox(layoutWidget); + spinBox->setObjectName(QStringLiteral("spinBox")); + spinBox->setMaximum(65535); + + formLayout_2->setWidget(2, QFormLayout::FieldRole, spinBox); + + label_4 = new QLabel(layoutWidget); + label_4->setObjectName(QStringLiteral("label_4")); + + formLayout_2->setWidget(3, QFormLayout::LabelRole, label_4); + + comboBox = new QComboBox(layoutWidget); + comboBox->setObjectName(QStringLiteral("comboBox")); + comboBox->setEditable(true); + + formLayout_2->setWidget(3, QFormLayout::FieldRole, comboBox); + + label_5 = new QLabel(layoutWidget); + label_5->setObjectName(QStringLiteral("label_5")); + + formLayout_2->setWidget(4, QFormLayout::LabelRole, label_5); + + lineEdit_3 = new QLineEdit(layoutWidget); + lineEdit_3->setObjectName(QStringLiteral("lineEdit_3")); + + formLayout_2->setWidget(4, QFormLayout::FieldRole, lineEdit_3); + + label_6 = new QLabel(layoutWidget); + label_6->setObjectName(QStringLiteral("label_6")); + + formLayout_2->setWidget(5, QFormLayout::LabelRole, label_6); + + lineEdit_4 = new QLineEdit(layoutWidget); + lineEdit_4->setObjectName(QStringLiteral("lineEdit_4")); + lineEdit_4->setEchoMode(QLineEdit::Password); + + formLayout_2->setWidget(5, QFormLayout::FieldRole, lineEdit_4); + + splitter->addWidget(layoutWidget); + + verticalLayout->addWidget(splitter); + + ConnectionManagerWindow->setCentralWidget(centralwidget); + menubar = new QMenuBar(ConnectionManagerWindow); + menubar->setObjectName(QStringLiteral("menubar")); + menubar->setGeometry(QRect(0, 0, 800, 25)); + ConnectionManagerWindow->setMenuBar(menubar); + statusbar = new QStatusBar(ConnectionManagerWindow); + statusbar->setObjectName(QStringLiteral("statusbar")); + ConnectionManagerWindow->setStatusBar(statusbar); + toolBar = new QToolBar(ConnectionManagerWindow); + toolBar->setObjectName(QStringLiteral("toolBar")); + toolBar->setMovable(false); + toolBar->setFloatable(false); + ConnectionManagerWindow->addToolBar(Qt::TopToolBarArea, toolBar); + + toolBar->addAction(actionConnect); + toolBar->addAction(actionAdd_Connection); + toolBar->addAction(actionDelete_connection); + + retranslateUi(ConnectionManagerWindow); + + comboBox->setCurrentIndex(0); + + + QMetaObject::connectSlotsByName(ConnectionManagerWindow); + } // setupUi + + void retranslateUi(QMainWindow *ConnectionManagerWindow) + { + ConnectionManagerWindow->setWindowTitle(QApplication::translate("ConnectionManagerWindow", "MainWindow", Q_NULLPTR)); + actionAdd_Connection->setText(QApplication::translate("ConnectionManagerWindow", "Add Connection", Q_NULLPTR)); + actionDelete_connection->setText(QApplication::translate("ConnectionManagerWindow", "Delete connection", Q_NULLPTR)); + actionDelete_connection->setIconText(QApplication::translate("ConnectionManagerWindow", "Delete", Q_NULLPTR)); + actionConnect->setText(QApplication::translate("ConnectionManagerWindow", "Connect", Q_NULLPTR)); + label->setText(QApplication::translate("ConnectionManagerWindow", "Name", Q_NULLPTR)); + label_2->setText(QApplication::translate("ConnectionManagerWindow", "Host", Q_NULLPTR)); + label_3->setText(QApplication::translate("ConnectionManagerWindow", "Port", Q_NULLPTR)); + label_4->setText(QApplication::translate("ConnectionManagerWindow", "Maintenance DB", Q_NULLPTR)); + comboBox->clear(); + comboBox->insertItems(0, QStringList() + << QApplication::translate("ConnectionManagerWindow", "postgres", Q_NULLPTR) + << QApplication::translate("ConnectionManagerWindow", "template1", Q_NULLPTR) + ); + label_5->setText(QApplication::translate("ConnectionManagerWindow", "Username", Q_NULLPTR)); + label_6->setText(QApplication::translate("ConnectionManagerWindow", "Password", Q_NULLPTR)); + toolBar->setWindowTitle(QApplication::translate("ConnectionManagerWindow", "toolBar", Q_NULLPTR)); + } // retranslateUi + +}; + +namespace Ui { + class ConnectionManagerWindow: public Ui_ConnectionManagerWindow {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_CONNECTIONMANAGERWINDOW_H diff --git a/ui_databasewindow.h b/ui_databasewindow.h new file mode 100644 index 0000000..1360997 --- /dev/null +++ b/ui_databasewindow.h @@ -0,0 +1,86 @@ +/******************************************************************************** +** Form generated from reading UI file 'databasewindow.ui' +** +** Created by: Qt User Interface Compiler version 5.7.1 +** +** WARNING! All changes made in this file will be lost when recompiling UI file! +********************************************************************************/ + +#ifndef UI_DATABASEWINDOW_H +#define UI_DATABASEWINDOW_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Ui_DatabaseWindow +{ +public: + QWidget *centralwidget; + QVBoxLayout *verticalLayout; + QTabWidget *tabWidget; + QWidget *tab; + QWidget *tab_2; + QMenuBar *menubar; + QStatusBar *statusbar; + + void setupUi(QMainWindow *DatabaseWindow) + { + if (DatabaseWindow->objectName().isEmpty()) + DatabaseWindow->setObjectName(QStringLiteral("DatabaseWindow")); + DatabaseWindow->resize(800, 600); + centralwidget = new QWidget(DatabaseWindow); + centralwidget->setObjectName(QStringLiteral("centralwidget")); + verticalLayout = new QVBoxLayout(centralwidget); + verticalLayout->setObjectName(QStringLiteral("verticalLayout")); + tabWidget = new QTabWidget(centralwidget); + tabWidget->setObjectName(QStringLiteral("tabWidget")); + tab = new QWidget(); + tab->setObjectName(QStringLiteral("tab")); + tabWidget->addTab(tab, QString()); + tab_2 = new QWidget(); + tab_2->setObjectName(QStringLiteral("tab_2")); + tabWidget->addTab(tab_2, QString()); + + verticalLayout->addWidget(tabWidget); + + DatabaseWindow->setCentralWidget(centralwidget); + menubar = new QMenuBar(DatabaseWindow); + menubar->setObjectName(QStringLiteral("menubar")); + menubar->setGeometry(QRect(0, 0, 800, 25)); + DatabaseWindow->setMenuBar(menubar); + statusbar = new QStatusBar(DatabaseWindow); + statusbar->setObjectName(QStringLiteral("statusbar")); + DatabaseWindow->setStatusBar(statusbar); + + retranslateUi(DatabaseWindow); + + QMetaObject::connectSlotsByName(DatabaseWindow); + } // setupUi + + void retranslateUi(QMainWindow *DatabaseWindow) + { + DatabaseWindow->setWindowTitle(QApplication::translate("DatabaseWindow", "MainWindow", Q_NULLPTR)); + tabWidget->setTabText(tabWidget->indexOf(tab), QApplication::translate("DatabaseWindow", "Tab 1", Q_NULLPTR)); + tabWidget->setTabText(tabWidget->indexOf(tab_2), QApplication::translate("DatabaseWindow", "Tab 2", Q_NULLPTR)); + } // retranslateUi + +}; + +namespace Ui { + class DatabaseWindow: public Ui_DatabaseWindow {}; +} // namespace Ui + +QT_END_NAMESPACE + +#endif // UI_DATABASEWINDOW_H