File indexing completed on 2024-05-19 05:08:30
0001 /* 0002 SPDX-FileCopyrightText: 2006 Darren Gould <darren_gould@gmx.de> 0003 SPDX-FileCopyrightText: 2009-2014 Alvaro Soliverez <asoliverez@gmail.com> 0004 SPDX-FileCopyrightText: 2017-2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com> 0005 SPDX-FileCopyrightText: 2019 Thomas Baumgart <tbaumgart@kde.org> 0006 SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #ifndef BUDGETVIEWPROXYMODEL_H 0010 #define BUDGETVIEWPROXYMODEL_H 0011 0012 #include "kmm_widgets_export.h" 0013 0014 // ---------------------------------------------------------------------------- 0015 // QT Includes 0016 0017 // ---------------------------------------------------------------------------- 0018 // KDE Includes 0019 0020 // ---------------------------------------------------------------------------- 0021 // Project Includes 0022 0023 #include "accountsproxymodel.h" 0024 #include "accountsmodel.h" 0025 0026 class MyMoneyAccount; 0027 class MyMoneyBudget; 0028 class MyMoneyMoney; 0029 0030 /** 0031 * This proxy model implements all the functionality needed by the budgets 0032 * account tree based on the @ref AccountsModel. One such functionality is 0033 * obtaining the account balance and value base on the budget. 0034 * 0035 * @author Cristian Oneț 0036 */ 0037 class BudgetViewProxyModelPrivate; 0038 class KMM_WIDGETS_EXPORT BudgetViewProxyModel : public AccountsProxyModel 0039 { 0040 Q_OBJECT 0041 Q_DISABLE_COPY(BudgetViewProxyModel) 0042 0043 public: 0044 explicit BudgetViewProxyModel(QObject *parent = nullptr); 0045 ~BudgetViewProxyModel() override; 0046 0047 virtual QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const override; 0048 Qt::ItemFlags flags(const QModelIndex &idx) const override; 0049 0050 void setBudget(const MyMoneyBudget& budget); 0051 void setColorScheme(AccountsModel::ColorScheme scheme, const QColor& color); 0052 0053 Q_SIGNALS: 0054 /** 0055 * Emit this signal when the balance of the budget is changed. 0056 */ 0057 void balanceChanged(const MyMoneyMoney &); 0058 0059 protected: 0060 bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override; 0061 MyMoneyMoney accountBalance(const QString &accountId) const; 0062 MyMoneyMoney accountBalance(const QModelIndex& idx) const; 0063 MyMoneyMoney accountValue(const MyMoneyAccount &account, const MyMoneyMoney &balance) const; 0064 MyMoneyMoney computeTotalValue(const QModelIndex &source_index) const; 0065 0066 private: 0067 Q_DECLARE_PRIVATE(BudgetViewProxyModel) 0068 0069 void checkBalance(); 0070 }; 0071 0072 #endif