X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatmonitorview.cpp;h=2c73e35fc4668bc314734b162f8c31c5615bdd1f;hp=da61ee7ffce2fbf2de7ac67e433e0069377fa91c;hb=f04db2cb802b1296ca739c823495930c71d3b4ab;hpb=f824db0e31b54969e0b7fa0b5405b1e9173d482c diff --git a/src/qtui/chatmonitorview.cpp b/src/qtui/chatmonitorview.cpp index da61ee7f..2c73e35f 100644 --- a/src/qtui/chatmonitorview.cpp +++ b/src/qtui/chatmonitorview.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * + * Copyright (C) 2005-2013 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "chatmonitorview.h" @@ -36,71 +36,90 @@ #include "qtuisettings.h" #include "settingspagedlg.h" #include "settingspages/chatmonitorsettingspage.h" +#include "clientignorelistmanager.h" ChatMonitorView::ChatMonitorView(ChatMonitorFilter *filter, QWidget *parent) - : ChatView(filter, parent), + : ChatView(filter, parent), _filter(filter) { - scene()->setSenderCutoffMode(ChatScene::CutoffLeft); + scene()->setSenderCutoffMode(ChatScene::CutoffLeft); + connect(Client::instance(), SIGNAL(coreConnectionStateChanged(bool)), this, SLOT(coreConnectionStateChanged(bool))); } -void ChatMonitorView::addActionsToMenu(QMenu *menu, const QPointF &pos) { - ChatView::addActionsToMenu(menu, pos); - menu->addSeparator(); - QAction *showOwnNicksAction = menu->addAction(tr("Show Own Messages"), _filter, SLOT(setShowOwnMessages(bool))); - showOwnNicksAction->setCheckable(true); - showOwnNicksAction->setChecked(_filter->showOwnMessages()); - if(scene()->columnByScenePos(pos) == ChatLineModel::SenderColumn) { +void ChatMonitorView::addActionsToMenu(QMenu *menu, const QPointF &pos) +{ + ChatView::addActionsToMenu(menu, pos); menu->addSeparator(); + QAction *showOwnNicksAction = menu->addAction(tr("Show Own Messages"), _filter, SLOT(setShowOwnMessages(bool))); + showOwnNicksAction->setCheckable(true); + showOwnNicksAction->setChecked(_filter->showOwnMessages()); + + if (scene()->columnByScenePos(pos) == ChatLineModel::SenderColumn) { + menu->addSeparator(); - QAction *showNetworkAction = menu->addAction(tr("Show Network Name"), this, SLOT(showFieldsChanged(bool))); - showNetworkAction->setCheckable(true); - showNetworkAction->setChecked(_filter->showFields() & ChatMonitorFilter::NetworkField); - showNetworkAction->setData(ChatMonitorFilter::NetworkField); + QAction *showNetworkAction = menu->addAction(tr("Show Network Name"), this, SLOT(showFieldsChanged(bool))); + showNetworkAction->setCheckable(true); + showNetworkAction->setChecked(_filter->showFields() & ChatMonitorFilter::NetworkField); + showNetworkAction->setData(ChatMonitorFilter::NetworkField); - QAction *showBufferAction = menu->addAction(tr("Show Buffer Name"), this, SLOT(showFieldsChanged(bool))); - showBufferAction->setCheckable(true); - showBufferAction->setChecked(_filter->showFields() & ChatMonitorFilter::BufferField); - showBufferAction->setData(ChatMonitorFilter::BufferField); - } + QAction *showBufferAction = menu->addAction(tr("Show Buffer Name"), this, SLOT(showFieldsChanged(bool))); + showBufferAction->setCheckable(true); + showBufferAction->setChecked(_filter->showFields() & ChatMonitorFilter::BufferField); + showBufferAction->setData(ChatMonitorFilter::BufferField); + } - menu->addSeparator(); - menu->addAction(SmallIcon("configure"), tr("Configure..."), this, SLOT(showSettingsPage())); + menu->addSeparator(); + menu->addAction(SmallIcon("configure"), tr("Configure..."), this, SLOT(showSettingsPage())); } -void ChatMonitorView::mouseDoubleClickEvent(QMouseEvent *event) { - if(scene()->columnByScenePos(event->pos()) != ChatLineModel::SenderColumn) { - ChatView::mouseDoubleClickEvent(event); - return; - } - ChatItem *chatItem = dynamic_cast(itemAt(event->pos())); - if(!chatItem) { - event->ignore(); - return; - } +void ChatMonitorView::mouseDoubleClickEvent(QMouseEvent *event) +{ + if (scene()->columnByScenePos(event->pos()) != ChatLineModel::SenderColumn) { + ChatView::mouseDoubleClickEvent(event); + return; + } + + ChatItem *chatItem = scene()->chatItemAt(mapToScene(event->pos())); + if (!chatItem) { + event->ignore(); + return; + } + + event->accept(); + BufferId bufferId = chatItem->data(MessageModel::BufferIdRole).value(); + if (!bufferId.isValid()) + return; + + Client::bufferModel()->switchToBuffer(bufferId); +} - event->accept(); - BufferId bufferId = chatItem->data(MessageModel::BufferIdRole).value(); - if(!bufferId.isValid()) - return; - Client::bufferModel()->switchToBuffer(bufferId); +void ChatMonitorView::showFieldsChanged(bool checked) +{ + QAction *showAction = qobject_cast(sender()); + if (!showAction) + return; + + if (checked) + _filter->addShowField(showAction->data().toInt()); + else + _filter->removeShowField(showAction->data().toInt()); } -void ChatMonitorView::showFieldsChanged(bool checked) { - QAction *showAction = qobject_cast(sender()); - if(!showAction) - return; - if(checked) - _filter->addShowField(showAction->data().toInt()); - else - _filter->removeShowField(showAction->data().toInt()); +void ChatMonitorView::showSettingsPage() +{ + SettingsPageDlg dlg(new ChatMonitorSettingsPage(), this); + dlg.exec(); } -void ChatMonitorView::showSettingsPage() { - SettingsPageDlg dlg(new ChatMonitorSettingsPage(), this); - dlg.exec(); + +// connect only after client is synced to core since ChatMonitorView is created before +// the ignoreListManager +void ChatMonitorView::coreConnectionStateChanged(bool connected) +{ + if (connected) + connect(Client::ignoreListManager(), SIGNAL(ignoreListChanged()), _filter, SLOT(invalidateFilter())); }