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

0001 /*
0002     SPDX-FileCopyrightText: 2002 Michael Edwardes <mte@users.sourceforge.net>
0003     SPDX-FileCopyrightText: 2002-2004 Kevin Tambascio <ktambascio@users.sourceforge.net>
0004     SPDX-FileCopyrightText: 2004-2011 Thomas Baumgart <tbaumgart@kde.org>
0005     SPDX-FileCopyrightText: 2017-2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "knewequityentrydlg.h"
0010 
0011 // ----------------------------------------------------------------------------
0012 // QT Includes
0013 
0014 #include <QPushButton>
0015 
0016 // ----------------------------------------------------------------------------
0017 // KDE Includes
0018 
0019 // ----------------------------------------------------------------------------
0020 // Project Includes
0021 
0022 #include "ui_knewequityentrydlg.h"
0023 
0024 #include "mymoneymoney.h"
0025 
0026 class KNewEquityEntryDlgPrivate
0027 {
0028     Q_DISABLE_COPY(KNewEquityEntryDlgPrivate)
0029 
0030 public:
0031     KNewEquityEntryDlgPrivate() :
0032         ui(new Ui::KNewEquityEntryDlg),
0033         m_fraction(2)
0034     {
0035     }
0036 
0037     ~KNewEquityEntryDlgPrivate()
0038     {
0039         delete ui;
0040     }
0041 
0042     Ui::KNewEquityEntryDlg  *ui;
0043     QString                  m_strSymbolName;
0044     QString                  m_strName;
0045     int                      m_fraction;
0046 };
0047 
0048 KNewEquityEntryDlg::KNewEquityEntryDlg(QWidget *parent) :
0049     QDialog(parent),
0050     d_ptr(new KNewEquityEntryDlgPrivate)
0051 {
0052     Q_D(KNewEquityEntryDlg);
0053     d->m_fraction = 0;
0054     d->ui->setupUi(this);
0055     setModal(true);
0056     d->ui->edtFraction->setCalculatorButtonVisible(true);
0057     d->ui->edtFraction->setPrecision(0);
0058     d->ui->edtFraction->setText(QLatin1String("100"));
0059 
0060     connect(d->ui->buttonBox->button(QDialogButtonBox::Ok), &QAbstractButton::clicked, this, &KNewEquityEntryDlg::onOKClicked);
0061 
0062     connect(d->ui->edtFraction, &AmountEdit::textChanged, this, &KNewEquityEntryDlg::slotDataChanged);
0063     connect(d->ui->edtMarketSymbol, &QLineEdit::textChanged, this, &KNewEquityEntryDlg::slotDataChanged);
0064     connect(d->ui->edtEquityName, &QLineEdit::textChanged, this, &KNewEquityEntryDlg::slotDataChanged);
0065 
0066     // add icons to buttons
0067 
0068     slotDataChanged();
0069 
0070     d->ui->edtEquityName->setFocus();
0071 }
0072 
0073 KNewEquityEntryDlg::~KNewEquityEntryDlg()
0074 {
0075     Q_D(KNewEquityEntryDlg);
0076     delete d;
0077 }
0078 
0079 /** No descriptions */
0080 void KNewEquityEntryDlg::onOKClicked()
0081 {
0082     Q_D(KNewEquityEntryDlg);
0083     d->m_strSymbolName = d->ui->edtMarketSymbol->text();
0084     d->m_strName = d->ui->edtEquityName->text();
0085     d->m_fraction = d->ui->edtFraction->value().abs().formatMoney("", 0, false).toUInt();
0086     accept();
0087 }
0088 
0089 void KNewEquityEntryDlg::setSymbolName(const QString& str)
0090 {
0091     Q_D(KNewEquityEntryDlg);
0092     d->m_strSymbolName = str;
0093     d->ui->edtMarketSymbol->setText(d->m_strSymbolName);
0094 }
0095 
0096 QString KNewEquityEntryDlg::symbolName() const
0097 {
0098     Q_D(const KNewEquityEntryDlg);
0099     return d->m_strSymbolName;
0100 }
0101 
0102 void KNewEquityEntryDlg::setName(const QString& str)
0103 {
0104     Q_D(KNewEquityEntryDlg);
0105     d->m_strName = str;
0106     d->ui->edtEquityName->setText(d->m_strName);
0107 }
0108 
0109 QString KNewEquityEntryDlg::name() const
0110 {
0111     Q_D(const KNewEquityEntryDlg);
0112     return d->m_strName;
0113 }
0114 
0115 int KNewEquityEntryDlg::fraction() const
0116 {
0117     Q_D(const KNewEquityEntryDlg);
0118     return d->m_fraction;
0119 }
0120 
0121 void KNewEquityEntryDlg::slotDataChanged()
0122 {
0123     Q_D(KNewEquityEntryDlg);
0124     auto okEnabled = true;
0125 
0126     if (!d->ui->edtFraction->value().isPositive() //
0127             || d->ui->edtMarketSymbol->text().isEmpty() //
0128             || d->ui->edtEquityName->text().isEmpty()) //
0129         okEnabled = false;
0130 
0131     d->ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(okEnabled);
0132 }