X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fbufferview.cpp;h=9ab553c0309efc3b31de14c84cce933ce337d518;hb=9cad7696cf0ef2f58c231c7b1eaaae0c16d0273d;hp=5f33df45ae892cc58e075974c765d2c093d1eb87;hpb=f429bd6dfbea50ad4690875f1466a920f7a3b509;p=quassel.git diff --git a/src/uisupport/bufferview.cpp b/src/uisupport/bufferview.cpp index 5f33df45..9ab553c0 100644 --- a/src/uisupport/bufferview.cpp +++ b/src/uisupport/bufferview.cpp @@ -22,6 +22,7 @@ #include "buffermodel.h" #include "bufferviewfilter.h" +#include "buffersettings.h" #include "buffersyncer.h" #include "client.h" #include "iconloader.h" @@ -59,24 +60,20 @@ BufferView::BufferView(QWidget *parent) _removeBufferAction(tr("Delete buffer"), this), _ignoreListAction(tr("Ignore list"), this), - _hideJoinAction(tr("Join Events"), this), - _hidePartAction(tr("Part Events"), this), - _hideKillAction(tr("Kill Events"), this), - _hideQuitAction(tr("Quit Events"), this), - _hideModeAction(tr("Mode Events"), this) - + _hideJoinAction(tr("Joins"), this), + _hidePartAction(tr("Parts"), this), + _hideQuitAction(tr("Quits"), this), + _hideNickAction(tr("Nick Changes"), this), + _hideModeAction(tr("Mode"), this), + _hideDayChangeAction(tr("Day Change"), this) { _hideJoinAction.setCheckable(true); _hidePartAction.setCheckable(true); - _hideKillAction.setCheckable(true); _hideQuitAction.setCheckable(true); + _hideNickAction.setCheckable(true); _hideModeAction.setCheckable(true); - _hideJoinAction.setEnabled(false); - _hidePartAction.setEnabled(false); + _hideDayChangeAction.setCheckable(true); _ignoreListAction.setEnabled(false); - _hideKillAction.setEnabled(false); - _hideQuitAction.setEnabled(false); - _hideModeAction.setEnabled(false); showChannelList.setIcon(SmallIcon("format-list-unordered")); @@ -103,12 +100,13 @@ void BufferView::init() { setSortingEnabled(true); sortByColumn(0, Qt::AscendingOrder); -#ifndef Q_WS_QWS - // this is a workaround to not join channels automatically... we need a saner way to navigate for qtopia anyway though, - // such as mark first, activate at second click... - connect(this, SIGNAL(activated(QModelIndex)), this, SLOT(joinChannel(QModelIndex))); + + // activated() fails on X11 and Qtopia at least +#if defined Q_WS_QWS or defined Q_WS_X11 + connect(this, SIGNAL(doubleClicked(QModelIndex)), SLOT(joinChannel(QModelIndex))); #else - connect(this, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(joinChannel(QModelIndex))); // Qtopia uses single click for activation + // afaik this is better on Mac and Windows + connect(this, SIGNAL(activated(QModelIndex)), SLOT(joinChannel(QModelIndex))); #endif } @@ -389,14 +387,22 @@ void BufferView::addSeparatorToMenu(QMenu &menu, const QModelIndex &index, ItemA } } -QMenu *BufferView::createHideEventsSubMenu(QMenu &menu) { - // QMenu *hideEventsMenu = new QMenu(tr("Hide Events"), &menu); +QMenu *BufferView::createHideEventsSubMenu(QMenu &menu, BufferId bufferId) { + int filter = BufferSettings(bufferId).messageFilter(); + _hideJoinAction.setChecked(filter & Message::Join); + _hidePartAction.setChecked(filter & Message::Part); + _hideQuitAction.setChecked(filter & Message::Quit); + _hideNickAction.setChecked(filter & Message::Nick); + _hideModeAction.setChecked(filter & Message::Mode); + _hideDayChangeAction.setChecked(filter & Message::DayChange); + QMenu *hideEventsMenu = menu.addMenu(tr("Hide Events")); hideEventsMenu->addAction(&_hideJoinAction); hideEventsMenu->addAction(&_hidePartAction); - hideEventsMenu->addAction(&_hideKillAction); hideEventsMenu->addAction(&_hideQuitAction); + hideEventsMenu->addAction(&_hideNickAction); hideEventsMenu->addAction(&_hideModeAction); + hideEventsMenu->addAction(&_hideDayChangeAction); return hideEventsMenu; } @@ -445,14 +451,14 @@ void BufferView::contextMenuEvent(QContextMenuEvent *event) { addItemToMenu(_hideBufferTemporarilyAction, contextMenu, (bool)config()); addItemToMenu(_hideBufferPermanentlyAction, contextMenu, (bool)config()); addItemToMenu(_removeBufferAction, contextMenu, index, InactiveState); - createHideEventsSubMenu(contextMenu); + createHideEventsSubMenu(contextMenu, bufferInfo.bufferId()); addItemToMenu(_ignoreListAction, contextMenu); break; case BufferInfo::QueryBuffer: addItemToMenu(_hideBufferTemporarilyAction, contextMenu, (bool)config()); addItemToMenu(_hideBufferPermanentlyAction, contextMenu, (bool)config()); addItemToMenu(_removeBufferAction, contextMenu); - createHideEventsSubMenu(contextMenu); + createHideEventsSubMenu(contextMenu, bufferInfo.bufferId()); break; default: addItemToMenu(_hideBufferTemporarilyAction, contextMenu, (bool)config()); @@ -526,6 +532,36 @@ void BufferView::contextMenuEvent(QContextMenuEvent *event) { return; } + if(result == & _hideJoinAction) { + BufferId bufferId = index.data(NetworkModel::BufferIdRole).value(); + BufferSettings(bufferId).filterMessage(Message::Join, _hideJoinAction.isChecked()); + return; + } + if(result == &_hidePartAction) { + BufferId bufferId = index.data(NetworkModel::BufferIdRole).value(); + BufferSettings(bufferId).filterMessage(Message::Part, _hidePartAction.isChecked()); + return; + } + if(result == &_hideQuitAction) { + BufferId bufferId = index.data(NetworkModel::BufferIdRole).value(); + BufferSettings(bufferId).filterMessage(Message::Quit, _hideQuitAction.isChecked()); + return; + } + if(result == &_hideNickAction) { + BufferId bufferId = index.data(NetworkModel::BufferIdRole).value(); + BufferSettings(bufferId).filterMessage(Message::Nick, _hideNickAction.isChecked()); + return; + } + if(result == &_hideModeAction) { + BufferId bufferId = index.data(NetworkModel::BufferIdRole).value(); + BufferSettings(bufferId).filterMessage(Message::Mode, _hideModeAction.isChecked()); + return; + } + if(result == &_hideDayChangeAction) { + BufferId bufferId = index.data(NetworkModel::BufferIdRole).value(); + BufferSettings(bufferId).filterMessage(Message::DayChange, _hideDayChangeAction.isChecked()); + return; + } } void BufferView::wheelEvent(QWheelEvent* event) {