/***************************************************************************
- * Copyright (C) 2005-08 by the Quassel IRC Team *
+ * Copyright (C) 2005-2012 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include "settingspagedlg.h"
-SettingsPageDlg::SettingsPageDlg(SettingsPage *page, QWidget *parent) : QDialog(parent) {
+#include "iconloader.h"
+
+SettingsPageDlg::SettingsPageDlg(SettingsPage *page, QWidget *parent)
+ : QDialog(parent)
+{
ui.setupUi(this);
_currentPage = page;
page->setParent(this);
+
+ // make it look more native under Mac OS X:
+ setWindowFlags(Qt::Sheet);
+
ui.pageTitle->setText(page->title());
+ setWindowTitle(tr("Configure %1").arg(page->title()));
+ setWindowIcon(SmallIcon("configure"));
// make the scrollarea behave sanely
ui.settingsFrame->setWidgetResizable(true);
void SettingsPageDlg::setButtonStates() {
SettingsPage *sp = currentPage();
- ui.buttonBox->button(QDialogButtonBox::Ok)->setEnabled(sp && sp->hasChanged());
ui.buttonBox->button(QDialogButtonBox::Apply)->setEnabled(sp && sp->hasChanged());
ui.buttonBox->button(QDialogButtonBox::Reset)->setEnabled(sp && sp->hasChanged());
ui.buttonBox->button(QDialogButtonBox::RestoreDefaults)->setEnabled(sp && sp->hasDefaults());
void SettingsPageDlg::buttonClicked(QAbstractButton *button) {
switch(ui.buttonBox->standardButton(button)) {
case QDialogButtonBox::Ok:
- if(applyChanges()) accept();
+ if(currentPage() && currentPage()->hasChanged()) {
+ if(applyChanges()) accept();
+ } else accept();
break;
case QDialogButtonBox::Apply:
applyChanges();
if(!currentPage()) return;
int ret = QMessageBox::question(this, tr("Restore Defaults"), tr("Do you like to restore the default values for this page?"),
QMessageBox::RestoreDefaults|QMessageBox::Cancel, QMessageBox::Cancel);
- if(ret == QMessageBox::Yes) {
+ if(ret == QMessageBox::RestoreDefaults) {
currentPage()->defaults();
}
}