File indexing completed on 2024-05-12 16:42:20
0001 /* 0002 SPDX-FileCopyrightText: 2017-2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #ifndef SECURITIESMODEL_H 0007 #define SECURITIESMODEL_H 0008 0009 #include "kmm_models_export.h" 0010 0011 // ---------------------------------------------------------------------------- 0012 // QT Includes 0013 0014 #include <QStandardItemModel> 0015 #include <QSortFilterProxyModel> 0016 #if QT_VERSION < QT_VERSION_CHECK(5,10,0) 0017 #include <KItemModels/KRecursiveFilterProxyModel> 0018 #define QSortFilterProxyModel KRecursiveFilterProxyModel 0019 #endif 0020 0021 // ---------------------------------------------------------------------------- 0022 // KDE Includes 0023 0024 // ---------------------------------------------------------------------------- 0025 // Project Includes 0026 0027 class MyMoneyObject; 0028 0029 namespace eMyMoney { 0030 namespace File { 0031 enum class Object; 0032 } 0033 } 0034 0035 class KMM_MODELS_EXPORT SecuritiesModel : public QStandardItemModel 0036 { 0037 Q_OBJECT 0038 0039 public: 0040 enum Column { Security = 0, Symbol, Type, Market, Currency, Fraction }; 0041 0042 ~SecuritiesModel(); 0043 0044 auto getColumns(); 0045 static QString getHeaderName(const Column column); 0046 0047 public Q_SLOTS: 0048 void slotObjectAdded(eMyMoney::File::Object objType, const QString &id); 0049 void slotObjectModified(eMyMoney::File::Object objType, const QString &id); 0050 void slotObjectRemoved(eMyMoney::File::Object objType, const QString& id); 0051 0052 private: 0053 SecuritiesModel(QObject *parent = nullptr); 0054 SecuritiesModel(const SecuritiesModel&); 0055 SecuritiesModel& operator=(SecuritiesModel&); 0056 friend class Models; // only this class can create SecuritiesModel 0057 0058 void init(); 0059 void load(); 0060 0061 protected: 0062 class Private; 0063 Private* const d; 0064 }; 0065 0066 class KMM_MODELS_EXPORT SecuritiesFilterProxyModel : public QSortFilterProxyModel 0067 { 0068 Q_OBJECT 0069 0070 public: 0071 SecuritiesFilterProxyModel(QObject *parent, SecuritiesModel *model, const QList<SecuritiesModel::Column> &columns = QList<SecuritiesModel::Column>()); 0072 ~SecuritiesFilterProxyModel(); 0073 0074 QList<SecuritiesModel::Column> &getVisibleColumns(); 0075 0076 Q_SIGNALS: 0077 void columnToggled(const SecuritiesModel::Column column, const bool show); 0078 0079 public Q_SLOTS: 0080 void slotColumnsMenu(const QPoint); 0081 0082 protected: 0083 bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const override; 0084 0085 private: 0086 class Private; 0087 Private* const d; 0088 0089 #if QT_VERSION < QT_VERSION_CHECK(5,10,0) 0090 // provide the interface for backward compatbility 0091 void setRecursiveFilteringEnabled(bool enable) { 0092 Q_UNUSED(enable) 0093 } 0094 #endif 0095 0096 }; 0097 0098 #undef QSortFilterProxyModel 0099 #endif // SECURITIESMODEL_H