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 }