diff options
Diffstat (limited to 'kmymoney2/dialogs/keditequityentrydlg.cpp')
-rw-r--r-- | kmymoney2/dialogs/keditequityentrydlg.cpp | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/kmymoney2/dialogs/keditequityentrydlg.cpp b/kmymoney2/dialogs/keditequityentrydlg.cpp new file mode 100644 index 0000000..854ce9a --- /dev/null +++ b/kmymoney2/dialogs/keditequityentrydlg.cpp @@ -0,0 +1,138 @@ +/*************************************************************************** + keditequityentrydlg.cpp - description + ------------------- + begin : Sat Mar 6 2004 + copyright : (C) 2000-2004 by Michael Edwardes + email : mte@users.sourceforge.net + Javier Campos Morales <javi_c@users.sourceforge.net> + Felix Rodriguez <frodriguez@users.sourceforge.net> + John C <thetacoturtle@users.sourceforge.net> + Thomas Baumgart <ipwizard@users.sourceforge.net> + Kevin Tambascio <ktambascio@users.sourceforge.net> + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +// ---------------------------------------------------------------------------- +// QT Includes +#include <qtimer.h> + +// ---------------------------------------------------------------------------- +// KDE Includes + +#include <klocale.h> +#include <kglobal.h> +#include <kpushbutton.h> +#include <kiconloader.h> +#include <kcombobox.h> + +// ---------------------------------------------------------------------------- +// Project Includes + +#include "keditequityentrydlg.h" +#include "kupdatestockpricedlg.h" +#include "../widgets/kmymoneypriceview.h" + +KEditEquityEntryDlg::KEditEquityEntryDlg(const MyMoneySecurity& selectedSecurity, QWidget *parent, const char *name) + : KEditEquityEntryDecl(parent, name, true) +{ + m_selectedSecurity = selectedSecurity; + + connect(btnOK, SIGNAL(clicked()), this, SLOT(slotOKClicked())); + connect(btnCancel, SIGNAL(clicked()), this, SLOT(reject())); + connect(edtEquityName, SIGNAL(textChanged(const QString &)), this, SLOT(slotDataChanged())); + connect(edtMarketSymbol, SIGNAL(textChanged(const QString &)), this, SLOT(slotDataChanged())); + connect(edtFraction, SIGNAL(textChanged(const QString&)), this, SLOT(slotDataChanged())); + connect(btnAddEntry, SIGNAL(clicked()), kpvPriceHistory, SLOT(slotAddPrice())); + connect(btnEditEntry, SIGNAL(clicked()), kpvPriceHistory, SLOT(slotEditPrice())); + connect(btnRemoveEntry, SIGNAL(clicked()), kpvPriceHistory, SLOT(slotDeletePrice())); + connect(kpvPriceHistory, SIGNAL(selectionChanged(QListViewItem*)), this, SLOT(slotSelectionChanged(QListViewItem*))); + + //fill in the fields with what we know. + edtEquityName->setText(m_selectedSecurity.name()); + edtMarketSymbol->setText(m_selectedSecurity.tradingSymbol()); + edtFraction->setPrecision(0); + edtFraction->setCalculatorButtonVisible(false); + edtFraction->loadText(QString::number(m_selectedSecurity.smallestAccountFraction())); + cmbInvestmentType->setCurrentItem((int)m_selectedSecurity.securityType()); + // FIXME PRICE + // kpvPriceHistory->setHistory(m_selectedSecurity.priceHistory()); + + // add icons to buttons + KIconLoader *il = KGlobal::iconLoader(); + btnOK->setGuiItem(KStdGuiItem::ok()); + btnCancel->setGuiItem(KStdGuiItem::cancel()); + btnRemoveEntry->setGuiItem(KStdGuiItem::remove()); + btnAddEntry->setGuiItem(KStdGuiItem::add()); + + KGuiItem editButtenItem( i18n( "&Edit" ), + QIconSet(il->loadIcon("edit", KIcon::Small, KIcon::SizeSmall)), + i18n("Modify the selected entry"), + i18n("Change the price information of the selected entry.")); + btnEditEntry->setGuiItem(editButtenItem); + + slotSelectionChanged(0); // make sure buttons are disabled in the beginning + slotDataChanged(); + m_changes = false; + + // force a resize to optimize the layout of all widgets + resize(width()-1, height()-1); + QTimer::singleShot(10, this, SLOT(slotTimerDone())); +} + +KEditEquityEntryDlg::~KEditEquityEntryDlg() +{ +} + +void KEditEquityEntryDlg::slotTimerDone(void) +{ + // the resize operation does the trick to adjust + // all widgets in the view to the size they should + // have and show up correctly. Don't ask me, why + // this is, but it cured the problem (ipwizard). + resize(width()+1, height()+1); +} + +/** No descriptions */ +void KEditEquityEntryDlg::slotOKClicked() +{ + if(m_changes /* || kpvPriceHistory->dirty() */) + { + m_selectedSecurity.setName(edtEquityName->text()); + m_selectedSecurity.setTradingSymbol(edtMarketSymbol->text()); + m_selectedSecurity.setSmallestAccountFraction(edtFraction->value().abs()); + // FIXME PRICE + // m_selectedSecurity.setPriceHistory(kpvPriceHistory->history()); + } + + accept(); +} + +void KEditEquityEntryDlg::slotSelectionChanged(QListViewItem* item) +{ + btnEditEntry->setEnabled(item != 0); + btnRemoveEntry->setEnabled(item != 0); +} + +void KEditEquityEntryDlg::slotDataChanged(void) +{ + bool okEnabled = true; + + if(!edtFraction->value().isPositive() + || edtMarketSymbol->text().isEmpty() + || edtEquityName->text().isEmpty()) + okEnabled = false; + + btnOK->setEnabled(okEnabled); + + m_changes = true; +} + +#include "keditequityentrydlg.moc" |