/*** Storage Selection Page ***/
-StorageSelectionPage::StorageSelectionPage(const QHash<QString, QVariant> &backends, QWidget *parent) : QWizardPage(parent) {
+StorageSelectionPage::StorageSelectionPage(const QHash<QString, QVariant> &backends, QWidget *parent)
+ : QWizardPage(parent),
+ _connectionBox(0),
+ _backends(backends)
+{
ui.setupUi(this);
- _backends = backends;
setTitle(tr("Select Storage Backend"));
setSubTitle(tr("Please select a database backend for the Quassel Core storage to store the backlog and other data in."));
QVariantMap StorageSelectionPage::connectionProperties() const {
QString backend = ui.backendList->itemData(ui.backendList->currentIndex()).toString();
- QVariantMap properties = _backends[backend].toMap()["ConnectionProperties"].toMap();
- if(!properties.isEmpty() && _connectionBox) {
- QVariantMap::iterator propertyIter = properties.begin();
- while(propertyIter != properties.constEnd()) {
- QWidget *widget = _connectionBox->findChild<QWidget *>(propertyIter.key());
- switch(propertyIter.value().type()) {
+
+ QVariantMap properties;
+ QStringList setupKeys = _backends[backend].toMap()["SetupKeys"].toStringList();
+ if(!setupKeys.isEmpty()) {
+ QVariantMap defaults = _backends[backend].toMap()["SetupDefaults"].toMap();
+ foreach(QString key, setupKeys) {
+ QWidget *widget = _connectionBox->findChild<QWidget *>(key);
+ QVariant def;
+ if(defaults.contains(key)) {
+ def = defaults[key];
+ }
+ switch(def.type()) {
case QVariant::Int:
{
QSpinBox *spinbox = qobject_cast<QSpinBox *>(widget);
Q_ASSERT(spinbox);
- propertyIter.value() = QVariant(spinbox->value());
+ def = QVariant(spinbox->value());
}
break;
default:
{
QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget);
Q_ASSERT(lineEdit);
- propertyIter.value() = QVariant(lineEdit->text());
+ def = QVariant(lineEdit->text());
}
}
- propertyIter++;
+ properties[key] = def;
}
}
+ qDebug() << properties;
+
+
+// QVariantMap properties = _backends[backend].toMap()["ConnectionProperties"].toMap();
+// if(!properties.isEmpty() && _connectionBox) {
+// QVariantMap::iterator propertyIter = properties.begin();
+// while(propertyIter != properties.constEnd()) {
+// QWidget *widget = _connectionBox->findChild<QWidget *>(propertyIter.key());
+// switch(propertyIter.value().type()) {
+// case QVariant::Int:
+// {
+// QSpinBox *spinbox = qobject_cast<QSpinBox *>(widget);
+// Q_ASSERT(spinbox);
+// propertyIter.value() = QVariant(spinbox->value());
+// }
+// break;
+// default:
+// {
+// QLineEdit *lineEdit = qobject_cast<QLineEdit *>(widget);
+// Q_ASSERT(lineEdit);
+// propertyIter.value() = QVariant(lineEdit->text());
+// }
+// }
+// propertyIter++;
+// }
+// }
return properties;
}
_connectionBox = 0;
}
- QVariantMap properties = _backends[backend].toMap()["ConnectionProperties"].toMap();
- if(!properties.isEmpty()) {
+ QStringList setupKeys = _backends[backend].toMap()["SetupKeys"].toStringList();
+ if(!setupKeys.isEmpty()) {
+ QVariantMap defaults = _backends[backend].toMap()["SetupDefaults"].toMap();
QGroupBox *propertyBox = new QGroupBox(this);
propertyBox->setTitle(tr("Connection Properties"));
QFormLayout *formlayout = new QFormLayout;
- QVariantMap::const_iterator propertyIter = properties.constBegin();
- while(propertyIter != properties.constEnd()) {
+ foreach(QString key, setupKeys) {
QWidget *widget = 0;
- switch(propertyIter.value().type()) {
+ QVariant def;
+ if(defaults.contains(key)) {
+ def = defaults[key];
+ }
+ switch(def.type()) {
case QVariant::Int:
{
QSpinBox *spinbox = new QSpinBox(propertyBox);
spinbox->setMaximum(64000);
- spinbox->setValue(propertyIter.value().toInt());
+ spinbox->setValue(def.toInt());
widget = spinbox;
}
break;
default:
- widget = new QLineEdit(propertyIter.value().toString(), propertyBox);
+ {
+ QLineEdit *lineEdit = new QLineEdit(def.toString(), propertyBox);
+ if(key.toLower().contains("password")) {
+ lineEdit->setEchoMode(QLineEdit::Password);
+ }
+ widget = lineEdit;
+ }
}
- widget->setObjectName(propertyIter.key());
- formlayout->addRow(propertyIter.key() + ":", widget);
- propertyIter++;
+ widget->setObjectName(key);
+ formlayout->addRow(key + ":", widget);
}
propertyBox->setLayout(formlayout);
static_cast<QVBoxLayout *>(layout())->insertWidget(layout()->indexOf(ui.descriptionBox) + 1, propertyBox);