First test with QDataWidgetMapper to connect controls to the items in the connection list is working.

This commit is contained in:
Eelke Klein 2017-01-14 22:03:58 +01:00
parent f5eab84c24
commit c235169304
6 changed files with 256 additions and 84 deletions

View file

@ -65,13 +65,25 @@ int ConnectionListModel::rowCount(const QModelIndex &parent) const
return m_connections.size(); return m_connections.size();
} }
int ConnectionListModel::columnCount(const QModelIndex &/*parent*/) const
{
return 2;
}
QVariant ConnectionListModel::data(const QModelIndex &index, int role) const QVariant ConnectionListModel::data(const QModelIndex &index, int role) const
{ {
QVariant result; QVariant result;
if (role == Qt::DisplayRole) { if (role == Qt::DisplayRole || role == Qt::EditRole) {
int row = index.row(); int row = index.row();
int col = index.column();
// if (col == 0) {
result = makeLongDescription(m_connections.at(row)); result = makeLongDescription(m_connections.at(row));
// }
//else {
//result = QString("other col");
//}
} }
return result; return result;
} }

View file

@ -15,6 +15,7 @@ public:
ConnectionListModel(QObject *parent); ConnectionListModel(QObject *parent);
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override; virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override;
virtual int columnCount(const QModelIndex &/*parent*/) const override;
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) 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; // virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;

View file

@ -1,5 +1,7 @@
#include "connectionmanagerwindow.h" #include "connectionmanagerwindow.h"
#include "ui_connectionmanagerwindow.h" #include "ui_connectionmanagerwindow.h"
#include <QDataWidgetMapper>
#include <QStandardItemModel>
#include "connectionlistmodel.h" #include "connectionlistmodel.h"
@ -16,15 +18,22 @@ ConnectionManagerWindow::ConnectionManagerWindow(QWidget *parent)
ui->listView->setModel(m_listModel); ui->listView->setModel(m_listModel);
m_mapper = new QDataWidgetMapper(this);
m_mapper->setModel(m_listModel);
m_mapper->addMapping(ui->edtUser, 1);
m_mapper->toFirst();
connect(ui->listView->selectionModel(), connect(ui->listView->selectionModel(),
SIGNAL(currentChanged(QModelIndex,QModelIndex)), SIGNAL(currentChanged(QModelIndex,QModelIndex)),
this, SLOT(on_currentChanged(QModelIndex,QModelIndex))); this, SLOT(on_currentChanged(QModelIndex,QModelIndex)));
} }
ConnectionManagerWindow::~ConnectionManagerWindow() ConnectionManagerWindow::~ConnectionManagerWindow()
{ {
delete ui; delete ui;
delete m_listModel; delete m_listModel;
delete m_mapper;
} }
void ConnectionManagerWindow::on_actionAdd_Connection_triggered() void ConnectionManagerWindow::on_actionAdd_Connection_triggered()
@ -38,9 +47,12 @@ void ConnectionManagerWindow::on_currentChanged(const QModelIndex &current,
const QModelIndex &previous) const QModelIndex &previous)
{ {
int currow = current.row(); int currow = current.row();
int prevrow = previous.row(); // int prevrow = previous.row();
ui->lineEdit->setText(QString::number(currow));
ui->lineEdit_2->setText(QString::number(prevrow)); m_mapper->setCurrentIndex(currow);
// ui->lineEdit->setText(QString::number(currow));
// ui->lineEdit_2->setText(QString::number(prevrow));
// if(selection.indexes().isEmpty()) { // if(selection.indexes().isEmpty()) {
// clearMyView(); // clearMyView();
// } else { // } else {
@ -55,3 +67,9 @@ void ConnectionManagerWindow::on_actionDelete_connection_triggered()
//m_listModel->removeRow(ci.row()); //m_listModel->removeRow(ci.row());
} }
} }
void ConnectionManagerWindow::controlsToConfig(ConnectionConfig &cfg)
{
// ui->
}

View file

@ -8,6 +8,9 @@ class ConnectionManagerWindow;
} }
class ConnectionListModel; class ConnectionListModel;
class ConnectionConfig;
class QDataWidgetMapper;
class QStandardItemModel;
class ConnectionManagerWindow : public QMainWindow class ConnectionManagerWindow : public QMainWindow
{ {
@ -25,6 +28,9 @@ private slots:
private: private:
Ui::ConnectionManagerWindow *ui; Ui::ConnectionManagerWindow *ui;
ConnectionListModel *m_listModel = nullptr; ConnectionListModel *m_listModel = nullptr;
QDataWidgetMapper *m_mapper = nullptr;
void controlsToConfig(ConnectionConfig &cfg);
}; };
#endif // CONNECTIONMANAGERWINDOW_H #endif // CONNECTIONMANAGERWINDOW_H

