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 }