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

0001 /*
0002     SPDX-FileCopyrightText: 2000-2002 Michael Edwardes <mte@users.sourceforge.net>
0003     SPDX-FileCopyrightText: 2000-2002 Javier Campos Morales <javi_c@users.sourceforge.net>
0004     SPDX-FileCopyrightText: 2000-2002 Felix Rodriguez <frodriguez@users.sourceforge.net>
0005     SPDX-FileCopyrightText: 2000-2002 John C <thetacoturtle@users.sourceforge.net>
0006     SPDX-FileCopyrightText: 2000-2002 Thomas Baumgart <ipwizard@users.sourceforge.net>
0007     SPDX-FileCopyrightText: 2000-2002 Kevin Tambascio <ktambascio@users.sourceforge.net>
0008     SPDX-FileCopyrightText: 2017 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0009     SPDX-License-Identifier: GPL-2.0-or-later
0010 */
0011 
0012 #ifndef KCATEGORIESVIEW_P_H
0013 #define KCATEGORIESVIEW_P_H
0014 
0015 #include "kcategoriesview.h"
0016 
0017 // ----------------------------------------------------------------------------
0018 // QT Includes
0019 
0020 // ----------------------------------------------------------------------------
0021 // KDE Includes
0022 
0023 // ----------------------------------------------------------------------------
0024 // Project Includes
0025 
0026 #include "ui_kcategoriesview.h"
0027 #include "kmymoneyviewbase_p.h"
0028 #include "accountsproxymodel.h"
0029 #include "mymoneyaccount.h"
0030 #include "icons.h"
0031 #include "columnselector.h"
0032 
0033 using namespace Icons;
0034 
0035 class KCategoriesViewPrivate : public KMyMoneyViewBasePrivate
0036 {
0037     Q_DECLARE_PUBLIC(KCategoriesView)
0038 
0039 public:
0040     explicit KCategoriesViewPrivate(KCategoriesView *qq)
0041         : KMyMoneyViewBasePrivate(qq)
0042         , ui(new Ui::KCategoriesView)
0043         , m_haveUnusedCategories(false)
0044         , m_proxyModel(nullptr)
0045     {
0046     }
0047 
0048     ~KCategoriesViewPrivate()
0049     {
0050         delete ui;
0051     }
0052 
0053     void init()
0054     {
0055         Q_Q(KCategoriesView);
0056         ui->setupUi(q);
0057 
0058         // setup icons for collapse and expand button
0059         ui->m_collapseButton->setIcon(Icons::get(Icon::ListCollapse));
0060         ui->m_expandButton->setIcon(Icons::get(Icon::ListExpand));
0061 
0062         // setup filter
0063         m_proxyModel = ui->m_accountTree->proxyModel();
0064         q->connect(ui->m_searchWidget, &QLineEdit::textChanged, m_proxyModel, &QSortFilterProxyModel::setFilterFixedString);
0065 
0066         auto columnSelector = new ColumnSelector(ui->m_accountTree, q->metaObject()->className());
0067         columnSelector->setAlwaysVisible(QVector<int>({ AccountsModel::Column::AccountName }));
0068         columnSelector->setAlwaysHidden(QVector<int>({
0069             AccountsModel::Column::PostedValue,
0070             AccountsModel::Column::Iban,
0071             AccountsModel::Column::Bic,
0072             AccountsModel::Column::BankCode,
0073             AccountsModel::Column::Number,
0074             AccountsModel::Column::HasOnlineMapping,
0075         }));
0076 
0077         ui->m_accountTree->setModel(MyMoneyFile::instance()->accountsModel());
0078         m_proxyModel->addAccountGroup(AccountsProxyModel::incomeExpense());
0079         m_proxyModel->setFilterComboBox(ui->m_filterBox);
0080 
0081         columnSelector->setModel(m_proxyModel);
0082         q->slotSettingsChanged();
0083 
0084         q->connect(ui->m_accountTree, &KMyMoneyAccountTreeView::requestCustomContextMenu, q, &KCategoriesView::requestCustomContextMenu);
0085         q->connect(ui->m_accountTree, &KMyMoneyAccountTreeView::requestSelectionChange, q, &KCategoriesView::requestSelectionChange);
0086         q->connect(ui->m_accountTree, &KMyMoneyAccountTreeView::requestActionTrigger, q, &KCategoriesView::requestActionTrigger);
0087 
0088         m_focusWidget = ui->m_accountTree;
0089     }
0090 
0091     Ui::KCategoriesView   *ui;
0092     bool                  m_haveUnusedCategories;
0093     MyMoneyAccount        m_currentCategory;
0094     AccountsProxyModel*   m_proxyModel;
0095 };
0096 
0097 #endif