you can now disable the web previews and user state icons (settings -> appearance...
authorMarcus Eggenberger <egs@quassel-irc.org>
Mon, 17 Nov 2008 23:33:05 +0000 (00:33 +0100)
committerMarcus Eggenberger <egs@quassel-irc.org>
Mon, 17 Nov 2008 23:33:05 +0000 (00:33 +0100)
12 files changed:
src/client/buffersettings.cpp
src/client/buffersettings.h
src/qtui/chatscene.cpp
src/qtui/chatscene.h
src/qtui/chatviewsettings.cpp
src/qtui/chatviewsettings.h
src/qtui/mainwin.cpp
src/qtui/settingsdlg.cpp
src/qtui/settingspages/appearancesettingspage.cpp
src/qtui/settingspages/appearancesettingspage.ui
src/uisupport/bufferviewfilter.cpp
src/uisupport/bufferviewfilter.h

index c42cd81..98f948d 100644 (file)
@@ -30,14 +30,6 @@ BufferSettings::BufferSettings(const QString &idString)
 {
 }
 
-bool BufferSettings::hasFilter() {
-  return localValue("hasMessageTypeFilter", false).toBool();
-}
-
-int BufferSettings::messageFilter() {
-  return localValue("MessageTypeFilter", 0).toInt();
-}
-
 void BufferSettings::filterMessage(Message::Type msgType, bool filter) {
   if(!hasFilter())
     setLocalValue("hasMessageTypeFilter", true);
index d60236d..176fe3a 100644 (file)
@@ -33,9 +33,12 @@ public:
   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); }
 
-  bool hasFilter();
-  int messageFilter();
+  inline bool hasFilter() { return localValue("hasMessageTypeFilter", false).toBool(); }
+  inline int messageFilter() { return localValue("MessageTypeFilter", 0).toInt(); }
   void filterMessage(Message::Type msgType, bool filter);
+
+  inline bool showUserStateIcons() { return localValue("ShowUserStateIcons", true).toBool(); }
+  inline void enableUserStateIcons(bool enabled) { setLocalValue("ShowUserStateIcons", enabled); }
 };
 
 
index 358eb12..1ce69f6 100644 (file)
@@ -95,6 +95,8 @@ ChatScene::ChatScene(QAbstractItemModel *model, const QString &idString, qreal w
   webPreview.deleteTimer.setInterval(10000);
   connect(&webPreview.deleteTimer, SIGNAL(timeout()), this, SLOT(deleteWebPreviewEvent()));
 #endif
+  _showWebPreview = defaultSettings.showWebPreview();
+  defaultSettings.notify("ShowWebPreview", this, SLOT(showWebPreviewChanged()));
 
   setItemIndexMethod(QGraphicsScene::NoIndex);
 }
