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