File indexing completed on 2024-05-19 05:08:28
0001 /* 0002 SPDX-FileCopyrightText: 2015-2020 Thomas Baumgart <tbaumgart@kde.org> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #ifndef SPLITDIALOG_H 0007 #define SPLITDIALOG_H 0008 0009 // ---------------------------------------------------------------------------- 0010 // QT Includes 0011 0012 #include <QDialog> 0013 #include <QScopedPointer> 0014 0015 // ---------------------------------------------------------------------------- 0016 // KDE Includes 0017 0018 // ---------------------------------------------------------------------------- 0019 // Project Includes 0020 0021 #include "mymoneymoney.h" 0022 0023 class MyMoneyAccount; 0024 class MyMoneySecurity; 0025 class SplitModel; 0026 0027 /** 0028 * This dialog allows the user to modify the splits of a transaction. 0029 * The splits are passed in form of a SplitModel via setModel(). The 0030 * total amount of the transaction is passed as @a mainAmount. If 0031 * @a mainAmount equals to MyMoneyMoney::autoCalc then the total 0032 * will automatically be adjusted. 0033 */ 0034 class SplitDialog : public QDialog 0035 { 0036 Q_OBJECT 0037 public: 0038 explicit SplitDialog(const MyMoneySecurity& commodity, 0039 const MyMoneyMoney& mainAmount, 0040 int fraction, 0041 const MyMoneyMoney& inversionFactor, 0042 QWidget* parent, 0043 Qt::WindowFlags f = {}); 0044 virtual ~SplitDialog(); 0045 0046 void setModel(SplitModel* model); 0047 void setAccountId(const QString& id); 0048 void setTransactionPayeeId(const QString& id); 0049 void setReadOnly(bool readOnly); 0050 0051 /** 0052 * Returns the amount for the transaction. 0053 */ 0054 MyMoneyMoney transactionAmount() const; 0055 0056 public Q_SLOTS: 0057 void accept() final override; 0058 int exec() final override; 0059 0060 private Q_SLOTS: 0061 void adjustSummary(); 0062 0063 void disableButtons(); 0064 void enableButtons(); 0065 0066 void newSplit(); 0067 0068 protected Q_SLOTS: 0069 void deleteSelectedSplits(); 0070 void deleteAllSplits(); 0071 void deleteZeroSplits(); 0072 void mergeSplits(); 0073 void selectionChanged(); 0074 void updateButtonState(); 0075 void adjustUnassigned(); 0076 0077 protected: 0078 void resizeEvent(QResizeEvent* ev) final override; 0079 void adjustSummaryWidth(); 0080 // QBrush m_unassigned_over; 0081 // QBrush m_unassigned_under; 0082 QBrush m_unassigned_normal; 0083 QBrush m_unassigned_error; 0084 0085 private: 0086 class Private; 0087 QScopedPointer<Private> d; 0088 }; 0089 #endif // SPLITDIALOG_H