X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fbufferhotlistfilter.cpp;fp=src%2Fclient%2Fbufferhotlistfilter.cpp;h=0000000000000000000000000000000000000000;hp=e3f31da898b3b883879e7fbd18107e4574b26257;hb=754a784dda6fe5235c59a7ce3829599ccf62eeda;hpb=6b31f4c8abb36ebe658c2e5ce2a8e9ba2a50f443 diff --git a/src/client/bufferhotlistfilter.cpp b/src/client/bufferhotlistfilter.cpp deleted file mode 100644 index e3f31da8..00000000 --- a/src/client/bufferhotlistfilter.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/*************************************************************************** - * Copyright (C) 2005-08 by the Quassel Project * - * devel@quassel-irc.org * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) version 3. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * 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. * - ***************************************************************************/ - -#include "bufferhotlistfilter.h" - -#include "networkmodel.h" - -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; -} - -bool BufferHotListFilter::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const { - Q_ASSERT(sourceModel()); - QModelIndex source_index = sourceModel()->index(source_row, 0, source_parent); - - MsgId firstUnreadMsgId = sourceModel()->data(source_index, NetworkModel::BufferFirstUnreadMsgIdRole).value(); - if(!firstUnreadMsgId.isValid()) - return false; - - // filter out statusbuffers (it's accessable 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(); - return itemType == NetworkModel::NetworkItemType; - } -} - -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 rightUnreadMsgId = sourceModel()->data(source_right, NetworkModel::BufferFirstUnreadMsgIdRole).value(); - 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); - - if(role == Qt::DisplayRole) { - int activity = QSortFilterProxyModel::data(index, NetworkModel::BufferActivityRole).toInt(); - MsgId unreadMsgId = QSortFilterProxyModel::data(index, NetworkModel::BufferFirstUnreadMsgIdRole).value(); - return QString("%1 %2 %3").arg(d.toString()).arg(activity).arg(unreadMsgId.toInt()); - } - return d; -}