#include "settingspages/chatviewsettingspage.h"
#include "settingspages/connectionsettingspage.h"
#include "settingspages/coreaccountsettingspage.h"
-#include "settingspages/generalsettingspage.h"
#include "settingspages/highlightsettingspage.h"
#include "settingspages/identitiessettingspage.h"
#include "settingspages/ignorelistsettingspage.h"
//Category: Interface
dlg->registerSettingsPage(new AppearanceSettingsPage(dlg));
dlg->registerSettingsPage(new ChatViewSettingsPage(dlg));
+ dlg->registerSettingsPage(new ChatMonitorSettingsPage(dlg));
dlg->registerSettingsPage(new ItemViewSettingsPage(dlg));
+ dlg->registerSettingsPage(new BufferViewSettingsPage(dlg));
dlg->registerSettingsPage(new InputWidgetSettingsPage(dlg));
dlg->registerSettingsPage(new TopicWidgetSettingsPage(dlg));
dlg->registerSettingsPage(new HighlightSettingsPage(dlg));
dlg->registerSettingsPage(new NotificationsSettingsPage(dlg));
dlg->registerSettingsPage(new BacklogSettingsPage(dlg));
- dlg->registerSettingsPage(new BufferViewSettingsPage(dlg));
- dlg->registerSettingsPage(new ChatMonitorSettingsPage(dlg));
- //Category: Misc
- dlg->registerSettingsPage(new GeneralSettingsPage(dlg));
+ //Category: IRC
dlg->registerSettingsPage(new ConnectionSettingsPage(dlg));
dlg->registerSettingsPage(new IdentitiesSettingsPage(dlg));
dlg->registerSettingsPage(new NetworksSettingsPage(dlg));
dlg->registerSettingsPage(new AliasesSettingsPage(dlg));
dlg->registerSettingsPage(new IgnoreListSettingsPage(dlg));
+ // Category: Remote Cores
if(Quassel::runMode() != Quassel::Monolithic) {
dlg->registerSettingsPage(new CoreAccountSettingsPage(dlg));
}
#include "settingsdlg.h"
+#include "client.h"
#include "iconloader.h"
SettingsDlg::SettingsDlg(QWidget *parent)
connect(ui.settingsTree, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelected()));
connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
+ connect(Client::instance(), SIGNAL(coreConnectionStateChanged(bool)), SLOT(coreConnectionStateChanged()));
+
setButtonStates();
}
+void SettingsDlg::coreConnectionStateChanged() {
+ for(int i = 0; i < ui.settingsTree->topLevelItemCount(); i++) {
+ QTreeWidgetItem *catItem = ui.settingsTree->topLevelItem(i);
+ for(int j = 0; j < catItem->childCount(); j++) {
+ QTreeWidgetItem *item = catItem->child(j);
+ setItemState(item);
+ }
+ setItemState(catItem);
+ }
+}
+
+void SettingsDlg::setItemState(QTreeWidgetItem *item) {
+ SettingsPage *sp = qobject_cast<SettingsPage *>(item->data(0, SettingsPageRole).value<QObject *>());
+ Q_ASSERT(sp);
+ item->setDisabled(!Client::isConnected() && sp->needsCoreConnection());
+}
+
void SettingsDlg::registerSettingsPage(SettingsPage *sp) {
sp->setParent(ui.settingsStack);
ui.settingsStack->addWidget(sp);
pageIsLoaded[sp] = false;
if(!ui.settingsTree->selectedItems().count())
ui.settingsTree->setCurrentItem(item);
+
+ setItemState(item);
}
void SettingsDlg::selectPage(SettingsPage *sp) {
void selectPage(SettingsPage *sp); // const QString &category, const QString &title);
private slots:
+ void coreConnectionStateChanged();
void itemSelected();
void buttonClicked(QAbstractButton *);
bool applyChanges();
void reload();
void loadDefaults();
void setButtonStates();
-
+ void setItemState(QTreeWidgetItem *);
+
private:
Ui::SettingsDlg ui;
-
+
SettingsPage *_currentPage;
QHash<SettingsPage *, bool> pageIsLoaded;
#include "iconloader.h"
AliasesSettingsPage::AliasesSettingsPage(QWidget *parent)
- : SettingsPage(tr("Misc"), tr("Aliases"), parent)
+ : SettingsPage(tr("IRC"), tr("Aliases"), parent)
{
ui.setupUi(this);
ui.newAliasButton->setIcon(SmallIcon("list-add"));
AliasesSettingsPage(QWidget *parent = 0);
virtual inline bool hasDefaults() const { return true; }
+ virtual inline bool needsCoreConnection() const { return true; }
public slots:
void save();
#include "appearancesettingspage.h"
+#include "buffersettings.h"
#include "qtui.h"
#include "qtuisettings.h"
#include "qtuistyle.h"
: SettingsPage(tr("Interface"), QString(), parent)
{
ui.setupUi(this);
+
+#ifdef Q_WS_MAC
+ ui.minimizeOnClose->hide();
+#endif
+
initAutoWidgets();
initStyleComboBox();
initLanguageComboBox();
}
connect(ui.chooseStyleSheet, SIGNAL(clicked()), SLOT(chooseStyleSheet()));
+
+ connect(ui.userNoticesInDefaultBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
+ connect(ui.userNoticesInStatusBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
+ connect(ui.userNoticesInCurrentBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
+
+ connect(ui.serverNoticesInDefaultBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
+ connect(ui.serverNoticesInStatusBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
+ connect(ui.serverNoticesInCurrentBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
+
+ connect(ui.errorMsgsInDefaultBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
+ connect(ui.errorMsgsInStatusBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
+ connect(ui.errorMsgsInCurrentBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
}
void AppearanceSettingsPage::initStyleComboBox() {
ui.languageComboBox->setProperty("storedValue", ui.languageComboBox->currentIndex());
Quassel::loadTranslation(selectedLocale());
+ // bufferSettings:
+ BufferSettings bufferSettings;
+ int redirectTarget = bufferSettings.userNoticesTarget();
+ SettingsPage::load(ui.userNoticesInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer);
+ SettingsPage::load(ui.userNoticesInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer);
+ SettingsPage::load(ui.userNoticesInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer);
+
+ redirectTarget = bufferSettings.serverNoticesTarget();
+ SettingsPage::load(ui.serverNoticesInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer);
+ SettingsPage::load(ui.serverNoticesInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer);
+ SettingsPage::load(ui.serverNoticesInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer);
+
+ redirectTarget = bufferSettings.errorMsgsTarget();
+ SettingsPage::load(ui.errorMsgsInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer);
+ SettingsPage::load(ui.errorMsgsInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer);
+ SettingsPage::load(ui.errorMsgsInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer);
+
SettingsPage::load();
setChangedState(false);
}
ui.useCustomStyleSheet->isChecked() != ui.useCustomStyleSheet->property("storedValue").toBool()
|| (ui.useCustomStyleSheet->isChecked() && ui.customStyleSheetPath->text() != ui.customStyleSheetPath->property("storedValue").toString());
+ BufferSettings bufferSettings;
+ int redirectTarget = 0;
+ if(ui.userNoticesInDefaultBuffer->isChecked())
+ redirectTarget |= BufferSettings::DefaultBuffer;
+ if(ui.userNoticesInStatusBuffer->isChecked())
+ redirectTarget |= BufferSettings::StatusBuffer;
+ if(ui.userNoticesInCurrentBuffer->isChecked())
+ redirectTarget |= BufferSettings::CurrentBuffer;
+ bufferSettings.setUserNoticesTarget(redirectTarget);
+
+ redirectTarget = 0;
+ if(ui.serverNoticesInDefaultBuffer->isChecked())
+ redirectTarget |= BufferSettings::DefaultBuffer;
+ if(ui.serverNoticesInStatusBuffer->isChecked())
+ redirectTarget |= BufferSettings::StatusBuffer;
+ if(ui.serverNoticesInCurrentBuffer->isChecked())
+ redirectTarget |= BufferSettings::CurrentBuffer;
+ bufferSettings.setServerNoticesTarget(redirectTarget);
+
+ redirectTarget = 0;
+ if(ui.errorMsgsInDefaultBuffer->isChecked())
+ redirectTarget |= BufferSettings::DefaultBuffer;
+ if(ui.errorMsgsInStatusBuffer->isChecked())
+ redirectTarget |= BufferSettings::StatusBuffer;
+ if(ui.errorMsgsInCurrentBuffer->isChecked())
+ redirectTarget |= BufferSettings::CurrentBuffer;
+ bufferSettings.setErrorMsgsTarget(redirectTarget);
+
SettingsPage::save();
setChangedState(false);
if(needsStyleReload)
if(selectedLocale() != QLocale()) return true; // QLocale() returns the default locale (manipulated via loadTranslation())
+ if(SettingsPage::hasChanged(ui.userNoticesInStatusBuffer)) return true;
+ if(SettingsPage::hasChanged(ui.userNoticesInDefaultBuffer)) return true;
+ if(SettingsPage::hasChanged(ui.userNoticesInCurrentBuffer)) return true;
+
+ if(SettingsPage::hasChanged(ui.serverNoticesInStatusBuffer)) return true;
+ if(SettingsPage::hasChanged(ui.serverNoticesInDefaultBuffer)) return true;
+ if(SettingsPage::hasChanged(ui.serverNoticesInCurrentBuffer)) return true;
+
+ if(SettingsPage::hasChanged(ui.errorMsgsInStatusBuffer)) return true;
+ if(SettingsPage::hasChanged(ui.errorMsgsInDefaultBuffer)) return true;
+ if(SettingsPage::hasChanged(ui.errorMsgsInCurrentBuffer)) return true;
+
return false;
}
Ui::AppearanceSettingsPage ui;
QHash<QString, QVariant> settings;
QList<QLocale> _locales;
+
+ inline QString settingsKey() const { return QString("QtUi"); }
};
#endif
<rect>
<x>0</x>
<y>0</y>
- <width>521</width>
- <height>524</height>
+ <width>549</width>
+ <height>470</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
- <layout class="QVBoxLayout" name="verticalLayout_2">
+ <layout class="QVBoxLayout" name="verticalLayout">
<item>
- <widget class="QGroupBox" name="groupBox">
- <property name="title">
- <string>Client Style</string>
- </property>
- <layout class="QVBoxLayout">
- <item>
- <widget class="QComboBox" name="styleComboBox">
- <property name="toolTip">
- <string>Set application style</string>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Client style:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QComboBox" name="styleComboBox">
+ <property name="toolTip">
+ <string>Set application style</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string>Language:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QComboBox" name="languageComboBox">
+ <property name="toolTip">
+ <string>Set the application language. Requires restart!</string>
+ </property>
+ <item>
+ <property name="text">
+ <string><System Default></string>
</property>
- </widget>
- </item>
- </layout>
- </widget>
+ </item>
+ <item>
+ <property name="text">
+ <string><Original></string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
</item>
<item>
- <widget class="QGroupBox" name="groupBox_2">
- <property name="title">
- <string>Language</string>
+ <widget class="QCheckBox" name="useCustomStyleSheet">
+ <property name="text">
+ <string>Use custom stylesheet</string>
+ </property>
+ <property name="settingsKey" stdset="0">
+ <string notr="true">UseCustomStyleSheet</string>
+ </property>
+ <property name="defaultValue" stdset="0">
+ <bool>false</bool>
</property>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QComboBox" name="languageComboBox">
- <property name="toolTip">
- <string>Set the application language. Requires restart!</string>
- </property>
- <item>
- <property name="text">
- <string><System Default></string>
- </property>
- </item>
- <item>
- <property name="text">
- <string><Original></string>
- </property>
- </item>
- </widget>
- </item>
- </layout>
</widget>
</item>
<item>
- <widget class="QGroupBox" name="useCustomStyleSheet">
- <property name="title">
- <string>Use Custom Stylesheet</string>
- </property>
- <property name="checkable">
- <bool>true</bool>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Path:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="customStyleSheetPath">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="readOnly">
+ <bool>false</bool>
+ </property>
+ <property name="settingsKey" stdset="0">
+ <string notr="true">/UiStyle/CustomStyleSheetPath</string>
+ </property>
+ <property name="defaultValue" stdset="0">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="chooseStyleSheet">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>...</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="useSystemTrayIcon">
+ <property name="text">
+ <string>Show system tray icon</string>
</property>
<property name="checked">
- <bool>false</bool>
+ <bool>true</bool>
</property>
<property name="settingsKey" stdset="0">
- <string notr="true">/UiStyle/UseCustomStyleSheet</string>
+ <string notr="true">UseSystemTrayIcon</string>
</property>
<property name="defaultValue" stdset="0">
- <bool>false</bool>
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeType">
+ <enum>QSizePolicy::Fixed</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QCheckBox" name="minimizeOnClose">
+ <property name="text">
+ <string>Hide to tray on close button</string>
+ </property>
+ <property name="settingsKey" stdset="0">
+ <string notr="true">MinimizeOnClose</string>
+ </property>
+ <property name="defaultValue" stdset="0">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_3">
+ <property name="title">
+ <string>Message Redirection</string>
</property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <widget class="QLabel" name="label">
- <property name="text">
- <string>Path:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLineEdit" name="customStyleSheetPath">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="readOnly">
- <bool>false</bool>
- </property>
- <property name="settingsKey" stdset="0">
- <string notr="true">/UiStyle/CustomStyleSheetPath</string>
- </property>
- <property name="defaultValue" stdset="0">
- <string/>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="chooseStyleSheet">
- <property name="text">
- <string>...</string>
- </property>
- </widget>
- </item>
- </layout>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>User Notices:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QCheckBox" name="userNoticesInDefaultBuffer">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QCheckBox" name="userNoticesInStatusBuffer">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checked">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="3">
+ <widget class="QCheckBox" name="userNoticesInCurrentBuffer">
+ <property name="enabled">
+ <bool>true</bool>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>Server Notices:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QCheckBox" name="serverNoticesInDefaultBuffer">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Default Target</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>Status Window</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3">
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string>Current Chat</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>Errors:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QCheckBox" name="serverNoticesInStatusBuffer">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="3">
+ <widget class="QCheckBox" name="serverNoticesInCurrentBuffer">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QCheckBox" name="errorMsgsInDefaultBuffer">
+ <property name="text">
+ <string/>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2">
+ <widget class="QCheckBox" name="errorMsgsInStatusBuffer">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="3">
+ <widget class="QCheckBox" name="errorMsgsInCurrentBuffer">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
</item>
</layout>
</widget>
</layout>
</widget>
<resources/>
- <connections/>
+ <connections>
+ <connection>
+ <sender>useCustomStyleSheet</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>customStyleSheetPath</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>63</x>
+ <y>86</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>86</x>
+ <y>114</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>useCustomStyleSheet</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>label</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>45</x>
+ <y>80</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>38</x>
+ <y>113</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>useCustomStyleSheet</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>chooseStyleSheet</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>84</x>
+ <y>80</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>525</x>
+ <y>117</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>useSystemTrayIcon</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>minimizeOnClose</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>91</x>
+ <y>143</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>92</x>
+ <y>174</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
</ui>
#include "backlogsettings.h"
BacklogSettingsPage::BacklogSettingsPage(QWidget *parent)
- : SettingsPage(tr("Misc"), tr("Backlog"), parent)
+ : SettingsPage(tr("Interface"), tr("Backlog Fetching"), parent)
{
ui.setupUi(this);
initAutoWidgets();
#include "util.h"
BufferViewSettingsPage::BufferViewSettingsPage(QWidget *parent)
- : SettingsPage(tr("Misc"), tr("Custom Chat Lists"), parent),
+ : SettingsPage(tr("Interface"), tr("Custom Chat Lists"), parent),
_ignoreWidgetChanges(false),
_useBufferViewHint(false),
_bufferViewHint(0)
coreConnectionStateChanged(Client::isConnected()); // need a core connection!
connect(Client::instance(), SIGNAL(coreConnectionStateChanged(bool)), this, SLOT(coreConnectionStateChanged(bool)));
connect(ui.bufferViewList->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)),
- this, SLOT(bufferViewSelectionChanged(const QItemSelection &, const QItemSelection &)));
+ this, SLOT(bufferViewSelectionChanged(const QItemSelection &, const QItemSelection &)));
connect(ui.onlyStatusBuffers, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
connect(ui.onlyChannelBuffers, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
} else if(config) {
QList<BufferViewConfig *>::iterator iter = _newBufferViews.begin();
while(iter != _newBufferViews.end()) {
- if(*iter == config) {
- iter = _newBufferViews.erase(iter);
- break;
- } else {
- iter++;
- }
+ if(*iter == config) {
+ iter = _newBufferViews.erase(iter);
+ break;
+ } else {
+ iter++;
+ }
}
delete config;
if(_deleteBufferViews.isEmpty() && _changedBufferViews.isEmpty() && _newBufferViews.isEmpty())
- setChangedState(false);
+ setChangedState(false);
}
}
}
#include "networkconfig.h"
ConnectionSettingsPage::ConnectionSettingsPage(QWidget *parent)
- : SettingsPage(tr("Misc"), tr("Connection"), parent) {
+ : SettingsPage(tr("IRC"), QString(), parent) {
ui.setupUi(this);
initAutoWidgets();
ConnectionSettingsPage(QWidget *parent = 0);
bool hasDefaults() const;
+ bool needsCoreConnection() const { return true; }
public slots:
#include "iconloader.h"
CoreAccountSettingsPage::CoreAccountSettingsPage(QWidget *parent)
-: SettingsPage(tr("Misc"), tr("Core Accounts"), parent),
+: SettingsPage(tr("Remote Cores"), QString(), parent),
_lastAccountId(0),
_lastAutoConnectId(0),
_standalone(false)
+++ /dev/null
-/***************************************************************************
- * Copyright (C) 2005-09 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. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-
-#include "generalsettingspage.h"
-
-#include "qtui.h"
-#include "qtuisettings.h"
-#include "buffersettings.h"
-
-GeneralSettingsPage::GeneralSettingsPage(QWidget *parent)
- : SettingsPage(tr("Misc"), QString(), parent) {
- ui.setupUi(this);
-
-#ifdef Q_WS_MAC
- ui.useSystemTrayIcon->hide();
-#else
- ui.macOnly->hide();
-#endif
-
- connect(ui.useSystemTrayIcon, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
- connect(ui.showSystemTrayIcon, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
- connect(ui.minimizeOnClose, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
-
- connect(ui.userNoticesInDefaultBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
- connect(ui.userNoticesInStatusBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
- connect(ui.userNoticesInCurrentBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
-
- connect(ui.serverNoticesInDefaultBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
- connect(ui.serverNoticesInStatusBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
- connect(ui.serverNoticesInCurrentBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
-
- connect(ui.errorMsgsInDefaultBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
- connect(ui.errorMsgsInStatusBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
- connect(ui.errorMsgsInCurrentBuffer, SIGNAL(clicked(bool)), this, SLOT(widgetHasChanged()));
-}
-
-bool GeneralSettingsPage::hasDefaults() const {
- return true;
-}
-
-void GeneralSettingsPage::defaults() {
- ui.useSystemTrayIcon->setChecked(true);
- ui.showSystemTrayIcon->setChecked(true);
- ui.minimizeOnClose->setChecked(false);
-
- ui.userNoticesInDefaultBuffer->setChecked(true);
- ui.userNoticesInStatusBuffer->setChecked(false);
- ui.userNoticesInCurrentBuffer->setChecked(false);
-
- ui.serverNoticesInDefaultBuffer->setChecked(false);
- ui.serverNoticesInStatusBuffer->setChecked(true);
- ui.serverNoticesInCurrentBuffer->setChecked(false);
-
- ui.errorMsgsInDefaultBuffer->setChecked(true);
- ui.errorMsgsInStatusBuffer->setChecked(false);
- ui.errorMsgsInCurrentBuffer->setChecked(false);
-
- widgetHasChanged();
-}
-
-void GeneralSettingsPage::load() {
- // uiSettings:
- QtUiSettings qtuiSettings;
- UiSettings uiSettings;
- settings["UseSystemTrayIcon"] = qtuiSettings.value("UseSystemTrayIcon", QVariant(true));
- ui.useSystemTrayIcon->setChecked(settings["UseSystemTrayIcon"].toBool());
- ui.showSystemTrayIcon->setChecked(settings["UseSystemTrayIcon"].toBool());
-
- settings["MinimizeOnClose"] = qtuiSettings.value("MinimizeOnClose", QVariant(false));
- ui.minimizeOnClose->setChecked(settings["MinimizeOnClose"].toBool());
-
- // bufferSettings:
- BufferSettings bufferSettings;
- int redirectTarget = bufferSettings.userNoticesTarget();
- SettingsPage::load(ui.userNoticesInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer);
- SettingsPage::load(ui.userNoticesInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer);
- SettingsPage::load(ui.userNoticesInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer);
-
- redirectTarget = bufferSettings.serverNoticesTarget();
- SettingsPage::load(ui.serverNoticesInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer);
- SettingsPage::load(ui.serverNoticesInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer);
- SettingsPage::load(ui.serverNoticesInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer);
-
- redirectTarget = bufferSettings.errorMsgsTarget();
- SettingsPage::load(ui.errorMsgsInDefaultBuffer, redirectTarget & BufferSettings::DefaultBuffer);
- SettingsPage::load(ui.errorMsgsInStatusBuffer, redirectTarget & BufferSettings::StatusBuffer);
- SettingsPage::load(ui.errorMsgsInCurrentBuffer, redirectTarget & BufferSettings::CurrentBuffer);
-
- setChangedState(false);
-}
-
-void GeneralSettingsPage::save() {
- QtUiSettings qtuiSettings;
-#ifdef Q_WS_MAC
- qtuiSettings.setValue("UseSystemTrayIcon", ui.showSystemTrayIcon->isChecked());
-#else
- qtuiSettings.setValue("UseSystemTrayIcon", ui.useSystemTrayIcon->isChecked());
-#endif
- qtuiSettings.setValue("MinimizeOnClose", ui.minimizeOnClose->isChecked());
-
- BufferSettings bufferSettings;
- int redirectTarget = 0;
- if(ui.userNoticesInDefaultBuffer->isChecked())
- redirectTarget |= BufferSettings::DefaultBuffer;
- if(ui.userNoticesInStatusBuffer->isChecked())
- redirectTarget |= BufferSettings::StatusBuffer;
- if(ui.userNoticesInCurrentBuffer->isChecked())
- redirectTarget |= BufferSettings::CurrentBuffer;
- bufferSettings.setUserNoticesTarget(redirectTarget);
-
- redirectTarget = 0;
- if(ui.serverNoticesInDefaultBuffer->isChecked())
- redirectTarget |= BufferSettings::DefaultBuffer;
- if(ui.serverNoticesInStatusBuffer->isChecked())
- redirectTarget |= BufferSettings::StatusBuffer;
- if(ui.serverNoticesInCurrentBuffer->isChecked())
- redirectTarget |= BufferSettings::CurrentBuffer;
- bufferSettings.setServerNoticesTarget(redirectTarget);
-
- redirectTarget = 0;
- if(ui.errorMsgsInDefaultBuffer->isChecked())
- redirectTarget |= BufferSettings::DefaultBuffer;
- if(ui.errorMsgsInStatusBuffer->isChecked())
- redirectTarget |= BufferSettings::StatusBuffer;
- if(ui.errorMsgsInCurrentBuffer->isChecked())
- redirectTarget |= BufferSettings::CurrentBuffer;
- bufferSettings.setErrorMsgsTarget(redirectTarget);
-
- load();
- setChangedState(false);
-}
-
-void GeneralSettingsPage::widgetHasChanged() {
- bool changed = testHasChanged();
- if(changed != hasChanged()) setChangedState(changed);
-}
-
-bool GeneralSettingsPage::testHasChanged() {
-#ifdef Q_WS_MAC
- if(settings["UseSystemTrayIcon"].toBool() != ui.showSystemTrayIcon->isChecked()) return true;
-#else
- if(settings["UseSystemTrayIcon"].toBool() != ui.useSystemTrayIcon->isChecked()) return true;
-#endif
- if(settings["MinimizeOnClose"].toBool() != ui.minimizeOnClose->isChecked()) return true;
-
- if(SettingsPage::hasChanged(ui.userNoticesInStatusBuffer)) return true;
- if(SettingsPage::hasChanged(ui.userNoticesInDefaultBuffer)) return true;
- if(SettingsPage::hasChanged(ui.userNoticesInCurrentBuffer)) return true;
-
- if(SettingsPage::hasChanged(ui.serverNoticesInStatusBuffer)) return true;
- if(SettingsPage::hasChanged(ui.serverNoticesInDefaultBuffer)) return true;
- if(SettingsPage::hasChanged(ui.serverNoticesInCurrentBuffer)) return true;
-
- if(SettingsPage::hasChanged(ui.errorMsgsInStatusBuffer)) return true;
- if(SettingsPage::hasChanged(ui.errorMsgsInDefaultBuffer)) return true;
- if(SettingsPage::hasChanged(ui.errorMsgsInCurrentBuffer)) return true;
-
- return false;
-}
+++ /dev/null
-/***************************************************************************
- * Copyright (C) 2005-09 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. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
- ***************************************************************************/
-
-#ifndef GENERALSETTINGSPAGE_H
-#define GENERALSETTINGSPAGE_H
-
-#include <QHash>
-
-#include "settingspage.h"
-#include "ui_generalsettingspage.h"
-
-class GeneralSettingsPage : public SettingsPage {
- Q_OBJECT
-
-public:
- GeneralSettingsPage(QWidget *parent = 0);
-
- bool hasDefaults() const;
-
-public slots:
- void save();
- void load();
- void defaults();
-
-private slots:
- void widgetHasChanged();
-
-private:
- Ui::GeneralSettingsPage ui;
- QHash<QString, QVariant> settings;
-
- bool testHasChanged();
-};
-
-#endif
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>GeneralSettingsPage</class>
- <widget class="QWidget" name="GeneralSettingsPage">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>467</width>
- <height>515</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Form</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_2">
- <item>
- <widget class="QGroupBox" name="useSystemTrayIcon">
- <property name="title">
- <string>Show System Tray Icon</string>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- <layout class="QVBoxLayout" name="_2">
- <item>
- <widget class="QCheckBox" name="minimizeOnClose">
- <property name="text">
- <string>Hide to tray on close button</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="macOnly">
- <property name="title">
- <string>Tray Icon</string>
- </property>
- <layout class="QHBoxLayout" name="_3">
- <item>
- <widget class="QCheckBox" name="showSystemTrayIcon">
- <property name="text">
- <string>Show system tray icon</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="groupBox">
- <property name="title">
- <string>Message Redirection</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_2">
- <item row="1" column="0">
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string>User Notices:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="QCheckBox" name="userNoticesInDefaultBuffer">
- <property name="enabled">
- <bool>true</bool>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="2">
- <widget class="QCheckBox" name="userNoticesInStatusBuffer">
- <property name="enabled">
- <bool>true</bool>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="checked">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="3">
- <widget class="QCheckBox" name="userNoticesInCurrentBuffer">
- <property name="enabled">
- <bool>true</bool>
- </property>
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="label_4">
- <property name="text">
- <string>Server Notices:</string>
- </property>
- </widget>
- </item>
- <item row="2" column="1">
- <widget class="QCheckBox" name="serverNoticesInDefaultBuffer">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QLabel" name="label_5">
- <property name="text">
- <string>Default Target</string>
- </property>
- </widget>
- </item>
- <item row="0" column="2">
- <widget class="QLabel" name="label_6">
- <property name="text">
- <string>Status Window</string>
- </property>
- </widget>
- </item>
- <item row="0" column="3">
- <widget class="QLabel" name="label_7">
- <property name="text">
- <string>Current Chat</string>
- </property>
- </widget>
- </item>
- <item row="3" column="0">
- <widget class="QLabel" name="label_8">
- <property name="text">
- <string>Errors:</string>
- </property>
- </widget>
- </item>
- <item row="2" column="2">
- <widget class="QCheckBox" name="serverNoticesInStatusBuffer">
- <property name="text">
- <string/>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="2" column="3">
- <widget class="QCheckBox" name="serverNoticesInCurrentBuffer">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="3" column="1">
- <widget class="QCheckBox" name="errorMsgsInDefaultBuffer">
- <property name="text">
- <string/>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="3" column="2">
- <widget class="QCheckBox" name="errorMsgsInStatusBuffer">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="3" column="3">
- <widget class="QCheckBox" name="errorMsgsInCurrentBuffer">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>40</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
#include "signalproxy.h"
IdentitiesSettingsPage::IdentitiesSettingsPage(QWidget *parent)
- : SettingsPage(tr("Misc"), tr("Identities"), parent),
+ : SettingsPage(tr("IRC"), tr("Identities"), parent),
_editSsl(false)
{
ui.setupUi(this);
ui.identityEditor->saveToIdentity(&temp);
temp.setIdentityName(identities[currentId]->identityName());
if(temp != *Client::identity(currentId) || temp.isDirty())
- changedIdentities.append(currentId);
+ changedIdentities.append(currentId);
}
return changedIdentities.count();
}
public:
IdentitiesSettingsPage(QWidget *parent = 0);
+ virtual inline bool needsCoreConnection() const { return true; }
+
bool aboutToSave();
public slots:
#include "iconloader.h"
IgnoreListSettingsPage::IgnoreListSettingsPage(QWidget *parent)
- : SettingsPage(tr("Misc"), tr("Ignore List"), parent)
+ : SettingsPage(tr("IRC"), tr("Ignore List"), parent)
{
ui.setupUi(this);
_delegate = new IgnoreListDelegate(ui.ignoreListView);
IgnoreListSettingsPage(QWidget *parent = 0);
~IgnoreListSettingsPage();
virtual inline bool hasDefaults() const { return false; }
+ virtual inline bool needsCoreConnection() const { return true; }
void editIgnoreRule(const QString &ignoreRule);
public slots:
#include "settingspages/identitiessettingspage.h"
-NetworksSettingsPage::NetworksSettingsPage(QWidget *parent)
-: SettingsPage(tr("Misc"), tr("Networks"), parent) {
+NetworksSettingsPage::NetworksSettingsPage(QWidget *parent)
+: SettingsPage(tr("IRC"), tr("Networks"), parent) {
ui.setupUi(this);
// set up icons
foreach(NetworkInfo info, networkInfos.values()) {
if(info.identity == id) {
if(info.networkId == currentId)
- ui.identityList->setCurrentIndex(0);
+ ui.identityList->setCurrentIndex(0);
info.identity = defaultId;
networkInfos[info.networkId] = info;
if(info.networkId > 0) Client::updateNetwork(info);
public:
NetworksSettingsPage(QWidget *parent = 0);
+ virtual inline bool needsCoreConnection() const { return true; }
+
bool aboutToSave();
public slots:
# Putting $FOO in SETTINGSPAGES automatically includes
# $FOOsettingspage.cpp, $FOOsettingspage.h and $FOOsettingspage.ui
-set(SETTINGSPAGES aliases appearance backlog bufferview chatview connection chatmonitor coreaccount general
+set(SETTINGSPAGES aliases appearance backlog bufferview chatview connection chatmonitor coreaccount
highlight identities ignorelist inputwidget itemview networks topicwidget)
# Specify additional files (e.g. for subdialogs) here!
//! The title of this settings page.
inline virtual QString title() const { return _title; }
+ //! Whether the settingspage needs a core connection to be selectable
+ /** This is a hint for the settingspage dialog. Do not rely on the settingspage not being
+ * visible if disconnected, and care about disabling it yourself.
+ */
+ inline virtual bool needsCoreConnection() const { return false; }
+
//! The key this settings page stores its values under
/** This needs to be overriden to enable automatic loading/saving/hasChanged checking of widgets.
* The child widgets' values will be stored in client settings under this key. Every widget that