1 /*! 2 * \brief Model implementation for the providers. 3 * 4 * \copyright Copyright (c) 2015-2021 Governikus GmbH & Co. KG, Germany 5 */ 6 7 #pragma once 8 9 #include "CallCost.h" 10 11 #include <QAbstractListModel> 12 #include <QStringList> 13 #include <QVector> 14 15 16 namespace governikus 17 { 18 19 class ProviderModel 20 : public QAbstractListModel 21 { 22 23 Q_OBJECT 24 25 static QString createCostString(double pCostsPerMinute, double pCostsPerCall); 26 static QString createAmountString(double pCents); 27 28 private: 29 QVector<QMetaObject::Connection> mConnections; 30 bool mIncludeCategories; 31 32 void updateConnections(); 33 34 private Q_SLOTS: 35 void onProvidersChanged(); 36 37 public: 38 enum ProviderRoles 39 { 40 CATEGORY = Qt::UserRole + 1, 41 SHORTNAME, 42 LONGNAME, 43 SHORTDESCRIPTION, 44 LONGDESCRIPTION, 45 ADDRESS, 46 ADDRESS_DOMAIN, 47 HOMEPAGE, 48 HOMEPAGE_BASE, 49 PHONE, 50 PHONE_COST, 51 EMAIL, 52 POSTALADDRESS, 53 ICON, 54 IMAGE, 55 SORT_ROLE, 56 TYPE 57 }; 58 59 explicit ProviderModel(QObject* pParent = nullptr); 60 ~ProviderModel() override; 61 62 int rowCount(const QModelIndex&) const override; 63 QVariant data(const QModelIndex& pIndex, int pRole = Qt::DisplayRole) const override; 64 QHash<int, QByteArray> roleNames() const override; 65 66 void setIncludeCategories(bool pIncludeCategories); 67 bool getIncludeCategories() const; 68 69 static const QStringList& getProviderCategories(); 70 71 static QString createCostString(const CallCost& pCosts); 72 }; 73 74 75 } // namespace governikus 76