@@ -657,6 +659,9 @@ void ChatScene::loadWebPreview(ChatItem *parentItem, const QString &url, const Q
   Q_UNUSED(url)
   Q_UNUSED(urlRect)
 #else
+  if(!_showWebPreview)
+    return;
+
   if(webPreview.parentItem != parentItem)
     webPreview.parentItem = parentItem;
 
@@ -722,3 +727,8 @@ void ChatScene::deleteWebPreviewEvent() {
   webPreview.urlRect = QRectF();
 #endif
 }
+
+void ChatScene::showWebPreviewChanged() {
+  ChatViewSettings settings;
+  _showWebPreview = settings.showWebPreview();
+}
index 0c9329e..85328df 100644 (file)
@@ -110,6 +110,7 @@ private slots:
   void secondHandlePositionChanged(qreal xpos);
   void showWebPreviewEvent();
   void deleteWebPreviewEvent();
+  void showWebPreviewChanged();
 
 private:
   void setHandleXLimits();
@@ -141,6 +142,8 @@ private:
   int _firstSelectionRow;
   bool _isSelecting;
 
+  bool _showWebPreview;
+
   struct WebPreview {
     ChatItem *parentItem;
     QGraphicsItem *previewItem;
index 4a153fd..496431e 100644 (file)
@@ -37,3 +37,4 @@ ChatViewSettings::ChatViewSettings(ChatView *view)
   : QtUiSettings(QString("ChatView/%1").arg(view->scene()->idString()))
 {
 }
+
index b1933e3..1790493 100644 (file)
@@ -31,6 +31,9 @@ public:
   ChatViewSettings(const QString &id = "__default__");
   ChatViewSettings(ChatScene *scene);
   ChatViewSettings(ChatView *view);
+
+  inline bool showWebPreview() { return localValue("ShowWebPreview", true).toBool(); }
+  inline void enableWebPreview(bool enabled) { setLocalValue("ShowWebPreview", enabled); }
 };
 
 #endif //CHATVIEWSETTINGS_H
index 0a3147f..3c0c702 100644 (file)
@@ -569,7 +569,7 @@ void MainWin::showCoreInfoDlg() {
 }
 
 void MainWin::showSettingsDlg() {
-  SettingsDlg *dlg = new SettingsDlg();
+  SettingsDlg *dlg = new SettingsDlg(this);
 
   //Category: Appearance
   dlg->registerSettingsPage(new ColorSettingsPage(dlg));
index 55e7041..f44b229 100644 (file)
@@ -25,6 +25,8 @@ SettingsDlg::SettingsDlg(QWidget *parent)
     _currentPage(0)
 {
   setModal(true);
+  setWindowFlags(Qt::Sheet);
+  setAttribute(Qt::WA_DeleteOnClose, true);
   ui.setupUi(this);
 
   updateGeometry();
index 1104bc3..fc4674f 100644 (file)
@@ -20,6 +20,8 @@
 
 #include "appearancesettingspage.h"
 
+#include "buffersettings.h"
+#include "chatviewsettings.h"
 #include "qtui.h"
 #include "qtuisettings.h"
 #include "util.h"
@@ -33,8 +35,12 @@ AppearanceSettingsPage::AppearanceSettingsPage(QWidget *parent)
   initStyleComboBox();
   initLanguageComboBox();
 
-  connect(ui.styleComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(widgetHasChanged()));
-  connect(ui.languageComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(widgetHasChanged()));
+  foreach(QComboBox *comboBox, findChildren<QComboBox *>()) {
+    connect(comboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(widgetHasChanged()));
+  }
+  foreach(QCheckBox *checkBox, findChildren<QCheckBox *>()) {
+    connect(checkBox, SIGNAL(clicked()), this, SLOT(widgetHasChanged()));
+  }
 }
 
 void AppearanceSettingsPage::initStyleComboBox() {
@@ -67,6 +73,7 @@ void AppearanceSettingsPage::defaults() {
 void AppearanceSettingsPage::load() {
   QtUiSettings uiSettings;
 
+  // Gui Style
   settings["Style"] = uiSettings.value("Style", QString(""));
   if(settings["Style"].toString() == "") {
     ui.styleComboBox->setCurrentIndex(0);
@@ -75,6 +82,7 @@ void AppearanceSettingsPage::load() {
     QApplication::setStyle(settings["Style"].toString());
   }
 
+  // Language
   QLocale locale = uiSettings.value("Locale", QLocale::system()).value<QLocale>();
   if(locale == QLocale::system())
     ui.languageComboBox->setCurrentIndex(0);
@@ -84,6 +92,12 @@ void AppearanceSettingsPage::load() {
     ui.languageComboBox->setCurrentIndex(ui.languageComboBox->findText(QLocale::languageToString(locale.language()), Qt::MatchExactly));
   loadTranslation(selectedLocale());
 
+  ChatViewSettings chatViewSettings;
+  SettingsPage::load(ui.showWebPreview, chatViewSettings.showWebPreview());
+
+  BufferSettings bufferSettings;
+  SettingsPage::load(ui.showUserStateIcons, bufferSettings.showUserStateIcons());
+
   setChangedState(false);
 }
 
@@ -102,6 +116,12 @@ void AppearanceSettingsPage::save() {
     uiSettings.setValue("Locale", selectedLocale());
   }
 
+  ChatViewSettings chatViewSettings;
+  chatViewSettings.enableWebPreview(ui.showWebPreview->isChecked());
+
+  BufferSettings bufferSettings;
+  bufferSettings.enableUserStateIcons(ui.showUserStateIcons->isChecked());
+
   load();
   setChangedState(false);
 }
@@ -127,6 +147,9 @@ bool AppearanceSettingsPage::testHasChanged() {
   if(settings["Style"].toString() != ui.styleComboBox->currentText()) return true;
   if(selectedLocale() != QLocale()) return true; // QLocale() returns the default locale (manipulated via loadTranslation())
 
+  if(SettingsPage::hasChanged(ui.showWebPreview)) return true;
+  if(SettingsPage::hasChanged(ui.showUserStateIcons)) return true;
+
   return false;
 }
 
index e6abf9d..bc1e26b 100644 (file)
@@ -5,8 +5,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>331</width>
-    <height>269</height>
+    <width>396</width>
+    <height>324</height>
    </rect>
   </property>
   <property name="windowTitle" >
     </widget>
    </item>
    <item>
-    <spacer>
+    <widget class="QGroupBox" name="groupBox_3" >
+     <property name="title" >
+      <string>Misc:</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_3" >
+      <item>
+       <widget class="QCheckBox" name="showWebPreview" >
+        <property name="text" >
+         <string>Show Web Previews</string>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="showUserStateIcons" >
+        <property name="text" >
+         <string>Use Icons to represent away state of Users</string>
+        </property>
+        <property name="checked" >
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <spacer name="verticalSpacer" >
      <property name="orientation" >
       <enum>Qt::Vertical</enum>
      </property>
index 2de916b..4f09528 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "bufferinfo.h"
 #include "buffermodel.h"
+#include "buffersettings.h"
 #include "client.h"
 #include "iconloader.h"
 #include "networkmodel.h"
@@ -58,6 +59,10 @@ BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, BufferViewConfig *
 
   connect(this, SIGNAL(_dataChanged(const QModelIndex &, const QModelIndex &)),
          this, SLOT(_q_sourceDataChanged(QModelIndex,QModelIndex)));
+
+  BufferSettings bufferSettings;
+  _showUserStateIcons = bufferSettings.showUserStateIcons();
+  bufferSettings.notify("ShowUserStateIcons", this, SLOT(showUserStateIconsChanged()));
 }
 
 void BufferViewFilter::loadColors() {
@@ -69,6 +74,11 @@ void BufferViewFilter::loadColors() {
   _FgColorOtherActivity = s.value("otherActivityFG", QVariant(QColor(Qt::darkGreen))).value<QColor>();
 }
 
+void BufferViewFilter::showUserStateIconsChanged() {
+  BufferSettings bufferSettings;
+  _showUserStateIcons = bufferSettings.showUserStateIcons();
+}
+
 void BufferViewFilter::setConfig(BufferViewConfig *config) {
   if(_config == config)
     return;
@@ -301,6 +311,9 @@ QVariant BufferViewFilter::data(const QModelIndex &index, int role) const {
 }
 
 QVariant BufferViewFilter::icon(const QModelIndex &index) const {
+  if(!_showUserStateIcons)
+    return QVariant();
+
   if(index.column() != 0)
     return QVariant();
 
index 22fc2fd..813e554 100644 (file)
@@ -37,7 +37,7 @@
  *****************************************/
 class BufferViewFilter : public QSortFilterProxyModel {
   Q_OBJECT
-  
+
 public:
   enum Mode {
     NoActive = 0x01,
@@ -52,7 +52,7 @@ public:
   Q_DECLARE_FLAGS(Modes, Mode)
 
   BufferViewFilter(QAbstractItemModel *model, BufferViewConfig *config = 0);
-  
+
   virtual Qt::ItemFlags flags(const QModelIndex &index) const;
   virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent);
 
@@ -64,12 +64,12 @@ public:
   inline BufferViewConfig *config() const { return _config; }
 
   virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
-                                                                        
+
 public slots:
   void checkPreviousCurrentForRemoval(const QModelIndex &current, const QModelIndex &previous);
   void checkItemForRemoval(const QModelIndex &index) { checkItemsForRemoval(index, index); }
   void checkItemsForRemoval(const QModelIndex &topLeft, const QModelIndex &bottomRight);
-  
+
 protected:
   bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;
   bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const;
@@ -83,11 +83,12 @@ signals:
 
 private slots:
   void configInitialized();
-    
+  void showUserStateIconsChanged();
+
 private:
   QPointer<BufferViewConfig> _config;
   Qt::SortOrder _sortOrder;
-  
+
   QColor _FgColorInactiveActivity;
   QColor _FgColorNoActivity;
   QColor _FgColorHighlightActivity;
@@ -97,6 +98,7 @@ private:
   QPixmap _userOfflineIcon;
   QPixmap _userAwayIcon;
   QPixmap _userOnlineIcon;
+  bool _showUserStateIcons;
 
   void loadColors();
 
@@ -104,7 +106,7 @@ private:
   bool filterAcceptNetwork(const QModelIndex &) const;
   void addBuffer(const BufferId &) const;
 };
-Q_DECLARE_OPERATORS_FOR_FLAGS(BufferViewFilter::Modes)    
+Q_DECLARE_OPERATORS_FOR_FLAGS(BufferViewFilter::Modes)
 
 bool bufferIdLessThan(const BufferId &, const BufferId &);