Working on the connection manager.

Made a list model for displaying them in a list. Also added controles to edit
the most important properties.
This commit is contained in:
Eelke Klein 2017-01-14 20:07:12 +01:00
parent be1892ac52
commit f5eab84c24
14 changed files with 1100 additions and 9 deletions

View file

@ -13,7 +13,7 @@ TEMPLATE = app
INCLUDEPATH += C:\prog\include INCLUDEPATH += C:\prog\include
DEFINES += WIN32_LEAN_AND_MEAN NOMINMAX 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\ SOURCES += main.cpp\
mainwindow.cpp \ mainwindow.cpp \
@ -29,7 +29,11 @@ SOURCES += main.cpp\
tsqueue.cpp \ tsqueue.cpp \
win32event.cpp \ win32event.cpp \
waithandlelist.cpp \ waithandlelist.cpp \
csvwriter.cpp csvwriter.cpp \
databasewindow.cpp \
connectionmanagerwindow.cpp \
connectionlistmodel.cpp \
connectionconfig.cpp
HEADERS += mainwindow.h \ HEADERS += mainwindow.h \
serverproperties.h \ serverproperties.h \
@ -43,7 +47,13 @@ HEADERS += mainwindow.h \
tsqueue.h \ tsqueue.h \
win32event.h \ win32event.h \
waithandlelist.h \ waithandlelist.h \
csvwriter.h csvwriter.h \
databasewindow.h \
connectionmanagerwindow.h \
connectionlistmodel.h \
connectionconfig.h
FORMS += mainwindow.ui \ FORMS += mainwindow.ui \
serverproperties.ui serverproperties.ui \
databasewindow.ui \
connectionmanagerwindow.ui

202
connectionconfig.cpp Normal file
View file

@ -0,0 +1,202 @@
#include "connectionconfig.h"
#include <QCoreApplication>
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<const char*> 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<unsigned short>(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();
}

82
connectionconfig.h Normal file
View file

@ -0,0 +1,82 @@
#ifndef CONNECTION_H
#define CONNECTION_H
#include <vector>
#include <string>
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<const char*> s_keywords;
mutable std::vector<const char*> m_values;
};
#endif // CONNECTION_H

89
connectionlistmodel.cpp Normal file
View file

@ -0,0 +1,89 @@
#include "connectionlistmodel.h"
#include <QSettings>
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);
}

35
connectionlistmodel.h Normal file
View file

@ -0,0 +1,35 @@
#ifndef CONNECTIONLISTMODEL_H
#define CONNECTIONLISTMODEL_H
#include <vector>
#include <memory>
#include <QAbstractListModel>
#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<ConnectionConfig>;
t_Connections m_connections;
static QString makeLongDescription(const ConnectionConfig &cfg);
};
#endif // CONNECTIONLISTMODEL_H

View file

@ -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 &current,
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());
}
}

30
connectionmanagerwindow.h Normal file
View file

@ -0,0 +1,30 @@
#ifndef CONNECTIONMANAGERWINDOW_H
#define CONNECTIONMANAGERWINDOW_H
#include <QMainWindow>
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 &current, const QModelIndex &previous);
void on_actionDelete_connection_triggered();
private:
Ui::ConnectionManagerWindow *ui;
ConnectionListModel *m_listModel = nullptr;
};
#endif // CONNECTIONMANAGERWINDOW_H

190
connectionmanagerwindow.ui Normal file
View file

@ -0,0 +1,190 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ConnectionManagerWindow</class>
<widget class="QMainWindow" name="ConnectionManagerWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QListView" name="listView">
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="uniformItemSizes">
<bool>true</bool>
</property>
</widget>
<widget class="QWidget" name="layoutWidget">
<layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Name</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Host</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="lineEdit_2"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Port</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QSpinBox" name="spinBox">
<property name="maximum">
<number>65535</number>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Maintenance DB</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QComboBox" name="comboBox">
<property name="editable">
<bool>true</bool>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<item>
<property name="text">
<string>postgres</string>
</property>
</item>
<item>
<property name="text">
<string>template1</string>
</property>
</item>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Username</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="lineEdit_3"/>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Password</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="lineEdit_4">
<property name="echoMode">
<enum>QLineEdit::Password</enum>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<widget class="QToolBar" name="toolBar">
<property name="windowTitle">
<string>toolBar</string>
</property>
<property name="movable">
<bool>false</bool>
</property>
<property name="floatable">
<bool>false</bool>
</property>
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<addaction name="actionConnect"/>
<addaction name="actionAdd_Connection"/>
<addaction name="actionDelete_connection"/>
</widget>
<action name="actionAdd_Connection">
<property name="icon">
<iconset>
<normaloff>../../../Users/eelke/fatcow-hosting-icons-900/server_add.png</normaloff>
<normalon>../../../Users/eelke/icons/server_add.png</normalon>../../../Users/eelke/fatcow-hosting-icons-900/server_add.png</iconset>
</property>
<property name="text">
<string>Add Connection</string>
</property>
</action>
<action name="actionDelete_connection">
<property name="icon">
<iconset>
<normaloff>../../../Users/eelke/fatcow-hosting-icons-900/server_delete.png</normaloff>
<normalon>../../../Users/eelke/icons/server_delete.png</normalon>../../../Users/eelke/fatcow-hosting-icons-900/server_delete.png</iconset>
</property>
<property name="text">
<string>Delete connection</string>
</property>
<property name="iconText">
<string>Delete</string>
</property>
</action>
<action name="actionConnect">
<property name="icon">
<iconset>
<normaloff>../../../Users/eelke/fatcow-hosting-icons-900/server_go.png</normaloff>../../../Users/eelke/fatcow-hosting-icons-900/server_go.png</iconset>
</property>
<property name="text">
<string>Connect</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>

14
databasewindow.cpp Normal file
View file

@ -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;
}

22
databasewindow.h Normal file
View file

@ -0,0 +1,22 @@
#ifndef DATABASEWINDOW_H
#define DATABASEWINDOW_H
#include <QMainWindow>
namespace Ui {
class DatabaseWindow;
}
class DatabaseWindow : public QMainWindow
{
Q_OBJECT
public:
explicit DatabaseWindow(QWidget *parent = 0);
~DatabaseWindow();
private:
Ui::DatabaseWindow *ui;
};
#endif // DATABASEWINDOW_H

48
databasewindow.ui Normal file
View file

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>DatabaseWindow</class>
<widget class="QMainWindow" name="DatabaseWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTabWidget" name="tabWidget">
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Tab 1</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Tab 2</string>
</attribute>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

View file

@ -1,10 +1,9 @@
#include "mainwindow.h" //#include "mainwindow.h"
//#include "databasewindow.h"
#include "connectionmanagerwindow.h"
#include <QApplication> #include <QApplication>
#include <winsock2.h> #include <winsock2.h>
// Need to link with Ws2_32.lib
#pragma comment(lib, "ws2_32.lib")
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
@ -20,7 +19,12 @@ int main(int argc, char *argv[])
} }
QApplication a(argc, argv); QApplication a(argc, argv);
MainWindow w;
QCoreApplication::setOrganizationName("MySoft");
QCoreApplication::setOrganizationDomain("eelkeklein.nl");
QCoreApplication::setApplicationName("Ivory");
ConnectionManagerWindow w;
w.show(); w.show();
int result = a.exec(); int result = a.exec();

View file

@ -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 <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QComboBox>
#include <QtWidgets/QFormLayout>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QListView>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QSpinBox>
#include <QtWidgets/QSplitter>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QToolBar>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>
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

86
ui_databasewindow.h Normal file
View file

@ -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 <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QTabWidget>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>
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