Prevent ChatView from scrolling up 1px on buffer switch, fixes #544
[quassel.git] / src / client / buffersettings.cpp
index eda1137..aebca0d 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-08 by the Quassel IRC Team                         *
+ *   Copyright (C) 2005-09 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include "buffersettings.h"
 
-BufferSettings::BufferSettings(const QString &group) : ClientSettings(group) {
+BufferSettings::BufferSettings(BufferId bufferId)
+  : ClientSettings(QString("Buffer/%1").arg(bufferId.toInt()))
+{
+}
+
+BufferSettings::BufferSettings(const QString &idString)
+  : ClientSettings(QString("Buffer/%1").arg(idString))
+{
+}
 
+void BufferSettings::filterMessage(Message::Type msgType, bool filter) {
+  if(!hasFilter())
+    setLocalValue("hasMessageTypeFilter", true);
+  if(filter)
+    setLocalValue("MessageTypeFilter", localValue("MessageTypeFilter", 0).toInt() | msgType);
+  else
+    setLocalValue("MessageTypeFilter", localValue("MessageTypeFilter", 0).toInt() & ~msgType);
 }
 
-void BufferSettings::setValue(const QString &key, const QVariant &data) {
-  setLocalValue(key, data);
+void BufferSettings::setMessageFilter(int filter) {
+  if(!hasFilter())
+    setLocalValue("hasMessageTypeFilter", true);
+  setLocalValue("MessageTypeFilter", filter);
 }
 
-QVariant BufferSettings::value(const QString &key, const QVariant &def) {
-  return localValue(key, def);
+void BufferSettings::removeFilter() {
+  setLocalValue("hasMessageTypeFilter", false);
+  removeLocalKey("MessageTypeFilter");
 }