From: Marcus Eggenberger Date: Mon, 17 Nov 2008 23:33:05 +0000 (+0100) Subject: you can now disable the web previews and user state icons (settings -> appearance... X-Git-Tag: 0.3.1~17 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=9996d2489e5e5ca23b0750f39f64d8d4b5990029 you can now disable the web previews and user state icons (settings -> appearance -> general) --- diff --git a/src/client/buffersettings.cpp b/src/client/buffersettings.cpp index c42cd81c..98f948d9 100644 --- a/src/client/buffersettings.cpp +++ b/src/client/buffersettings.cpp @@ -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); diff --git a/src/client/buffersettings.h b/src/client/buffersettings.h index d60236d0..176fe3a0 100644 --- a/src/client/buffersettings.h +++ b/src/client/buffersettings.h @@ -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); } }; diff --git a/src/qtui/chatscene.cpp b/src/qtui/chatscene.cpp index 358eb12b..1ce69f64 100644 --- a/src/qtui/chatscene.cpp +++ b/src/qtui/chatscene.cpp @@ -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(); +} diff --git a/src/qtui/chatscene.h b/src/qtui/chatscene.h index 0c9329ed..85328df6 100644 --- a/src/qtui/chatscene.h +++ b/src/qtui/chatscene.h @@ -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; diff --git a/src/qtui/chatviewsettings.cpp b/src/qtui/chatviewsettings.cpp index 4a153fd5..496431ed 100644 --- a/src/qtui/chatviewsettings.cpp +++ b/src/qtui/chatviewsettings.cpp @@ -37,3 +37,4 @@ ChatViewSettings::ChatViewSettings(ChatView *view) : QtUiSettings(QString("ChatView/%1").arg(view->scene()->idString())) { } + diff --git a/src/qtui/chatviewsettings.h b/src/qtui/chatviewsettings.h index b1933e3d..17904938 100644 --- a/src/qtui/chatviewsettings.h +++ b/src/qtui/chatviewsettings.h @@ -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 diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 0a3147f6..3c0c702b 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -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)); diff --git a/src/qtui/settingsdlg.cpp b/src/qtui/settingsdlg.cpp index 55e70417..f44b2290 100644 --- a/src/qtui/settingsdlg.cpp +++ b/src/qtui/settingsdlg.cpp @@ -25,6 +25,8 @@ SettingsDlg::SettingsDlg(QWidget *parent) _currentPage(0) { setModal(true); + setWindowFlags(Qt::Sheet); + setAttribute(Qt::WA_DeleteOnClose, true); ui.setupUi(this); updateGeometry(); diff --git a/src/qtui/settingspages/appearancesettingspage.cpp b/src/qtui/settingspages/appearancesettingspage.cpp index 1104bc34..fc4674fd 100644 --- a/src/qtui/settingspages/appearancesettingspage.cpp +++ b/src/qtui/settingspages/appearancesettingspage.cpp @@ -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()) { + connect(comboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(widgetHasChanged())); + } + foreach(QCheckBox *checkBox, findChildren()) { + 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(); 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; } diff --git a/src/qtui/settingspages/appearancesettingspage.ui b/src/qtui/settingspages/appearancesettingspage.ui index e6abf9d3..bc1e26b6 100644 --- a/src/qtui/settingspages/appearancesettingspage.ui +++ b/src/qtui/settingspages/appearancesettingspage.ui @@ -5,8 +5,8 @@ 0 0 - 331 - 269 + 396 + 324 @@ -56,7 +56,36 @@ - + + + Misc: + + + + + + Show Web Previews + + + true + + + + + + + Use Icons to represent away state of Users + + + true + + + + + + + + Qt::Vertical diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index 2de916b0..4f095283 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -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(); } +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(); diff --git a/src/uisupport/bufferviewfilter.h b/src/uisupport/bufferviewfilter.h index 22fc2fd5..813e5548 100644 --- a/src/uisupport/bufferviewfilter.h +++ b/src/uisupport/bufferviewfilter.h @@ -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 ¤t, 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 _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 &);