2022-10-06 02:39:30 +03:00
|
|
|
// SPDX-FileCopyrightText: 2022 Nheko Contributors
|
|
|
|
//
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <QSortFilterProxyModel>
|
|
|
|
#include <QString>
|
|
|
|
|
|
|
|
#include <mtx/events/power_levels.hpp>
|
|
|
|
|
|
|
|
#include "TimelineModel.h"
|
|
|
|
|
|
|
|
class TimelineFilter : public QSortFilterProxyModel
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
Q_PROPERTY(QString filterByThread READ filterByThread WRITE setThreadId NOTIFY threadIdChanged)
|
2022-10-06 22:59:59 +03:00
|
|
|
Q_PROPERTY(QString filterByContent READ filterByContent WRITE setContentFilter NOTIFY
|
|
|
|
contentFilterChanged)
|
2022-10-06 02:39:30 +03:00
|
|
|
Q_PROPERTY(TimelineModel *source READ source WRITE setSource NOTIFY sourceChanged)
|
|
|
|
Q_PROPERTY(int currentIndex READ currentIndex WRITE setCurrentIndex NOTIFY currentIndexChanged)
|
|
|
|
|
|
|
|
public:
|
|
|
|
explicit TimelineFilter(QObject *parent = nullptr);
|
|
|
|
|
|
|
|
QString filterByThread() const { return threadId; }
|
2022-10-06 22:59:59 +03:00
|
|
|
QString filterByContent() const { return contentFilter; }
|
2022-10-06 02:39:30 +03:00
|
|
|
TimelineModel *source() const;
|
|
|
|
int currentIndex() const;
|
|
|
|
|
|
|
|
void setThreadId(const QString &t);
|
2022-10-06 22:59:59 +03:00
|
|
|
void setContentFilter(const QString &t);
|
2022-10-06 02:39:30 +03:00
|
|
|
void setSource(TimelineModel *t);
|
|
|
|
void setCurrentIndex(int idx);
|
|
|
|
|
2022-10-06 22:59:59 +03:00
|
|
|
Q_INVOKABLE QVariant dataByIndex(int i, int role = Qt::DisplayRole) const
|
|
|
|
{
|
|
|
|
return data(index(i, 0), role);
|
|
|
|
}
|
|
|
|
|
2022-10-06 02:39:30 +03:00
|
|
|
signals:
|
|
|
|
void threadIdChanged();
|
2022-10-06 22:59:59 +03:00
|
|
|
void contentFilterChanged();
|
2022-10-06 02:39:30 +03:00
|
|
|
void sourceChanged();
|
|
|
|
void currentIndexChanged();
|
|
|
|
|
|
|
|
protected:
|
|
|
|
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
|
|
|
|
|
|
|
|
private:
|
2022-10-06 22:59:59 +03:00
|
|
|
QString threadId, contentFilter;
|
2022-10-06 02:39:30 +03:00
|
|
|
};
|