From 11f042e025f1e8e304c3de2cb7d3b55de39d9ed6 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Tue, 12 May 2009 08:59:47 +0200 Subject: [PATCH] Make SessionSettings derive from UiSettings In order to avoid code duplication, we'll want to be able to put mainwin state saving/restoring into methods taking an UiSettings object. Hence, we'll let SessionSettings inherit from UiSettings rather than ClientSettings, and virtualize the accessors. Also kill the separate sessionsettings.* files, as we want to centralize the various settings objects into common files. --- src/qtui/CMakeLists.txt | 1 - src/qtui/mainwin.cpp | 1 - src/qtui/mainwin.h | 2 +- src/qtui/qtuiapplication.cpp | 1 - src/qtui/qtuiapplication.h | 2 +- src/qtui/sessionsettings.cpp | 88 ------------------------------------ src/qtui/sessionsettings.h | 51 --------------------- src/uisupport/uisettings.cpp | 72 +++++++++++++++++++++++++++++ src/uisupport/uisettings.h | 27 ++++++++++- 9 files changed, 99 insertions(+), 146 deletions(-) delete mode 100644 src/qtui/sessionsettings.cpp delete mode 100644 src/qtui/sessionsettings.h diff --git a/src/qtui/CMakeLists.txt b/src/qtui/CMakeLists.txt index f70e4651..8ec3ad20 100644 --- a/src/qtui/CMakeLists.txt +++ b/src/qtui/CMakeLists.txt @@ -41,7 +41,6 @@ set(SOURCES qtuimessageprocessor.cpp qtuisettings.cpp qtuistyle.cpp - sessionsettings.cpp settingsdlg.cpp settingspagedlg.cpp simplenetworkeditor.cpp diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 50e2731e..3a3a3fe3 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -68,7 +68,6 @@ #include "qtuiapplication.h" #include "qtuimessageprocessor.h" #include "qtuisettings.h" -#include "sessionsettings.h" #include "settingsdlg.h" #include "settingspagedlg.h" #include "systemtray.h" diff --git a/src/qtui/mainwin.h b/src/qtui/mainwin.h index 011568d8..86c8de01 100644 --- a/src/qtui/mainwin.h +++ b/src/qtui/mainwin.h @@ -34,8 +34,8 @@ #include #include "qtui.h" -#include "sessionsettings.h" #include "titlesetter.h" +#include "uisettings.h" class ActionCollection; class BufferView; diff --git a/src/qtui/qtuiapplication.cpp b/src/qtui/qtuiapplication.cpp index de9844f2..047b1f59 100644 --- a/src/qtui/qtuiapplication.cpp +++ b/src/qtui/qtuiapplication.cpp @@ -30,7 +30,6 @@ #include "cliparser.h" #include "qtui.h" #include "qtuisettings.h" -#include "sessionsettings.h" QtUiApplication::QtUiApplication(int &argc, char **argv) #ifdef HAVE_KDE diff --git a/src/qtui/qtuiapplication.h b/src/qtui/qtuiapplication.h index 69a90861..fad3ea8e 100644 --- a/src/qtui/qtuiapplication.h +++ b/src/qtui/qtuiapplication.h @@ -30,7 +30,7 @@ #include #include "quassel.h" -#include "sessionsettings.h" +#include "uisettings.h" class QtUi; diff --git a/src/qtui/sessionsettings.cpp b/src/qtui/sessionsettings.cpp deleted file mode 100644 index f74dba58..00000000 --- a/src/qtui/sessionsettings.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/*************************************************************************** - * 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) 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 "sessionsettings.h" - -#include - -void SessionSettings::setValue(const QString &key, const QVariant &data) { - setLocalValue(QString("%1/%2").arg(_sessionId, key), data); -} - -QVariant SessionSettings::value(const QString &key, const QVariant &def) { - return localValue(QString("%1/%2").arg(_sessionId, key), def); -} - -void SessionSettings::removeKey(const QString &key) { - removeLocalKey(QString("%1/%2").arg(_sessionId, key)); -} - -void SessionSettings::cleanup() { - QStringList sessions = localChildGroups(); - QString str; - SessionSettings s(sessionId()); - foreach(str, sessions) { - // load session and check age - s.setSessionId(str); - if(s.sessionAge() > 3) { - s.removeSession(); - } - } -} - -int SessionSettings::sessionAge() { - QVariant val = localValue(QString("%1/_sessionAge").arg(_sessionId), 0); - bool b = false; - int i = val.toInt(&b); - if(b) { - return i; - } else { - // no int saved, delete session - //qDebug() << QString("deleting invalid session %1 (invalid session age found)").arg(_sessionId); - removeSession(); - } - return 10; -} - -void SessionSettings::removeSession() { - QStringList keys = localChildKeys(sessionId()); - foreach(QString k, keys) { - removeKey(k); - } -} - - -SessionSettings::SessionSettings(const QString & sessionId, const QString & group) : ClientSettings(group), _sessionId(sessionId) { -} - -void SessionSettings::setSessionAge(int age) { - setValue(QString("_sessionAge"),age); -} - -void SessionSettings::sessionAging() { - QStringList sessions = localChildGroups(); - QString str; - SessionSettings s(sessionId()); - foreach(str, sessions) { - // load session and check age - s.setSessionId(str); - s.setSessionAge(s.sessionAge()+1); - } -} - diff --git a/src/qtui/sessionsettings.h b/src/qtui/sessionsettings.h deleted file mode 100644 index 9e98453d..00000000 --- a/src/qtui/sessionsettings.h +++ /dev/null @@ -1,51 +0,0 @@ -/*************************************************************************** - * 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) 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 _SESSIONSETTINGS_H_ -#define _SESSIONSETTINGS_H_ - -#include - -#include "clientsettings.h" - -class SessionSettings : public ClientSettings { - - public: - SessionSettings(const QString &sessionId, const QString &group = "Session"); - - void setValue(const QString &key, const QVariant &data); - QVariant value(const QString &key, const QVariant &def = QVariant()); - - void removeKey(const QString &key); - void removeSession(); - - void cleanup(); - void sessionAging(); - - int sessionAge(); - void setSessionAge(int age); - inline const QString sessionId() { return _sessionId; }; - inline void setSessionId(const QString &sessionId) { _sessionId = sessionId; } - private: - QString _sessionId; -}; - -#endif diff --git a/src/uisupport/uisettings.cpp b/src/uisupport/uisettings.cpp index d443ffe1..e3574c85 100644 --- a/src/uisupport/uisettings.cpp +++ b/src/uisupport/uisettings.cpp @@ -52,3 +52,75 @@ QList UiStyleSettings::availableFormats() { } return formats; } + +/************************************************************************** + * SessionSettings + **************************************************************************/ + +SessionSettings::SessionSettings(const QString & sessionId, const QString & group) +: UiSettings(group), _sessionId(sessionId) +{ + +} + +void SessionSettings::setValue(const QString &key, const QVariant &data) { + setLocalValue(QString("%1/%2").arg(_sessionId, key), data); +} + +QVariant SessionSettings::value(const QString &key, const QVariant &def) { + return localValue(QString("%1/%2").arg(_sessionId, key), def); +} + +void SessionSettings::removeKey(const QString &key) { + removeLocalKey(QString("%1/%2").arg(_sessionId, key)); +} + +void SessionSettings::cleanup() { + QStringList sessions = localChildGroups(); + QString str; + SessionSettings s(sessionId()); + foreach(str, sessions) { + // load session and check age + s.setSessionId(str); + if(s.sessionAge() > 3) { + s.removeSession(); + } + } +} + +int SessionSettings::sessionAge() { + QVariant val = localValue(QString("%1/_sessionAge").arg(_sessionId), 0); + bool b = false; + int i = val.toInt(&b); + if(b) { + return i; + } else { + // no int saved, delete session + //qDebug() << QString("deleting invalid session %1 (invalid session age found)").arg(_sessionId); + removeSession(); + } + return 10; +} + +void SessionSettings::removeSession() { + QStringList keys = localChildKeys(sessionId()); + foreach(QString k, keys) { + removeKey(k); + } +} + +void SessionSettings::setSessionAge(int age) { + setValue(QString("_sessionAge"),age); +} + +void SessionSettings::sessionAging() { + QStringList sessions = localChildGroups(); + QString str; + SessionSettings s(sessionId()); + foreach(str, sessions) { + // load session and check age + s.setSessionId(str); + s.setSessionAge(s.sessionAge()+1); + } +} + diff --git a/src/uisupport/uisettings.h b/src/uisupport/uisettings.h index 704a1d5f..d8560c07 100644 --- a/src/uisupport/uisettings.h +++ b/src/uisupport/uisettings.h @@ -28,8 +28,9 @@ class UiSettings : public ClientSettings { public: UiSettings(const QString &group = "Ui"); - inline void setValue(const QString &key, const QVariant &data) { setLocalValue(key, data); } - inline QVariant value(const QString &key, const QVariant &def = QVariant()) { return localValue(key, def); } + virtual inline void setValue(const QString &key, const QVariant &data) { setLocalValue(key, data); } + virtual inline QVariant value(const QString &key, const QVariant &def = QVariant()) { return localValue(key, def); } + inline void remove(const QString &key) { removeLocalKey(key); } }; @@ -49,4 +50,26 @@ public: QList availableFormats(); }; +class SessionSettings : public UiSettings { +public: + SessionSettings(const QString &sessionId, const QString &group = "Session"); + + virtual void setValue(const QString &key, const QVariant &data); + virtual QVariant value(const QString &key, const QVariant &def = QVariant()); + + void removeKey(const QString &key); + void removeSession(); + + void cleanup(); + void sessionAging(); + + int sessionAge(); + void setSessionAge(int age); + inline const QString sessionId() { return _sessionId; }; + inline void setSessionId(const QString &sessionId) { _sessionId = sessionId; } + +private: + QString _sessionId; +}; + #endif -- 2.20.1