-#include <QGridLayout>
-#include <QHeaderView>
+#include <QVBoxLayout>
+#include <QHBoxLayout>
#include <QSettings>
-#include <QProgressBar>
#include <QPushButton>
#include <QMessageBox>
-#include <QTableWidget>
#include "advsettingsdlg.h"
+#include "settingstable.h"
AdvSettingsDlg::AdvSettingsDlg(QDialog *parent)
: QDialog(parent)
, layout(NULL)
+ , btnLayout(NULL)
, settings(NULL)
, resetBtn(NULL)
, saveBtn(NULL)
, table(NULL)
{
- settings = new QSettings(this);
setWindowTitle(tr("Advanced settings"));
+ setMinimumHeight(320);
+ settings = new QSettings(this);
resetBtn = new QPushButton(tr("Defaults"), this);
saveBtn = new QPushButton(tr("Save"), this);
- table = new QTableWidget(0, 2, this);
- table->verticalHeader()->setVisible(false);
- table->horizontalHeader()->setVisible(false);
+ table = new SettingsTable(this);
+ layout = new QHBoxLayout(this);
+ btnLayout = new QVBoxLayout();
+
connect(resetBtn, SIGNAL(clicked()), this, SLOT(resetToDefaults()));
connect(saveBtn, SIGNAL(clicked()), this, SLOT(save()));
- layout = new QGridLayout(this);
- layout->addWidget(table, 0, 0, 2, 3);
- layout->addWidget(resetBtn, 0, 4);
- layout->addWidget(saveBtn, 1, 4);
- setLayout(layout);
+ btnLayout->addWidget(resetBtn);
+ btnLayout->addWidget(saveBtn);
+ layout->addWidget(table, Qt::AlignLeft);
+ layout->addLayout(btnLayout, 0);
+
refreshList();
}
{
for (int i = 0; i < table->rowCount(); ++i)
{
- settings->setValue(table->item(i, 0)->text(),
- table->item(i, 1)->text());
+ settings->setValue(table->key(i), table->value(i));
}
- this->done(0);
+ done(0); // close dialog
}
-int AdvSettingsDlg::refreshList()
+void AdvSettingsDlg::refreshList()
{
- table->clear();
- table->setRowCount(0);
+ table->removeAllRows();
QStringList keys = settings->allKeys();
-
for (int i = 0; i < keys.size(); ++i)
{
- QTableWidgetItem *key = new QTableWidgetItem(keys.at(i));
- QTableWidgetItem *value = new QTableWidgetItem(
- settings->value(keys.at(i), "n/a").toString());
- key->setFlags(Qt::NoItemFlags | Qt::ItemIsEnabled);
- value->setFlags(Qt::ItemIsEnabled | Qt::ItemIsEditable);
- table->insertRow(table->rowCount());
- table->setItem(i, 0, key);
- table->setItem(i, 1, value);
+ table->appendRow(keys.at(i),
+ settings->value(keys.at(i), "n/a").toString());
}
- table->resizeColumnsToContents();
}
-
void AdvSettingsDlg::resetToDefaults()
{
QMessageBox mbox(QMessageBox::Question, "",
tr("All settings will be reset to defaults"),
- QMessageBox::Ok, this); // Cancel by clicking outside the
- // messagebox in maemo
+ QMessageBox::Cancel | QMessageBox::Ok, this);
if (mbox.exec() == QMessageBox::Ok)
{
settings->setValue("lircPort", 8765);
}
}
-
--- /dev/null
+#include <QResizeEvent>
+#include <QHeaderView>
+#include "settingstable.h"
+
+SettingsTable::SettingsTable(QWidget *parent)
+ : QTableWidget(0, 2, parent) // Always two columns. Key and value.
+{
+ verticalHeader()->setVisible(false);
+ horizontalHeader()->setVisible(false);
+}
+
+SettingsTable::~SettingsTable()
+{
+}
+
+void SettingsTable::appendRow(const QString &key, const QString &value)
+{
+ QTableWidgetItem *k = new QTableWidgetItem(key);
+ QTableWidgetItem *v = new QTableWidgetItem(value);
+ k->setFlags(Qt::NoItemFlags | Qt::ItemIsEnabled);
+ v->setFlags(Qt::ItemIsEnabled | Qt::ItemIsEditable);
+ insertRow(rowCount());
+ setItem(rowCount() - 1, 0, k);
+ setItem(rowCount() - 1, 1, v);
+}
+
+void SettingsTable::removeAllRows()
+{
+ clear();
+ setRowCount(0);
+}
+
+void SettingsTable::resizeEvent(QResizeEvent *e)
+{
+ setColumnWidth(0, (e->size().width() / 3) - 10);
+ setColumnWidth(1, (2 * e->size().width() / 3) - 10);
+}
+
+QString SettingsTable::key(unsigned int row) const
+{
+ return item(row, 0)->text();
+}
+
+QString SettingsTable::value(unsigned int row) const
+{
+ return item(row, 1)->text();
+}
+