File indexing completed on 2024-05-12 16:25:49

0001 /*
0002    SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "listmessagesfilterproxymodel.h"
0008 #include <KLocalizedString>
0009 
0010 ListMessagesFilterProxyModel::ListMessagesFilterProxyModel(ListMessagesModel *model, QObject *parent)
0011     : QSortFilterProxyModel(parent)
0012     , mModel(model)
0013 {
0014     setSourceModel(mModel);
0015 
0016     setFilterCaseSensitivity(Qt::CaseInsensitive);
0017     setFilterRole(ListMessagesModel::OriginalMessage);
0018     sort(0, Qt::DescendingOrder);
0019     connect(mModel, &ListMessagesModel::hasFullListChanged, this, &ListMessagesFilterProxyModel::hasFullListChanged);
0020     connect(mModel, &ListMessagesModel::listMessageTypeChanged, this, &ListMessagesFilterProxyModel::listMessageTypeChanged);
0021     connect(mModel, &ListMessagesModel::totalChanged, this, &ListMessagesFilterProxyModel::totalChanged);
0022     connect(mModel, &ListMessagesModel::loadingInProgressChanged, this, &ListMessagesFilterProxyModel::loadingInProgressChanged);
0023 }
0024 
0025 ListMessagesFilterProxyModel::~ListMessagesFilterProxyModel() = default;
0026 
0027 int ListMessagesFilterProxyModel::total() const
0028 {
0029     return mModel->total();
0030 }
0031 
0032 void ListMessagesFilterProxyModel::setFilterString(const QString &string)
0033 {
0034     setFilterFixedString(string);
0035 }
0036 
0037 QString ListMessagesFilterProxyModel::title() const
0038 {
0039     switch (listMessageType()) {
0040     case ListMessagesModel::Unknown:
0041         return {};
0042     case ListMessagesModel::StarredMessages:
0043         return i18n("Starred Messages");
0044     case ListMessagesModel::PinnedMessages:
0045         return i18n("Pinned Messages");
0046     case ListMessagesModel::MentionsMessages:
0047         return i18n("Mentions Messages");
0048     case ListMessagesModel::ThreadsMessages:
0049         return i18n("Threads Messages");
0050     case ListMessagesModel::UnreadThreadsMessages:
0051         return i18n("Unread Threads Messages");
0052     }
0053     return {};
0054 }
0055 
0056 ListMessagesModel::ListMessageType ListMessagesFilterProxyModel::listMessageType() const
0057 {
0058     return mModel->listMessageType();
0059 }
0060 
0061 ListMessagesModel *ListMessagesFilterProxyModel::listMessageModel() const
0062 {
0063     return mModel;
0064 }
0065 
0066 bool ListMessagesFilterProxyModel::hasFullList() const
0067 {
0068     return mModel->hasFullList();
0069 }
0070 
0071 bool ListMessagesFilterProxyModel::loadMoreListMessagesInProgress() const
0072 {
0073     return mModel->loadMoreListMessagesInProgress();
0074 }
0075 
0076 int ListMessagesFilterProxyModel::numberOfMessages() const
0077 {
0078     return mModel->rowCount();
0079 }
0080 
0081 void ListMessagesFilterProxyModel::clear()
0082 {
0083     mModel->clear();
0084 }
0085 
0086 #include "moc_listmessagesfilterproxymodel.cpp"