X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=e0fff46e4260d6ceccd795a90bcb70671e87ef8d;hp=2c9e0f74eeb09f3e6d0552af7dc727c329fda546;hb=754a784dda6fe5235c59a7ce3829599ccf62eeda;hpb=6b31f4c8abb36ebe658c2e5ce2a8e9ba2a50f443 diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index 2c9e0f74..e0fff46e 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -37,6 +37,7 @@ #include "awaylogview.h" #include "action.h" #include "actioncollection.h" +#include "bufferhotlistfilter.h" #include "buffermodel.h" #include "bufferview.h" #include "bufferviewoverlay.h" @@ -58,6 +59,7 @@ #include "debugbufferviewoverlay.h" #include "debuglogwidget.h" #include "debugmessagemodelfilter.h" +#include "flatproxymodel.h" #include "iconloader.h" #include "inputwidget.h" #include "inputline.h" @@ -165,6 +167,7 @@ void MainWin::init() { setupToolBars(); setupSystray(); setupTitleSetter(); + setupHotList(); #ifndef HAVE_KDE QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this)); @@ -293,8 +296,14 @@ void MainWin::setupActions() { this, SLOT(on_actionDebugBufferViewOverlay_triggered()))); coll->addAction("DebugMessageModel", new Action(SmallIcon("tools-report-bug"), tr("Debug &MessageModel"), coll, this, SLOT(on_actionDebugMessageModel_triggered()))); + coll->addAction("DebugHotList", new Action(SmallIcon("tools-report-bug"), tr("Debug &HotList"), coll, + this, SLOT(on_actionDebugHotList_triggered()))); coll->addAction("DebugLog", new Action(SmallIcon("tools-report-bug"), tr("Debug &Log"), coll, this, SLOT(on_actionDebugLog_triggered()))); + + // Navigation + coll->addAction("JumpHotBuffer", new Action(tr("Jump to hot buffer"), coll, + this, SLOT(on_jumpHotBuffer_triggered()), QKeySequence(Qt::META + Qt::Key_A))); } void MainWin::setupMenus() { @@ -353,6 +362,7 @@ void MainWin::setupMenus() { _helpDebugMenu->addAction(coll->action("DebugNetworkModel")); _helpDebugMenu->addAction(coll->action("DebugBufferViewOverlay")); _helpDebugMenu->addAction(coll->action("DebugMessageModel")); + _helpDebugMenu->addAction(coll->action("DebugHotList")); _helpDebugMenu->addAction(coll->action("DebugLog")); } @@ -576,6 +586,12 @@ void MainWin::setupStatusBar() { connect(showStatusbar, SIGNAL(toggled(bool)), this, SLOT(saveStatusBarStatus(bool))); } +void MainWin::setupHotList() { + FlatProxyModel *flatProxy = new FlatProxyModel(this); + flatProxy->setSourceModel(Client::bufferModel()); + _bufferHotList = new BufferHotListFilter(flatProxy); +} + void MainWin::saveStatusBarStatus(bool enabled) { QtUiSettings uiSettings; uiSettings.setValue("ShowStatusBar", enabled); @@ -1007,6 +1023,15 @@ void MainWin::connectOrDisconnectFromNet() { else net->requestDisconnect(); } +void MainWin::on_jumpHotBuffer_triggered() { + if(!_bufferHotList->rowCount()) + return; + + QModelIndex topIndex = _bufferHotList->index(0, 0); + BufferId bufferId = _bufferHotList->data(topIndex, NetworkModel::BufferIdRole).value(); + Client::bufferModel()->switchToBuffer(bufferId); +} + void MainWin::on_actionDebugNetworkModel_triggered() { QTreeView *view = new QTreeView; view->setAttribute(Qt::WA_DeleteOnClose); @@ -1019,6 +1044,13 @@ void MainWin::on_actionDebugNetworkModel_triggered() { view->show(); } +void MainWin::on_actionDebugHotList_triggered() { + QTreeView *view = new QTreeView; + view->setAttribute(Qt::WA_DeleteOnClose); + view->setModel(_bufferHotList); + view->show(); +} + void MainWin::on_actionDebugBufferViewOverlay_triggered() { DebugBufferViewOverlay *overlay = new DebugBufferViewOverlay(0); overlay->setAttribute(Qt::WA_DeleteOnClose);