X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fbufferview.cpp;h=9ab553c0309efc3b31de14c84cce933ce337d518;hb=9cad7696cf0ef2f58c231c7b1eaaae0c16d0273d;hp=d93a617220fcad118b7a3b35856d593e2c6ddbac;hpb=5c6804f291a63f978e328aeddcc8448e3443b45e;p=quassel.git diff --git a/src/uisupport/bufferview.cpp b/src/uisupport/bufferview.cpp index d93a6172..9ab553c0 100644 --- a/src/uisupport/bufferview.cpp +++ b/src/uisupport/bufferview.cpp @@ -22,8 +22,10 @@ #include "buffermodel.h" #include "bufferviewfilter.h" +#include "buffersettings.h" #include "buffersyncer.h" #include "client.h" +#include "iconloader.h" #include "mappedselectionmodel.h" #include "network.h" #include "networkmodel.h" @@ -58,26 +60,22 @@ 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(QIcon(":/16x16/actions/oxygen/16x16/actions/format-list-unordered.png")); + showChannelList.setIcon(SmallIcon("format-list-unordered")); connect(this, SIGNAL(collapsed(const QModelIndex &)), this, SLOT(on_collapse(const QModelIndex &))); connect(this, SIGNAL(expanded(const QModelIndex &)), this, SLOT(on_expand(const QModelIndex &))); @@ -102,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 } @@ -388,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; } @@ -409,14 +416,14 @@ void BufferView::contextMenuEvent(QContextMenuEvent *event) { const Network *network = Client::network(index.data(NetworkModel::NetworkIdRole).value()); Q_CHECK_PTR(network); - QIcon connectionStateIcon; + QPixmap connectionStateIcon; if(network) { if(network->connectionState() == Network::Initialized) { - connectionStateIcon = QIcon(":/22x22/actions/network-connect"); + connectionStateIcon = SmallIcon("network-connect"); } else if(network->connectionState() == Network::Disconnected) { - connectionStateIcon = QIcon(":/22x22/actions/network-disconnect"); + connectionStateIcon = SmallIcon("network-disconnect"); } else { - connectionStateIcon = QIcon(":/22x22/actions/gear"); + connectionStateIcon = SmallIcon("network-wired"); // FIXME network-connecting } } @@ -444,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()); @@ -525,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) {