File indexing completed on 2024-05-19 05:08:24

0001 /*
0002     SPDX-FileCopyrightText: 2023 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #ifndef MULTITRANSACTIONEDITOR_H
0007 #define MULTITRANSACTIONEDITOR_H
0008 
0009 // ----------------------------------------------------------------------------
0010 // QT Includes
0011 
0012 #include <QFrame>
0013 class QWidget;
0014 
0015 // ----------------------------------------------------------------------------
0016 // Project Includes
0017 
0018 #include "mymoneymoney.h"
0019 #include "mymoneytransaction.h"
0020 #include "tabordereditor.h"
0021 #include "transactioneditorbase.h"
0022 
0023 class MyMoneySchedule;
0024 
0025 class MultiTransactionEditor : public TransactionEditorBase, TabOrderEditorInterface
0026 {
0027     Q_OBJECT
0028 
0029 public:
0030     explicit MultiTransactionEditor(QWidget* parent = nullptr, const QString& accountId = QString());
0031     virtual ~MultiTransactionEditor();
0032 
0033     /**
0034      */
0035     void loadTransaction(const QModelIndex& index) override;
0036     QStringList saveTransaction(const QStringList& selectedJournalEntries) override;
0037 
0038     void setAmountPlaceHolderText(const QAbstractItemModel* model) override;
0039 
0040     /**
0041      * Reimplemented to suppress some events in certain conditions
0042      */
0043     bool eventFilter(QObject* o, QEvent* e) override;
0044 
0045     void setShowAccountCombo(bool show) const;
0046     void setShowNumberWidget(bool show) const;
0047     void setShowButtons(bool show) const;
0048     void setAccountId(const QString& accountId);
0049 
0050     QDate postDate() const;
0051 
0052     /// overridden for internal reasons
0053     void setReadOnly(bool readOnly) override;
0054 
0055     // Implement TabOrderEditorInterface methods
0056     void setupUi(QWidget* parent) override;
0057     void storeTabOrder(const QStringList& tabOrder) override;
0058 
0059     /**
0060      * @copydoc TransactionEditorBase::setSelectedJournalEntryIds
0061      */
0062     virtual bool setSelectedJournalEntryIds(const QStringList& selectedJournalEntryIds) override;
0063 
0064     /**
0065      * @copydoc TransactionEditorBase::errorMessage
0066      */
0067     virtual QString errorMessage() const override;
0068 
0069 protected:
0070     bool isTransactionDataValid() const override;
0071 
0072 public Q_SLOTS:
0073     void slotSettingsChanged() override;
0074 
0075 Q_SIGNALS:
0076     void postDateChanged(const QDate& date);
0077 
0078 private:
0079     class Private;
0080     QScopedPointer<Private> const d;
0081 };
0082 
0083 #endif // MULTITRANSACTIONEDITOR_H