mirror of
https://github.com/wownero/wowlet.git
synced 2026-10-22 01:28:43 +02:00
101 lines
3.0 KiB
C++
101 lines
3.0 KiB
C++
// SPDX-License-Identifier: BSD-3-Clause
|
|
// Copyright (c) 2020-2021, The Monero Project.
|
|
|
|
#include "CalcConfigDialog.h"
|
|
#include "ui_CalcConfigDialog.h"
|
|
|
|
#include "AppData.h"
|
|
#include "utils/config.h"
|
|
|
|
CalcConfigDialog::CalcConfigDialog(QWidget *parent)
|
|
: QDialog(parent)
|
|
, ui(new Ui::CalcConfigDialog)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
this->fillListWidgets();
|
|
|
|
connect(ui->btn_selectAll, &QPushButton::clicked, this, &CalcConfigDialog::selectAll);
|
|
connect(ui->btn_deselectAll, &QPushButton::clicked, this, &CalcConfigDialog::deselectAll);
|
|
|
|
connect(ui->buttonBox, &QDialogButtonBox::accepted, [this]{
|
|
config()->set(Config::fiatSymbols, this->checkedFiat());
|
|
config()->set(Config::cryptoSymbols, this->checkedCrypto());
|
|
this->accept();
|
|
});
|
|
|
|
this->adjustSize();
|
|
}
|
|
|
|
QStringList CalcConfigDialog::checkedFiat() {
|
|
return this->getChecked(ui->list_fiat);
|
|
}
|
|
|
|
QStringList CalcConfigDialog::checkedCrypto() {
|
|
return this->getChecked(ui->list_crypto);
|
|
}
|
|
|
|
void CalcConfigDialog::selectAll() {
|
|
this->setCheckState(this->getVisibleListWidget(), Qt::Checked);
|
|
}
|
|
|
|
void CalcConfigDialog::deselectAll() {
|
|
this->setCheckState(this->getVisibleListWidget(), Qt::Unchecked);
|
|
}
|
|
|
|
void CalcConfigDialog::setCheckState(QListWidget *widget, Qt::CheckState checkState) {
|
|
QListWidgetItem *item;
|
|
for (int i=0; i < widget->count(); i++) {
|
|
item = widget->item(i);
|
|
item->setCheckState(checkState);
|
|
}
|
|
}
|
|
|
|
QStringList CalcConfigDialog::getChecked(QListWidget *widget) {
|
|
QStringList checked;
|
|
QListWidgetItem *item;
|
|
for (int i=0; i < widget->count(); i++) {
|
|
item = widget->item(i);
|
|
if (item->checkState() == Qt::Checked) {
|
|
checked.append(item->text());
|
|
}
|
|
}
|
|
return checked;
|
|
}
|
|
|
|
QListWidget* CalcConfigDialog::getVisibleListWidget() {
|
|
if (ui->tabWidget->currentIndex() == 0) {
|
|
return ui->list_fiat;
|
|
} else {
|
|
return ui->list_crypto;
|
|
}
|
|
}
|
|
|
|
void CalcConfigDialog::fillListWidgets() {
|
|
QStringList cryptoCurrencies = appData()->prices.markets.keys();
|
|
QStringList fiatCurrencies = appData()->prices.rates.keys();
|
|
|
|
QStringList checkedCryptoCurrencies = config()->get(Config::cryptoSymbols).toStringList();
|
|
QStringList checkedFiatCurrencies = config()->get(Config::fiatSymbols).toStringList();
|
|
|
|
ui->list_crypto->addItems(cryptoCurrencies);
|
|
ui->list_fiat->addItems(fiatCurrencies);
|
|
|
|
auto setChecked = [](QListWidget *widget, const QStringList &checked){
|
|
QListWidgetItem *item;
|
|
for (int i=0; i < widget->count(); i++) {
|
|
item = widget->item(i);
|
|
item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
|
|
if (checked.contains(item->text())) {
|
|
item->setCheckState(Qt::Checked);
|
|
} else {
|
|
item->setCheckState(Qt::Unchecked);
|
|
}
|
|
}
|
|
};
|
|
|
|
setChecked(ui->list_crypto, checkedCryptoCurrencies);
|
|
setChecked(ui->list_fiat, checkedFiatCurrencies);
|
|
}
|
|
|
|
CalcConfigDialog::~CalcConfigDialog() = default; |