File indexing completed on 2024-05-19 16:16:59

0001 /*
0002     SPDX-FileCopyrightText: 2006-2018 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-FileCopyrightText: 2017-2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef TRANSACTIONFORM_H
0008 #define TRANSACTIONFORM_H
0009 
0010 // ----------------------------------------------------------------------------
0011 // QT Includes
0012 
0013 #include <QStyleOptionViewItem>
0014 
0015 // ----------------------------------------------------------------------------
0016 // KDE Includes
0017 
0018 // ----------------------------------------------------------------------------
0019 // Project Includes
0020 
0021 #include "transactioneditorcontainer.h"
0022 
0023 class MyMoneyAccount;
0024 
0025 namespace KMyMoneyRegister {
0026 class Transaction;
0027 }
0028 namespace eWidgets {
0029 namespace eRegister {
0030 enum class Action;
0031 }
0032 namespace eTransactionForm {
0033 enum class Column;
0034 }
0035 }
0036 namespace KMyMoneyTransactionForm
0037 {
0038 class TabBar;
0039 /**
0040 * @author Thomas Baumgart
0041 */
0042 class TransactionFormPrivate;
0043 class TransactionForm : public TransactionEditorContainer
0044 {
0045     Q_OBJECT
0046     Q_DISABLE_COPY(TransactionForm)
0047 
0048 public:
0049     explicit TransactionForm(QWidget* parent = nullptr);
0050     ~TransactionForm();
0051 
0052     /**
0053     * Override the QTable member function to avoid display of focus
0054     */
0055     void paintFocus(QPainter* /*p*/, const QRect& /*cr*/);
0056 
0057     void adjustColumn(eWidgets::eTransactionForm::Column col);
0058     void clear();
0059 
0060     void paintCell(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index);
0061 
0062     void arrangeEditWidgets(QMap<QString, QWidget*>& editWidgets, KMyMoneyRegister::Transaction* t)  override;
0063     void removeEditWidgets(QMap<QString, QWidget*>& editWidgets) override;
0064     void tabOrder(QWidgetList& tabOrderWidgets, KMyMoneyRegister::Transaction* t) const override;
0065 
0066     /**
0067     * reimplemented to prevent normal cell selection behavior
0068     */
0069     void setCurrentCell(int, int);
0070 
0071     TabBar* getTabBar(QWidget* parent = nullptr);
0072 
0073     void setupForm(const MyMoneyAccount& acc);
0074 
0075     void enableTabBar(bool b);
0076 
0077 protected:
0078 
0079     /**
0080     * reimplemented to prevent normal mouse press behavior
0081     */
0082     void contentsMousePressEvent(QMouseEvent* ev);
0083 
0084     /**
0085     * reimplemented to prevent normal mouse move behavior
0086     */
0087     void contentsMouseMoveEvent(QMouseEvent* ev);
0088 
0089     /**
0090     * reimplemented to prevent normal mouse release behavior
0091     */
0092     void contentsMouseReleaseEvent(QMouseEvent* ev);
0093 
0094     /**
0095     * reimplemented to prevent normal mouse double click behavior
0096     */
0097     void contentsMouseDoubleClickEvent(QMouseEvent* ev);
0098 
0099     /**
0100     * reimplemented to prevent normal keyboard behavior
0101     */
0102     void keyPressEvent(QKeyEvent* ev) override;
0103 
0104     /**
0105     * Override logic and use standard QFrame behaviour
0106     */
0107     bool focusNextPrevChild(bool next) override;
0108 
0109 public Q_SLOTS:
0110     void slotSetTransaction(KMyMoneyRegister::Transaction* item);
0111     void resize(int col);
0112 
0113 protected Q_SLOTS:
0114     /**
0115     * Helper method to convert @a int into @a KMyMoneyRegister::Action
0116     */
0117     void slotActionSelected(int);
0118 
0119 Q_SIGNALS:
0120     /**
0121     * This signal is emitted when a user selects a tab. @a id
0122     * contains the tab's id (e.g. KMyMoneyRegister::ActionDeposit)
0123     */
0124     void newTransaction(eWidgets::eRegister::Action id);
0125 
0126 private:
0127     TransactionFormPrivate * const d_ptr;
0128     Q_DECLARE_PRIVATE(TransactionForm)
0129 };
0130 } // namespace
0131 
0132 #endif