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