X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fbufferhotlistfilter.cpp;h=c7ef03313712d1853f33fcd184003ad0e0b7fabe;hp=da68ebac69f38675b4ffa126c033f82e3b7f93cc;hb=HEAD;hpb=04315f46a16fc3627218377071e008b6b9744992 diff --git a/src/uisupport/bufferhotlistfilter.cpp b/src/uisupport/bufferhotlistfilter.cpp index da68ebac..6349a472 100644 --- a/src/uisupport/bufferhotlistfilter.cpp +++ b/src/uisupport/bufferhotlistfilter.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2013 by the Quassel Project * + * Copyright (C) 2005-2022 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -22,16 +22,23 @@ #include "networkmodel.h" -BufferHotListFilter::BufferHotListFilter(QAbstractItemModel *source, QObject *parent) +BufferHotListFilter::BufferHotListFilter(QAbstractItemModel* source, QObject* parent) : QSortFilterProxyModel(parent) { setSourceModel(source); setDynamicSortFilter(true); - sort(0, Qt::DescendingOrder); // enable sorting... this is "usually" triggered by a enabling setSortingEnabled(true) on a view; + sort(0, Qt::DescendingOrder); // enable sorting... this is "usually" triggered by a enabling setSortingEnabled(true) on a view; } +BufferId BufferHotListFilter::hottestBuffer() +{ + invalidate(); + sort(0, Qt::DescendingOrder); + QModelIndex topIndex = index(0, 0); + return data(topIndex, NetworkModel::BufferIdRole).value(); +} -bool BufferHotListFilter::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const +bool BufferHotListFilter::filterAcceptsRow(int source_row, const QModelIndex& source_parent) const { Q_ASSERT(sourceModel()); QModelIndex source_index = sourceModel()->index(source_row, 0, source_parent); @@ -40,7 +47,7 @@ bool BufferHotListFilter::filterAcceptsRow(int source_row, const QModelIndex &so if (!firstUnreadMsgId.isValid()) return false; - // filter out statusbuffers (it's accessable as networkitem) + // filter out statusbuffers (it's accessible as networkitem) BufferInfo::Type bufferType = (BufferInfo::Type)sourceModel()->data(source_index, NetworkModel::BufferTypeRole).toInt(); if (bufferType == BufferInfo::StatusBuffer) { NetworkModel::ItemType itemType = (NetworkModel::ItemType)sourceModel()->data(source_index, NetworkModel::ItemTypeRole).toInt(); @@ -50,8 +57,7 @@ bool BufferHotListFilter::filterAcceptsRow(int source_row, const QModelIndex &so return true; } - -bool BufferHotListFilter::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const +bool BufferHotListFilter::lessThan(const QModelIndex& source_left, const QModelIndex& source_right) const { int leftActivity = sourceModel()->data(source_left, NetworkModel::BufferActivityRole).toInt(); int rightActivity = sourceModel()->data(source_right, NetworkModel::BufferActivityRole).toInt(); @@ -60,10 +66,9 @@ bool BufferHotListFilter::lessThan(const QModelIndex &source_left, const QModelI MsgId leftUnreadMsgId = sourceModel()->data(source_left, NetworkModel::BufferFirstUnreadMsgIdRole).value(); MsgId rightUnreadMsgId = sourceModel()->data(source_right, NetworkModel::BufferFirstUnreadMsgIdRole).value(); - return leftUnreadMsgId > rightUnreadMsgId; // newer messages are treated to be "less" + 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);