summaryrefslogtreecommitdiffstats
path: root/kmymoney2/dialogs/settings/ksettingsonlinequotes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kmymoney2/dialogs/settings/ksettingsonlinequotes.cpp')
-rw-r--r--kmymoney2/dialogs/settings/ksettingsonlinequotes.cpp219
1 files changed, 219 insertions, 0 deletions
diff --git a/kmymoney2/dialogs/settings/ksettingsonlinequotes.cpp b/kmymoney2/dialogs/settings/ksettingsonlinequotes.cpp
new file mode 100644
index 0000000..db4dc1e
--- /dev/null
+++ b/kmymoney2/dialogs/settings/ksettingsonlinequotes.cpp
@@ -0,0 +1,219 @@
+/***************************************************************************
+ kmymoneyonlinequoteconfig.cpp - description
+ -------------------
+ begin : Thu Dec 30 2004
+ copyright : (C) 2004 by Thomas Baumgart
+ email : Thomas Baumgart <ipwizard@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 <qregexp.h>
+#include <qcheckbox.h>
+
+// ----------------------------------------------------------------------------
+// KDE Includes
+
+#include <kconfig.h>
+#include <kglobal.h>
+#include <klocale.h>
+#include <klistview.h>
+#include <kiconloader.h>
+#include <kguiitem.h>
+#include <kpushbutton.h>
+#include <klineedit.h>
+
+// ----------------------------------------------------------------------------
+// Project Includes
+
+#include "ksettingsonlinequotes.h"
+#include "kmymoney2/converter/webpricequote.h"
+
+KSettingsOnlineQuotes::KSettingsOnlineQuotes(QWidget *parent, const char *name )
+ : KSettingsOnlineQuotesDecl(parent, name)
+{
+ QStringList groups = WebPriceQuote::quoteSources();
+
+ loadList(true /*updateResetList*/);
+
+ m_updateButton->setEnabled(false);
+
+ KIconLoader* il = KGlobal::iconLoader();
+ KGuiItem updateButtenItem( i18n("&Update" ),
+ QIconSet(il->loadIcon("button_ok", KIcon::Small, KIcon::SizeSmall)),
+ i18n("Accepts the entered data and stores it"),
+ i18n("Use this to accept the modified data."));
+ m_updateButton->setGuiItem(updateButtenItem);
+
+ KGuiItem deleteButtenItem( i18n( "&Delete" ),
+ QIconSet(il->loadIcon("editdelete", KIcon::Small, KIcon::SizeSmall)),
+ i18n("Delete the selected source entry"),
+ i18n("Use this to delete the selected online source entry"));
+ m_deleteButton->setGuiItem(deleteButtenItem);
+
+ KGuiItem newButtenItem( i18n( "&New..." ),
+ QIconSet(il->loadIcon("filenew", KIcon::Small, KIcon::SizeSmall)),
+ i18n("Create a new source entry for online quotes"),
+ i18n("Use this to create a new entry for online quotes"));
+ m_newButton->setGuiItem(newButtenItem);
+
+ connect(m_updateButton, SIGNAL(clicked()), this, SLOT(slotUpdateEntry()));
+ connect(m_newButton, SIGNAL(clicked()), this, SLOT(slotNewEntry()));
+
+ connect(m_quoteSourceList, SIGNAL(selectionChanged(QListViewItem*)), this, SLOT(slotLoadWidgets(QListViewItem*)));
+ connect(m_quoteSourceList, SIGNAL(clicked(QListViewItem*)), this, SLOT(slotLoadWidgets(QListViewItem*)));
+ connect(m_quoteSourceList, SIGNAL(itemRenamed(QListViewItem*,const QString&,int)), this, SLOT(slotEntryRenamed(QListViewItem*,const QString&,int)));
+
+ connect(m_editURL, SIGNAL(textChanged(const QString&)), this, SLOT(slotEntryChanged()));
+ connect(m_editSymbol, SIGNAL(textChanged(const QString&)), this, SLOT(slotEntryChanged()));
+ connect(m_editDate, SIGNAL(textChanged(const QString&)), this, SLOT(slotEntryChanged()));
+ connect(m_editDateFormat, SIGNAL(textChanged(const QString&)), this, SLOT(slotEntryChanged()));
+ connect(m_editPrice, SIGNAL(textChanged(const QString&)), this, SLOT(slotEntryChanged()));
+ connect(m_skipStripping, SIGNAL(toggled(bool)), this, SLOT(slotEntryChanged()));
+
+ // FIXME deleting a source is not yet implemented
+ m_deleteButton->setEnabled(false);
+}
+
+void KSettingsOnlineQuotes::loadList(const bool updateResetList)
+{
+ QStringList groups = WebPriceQuote::quoteSources();
+
+ if(updateResetList)
+ m_resetList.clear();
+ m_quoteSourceList->clear();
+ QStringList::Iterator it;
+ for(it = groups.begin(); it != groups.end(); ++it) {
+ new QListViewItem(m_quoteSourceList, *it);
+ if(updateResetList)
+ m_resetList += WebPriceQuoteSource(*it);
+ }
+
+ QListViewItem* first = m_quoteSourceList->firstChild();
+ if(first)
+ m_quoteSourceList->setSelected(first, true);
+ slotLoadWidgets(first);
+
+ m_newButton->setEnabled(m_quoteSourceList->findItem(i18n("New Quote Source"), 0) == 0);
+}
+
+void KSettingsOnlineQuotes::resetConfig(void)
+{
+ QStringList::ConstIterator it;
+ QStringList groups = WebPriceQuote::quoteSources();
+
+ // delete all currently defined entries
+ for(it = groups.begin(); it != groups.end(); ++it) {
+ WebPriceQuoteSource(*it).remove();
+ }
+
+ // and write back the one's from the reset list
+ QValueList<WebPriceQuoteSource>::ConstIterator itr;
+ for(itr = m_resetList.begin(); itr != m_resetList.end(); ++itr) {
+ (*itr).write();
+ }
+
+ loadList();
+}
+
+void KSettingsOnlineQuotes::slotLoadWidgets(QListViewItem* item)
+{
+ m_editURL->setEnabled(true);
+ m_editSymbol->setEnabled(true);
+ m_editPrice->setEnabled(true);
+ m_editDate->setEnabled(true);
+ m_editDateFormat->setEnabled(true);
+ m_skipStripping->setEnabled(true);
+ m_editURL->setText(QString());
+ m_editSymbol->setText(QString());
+ m_editPrice->setText(QString());
+ m_editDate->setText(QString());
+ m_editDateFormat->setText(QString());
+
+ if(item) {
+ m_currentItem = WebPriceQuoteSource(item->text(0));
+ m_editURL->setText(m_currentItem.m_url);
+ m_editSymbol->setText(m_currentItem.m_sym);
+ m_editPrice->setText(m_currentItem.m_price);
+ m_editDate->setText(m_currentItem.m_date);
+ m_editDateFormat->setText(m_currentItem.m_dateformat);
+ m_skipStripping->setChecked(m_currentItem.m_skipStripping);
+ } else {
+ m_editURL->setEnabled(false);
+ m_editSymbol->setEnabled(false);
+ m_editPrice->setEnabled(false);
+ m_editDate->setEnabled(false);
+ m_editDateFormat->setEnabled(false);
+ m_skipStripping->setEnabled(false);
+ }
+
+ m_updateButton->setEnabled(false);
+
+}
+
+void KSettingsOnlineQuotes::slotEntryChanged(void)
+{
+ bool modified = m_editURL->text() != m_currentItem.m_url
+ || m_editSymbol->text() != m_currentItem.m_sym
+ || m_editDate->text() != m_currentItem.m_date
+ || m_editDateFormat->text() != m_currentItem.m_dateformat
+ || m_editPrice->text() != m_currentItem.m_price
+ || m_skipStripping->isChecked() != m_currentItem.m_skipStripping;
+
+ m_updateButton->setEnabled(modified);
+}
+
+void KSettingsOnlineQuotes::slotUpdateEntry(void)
+{
+ m_currentItem.m_url = m_editURL->text();
+ m_currentItem.m_sym = m_editSymbol->text();
+ m_currentItem.m_date = m_editDate->text();
+ m_currentItem.m_dateformat = m_editDateFormat->text();
+ m_currentItem.m_price = m_editPrice->text();
+ m_currentItem.m_skipStripping = m_skipStripping->isChecked();
+ m_currentItem.write();
+ slotEntryChanged();
+}
+
+void KSettingsOnlineQuotes::slotNewEntry(void)
+{
+ WebPriceQuoteSource newSource(i18n("New Quote Source"));
+ newSource.write();
+ loadList();
+ QListViewItem* item = m_quoteSourceList->findItem(i18n("New Quote Source"), 0);
+ if(item) {
+ m_quoteSourceList->setSelected(item, true);
+ slotLoadWidgets(item);
+ }
+}
+
+void KSettingsOnlineQuotes::slotEntryRenamed(QListViewItem* item, const QString& text, int /* col */)
+{
+ int nameCount = 0;
+ QListViewItemIterator it(m_quoteSourceList);
+ while(it.current()) {
+ if(it.current()->text(0) == text)
+ ++nameCount;
+ ++it;
+ }
+
+ // Make sure we get a non-empty and unique name
+ if(text.length() > 0 && nameCount == 1) {
+ m_currentItem.rename(text);
+ } else {
+ item->setText(0, m_currentItem.m_name);
+ }
+ m_newButton->setEnabled(m_quoteSourceList->findItem(i18n("New Quote Source"), 0) == 0);
+}
+
+#include "ksettingsonlinequotes.moc"