View file

@ -38,7 +38,7 @@
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="0" column="1">
<widget class="QLineEdit" name="lineEdit"/> <widget class="QLineEdit" name="edtName"/>
</item> </item>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QLabel" name="label_2"> <widget class="QLabel" name="label_2">
@ -48,7 +48,7 @@
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="1" column="1">
<widget class="QLineEdit" name="lineEdit_2"/> <widget class="QLineEdit" name="edtHost"/>
</item> </item>
<item row="2" column="0"> <item row="2" column="0">
<widget class="QLabel" name="label_3"> <widget class="QLabel" name="label_3">
@ -58,63 +58,130 @@
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="2" column="1">
<widget class="QSpinBox" name="spinBox"> <widget class="QSpinBox" name="spinPort">
<property name="maximum"> <property name="maximum">
<number>65535</number> <number>65535</number>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <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"> <widget class="QLabel" name="label_5">
<property name="text"> <property name="text">
<string>Username</string> <string>Username</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="1"> <item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_3"/> <widget class="QLineEdit" name="edtUser"/>
</item> </item>
<item row="5" column="0"> <item row="4" column="0">
<widget class="QLabel" name="label_6"> <widget class="QLabel" name="label_6">
<property name="text"> <property name="text">
<string>Password</string> <string>Password</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="1"> <item row="4" column="1">
<widget class="QLineEdit" name="lineEdit_4"> <widget class="QLineEdit" name="edtPassword">
<property name="echoMode"> <property name="echoMode">
<enum>QLineEdit::Password</enum> <enum>QLineEdit::Password</enum>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Database</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="edtDbname"/>
</item>
<item row="6" column="1">
<widget class="QComboBox" name="cmbbxSsl">
<property name="currentIndex">
<number>2</number>
</property>
<item>
<property name="text">
<string>reject</string>
</property>
</item>
<item>
<property name="text">
<string>allow</string>
</property>
</item>
<item>
<property name="text">
<string>prefer</string>
</property>
</item>
<item>
<property name="text">
<string>require</string>
</property>
</item>
<item>
<property name="text">
<string>verify-ca</string>
</property>
</item>
<item>
<property name="text">
<string>verify-full</string>
</property>
</item>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>SSL</string>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Certificate</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QLineEdit" name="edtCert"/>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Key</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLineEdit" name="edtKey"/>
</item>
<item row="9" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Root cert.</string>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QLineEdit" name="edtRootCert"/>
</item>
<item row="10" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Revocation list</string>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QLineEdit" name="edtCrl"/>
</item>
</layout> </layout>
</widget> </widget>
</widget> </widget>

View file

