File indexing completed on 2024-05-12 05:06:08

0001 /*
0002     SPDX-FileCopyrightText: 2017 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 #include "kequitypriceupdateconfdlg.h"
0007 
0008 #include "ui_kequitypriceupdateconfdlg.h"
0009 
0010 #include "dialogenums.h"
0011 
0012 class EquityPriceUpdateConfDlgPrivate
0013 {
0014     Q_DISABLE_COPY(EquityPriceUpdateConfDlgPrivate)
0015 
0016 public:
0017     EquityPriceUpdateConfDlgPrivate() :
0018         ui(new Ui::EquityPriceUpdateConfDlg),
0019         m_updatingPricePolicy(eDialogs::UpdatePrice::All)
0020     {
0021     }
0022 
0023     ~EquityPriceUpdateConfDlgPrivate()
0024     {
0025         delete ui;
0026     }
0027 
0028     void updatingPricePolicyChanged(const eDialogs::UpdatePrice policy, bool toggled)
0029     {
0030         if (!toggled)
0031             return;
0032 
0033         switch(policy) {
0034         case eDialogs::UpdatePrice::All:
0035             ui->m_updateMissing->setChecked(false);
0036             ui->m_updateDownloaded->setChecked(false);
0037             ui->m_updateSource->setChecked(false);
0038             ui->m_ask->setChecked(false);
0039             break;
0040         case eDialogs::UpdatePrice::Missing:
0041             ui->m_updateAll->setChecked(false);
0042             ui->m_updateDownloaded->setChecked(false);
0043             ui->m_updateSource->setChecked(false);
0044             ui->m_ask->setChecked(false);
0045             break;
0046         case eDialogs::UpdatePrice::Downloaded:
0047             ui->m_updateAll->setChecked(false);
0048             ui->m_updateMissing->setChecked(false);
0049             ui->m_updateSource->setChecked(false);
0050             ui->m_ask->setChecked(false);
0051             break;
0052         case eDialogs::UpdatePrice::SameSource:
0053             ui->m_updateAll->setChecked(false);
0054             ui->m_updateMissing->setChecked(false);
0055             ui->m_updateDownloaded->setChecked(false);
0056             ui->m_ask->setChecked(false);
0057             break;
0058         case eDialogs::UpdatePrice::Ask:
0059             ui->m_updateAll->setChecked(false);
0060             ui->m_updateDownloaded->setChecked(false);
0061             ui->m_updateSource->setChecked(false);
0062             ui->m_updateMissing->setChecked(false);
0063             break;
0064         }
0065         m_updatingPricePolicy = policy;
0066     }
0067 
0068     Ui::EquityPriceUpdateConfDlg  *ui;
0069     eDialogs::UpdatePrice          m_updatingPricePolicy;
0070 };
0071 
0072 EquityPriceUpdateConfDlg::EquityPriceUpdateConfDlg(eDialogs::UpdatePrice policy) :
0073     QDialog(nullptr),
0074     d_ptr(new EquityPriceUpdateConfDlgPrivate)
0075 {
0076     Q_D(EquityPriceUpdateConfDlg);
0077     d->ui->setupUi(this);
0078     switch(policy) {
0079     case eDialogs::UpdatePrice::All:
0080         d->ui->m_updateAll->setChecked(true);
0081         break;
0082     case eDialogs::UpdatePrice::Missing:
0083         d->ui->m_updateMissing->setChecked(true);
0084         break;
0085     case eDialogs::UpdatePrice::Downloaded:
0086         d->ui->m_updateDownloaded->setChecked(true);
0087         break;
0088     case eDialogs::UpdatePrice::SameSource:
0089         d->ui->m_updateSource->setChecked(true);
0090         break;
0091     case eDialogs::UpdatePrice::Ask:
0092         d->ui->m_ask->setChecked(true);
0093         break;
0094     }
0095 
0096     d->m_updatingPricePolicy = policy;
0097     connect(d->ui->m_updateAll, &QAbstractButton::toggled, this, &EquityPriceUpdateConfDlg::updateAllToggled);
0098     connect(d->ui->m_updateMissing, &QAbstractButton::toggled, this, &EquityPriceUpdateConfDlg::updateMissingToggled);
0099     connect(d->ui->m_updateDownloaded, &QAbstractButton::toggled, this, &EquityPriceUpdateConfDlg::updateDownloadedToggled);
0100     connect(d->ui->m_updateSource, &QAbstractButton::toggled, this, &EquityPriceUpdateConfDlg::updateSameSourceToggled);
0101     connect(d->ui->m_ask, &QAbstractButton::toggled, this, &EquityPriceUpdateConfDlg::askToggled);
0102 }
0103 
0104 EquityPriceUpdateConfDlg::~EquityPriceUpdateConfDlg()
0105 {
0106     Q_D(EquityPriceUpdateConfDlg);
0107     delete d;
0108 }
0109 
0110 void EquityPriceUpdateConfDlg::updateAllToggled(bool toggled)
0111 {
0112     Q_D(EquityPriceUpdateConfDlg);
0113     d->updatingPricePolicyChanged(eDialogs::UpdatePrice::All, toggled);
0114 }
0115 
0116 void EquityPriceUpdateConfDlg::updateMissingToggled(bool toggled)
0117 {
0118     Q_D(EquityPriceUpdateConfDlg);
0119     d->updatingPricePolicyChanged(eDialogs::UpdatePrice::Missing, toggled);
0120 }
0121 
0122 void EquityPriceUpdateConfDlg::updateDownloadedToggled(bool toggled)
0123 {
0124     Q_D(EquityPriceUpdateConfDlg);
0125     d->updatingPricePolicyChanged(eDialogs::UpdatePrice::Downloaded, toggled);
0126 }
0127 
0128 void EquityPriceUpdateConfDlg::updateSameSourceToggled(bool toggled)
0129 {
0130     Q_D(EquityPriceUpdateConfDlg);
0131     d->updatingPricePolicyChanged(eDialogs::UpdatePrice::SameSource, toggled);
0132 }
0133 
0134 void EquityPriceUpdateConfDlg::askToggled(bool toggled)
0135 {
0136     Q_D(EquityPriceUpdateConfDlg);
0137     d->updatingPricePolicyChanged(eDialogs::UpdatePrice::Ask, toggled);
0138 }
0139 
0140 eDialogs::UpdatePrice EquityPriceUpdateConfDlg::policy() const
0141 {
0142     Q_D(const EquityPriceUpdateConfDlg);
0143     return d->m_updatingPricePolicy;
0144 }