File indexing completed on 2024-05-12 16:42:03

0001 /*
0002     SPDX-FileCopyrightText: 2017 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0003     SPDX-FileCopyrightText: 2020 Thomas Baumgart <tbaumgart@kde.org>
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "kavailablecurrencydlg.h"
0008 
0009 // ----------------------------------------------------------------------------
0010 // QT Includes
0011 
0012 #include <QPixmap>
0013 #include <QBitmap>
0014 #include <QList>
0015 #include <QTreeWidget>
0016 #include <QPushButton>
0017 
0018 // ----------------------------------------------------------------------------
0019 // KDE Includes
0020 
0021 #include <KTreeWidgetSearchLineWidget>
0022 
0023 // ----------------------------------------------------------------------------
0024 // Project Includes
0025 
0026 #include "mymoneyfile.h"
0027 #include <ui_kavailablecurrencydlg.h>
0028 #include "mymoneysecurity.h"
0029 
0030 KAvailableCurrencyDlg::KAvailableCurrencyDlg(const QList<QString>& usedCurrencies, QWidget* parent)
0031     : ui(new Ui::KAvailableCurrencyDlg)
0032 {
0033     Q_UNUSED(parent);
0034     ui->setupUi(this);
0035     m_searchWidget = new KTreeWidgetSearchLineWidget(this, ui->m_currencyList);
0036     m_searchWidget->setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed));
0037     ui->verticalLayout->insertWidget(0, m_searchWidget);
0038     connect(ui->m_currencyList, &QTreeWidget::itemSelectionChanged, this, &KAvailableCurrencyDlg::slotItemSelectionChanged);
0039 
0040     slotLoadCurrencies(usedCurrencies);
0041 
0042     //resize the column widths
0043     for (auto i = 0; i < ui->m_currencyList->columnCount(); ++i)
0044         ui->m_currencyList->resizeColumnToContents(i);
0045 
0046     m_searchWidget->setFocus();
0047 }
0048 
0049 KAvailableCurrencyDlg::~KAvailableCurrencyDlg()
0050 {
0051     delete ui;
0052 }
0053 
0054 void KAvailableCurrencyDlg::slotLoadCurrencies(const QList<QString>& usedCurrencies)
0055 {
0056     QList<MyMoneySecurity> list = MyMoneyFile::instance()->availableCurrencyList();
0057 
0058     // construct a transparent 16x16 pixmap
0059     QPixmap empty(16, 16);
0060     QBitmap mask(16, 16);
0061     mask.clear();
0062     empty.setMask(mask);
0063 
0064     ui->m_currencyList->clear();
0065     // remove the used currencies from the list
0066     for (const auto& currency : list) {
0067         if (!usedCurrencies.contains(currency.id())) {
0068             const auto item = new QTreeWidgetItem(ui->m_currencyList);
0069             item->setText(0, currency.name());
0070             item->setData(0, Qt::UserRole, QVariant::fromValue(currency));
0071             item->setData(0, Qt::DecorationRole, empty);
0072             item->setFlags(item->flags() | Qt::ItemIsEditable);
0073             item->setText(1, currency.id());
0074             item->setText(2, currency.tradingSymbol());
0075         }
0076     }
0077 
0078     ui->m_currencyList->sortItems(0, Qt::AscendingOrder);
0079 }
0080 
0081 void KAvailableCurrencyDlg::slotItemSelectionChanged()
0082 {
0083     ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!ui->m_currencyList->selectedItems().isEmpty());
0084 }
0085 
0086 QList<QTreeWidgetItem*> KAvailableCurrencyDlg::selectedItems() const
0087 {
0088     return ui->m_currencyList->selectedItems();
0089 }