summaryrefslogtreecommitdiffstats
path: root/kmymoney2/widgets/kmymoneycurrencyselector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kmymoney2/widgets/kmymoneycurrencyselector.cpp')
-rw-r--r--kmymoney2/widgets/kmymoneycurrencyselector.cpp166
1 files changed, 166 insertions, 0 deletions
diff --git a/kmymoney2/widgets/kmymoneycurrencyselector.cpp b/kmymoney2/widgets/kmymoneycurrencyselector.cpp
new file mode 100644
index 0000000..009dc2b
--- /dev/null
+++ b/kmymoney2/widgets/kmymoneycurrencyselector.cpp
@@ -0,0 +1,166 @@
+/***************************************************************************
+ kmymoneycurrencyselector.cpp - description
+ -------------------
+ begin : Tue Apr 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 <qpixmap.h>
+#include <qbitmap.h>
+
+// ----------------------------------------------------------------------------
+// KDE Includes
+
+#include <kstandarddirs.h>
+
+// ----------------------------------------------------------------------------
+// Project Includes
+
+#include "kmymoneycurrencyselector.h"
+
+KMyMoneySecuritySelector::KMyMoneySecuritySelector(QWidget *parent, const char *name ) :
+ KComboBox(parent, name),
+ m_displayItem(FullName),
+ m_displayOnly(false),
+ m_displayType(TypeAll)
+{
+ // update(QString());
+}
+
+KMyMoneySecuritySelector::KMyMoneySecuritySelector(displayTypeE type, QWidget *parent, const char *name ) :
+ KComboBox(parent,name),
+ m_displayItem(FullName),
+ m_displayOnly(false),
+ m_displayType(type)
+{
+ // update(QString());
+}
+
+KMyMoneySecuritySelector::~KMyMoneySecuritySelector()
+{
+}
+
+void KMyMoneySecuritySelector::selectDisplayItem(KMyMoneySecuritySelector::displayItemE item)
+{
+ m_displayItem = item;
+ update(QString());
+}
+
+void KMyMoneySecuritySelector::update(const QString& id)
+{
+ MyMoneySecurity curr = MyMoneyFile::instance()->baseCurrency();
+ QString baseCurrency = curr.id();
+
+ if(!id.isEmpty())
+ curr = m_currency;
+
+ this->clear();
+ m_list.clear();
+ if(m_displayType & TypeCurrencies)
+ m_list += MyMoneyFile::instance()->currencyList();
+ if(m_displayType & TypeSecurities)
+ m_list += MyMoneyFile::instance()->securityList();
+
+ // sort
+ qHeapSort(m_list);
+
+ QValueList<MyMoneySecurity>::ConstIterator it;
+
+ // construct a transparent 16x16 pixmap
+ QPixmap empty(16, 16);
+ empty.setMask(QBitmap(16, 16, true));
+
+ int itemId = 0;
+ int m_selectedItemId = 0;
+ for(it = m_list.begin(); it != m_list.end(); ++it) {
+ QString display;
+ switch(m_displayItem) {
+ default:
+ case FullName:
+ if((*it).isCurrency()) {
+ display = QString("%2 (%1)").arg((*it).id()).arg((*it).name());
+ } else
+ display = QString("%2 (%1)").arg((*it).tradingSymbol()).arg((*it).name());
+ break;
+ break;
+
+ case Symbol:
+ if((*it).isCurrency())
+ display = (*it).id();
+ else
+ display = (*it).tradingSymbol();
+ break;
+ }
+ if((*it).id() == baseCurrency) {
+ insertItem(QPixmap( locate("icon","hicolor/16x16/apps/kmymoney2.png")),
+ display, itemId);
+ } else {
+ insertItem(empty, display, itemId);
+ }
+
+ if(curr.id() == (*it).id()) {
+ m_selectedItemId = itemId;
+ m_currency = (*it);
+ }
+
+ itemId++;
+ }
+ setCurrentItem(m_selectedItemId);
+}
+
+void KMyMoneySecuritySelector::setDisplayOnly(const bool disp)
+{
+ if(disp == m_displayOnly)
+ return;
+
+ switch(disp) {
+ case true:
+ connect(this, SIGNAL(activated(int)), this, SLOT(slotSetInitialCurrency()));
+ break;
+ case false:
+ disconnect(this, SIGNAL(activated(int)), this, SLOT(slotSetInitialCurrency()));
+ break;
+ }
+ m_displayOnly = disp;
+}
+
+void KMyMoneySecuritySelector::slotSetInitialSecurity(void)
+{
+ setCurrentItem(m_selectedItemId);
+}
+
+const MyMoneySecurity& KMyMoneySecuritySelector::security(void) const
+{
+ return m_list[currentItem()];
+}
+
+void KMyMoneySecuritySelector::setSecurity(const MyMoneySecurity& currency)
+{
+ m_currency = currency;
+ update(QString("x"));
+}
+
+KMyMoneyCurrencySelector::KMyMoneyCurrencySelector(QWidget *parent, const char *name ) :
+ KMyMoneySecuritySelector(TypeCurrencies, parent, name)
+{
+}
+
+#include "kmymoneycurrencyselector.moc"