Fix license headers: Quassel IRC Team -> Quassel Project, 2007 -> 2008
[quassel.git] / src / qtui / settingsdlg.cpp
index 4206482..66a646b 100644 (file)
@@ -1,11 +1,11 @@
 /***************************************************************************
- *   Copyright (C) 2005-07 by The Quassel Team                             *
+ *   Copyright (C) 2005-08 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
  *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
+ *   (at your option) version 3.                                           *
  *                                                                         *
  *   This program is distributed in the hope that it will be useful,       *
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 SettingsDlg::SettingsDlg(QWidget *parent) : QDialog(parent) {
   ui.setupUi(this);
 
-  ui.settingsFrame->setWidgetResizable(true);
-  ui.settingsFrame->setWidget(ui.settingsStack);
+  //ui.settingsFrame->setWidgetResizable(true);
+  //ui.settingsFrame->setWidget(ui.settingsStack);
   ui.settingsTree->setRootIsDecorated(false);
 
   connect(ui.settingsTree, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelected()));
   connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
 }
 
+
 void SettingsDlg::registerSettingsPage(SettingsPage *sp) {
-  QWidget *w = sp->widget();
-  w->setParent(this);
-  ui.settingsStack->addWidget(w);
+  sp->setParent(ui.settingsStack);
+  ui.settingsStack->addWidget(sp);
 
   QTreeWidgetItem *cat;
   QList<QTreeWidgetItem *> cats = ui.settingsTree->findItems(sp->category(), Qt::MatchExactly);
@@ -43,12 +43,15 @@ void SettingsDlg::registerSettingsPage(SettingsPage *sp) {
     cat->setExpanded(true);
     cat->setFlags(Qt::ItemIsEnabled);
   } else cat = cats[0];
-  QTreeWidgetItem *p = new QTreeWidgetItem(cat, QStringList(sp->title()));
-  pages[QString("%1$%2").arg(sp->category()).arg(sp->title())] = sp;
+  new QTreeWidgetItem(cat, QStringList(sp->title()));
+  pages[QString("%1$%2").arg(sp->category(), sp->title())] = sp;
+  updateGeometry();
+  // TESTING
+  selectPage(sp->category(), sp->title());
 }
 
 void SettingsDlg::selectPage(const QString &cat, const QString &title) {
-  QWidget *w = pages[QString("%1$%2").arg(cat).arg(title)]->widget();
+  QWidget *w = pages[QString("%1$%2").arg(cat, title)];
   Q_ASSERT(w);
   ui.settingsStack->setCurrentWidget(w);
 }
@@ -63,27 +66,45 @@ void SettingsDlg::itemSelected() {
     QString cat = parent->text(0);
     QString title = items[0]->text(0);
     selectPage(cat, title);
+    ui.pageTitle->setText(title);
   }
 }
 
 void SettingsDlg::buttonClicked(QAbstractButton *button) {
-  switch(ui.buttonBox->buttonRole(button)) {
-    case QDialogButtonBox::AcceptRole:
+  switch(ui.buttonBox->standardButton(button)) {
+    case QDialogButtonBox::Ok:
       applyChanges();
       accept();
       break;
-    case QDialogButtonBox::ApplyRole:
+    case QDialogButtonBox::Apply:
       applyChanges();
       break;
-    case QDialogButtonBox::RejectRole:
+    case QDialogButtonBox::Cancel:
       reject();
       break;
+    case QDialogButtonBox::Reset:
+      reload();
+      break;
+    case QDialogButtonBox::RestoreDefaults:
+      loadDefaults();
+      break;
     default:
       break;
   }
 }
 
 void SettingsDlg::applyChanges() {
-  //SettingsInterface *sp = qobject_cast<SettingsInterface *>(ui.settingsStack->currentWidget());
-  //if(sp) sp->applyChanges();
+  foreach(SettingsPage *page, pages.values()) {
+    page->save();
+  }
+}
+
+void SettingsDlg::reload() {
+  SettingsPage *page = qobject_cast<SettingsPage *>(ui.settingsStack->currentWidget());
+  if(page) page->load();
+}
+
+void SettingsDlg::loadDefaults() {
+  SettingsPage *page = qobject_cast<SettingsPage *>(ui.settingsStack->currentWidget());
+  if(page) page->defaults();
 }