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