Used that for enabling direct access to the networks settings via File -> Networks.
Gotta love modularity...
src/client/modelpropertymapper.h
src/client/networkmodel.cpp
src/client/networkmodel.h
-src/client/nickmodel.cpp
-src/client/nickmodel.h
src/client/quasselui.h
src/client/selectionmodelsynchronizer.cpp
src/client/selectionmodelsynchronizer.h
src/qtui/debugconsole.h
src/qtui/guisettings.cpp
src/qtui/guisettings.h
-src/qtui/identities.cpp
-src/qtui/identities.h
src/qtui/inputwidget.cpp
src/qtui/inputwidget.h
src/qtui/mainwin.cpp
src/qtui/qtui.pri
src/qtui/qtuistyle.cpp
src/qtui/qtuistyle.h
-src/qtui/serverlist.cpp
-src/qtui/serverlist.h
src/qtui/settingsdlg.cpp
src/qtui/settingsdlg.h
+src/qtui/settingspagedlg.cpp
+src/qtui/settingspagedlg.h
src/qtui/settingspages
src/qtui/settingspages/createidentitydlg.ui
src/qtui/settingspages/fontssettingspage.cpp
src/qtui/settingspages/identitiessettingspage.h
src/qtui/settingspages/identitiessettingspage.ui
src/qtui/settingspages/networkeditdlg.ui
-src/qtui/settingspages/networkeditdlgnew.ui
src/qtui/settingspages/networkssettingspage.cpp
src/qtui/settingspages/networkssettingspage.h
src/qtui/settingspages/networkssettingspage.ui
src/qtui/settingspages/nickeditdlg.ui
-src/qtui/settingspages/nickeditdlgnew.ui
src/qtui/settingspages/saveidentitiesdlg.ui
src/qtui/settingspages/servereditdlg.ui
-src/qtui/settingspages/servereditdlgnew.ui
src/qtui/settingspages/settingspages.pri
src/qtui/topicwidget.cpp
src/qtui/topicwidget.h
src/qtui/ui/bufferwidget.ui
src/qtui/ui/coreconnectdlg.ui
src/qtui/ui/debugconsole.ui
-src/qtui/ui/identitiesdlg.ui
-src/qtui/ui/identitieseditdlg.ui
src/qtui/ui/mainwin.ui
-src/qtui/ui/networkeditdlg.ui
-src/qtui/ui/nickeditdlg.ui
src/qtui/ui/nicklistwidget.ui
-src/qtui/ui/servereditdlg.ui
-src/qtui/ui/serverlistdlg.ui
src/qtui/ui/settingsdlg.ui
src/qtui/ui/topicwidget.ui
src/qtui/verticaldock.cpp
Logger::~Logger() {
- //qInstallMsgHandler(0);
+ qInstallMsgHandler(0);
}
void messageHandler(QtMsgType type, const char *msg) {
}
Logger::Logger() {
- //qInstallMsgHandler(messageHandler);
+ qInstallMsgHandler(messageHandler);
}
#include <QTranslator>
#include "global.h"
+#include "logger.h"
#include "settings.h"
#if defined BUILD_CORE
signal(SIGTERM, handle_signal);
signal(SIGINT, handle_signal);
+ // Logger logger;
+
Global::registerMetaTypes();
#include "../../version.inc"
#include "buffermodel.h"
#include "nicklistwidget.h"
#include "settingsdlg.h"
+#include "settingspagedlg.h"
#include "signalproxy.h"
#include "topicwidget.h"
#include "inputwidget.h"
connect(ui.actionAboutQt, SIGNAL(triggered()), QApplication::instance(), SLOT(aboutQt()));
actionEditNetworks = new QAction(QIcon(":/22x22/actions/configure"), tr("Edit &Networks..."), this);
- actionEditNetworks->setEnabled(false); // FIXME
ui.menuNetworks->addAction(actionEditNetworks);
+ connect(actionEditNetworks, SIGNAL(triggered()), this, SLOT(showNetworkDlg()));
}
void MainWin::setupViews() {
}
}
+void MainWin::showNetworkDlg() {
+ SettingsPageDlg dlg(new NetworksSettingsPage(this), this);
+ dlg.exec();
+}
+
void MainWin::clientNetworkCreated(NetworkId id) {
const Network *net = Client::network(id);
QAction *act = new QAction(net->networkName(), this);
private slots:
void showSettingsDlg();
+ void showNetworkDlg();
void showDebugConsole();
void showCoreConnectionDlg(bool autoConnect = false);
SRCS += bufferwidget.cpp chatline-old.cpp \
chatwidget.cpp coreconnectdlg.cpp configwizard.cpp \
- guisettings.cpp mainwin.cpp nicklistwidget.cpp qtui.cpp qtuistyle.cpp settingsdlg.cpp \
+ guisettings.cpp mainwin.cpp nicklistwidget.cpp qtui.cpp qtuistyle.cpp settingsdlg.cpp settingspagedlg.cpp \
topicwidget.cpp debugconsole.cpp inputwidget.cpp verticaldock.cpp
HDRS += bufferwidget.h chatline-old.h chatwidget.h configwizard.h \
- coreconnectdlg.h mainwin.h nicklistwidget.h qtui.h qtuistyle.h settingsdlg.h \
+ coreconnectdlg.h mainwin.h nicklistwidget.h qtui.h qtuistyle.h settingsdlg.h settingspagedlg.h \
topicwidget.h debugconsole.h inputwidget.h verticaldock.h
FORMNAMES = mainwin.ui coreaccounteditdlg.ui coreconnectdlg.ui bufferviewwidget.ui bufferwidget.ui nicklistwidget.ui settingsdlg.ui \
- topicwidget.ui debugconsole.ui inputwidget.ui
+ settingspagedlg.ui topicwidget.ui debugconsole.ui inputwidget.ui
for(ui, FORMNAMES) {
FRMS += ui/$${ui}
QTreeWidgetItem *item = new QTreeWidgetItem(cat, QStringList(sp->title()));
treeItems[sp] = item;
pages[QString("%1$%2").arg(sp->category(), sp->title())] = sp;
+ sp->load();
// TESTING
selectPage(sp->category(), sp->title());
}
//QSize recommendedSize;
};
-/*
-class CoreSettingsPage : public QWidget, SettingsInterface {
- Q_OBJECT
-
- public:
-
-
- private:
- Ui::CoreSettingsPage ui;
-
-};
-*/
#endif
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2005-08 by the Quassel IRC Team *
+ * 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) version 3. *
+ * *
+ * 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 "settingspagedlg.h"
+
+SettingsPageDlg::SettingsPageDlg(SettingsPage *page, QWidget *parent) : QDialog(parent) {
+ ui.setupUi(this);
+ _currentPage = page;
+ page->setParent(this);
+ ui.pageTitle->setText(page->title());
+
+ // make the scrollarea behave sanely
+ ui.settingsFrame->setWidgetResizable(true);
+ ui.settingsFrame->setWidget(page);
+
+ updateGeometry();
+
+ connect(page, SIGNAL(changed(bool)), this, SLOT(setButtonStates()));
+ connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *)));
+ page->load();
+ setButtonStates();
+}
+
+SettingsPage *SettingsPageDlg::currentPage() const {
+ return _currentPage;
+}
+
+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();
+ break;
+ case QDialogButtonBox::Apply:
+ applyChanges();
+ break;
+ case QDialogButtonBox::Cancel:
+ undoChanges();
+ reject();
+ break;
+ case QDialogButtonBox::Reset:
+ reload();
+ break;
+ case QDialogButtonBox::RestoreDefaults:
+ loadDefaults();
+ break;
+ default:
+ break;
+ }
+}
+
+bool SettingsPageDlg::applyChanges() {
+ if(!currentPage()) return false;
+ if(currentPage()->aboutToSave()) {
+ currentPage()->save();
+ return true;
+ }
+ return false;
+}
+
+void SettingsPageDlg::undoChanges() {
+ if(currentPage()) {
+ currentPage()->load();
+ }
+}
+
+void SettingsPageDlg::reload() {
+ if(!currentPage()) return;
+ int ret = QMessageBox::question(this, tr("Reload Settings"), tr("Do you like to reload the settings, undoing your changes on this page?"),
+ QMessageBox::Yes|QMessageBox::No, QMessageBox::No);
+ if(ret == QMessageBox::Yes) {
+ currentPage()->load();
+ }
+}
+
+void SettingsPageDlg::loadDefaults() {
+ 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) {
+ currentPage()->defaults();
+ }
+}
--- /dev/null
+/***************************************************************************
+ * Copyright (C) 2005-08 by the Quassel IRC Team *
+ * 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) version 3. *
+ * *
+ * 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 _SETTINGSPAGEDLG_H_
+#define _SETTINGSPAGEDLG_H_
+
+#include <QtGui>
+#include "ui_settingspagedlg.h"
+
+#include "settingspage.h"
+
+class SettingsPageDlg : public QDialog {
+ Q_OBJECT
+ public:
+ SettingsPageDlg(SettingsPage * page, QWidget *parent = 0);
+
+ SettingsPage *currentPage() const;
+
+ private slots:
+ void buttonClicked(QAbstractButton *);
+ bool applyChanges();
+ void undoChanges();
+ void reload();
+ void loadDefaults();
+ void setButtonStates();
+
+ private:
+ Ui::SettingsPageDlg ui;
+
+ SettingsPage *_currentPage;
+
+};
+
+#endif
: SettingsPage(tr("General"), tr("Identities"), parent) {
ui.setupUi(this);
- setEnabled(false); // need a core connection!
+ setEnabled(Client::isConnected()); // need a core connection!
setWidgetStates();
connect(Client::instance(), SIGNAL(coreConnectionStateChanged(bool)), this, SLOT(coreConnectionStateChanged(bool)));
connect(Client::instance(), SIGNAL(identityCreated(IdentityId)), this, SLOT(clientIdentityCreated(IdentityId)));
disconnectedIcon = QIcon(":/22x22/actions/network-disconnect");
currentId = 0;
- setEnabled(false); // need a core connection!
+ setEnabled(Client::isConnected()); // need a core connection!
setWidgetStates();
connect(Client::instance(), SIGNAL(coreConnectionStateChanged(bool)), this, SLOT(coreConnectionStateChanged(bool)));
connect(Client::instance(), SIGNAL(networkCreated(NetworkId)), this, SLOT(clientNetworkAdded(NetworkId)));
<rect>
<x>0</x>
<y>0</y>
- <width>881</width>
- <height>663</height>
+ <width>828</width>
+ <height>587</height>
</rect>
</property>
<property name="windowTitle" >
--- /dev/null
+<ui version="4.0" >
+ <class>SettingsPageDlg</class>
+ <widget class="QDialog" name="SettingsPageDlg" >
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>703</width>
+ <height>588</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Dialog</string>
+ </property>
+ <layout class="QVBoxLayout" >
+ <item>
+ <widget class="QLabel" name="pageTitle" >
+ <property name="font" >
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text" >
+ <string>Settings</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="Line" name="line" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QScrollArea" name="settingsFrame" >
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="Expanding" hsizetype="Expanding" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="frameShape" >
+ <enum>QFrame::StyledPanel</enum>
+ </property>
+ <property name="frameShadow" >
+ <enum>QFrame::Sunken</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox" >
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons" >
+ <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok|QDialogButtonBox::Reset|QDialogButtonBox::RestoreDefaults</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <customwidgets>
+ <customwidget>
+ <class>QScrollArea</class>
+ <extends>QFrame</extends>
+ <header>QScrollArea</header>
+ <container>1</container>
+ </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>SettingsPageDlg</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>SettingsPageDlg</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>