Reset the input prior to processing it in order to prevent issues with per-chat histo...
[quassel.git] / src / uisupport / uisettings.cpp
index c338691..eff891a 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-08 by the Quassel Project                          *
+ *   Copyright (C) 2005-2010 by the Quassel Project                        *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "uisettings.h"
 
+#include "action.h"
+#include "actioncollection.h"
+
 UiSettings::UiSettings(const QString &group)
   : ClientSettings(group)
 {
 }
 
-void UiSettings::setValue(const QString &key, const QVariant &data) {
-  setLocalValue(key, data);
-}
-
-QVariant UiSettings::value(const QString &key, const QVariant &def) {
-  return localValue(key, def);
-}
-
-void UiSettings::remove(const QString &key) {
-  removeLocalKey(key);
-}
-
 /**************************************************************************/
 
-UiStyleSettings::UiStyleSettings(const QString &group) : ClientSettings(group) {
-
+UiStyleSettings::UiStyleSettings() : UiSettings("UiStyle") {}
+UiStyleSettings::UiStyleSettings(const QString &subGroup) : UiSettings(QString("UiStyle/%1").arg(subGroup))
+{
 }
 
 void UiStyleSettings::setCustomFormat(UiStyle::FormatType ftype, QTextCharFormat format) {
@@ -63,3 +55,99 @@ QList<UiStyle::FormatType> 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);
+  }
+}
+
+/**************************************************************************
+ * ShortcutSettings
+ **************************************************************************/
+
+ShortcutSettings::ShortcutSettings() : UiSettings("Shortcuts") {
+
+}
+
+void ShortcutSettings::clear() {
+  foreach(const QString &key, allLocalKeys())
+    removeLocalKey(key);
+}
+
+QStringList ShortcutSettings::savedShortcuts() {
+  return localChildKeys();
+}
+
+QKeySequence ShortcutSettings::loadShortcut(const QString &name) {
+  return localValue(name, QKeySequence()).value<QKeySequence>();
+}
+
+void ShortcutSettings::saveShortcut(const QString &name, const QKeySequence &seq) {
+  setLocalValue(name, seq);
+}