@ -43,17 +43,27 @@ public:
QWidget *layoutWidget; QWidget *layoutWidget;
QFormLayout *formLayout_2; QFormLayout *formLayout_2;
QLabel *label; QLabel *label;
QLineEdit *lineEdit; QLineEdit *edtName;
QLabel *label_2; QLabel *label_2;
QLineEdit *lineEdit_2; QLineEdit *edtHost;
QLabel *label_3; QLabel *label_3;
QSpinBox *spinBox; QSpinBox *spinPort;
QLabel *label_4;
QComboBox *comboBox;
QLabel *label_5; QLabel *label_5;
QLineEdit *lineEdit_3; QLineEdit *edtUser;
QLabel *label_6; QLabel *label_6;
QLineEdit *lineEdit_4; QLineEdit *edtPassword;
QLabel *label_4;
QLineEdit *edtDbname;
QComboBox *cmbbxSsl;
QLabel *label_7;
QLabel *label_8;
QLineEdit *edtCert;
QLabel *label_9;
QLineEdit *edtKey;
QLabel *label_10;
QLineEdit *edtRootCert;
QLabel *label_11;
QLineEdit *edtCrl;
QMenuBar *menubar; QMenuBar *menubar;
QStatusBar *statusbar; QStatusBar *statusbar;
QToolBar *toolBar; QToolBar *toolBar;
@ -102,63 +112,112 @@ public:
formLayout_2->setWidget(0, QFormLayout::LabelRole, label); formLayout_2->setWidget(0, QFormLayout::LabelRole, label);
lineEdit = new QLineEdit(layoutWidget); edtName = new QLineEdit(layoutWidget);
lineEdit->setObjectName(QStringLiteral("lineEdit")); edtName->setObjectName(QStringLiteral("edtName"));
formLayout_2->setWidget(0, QFormLayout::FieldRole, lineEdit); formLayout_2->setWidget(0, QFormLayout::FieldRole, edtName);
label_2 = new QLabel(layoutWidget); label_2 = new QLabel(layoutWidget);
label_2->setObjectName(QStringLiteral("label_2")); label_2->setObjectName(QStringLiteral("label_2"));
formLayout_2->setWidget(1, QFormLayout::LabelRole, label_2); formLayout_2->setWidget(1, QFormLayout::LabelRole, label_2);
lineEdit_2 = new QLineEdit(layoutWidget); edtHost = new QLineEdit(layoutWidget);
lineEdit_2->setObjectName(QStringLiteral("lineEdit_2")); edtHost->setObjectName(QStringLiteral("edtHost"));
formLayout_2->setWidget(1, QFormLayout::FieldRole, lineEdit_2); formLayout_2->setWidget(1, QFormLayout::FieldRole, edtHost);
label_3 = new QLabel(layoutWidget); label_3 = new QLabel(layoutWidget);
label_3->setObjectName(QStringLiteral("label_3")); label_3->setObjectName(QStringLiteral("label_3"));
formLayout_2->setWidget(2, QFormLayout::LabelRole, label_3); formLayout_2->setWidget(2, QFormLayout::LabelRole, label_3);
spinBox = new QSpinBox(layoutWidget); spinPort = new QSpinBox(layoutWidget);
spinBox->setObjectName(QStringLiteral("spinBox")); spinPort->setObjectName(QStringLiteral("spinPort"));
spinBox->setMaximum(65535); spinPort->setMaximum(65535);
formLayout_2->setWidget(2, QFormLayout::FieldRole, spinBox); formLayout_2->setWidget(2, QFormLayout::FieldRole, spinPort);
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 = new QLabel(layoutWidget);
label_5->setObjectName(QStringLiteral("label_5")); label_5->setObjectName(QStringLiteral("label_5"));
formLayout_2->setWidget(4, QFormLayout::LabelRole, label_5); formLayout_2->setWidget(3, QFormLayout::LabelRole, label_5);
lineEdit_3 = new QLineEdit(layoutWidget); edtUser = new QLineEdit(layoutWidget);
lineEdit_3->setObjectName(QStringLiteral("lineEdit_3")); edtUser->setObjectName(QStringLiteral("edtUser"));
formLayout_2->setWidget(4, QFormLayout::FieldRole, lineEdit_3); formLayout_2->setWidget(3, QFormLayout::FieldRole, edtUser);
label_6 = new QLabel(layoutWidget); label_6 = new QLabel(layoutWidget);
label_6->setObjectName(QStringLiteral("label_6")); label_6->setObjectName(QStringLiteral("label_6"));
formLayout_2->setWidget(5, QFormLayout::LabelRole, label_6); formLayout_2->setWidget(4, QFormLayout::LabelRole, label_6);
lineEdit_4 = new QLineEdit(layoutWidget); edtPassword = new QLineEdit(layoutWidget);
lineEdit_4->setObjectName(QStringLiteral("lineEdit_4")); edtPassword->setObjectName(QStringLiteral("edtPassword"));
lineEdit_4->setEchoMode(QLineEdit::Password); edtPassword->setEchoMode(QLineEdit::Password);
formLayout_2->setWidget(5, QFormLayout::FieldRole, lineEdit_4); formLayout_2->setWidget(4, QFormLayout::FieldRole, edtPassword);
label_4 = new QLabel(layoutWidget);
label_4->setObjectName(QStringLiteral("label_4"));
formLayout_2->setWidget(5, QFormLayout::LabelRole, label_4);
edtDbname = new QLineEdit(layoutWidget);
edtDbname->setObjectName(QStringLiteral("edtDbname"));
formLayout_2->setWidget(5, QFormLayout::FieldRole, edtDbname);
cmbbxSsl = new QComboBox(layoutWidget);
cmbbxSsl->setObjectName(QStringLiteral("cmbbxSsl"));
formLayout_2->setWidget(6, QFormLayout::FieldRole, cmbbxSsl);
label_7 = new QLabel(layoutWidget);
label_7->setObjectName(QStringLiteral("label_7"));
formLayout_2->setWidget(6, QFormLayout::LabelRole, label_7);
label_8 = new QLabel(layoutWidget);
label_8->setObjectName(QStringLiteral("label_8"));
formLayout_2->setWidget(7, QFormLayout::LabelRole, label_8);
edtCert = new QLineEdit(layoutWidget);
edtCert->setObjectName(QStringLiteral("edtCert"));
formLayout_2->setWidget(7, QFormLayout::FieldRole, edtCert);
label_9 = new QLabel(layoutWidget);
label_9->setObjectName(QStringLiteral("label_9"));
formLayout_2->setWidget(8, QFormLayout::LabelRole, label_9);
edtKey = new QLineEdit(layoutWidget);
edtKey->setObjectName(QStringLiteral("edtKey"));
formLayout_2->setWidget(8, QFormLayout::FieldRole, edtKey);
label_10 = new QLabel(layoutWidget);
label_10->setObjectName(QStringLiteral("label_10"));
formLayout_2->setWidget(9, QFormLayout::LabelRole, label_10);
edtRootCert = new QLineEdit(layoutWidget);
edtRootCert->setObjectName(QStringLiteral("edtRootCert"));
formLayout_2->setWidget(9, QFormLayout::FieldRole, edtRootCert);
label_11 = new QLabel(layoutWidget);
label_11->setObjectName(QStringLiteral("label_11"));
formLayout_2->setWidget(10, QFormLayout::LabelRole, label_11);
edtCrl = new QLineEdit(layoutWidget);
edtCrl->setObjectName(QStringLiteral("edtCrl"));
formLayout_2->setWidget(10, QFormLayout::FieldRole, edtCrl);
splitter->addWidget(layoutWidget); splitter->addWidget(layoutWidget);
@ -184,7 +243,7 @@ public:
retranslateUi(ConnectionManagerWindow); retranslateUi(ConnectionManagerWindow);
comboBox->setCurrentIndex(0); cmbbxSsl->setCurrentIndex(2);
QMetaObject::connectSlotsByName(ConnectionManagerWindow); QMetaObject::connectSlotsByName(ConnectionManagerWindow);
@ -200,14 +259,23 @@ public:
label->setText(QApplication::translate("ConnectionManagerWindow", "Name", Q_NULLPTR)); label->setText(QApplication::translate("ConnectionManagerWindow", "Name", Q_NULLPTR));
label_2->setText(QApplication::translate("ConnectionManagerWindow", "Host", Q_NULLPTR)); label_2->setText(QApplication::translate("ConnectionManagerWindow", "Host", Q_NULLPTR));
label_3->setText(QApplication::translate("ConnectionManagerWindow", "Port", 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_5->setText(QApplication::translate("ConnectionManagerWindow", "Username", Q_NULLPTR));
label_6->setText(QApplication::translate("ConnectionManagerWindow", "Password", Q_NULLPTR)); label_6->setText(QApplication::translate("ConnectionManagerWindow", "Password", Q_NULLPTR));
label_4->setText(QApplication::translate("ConnectionManagerWindow", "Database", Q_NULLPTR));
cmbbxSsl->clear();
cmbbxSsl->insertItems(0, QStringList()
<< QApplication::translate("ConnectionManagerWindow", "reject", Q_NULLPTR)
<< QApplication::translate("ConnectionManagerWindow", "allow", Q_NULLPTR)
<< QApplication::translate("ConnectionManagerWindow", "prefer", Q_NULLPTR)
<< QApplication::translate("ConnectionManagerWindow", "require", Q_NULLPTR)
<< QApplication::translate("ConnectionManagerWindow", "verify-ca", Q_NULLPTR)
<< QApplication::translate("ConnectionManagerWindow", "verify-full", Q_NULLPTR)
);
label_7->setText(QApplication::translate("ConnectionManagerWindow", "SSL", Q_NULLPTR));
label_8->setText(QApplication::translate("ConnectionManagerWindow", "Certificate", Q_NULLPTR));
label_9->setText(QApplication::translate("ConnectionManagerWindow", "Key", Q_NULLPTR));
label_10->setText(QApplication::translate("ConnectionManagerWindow", "Root cert.", Q_NULLPTR));
label_11->setText(QApplication::translate("ConnectionManagerWindow", "Revocation list", Q_NULLPTR));
toolBar->setWindowTitle(QApplication::translate("ConnectionManagerWindow", "toolBar", Q_NULLPTR)); toolBar->setWindowTitle(QApplication::translate("ConnectionManagerWindow", "toolBar", Q_NULLPTR));
} // retranslateUi } // retranslateUi