abstractmessageprocessor.cpp
abstractui.cpp
backlogrequester.cpp
- bufferhotlistfilter.cpp
buffermodel.cpp
buffersettings.cpp
bufferviewoverlay.cpp
set(MOC_HDRS
abstractmessageprocessor.h
abstractui.h
- bufferhotlistfilter.h
buffermodel.h
bufferviewoverlay.h
client.h
#include "awaylogview.h"
#include "action.h"
#include "actioncollection.h"
+#include "bufferhotlistfilter.h"
#include "buffermodel.h"
#include "bufferview.h"
#include "bufferviewoverlay.h"
#include "debugbufferviewoverlay.h"
#include "debuglogwidget.h"
#include "debugmessagemodelfilter.h"
+#include "flatproxymodel.h"
#include "iconloader.h"
#include "inputwidget.h"
#include "inputline.h"
setupToolBars();
setupSystray();
setupTitleSetter();
+ setupHotList();
#ifndef HAVE_KDE
QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this));
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() {
_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"));
}
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);
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<BufferId>();
+ Client::bufferModel()->switchToBuffer(bufferId);
+}
+
void MainWin::on_actionDebugNetworkModel_triggered() {
QTreeView *view = new QTreeView;
view->setAttribute(Qt::WA_DeleteOnClose);
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);
#include "uisettings.h"
class ActionCollection;
+class BufferHotListFilter;
class BufferView;
class BufferViewConfig;
class ClientBufferViewConfig;
void on_actionConfigureNetworks_triggered();
void on_actionConfigureViews_triggered();
void on_actionLockLayout_toggled(bool lock);
+ void on_jumpHotBuffer_triggered();
void on_actionDebugNetworkModel_triggered();
void on_actionDebugBufferViewOverlay_triggered();
void on_actionDebugMessageModel_triggered();
+ void on_actionDebugHotList_triggered();
void on_actionDebugLog_triggered();
void clientNetworkCreated(NetworkId);
void setupSystray();
void setupTitleSetter();
void setupToolBars();
+ void setupHotList();
void updateIcon();
void enableMenus();
DWORD dwTickCount;
#endif
+ BufferHotListFilter *_bufferHotList;
+
friend class QtUi;
};
abstractitemview.cpp
action.cpp
actioncollection.cpp
+ bufferhotlistfilter.cpp
bufferview.cpp
bufferviewfilter.cpp
bufferviewoverlayfilter.cpp
abstractnotificationbackend.h
action.h
actioncollection.h
+ bufferhotlistfilter.h
bufferview.h
bufferviewfilter.h
bufferviewoverlayfilter.h
NetworkModel::ItemType itemType = (NetworkModel::ItemType)sourceModel()->data(source_index, NetworkModel::ItemTypeRole).toInt();
return itemType == NetworkModel::NetworkItemType;
}
+
+ return true;
}
bool BufferHotListFilter::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const {
- qDebug() << Q_FUNC_INFO;
- qDebug() << source_left << source_right;
int leftActivity = sourceModel()->data(source_left, NetworkModel::BufferActivityRole).toInt();
int rightActivity = sourceModel()->data(source_right, NetworkModel::BufferActivityRole).toInt();
- qDebug() << leftActivity << rightActivity;
if(leftActivity != rightActivity)
return leftActivity < rightActivity;
MsgId leftUnreadMsgId = sourceModel()->data(source_left, NetworkModel::BufferFirstUnreadMsgIdRole).value<MsgId>();
MsgId rightUnreadMsgId = sourceModel()->data(source_right, NetworkModel::BufferFirstUnreadMsgIdRole).value<MsgId>();
- qDebug() << leftUnreadMsgId << rightUnreadMsgId;
return leftUnreadMsgId > rightUnreadMsgId; // newer messages are treated to be "less"
}
-QVariant BufferHotListFilter::data(const QModelIndex &index, int role) const {
- QVariant d = QSortFilterProxyModel::data(index, role);
+// QVariant BufferHotListFilter::data(const QModelIndex &index, int role) const {
+// QVariant d = QSortFilterProxyModel::data(index, role);
- if(role == Qt::DisplayRole) {
- int activity = QSortFilterProxyModel::data(index, NetworkModel::BufferActivityRole).toInt();
- MsgId unreadMsgId = QSortFilterProxyModel::data(index, NetworkModel::BufferFirstUnreadMsgIdRole).value<MsgId>();
- return QString("%1 %2 %3").arg(d.toString()).arg(activity).arg(unreadMsgId.toInt());
- }
- return d;
-}
+// if(role == Qt::DisplayRole) {
+// int activity = QSortFilterProxyModel::data(index, NetworkModel::BufferActivityRole).toInt();
+// MsgId unreadMsgId = QSortFilterProxyModel::data(index, NetworkModel::BufferFirstUnreadMsgIdRole).value<MsgId>();
+// return QString("%1 %2 %3").arg(d.toString()).arg(activity).arg(unreadMsgId.toInt());
+// }
+// return d;
+// }
BufferHotListFilter(QAbstractItemModel *source, QObject *parent = 0);
virtual inline int columnCount(const QModelIndex &) const { return 1; }
- QVariant data(const QModelIndex &index, int role) const;
+// QVariant data(const QModelIndex &index, int role) const;
protected:
virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;
int start = 0;
int end = _childs.count() - 1;
int pivot;
- while(end - start != 1) {
+ while(end - start > 1) {
pivot = (end + start) / 2;
if(_childs[pivot]->pos() > proxyPos)
end = pivot;