File indexing completed on 2024-05-19 05:06:53

0001 /*
0002     SPDX-FileCopyrightText: 2022 Thomas Baumgart <tbaumgart@kde.org>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 // ----------------------------------------------------------------------------
0007 // QT Includes
0008 
0009 #include <QCheckBox>
0010 #include <QList>
0011 #include <QPushButton>
0012 
0013 // ----------------------------------------------------------------------------
0014 // KDE Includes
0015 
0016 // ----------------------------------------------------------------------------
0017 // Project Includes
0018 
0019 #include "idfilter.h"
0020 #include "ktagreassigndlg.h"
0021 #include "mymoneyfile.h"
0022 #include "tagsmodel.h"
0023 
0024 #include "ui_ktagreassigndlg.h"
0025 
0026 KTagReassignDlg::KTagReassignDlg(QWidget* parent)
0027     : QDialog(parent)
0028     , ui(new Ui::KTagReassignDlg)
0029     , model(new IdFilter(this))
0030 {
0031     auto checkValidInput = [&]() {
0032         const auto idx = model->index(ui->tagCombo->currentIndex(), 0);
0033         const auto validInput = (!idx.data(eMyMoney::Model::IdRole).toString().isEmpty() || ui->removeCheckBox->isChecked());
0034         ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(validInput);
0035     };
0036 
0037     ui->setupUi(this);
0038 
0039     model->setSourceModel(MyMoneyFile::instance()->tagsModel());
0040     model->setSortLocaleAware(true);
0041     ui->tagCombo->setModel(model);
0042 
0043     connect(ui->tagCombo, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [&]() {
0044         checkValidInput();
0045     });
0046     connect(ui->removeCheckBox, &QCheckBox::toggled, this, [&]() {
0047         checkValidInput();
0048     });
0049 
0050     ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
0051 }
0052 
0053 KTagReassignDlg::~KTagReassignDlg()
0054 {
0055     delete ui;
0056 }
0057 
0058 void KTagReassignDlg::setupFilter(const QList<QString>& tagslist)
0059 {
0060     qobject_cast<IdFilter*>(model)->setFilterList(tagslist);
0061     model->sort(0);
0062     ui->tagCombo->setCurrentIndex(-1);
0063 }
0064 
0065 QString KTagReassignDlg::reassignTo() const
0066 {
0067     if (ui->removeCheckBox->isChecked())
0068         return {};
0069 
0070     const auto idx = ui->tagCombo->model()->index(ui->tagCombo->currentIndex(), 0);
0071     return idx.data(eMyMoney::Model::IdRole).toString();
0072 }