AusweisApp2/src/qml/HistoryModel.h

126 lines
3.1 KiB
C
Raw Normal View History

2017-07-03 09:30:10 +02:00
/*!
* \brief Model implementation for the history entries.
*
2018-03-28 15:10:51 +02:00
* \copyright Copyright (c) 2015-2018 Governikus GmbH & Co. KG, Germany
2017-07-03 09:30:10 +02:00
*/
#pragma once
2017-07-03 09:33:28 +02:00
#include "HistoryModelSearchFilter.h"
2017-07-03 09:30:10 +02:00
#include "HistorySettings.h"
2017-12-20 14:54:05 +01:00
#include "ProviderConfigurationInfo.h"
2017-07-03 09:30:10 +02:00
#include <QAbstractListModel>
#include <QPointer>
#include <QSortFilterProxyModel>
namespace governikus
{
class HistoryProxyModel
: public QSortFilterProxyModel
{
Q_OBJECT
public:
Q_INVOKABLE bool removeRows(int pRow, int pCount, const QModelIndex& pParent = QModelIndex()) override;
HistoryProxyModel();
2017-12-20 14:54:05 +01:00
virtual ~HistoryProxyModel() override;
2017-07-03 09:30:10 +02:00
};
class ProviderNameFilterModel
: public QSortFilterProxyModel
{
Q_OBJECT
private:
QPointer<HistorySettings> mHistorySettings;
2017-12-20 14:54:05 +01:00
ProviderConfigurationInfo mProvider;
2017-07-03 09:30:10 +02:00
protected:
bool filterAcceptsRow(int pSourceRow, const QModelIndex& pSourceParent) const override;
public:
2017-12-20 14:54:05 +01:00
ProviderNameFilterModel(HistorySettings* pHistorySettings);
2017-07-03 09:30:10 +02:00
2017-12-20 14:54:05 +01:00
virtual ~ProviderNameFilterModel() override;
2017-07-03 09:30:10 +02:00
Q_INVOKABLE void setProviderAddress(const QString& pProviderAddress);
};
class HistoryModel
: public QAbstractListModel
{
Q_OBJECT
Q_PROPERTY(HistoryProxyModel * filter READ getFilterModel CONSTANT)
Q_PROPERTY(ProviderNameFilterModel * nameFilter READ getNameFilterModel CONSTANT)
2017-07-03 09:33:28 +02:00
Q_PROPERTY(HistoryModelSearchFilter * searchFilter READ getHistoryModelSearchFilter CONSTANT)
Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY fireEnabledChanged)
2017-07-03 09:30:10 +02:00
QPointer<HistorySettings> mHistorySettings;
HistoryProxyModel mFilterModel;
ProviderNameFilterModel mNameFilterModel;
2017-07-03 09:33:28 +02:00
HistoryModelSearchFilter mHistoryModelSearchFilter;
2017-07-03 09:30:10 +02:00
private:
2017-12-20 14:54:05 +01:00
QVector<QMetaObject::Connection> mConnections;
ProviderConfigurationInfo determineProviderFor(const HistoryInfo& pHistoryInfo) const;
2017-07-03 09:30:10 +02:00
2017-07-03 09:33:28 +02:00
bool isEnabled() const;
void setEnabled(bool pEnabled);
2017-12-20 14:54:05 +01:00
void updateConnections();
2017-07-03 09:33:28 +02:00
2017-07-03 09:30:10 +02:00
private Q_SLOTS:
void onHistoryEntriesChanged();
void onProvidersChanged();
2017-07-03 09:33:28 +02:00
Q_SIGNALS:
2017-12-20 14:54:05 +01:00
void fireEnabledChanged(bool pValue);
2017-07-03 09:33:28 +02:00
2017-07-03 09:30:10 +02:00
public:
2017-12-20 14:54:05 +01:00
HistoryModel(HistorySettings* pHistorySettings, QObject* pParent = nullptr);
virtual ~HistoryModel() override;
2017-07-03 09:30:10 +02:00
2017-07-03 09:33:28 +02:00
enum HistoryRoles
{
SUBJECT = Qt::UserRole + 1,
PURPOSE,
DATETIME,
TERMSOFUSAGE,
REQUESTEDDATA,
PROVIDER_CATEGORY,
PROVIDER_SHORTNAME,
PROVIDER_LONGNAME,
PROVIDER_SHORTDESCRIPTION,
PROVIDER_LONGDESCRIPTION,
PROVIDER_ADDRESS,
PROVIDER_ADDRESS_DOMAIN,
PROVIDER_HOMEPAGE,
PROVIDER_HOMEPAGE_BASE,
PROVIDER_PHONE,
PROVIDER_PHONE_COST,
PROVIDER_EMAIL,
PROVIDER_POSTALADDRESS,
PROVIDER_ICON,
PROVIDER_IMAGE
};
2017-07-03 09:30:10 +02:00
int rowCount(const QModelIndex& = QModelIndex()) const override;
QVariant data(const QModelIndex& pIndex, int pRole = Qt::DisplayRole) const override;
QHash<int, QByteArray> roleNames() const override;
Q_INVOKABLE bool removeRows(int pRow, int pCount, const QModelIndex& pParent = QModelIndex()) override;
Q_INVOKABLE HistoryProxyModel* getFilterModel();
Q_INVOKABLE ProviderNameFilterModel* getNameFilterModel();
2017-07-03 09:33:28 +02:00
HistoryModelSearchFilter* getHistoryModelSearchFilter();
2017-07-03 09:30:10 +02:00
};
} /* namespace governikus */