From: Marcus Eggenberger Date: Sun, 11 Jan 2009 19:32:08 +0000 (+0100) Subject: You can now apply the current settings for hiding events like join or X-Git-Tag: 0.4.0~237 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=4d98e7c1df3aba3e38d0291bbe310aff52c3fc00 You can now apply the current settings for hiding events like join or quits as default settings. --- diff --git a/src/client/buffersettings.cpp b/src/client/buffersettings.cpp index 98f948d9..12988440 100644 --- a/src/client/buffersettings.cpp +++ b/src/client/buffersettings.cpp @@ -38,3 +38,14 @@ void BufferSettings::filterMessage(Message::Type msgType, bool filter) { else setLocalValue("MessageTypeFilter", localValue("MessageTypeFilter", 0).toInt() & ~msgType); } + +void BufferSettings::setMessageFilter(int filter) { + if(!hasFilter()) + setLocalValue("hasMessageTypeFilter", true); + setLocalValue("MessageTypeFilter", filter); +} + +void BufferSettings::removeFilter() { + setLocalValue("hasMessageTypeFilter", false); + removeLocalKey("MessageTypeFilter"); +} diff --git a/src/client/buffersettings.h b/src/client/buffersettings.h index 176fe3a0..38cd8a64 100644 --- a/src/client/buffersettings.h +++ b/src/client/buffersettings.h @@ -35,7 +35,9 @@ public: inline bool hasFilter() { return localValue("hasMessageTypeFilter", false).toBool(); } inline int messageFilter() { return localValue("MessageTypeFilter", 0).toInt(); } + void setMessageFilter(int filter); void filterMessage(Message::Type msgType, bool filter); + void removeFilter(); inline bool showUserStateIcons() { return localValue("ShowUserStateIcons", true).toBool(); } inline void enableUserStateIcons(bool enabled) { setLocalValue("ShowUserStateIcons", enabled); } diff --git a/src/client/messagefilter.cpp b/src/client/messagefilter.cpp index cc2ec8b6..d5f44c26 100644 --- a/src/client/messagefilter.cpp +++ b/src/client/messagefilter.cpp @@ -46,9 +46,6 @@ MessageFilter::MessageFilter(MessageModel *source, const QList &buffer void MessageFilter::init() { setDynamicSortFilter(true); - BufferSettings defaultSettings; - _messageTypeFilter = defaultSettings.messageFilter(); - defaultSettings.notify("MessageTypeFilter", this, SLOT(messageTypeFilterChanged())); defaultSettings.notify("UserNoticesInDefaultBuffer", this, SLOT(messageRedirectionChanged())); defaultSettings.notify("UserNoticesInStatusBuffer", this, SLOT(messageRedirectionChanged())); defaultSettings.notify("UserNoticesInCurrentBuffer", this, SLOT(messageRedirectionChanged())); @@ -62,10 +59,15 @@ void MessageFilter::init() { defaultSettings.notify("ErrorMsgsInCurrentBuffer", this, SLOT(messageRedirectionChanged())); messageRedirectionChanged(); + BufferSettings defaultSettings; + _messageTypeFilter = defaultSettings.messageFilter(); + defaultSettings.notify("MessageTypeFilter", this, SLOT(messageTypeFilterChanged())); + BufferSettings mySettings(idString()); if(mySettings.hasFilter()) _messageTypeFilter = mySettings.messageFilter(); mySettings.notify("MessageTypeFilter", this, SLOT(messageTypeFilterChanged())); + mySettings.notify("hasMessageTypeFilter", this, SLOT(messageTypeFilterChanged())); } void MessageFilter::messageTypeFilterChanged() { diff --git a/src/uisupport/networkmodelactionprovider.cpp b/src/uisupport/networkmodelactionprovider.cpp index 8d72131b..84a306ca 100644 --- a/src/uisupport/networkmodelactionprovider.cpp +++ b/src/uisupport/networkmodelactionprovider.cpp @@ -51,7 +51,8 @@ NetworkModelActionProvider::NetworkModelActionProvider(QObject *parent) registerAction(HideNick, tr("Nick Changes"), true); registerAction(HideMode, tr("Mode Changes"), true); registerAction(HideDayChange, tr("Day Changes"), true); - registerAction(HideApplyToAll, tr("Apply to All Chat Views...")); + registerAction(HideApplyToAll, tr("Set as Default...")); + registerAction(HideUseDefaults, tr("Use Defaults...")); registerAction(JoinChannel, tr("Join Channel...")); @@ -79,8 +80,6 @@ NetworkModelActionProvider::NetworkModelActionProvider(QObject *parent) connect(_actionCollection, SIGNAL(actionTriggered(QAction *)), SLOT(actionTriggered(QAction *))); - action(HideApplyToAll)->setDisabled(true); - QMenu *hideEventsMenu = new QMenu(); hideEventsMenu->addAction(action(HideJoin)); hideEventsMenu->addAction(action(HidePart)); @@ -90,6 +89,7 @@ NetworkModelActionProvider::NetworkModelActionProvider(QObject *parent) hideEventsMenu->addAction(action(HideDayChange)); hideEventsMenu->addSeparator(); hideEventsMenu->addAction(action(HideApplyToAll)); + hideEventsMenu->addAction(action(HideUseDefaults)); _hideEventsMenuAction = new Action(tr("Hide Events"), 0); _hideEventsMenuAction->setMenu(hideEventsMenu); @@ -359,14 +359,25 @@ Action * NetworkModelActionProvider::addAction(Action *action , QMenu *menu, boo } void NetworkModelActionProvider::addHideEventsMenu(QMenu *menu, BufferId bufferId) { - addHideEventsMenu(menu, BufferSettings(bufferId).messageFilter()); + if(BufferSettings(bufferId).hasFilter()) + addHideEventsMenu(menu, BufferSettings(bufferId).messageFilter()); + else + addHideEventsMenu(menu); } void NetworkModelActionProvider::addHideEventsMenu(QMenu *menu, MessageFilter *msgFilter) { - addHideEventsMenu(menu, BufferSettings(msgFilter->idString()).messageFilter()); + if(BufferSettings(msgFilter->idString()).hasFilter()) + addHideEventsMenu(menu, BufferSettings(msgFilter->idString()).messageFilter()); + else + addHideEventsMenu(menu); } void NetworkModelActionProvider::addHideEventsMenu(QMenu *menu, int filter) { + action(HideApplyToAll)->setEnabled(filter != -1); + action(HideUseDefaults)->setEnabled(filter != -1); + if(filter == -1) + filter = BufferSettings().messageFilter(); + action(HideJoin)->setChecked(filter & Message::Join); action(HidePart)->setChecked(filter & Message::Part); action(HideQuit)->setChecked(filter & Message::Quit); @@ -518,38 +529,57 @@ void NetworkModelActionProvider::removeBuffers(const QModelIndexList &indexList) } void NetworkModelActionProvider::handleHideAction(ActionType type, QAction *action) { - Message::Type msgType; - switch(type) { - case HideJoin: - msgType = Message::Join; break; - case HidePart: - msgType = Message::Part; break; - case HideQuit: - msgType = Message::Quit; break; - case HideNick: - msgType = Message::Nick; break; - case HideMode: - msgType = Message::Mode; break; - case HideDayChange: - msgType = Message::DayChange; break; - case HideApplyToAll: - // TODO implement "apply to all" for hiding messages - return; - break; - default: - return; - } + Q_UNUSED(action) - if(_messageFilter) - BufferSettings(_messageFilter->idString()).filterMessage(msgType, action->isChecked()); - else { - foreach(QModelIndex index, _indexList) { - BufferId bufferId = index.data(NetworkModel::BufferIdRole).value(); - if(!bufferId.isValid()) - continue; - BufferSettings(bufferId).filterMessage(msgType, action->isChecked()); + int filter = 0; + if(NetworkModelActionProvider::action(HideJoin)->isChecked()) + filter |= Message::Join; + if(NetworkModelActionProvider::action(HidePart)->isChecked()) + filter |= Message::Part; + if(NetworkModelActionProvider::action(HideQuit)->isChecked()) + filter |= Message::Quit; + if(NetworkModelActionProvider::action(HideNick)->isChecked()) + filter |= Message::Nick; + if(NetworkModelActionProvider::action(HideMode)->isChecked()) + filter |= Message::Mode; + if(NetworkModelActionProvider::action(HideDayChange)->isChecked()) + filter |= Message::DayChange; + + switch(type) { + case HideJoin: + case HidePart: + case HideQuit: + case HideNick: + case HideMode: + case HideDayChange: + if(_messageFilter) + BufferSettings(_messageFilter->idString()).setMessageFilter(filter); + else { + foreach(QModelIndex index, _indexList) { + BufferId bufferId = index.data(NetworkModel::BufferIdRole).value(); + if(!bufferId.isValid()) + continue; + BufferSettings(bufferId).setMessageFilter(filter); + } } - } + return; + case HideApplyToAll: + BufferSettings().setMessageFilter(filter); + case HideUseDefaults: + if(_messageFilter) + BufferSettings(_messageFilter->idString()).removeFilter(); + else { + foreach(QModelIndex index, _indexList) { + BufferId bufferId = index.data(NetworkModel::BufferIdRole).value(); + if(!bufferId.isValid()) + continue; + BufferSettings(bufferId).removeFilter(); + } + } + return; + default: + return; + }; } void NetworkModelActionProvider::handleGeneralAction(ActionType type, QAction *action) { diff --git a/src/uisupport/networkmodelactionprovider.h b/src/uisupport/networkmodelactionprovider.h index 3835b80a..ec500dd1 100644 --- a/src/uisupport/networkmodelactionprovider.h +++ b/src/uisupport/networkmodelactionprovider.h @@ -55,6 +55,7 @@ public: HideNick = 0x0400, HideMode = 0x0500, HideDayChange = 0x0600, + HideUseDefaults = 0xe00, HideApplyToAll = 0xf00, // General actions @@ -145,7 +146,7 @@ private: void addHideEventsMenu(QMenu *, BufferId bufferId); void addHideEventsMenu(QMenu *, MessageFilter *msgFilter); - void addHideEventsMenu(QMenu *, int filter); + void addHideEventsMenu(QMenu *, int filter = -1); void addNetworkItemActions(QMenu *, const QModelIndex &); void addBufferItemActions(QMenu *, const QModelIndex &, bool isCustomBufferView = false);