Changeset View
Changeset View
Standalone View
Standalone View
kmymoney/dialogs/settings/ksettingsonlinequotes.cpp
Show All 24 Lines | |||||
25 | #include <QIcon> | 25 | #include <QIcon> | ||
26 | 26 | | |||
27 | // ---------------------------------------------------------------------------- | 27 | // ---------------------------------------------------------------------------- | ||
28 | // KDE Includes | 28 | // KDE Includes | ||
29 | 29 | | |||
30 | #include <kconfig.h> | 30 | #include <kconfig.h> | ||
31 | #include <kguiitem.h> | 31 | #include <kguiitem.h> | ||
32 | #include <KLocalizedString> | 32 | #include <KLocalizedString> | ||
33 | #include <KMessageBox> | ||||
33 | 34 | | |||
34 | // ---------------------------------------------------------------------------- | 35 | // ---------------------------------------------------------------------------- | ||
35 | // Project Includes | 36 | // Project Includes | ||
36 | 37 | | |||
37 | #include "kmymoney/converter/webpricequote.h" | 38 | #include "kmymoney/converter/webpricequote.h" | ||
38 | 39 | | |||
39 | KSettingsOnlineQuotes::KSettingsOnlineQuotes(QWidget *parent) | 40 | KSettingsOnlineQuotes::KSettingsOnlineQuotes(QWidget *parent) | ||
40 | : KSettingsOnlineQuotesDecl(parent), | 41 | : KSettingsOnlineQuotesDecl(parent), | ||
Show All 19 Lines | 43 | { | |||
60 | KGuiItem::assign(m_deleteButton, deleteButtenItem); | 61 | KGuiItem::assign(m_deleteButton, deleteButtenItem); | ||
61 | 62 | | |||
62 | KGuiItem newButtenItem(i18nc("Create a new source entry for online quotes", "&New..."), | 63 | KGuiItem newButtenItem(i18nc("Create a new source entry for online quotes", "&New..."), | ||
63 | QIcon::fromTheme("document-new"), | 64 | QIcon::fromTheme("document-new"), | ||
64 | i18n("Create a new source entry for online quotes"), | 65 | i18n("Create a new source entry for online quotes"), | ||
65 | i18n("Use this to create a new entry for online quotes")); | 66 | i18n("Use this to create a new entry for online quotes")); | ||
66 | KGuiItem::assign(m_newButton, newButtenItem); | 67 | KGuiItem::assign(m_newButton, newButtenItem); | ||
67 | 68 | | |||
69 | connect(m_dumpCSVProfile, SIGNAL(clicked()), this, SLOT(slotDumpCSVProfile())); | ||||
68 | connect(m_updateButton, SIGNAL(clicked()), this, SLOT(slotUpdateEntry())); | 70 | connect(m_updateButton, SIGNAL(clicked()), this, SLOT(slotUpdateEntry())); | ||
69 | connect(m_newButton, SIGNAL(clicked()), this, SLOT(slotNewEntry())); | 71 | connect(m_newButton, SIGNAL(clicked()), this, SLOT(slotNewEntry())); | ||
70 | 72 | | |||
71 | connect(m_quoteSourceList, SIGNAL(itemSelectionChanged()), this, SLOT(slotLoadWidgets())); | 73 | connect(m_quoteSourceList, SIGNAL(itemSelectionChanged()), this, SLOT(slotLoadWidgets())); | ||
72 | connect(m_quoteSourceList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(slotEntryRenamed(QListWidgetItem*))); | 74 | connect(m_quoteSourceList, SIGNAL(itemChanged(QListWidgetItem*)), this, SLOT(slotEntryRenamed(QListWidgetItem*))); | ||
73 | connect(m_quoteSourceList, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(slotStartRename(QListWidgetItem*))); | 75 | connect(m_quoteSourceList, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(slotStartRename(QListWidgetItem*))); | ||
74 | 76 | | |||
75 | connect(m_editURL, SIGNAL(textChanged(QString)), this, SLOT(slotEntryChanged())); | 77 | connect(m_editURL, SIGNAL(textChanged(QString)), this, SLOT(slotEntryChanged())); | ||
78 | connect(m_editCSVURL, SIGNAL(textChanged(QString)), this, SLOT(slotEntryChanged())); | ||||
76 | connect(m_editSymbol, SIGNAL(textChanged(QString)), this, SLOT(slotEntryChanged())); | 79 | connect(m_editSymbol, SIGNAL(textChanged(QString)), this, SLOT(slotEntryChanged())); | ||
77 | connect(m_editDate, SIGNAL(textChanged(QString)), this, SLOT(slotEntryChanged())); | 80 | connect(m_editDate, SIGNAL(textChanged(QString)), this, SLOT(slotEntryChanged())); | ||
78 | connect(m_editDateFormat, SIGNAL(textChanged(QString)), this, SLOT(slotEntryChanged())); | 81 | connect(m_editDateFormat, SIGNAL(textChanged(QString)), this, SLOT(slotEntryChanged())); | ||
79 | connect(m_editPrice, SIGNAL(textChanged(QString)), this, SLOT(slotEntryChanged())); | 82 | connect(m_editPrice, SIGNAL(textChanged(QString)), this, SLOT(slotEntryChanged())); | ||
80 | connect(m_skipStripping, SIGNAL(toggled(bool)), this, SLOT(slotEntryChanged())); | 83 | connect(m_skipStripping, SIGNAL(toggled(bool)), this, SLOT(slotEntryChanged())); | ||
81 | 84 | | |||
82 | // FIXME deleting a source is not yet implemented | 85 | // FIXME deleting a source is not yet implemented | ||
83 | m_deleteButton->setEnabled(false); | 86 | m_deleteButton->setEnabled(false); | ||
▲ Show 20 Lines • Show All 47 Lines • ▼ Show 20 Line(s) | |||||
131 | } | 134 | } | ||
132 | 135 | | |||
133 | void KSettingsOnlineQuotes::slotLoadWidgets() | 136 | void KSettingsOnlineQuotes::slotLoadWidgets() | ||
134 | { | 137 | { | ||
135 | m_quoteInEditing = false; | 138 | m_quoteInEditing = false; | ||
136 | QListWidgetItem* item = m_quoteSourceList->currentItem(); | 139 | QListWidgetItem* item = m_quoteSourceList->currentItem(); | ||
137 | 140 | | |||
138 | m_editURL->setEnabled(true); | 141 | m_editURL->setEnabled(true); | ||
142 | m_editCSVURL->setEnabled(true); | ||||
139 | m_editSymbol->setEnabled(true); | 143 | m_editSymbol->setEnabled(true); | ||
140 | m_editPrice->setEnabled(true); | 144 | m_editPrice->setEnabled(true); | ||
141 | m_editDate->setEnabled(true); | 145 | m_editDate->setEnabled(true); | ||
142 | m_editDateFormat->setEnabled(true); | 146 | m_editDateFormat->setEnabled(true); | ||
143 | m_skipStripping->setEnabled(true); | 147 | m_skipStripping->setEnabled(true); | ||
144 | m_editURL->setText(QString()); | 148 | m_editURL->setText(QString()); | ||
149 | m_editCSVURL->setText(QString()); | ||||
145 | m_editSymbol->setText(QString()); | 150 | m_editSymbol->setText(QString()); | ||
146 | m_editPrice->setText(QString()); | 151 | m_editPrice->setText(QString()); | ||
147 | m_editDate->setText(QString()); | 152 | m_editDate->setText(QString()); | ||
148 | m_editDateFormat->setText(QString()); | 153 | m_editDateFormat->setText(QString()); | ||
149 | 154 | | |||
150 | if (item) { | 155 | if (item) { | ||
151 | m_currentItem = WebPriceQuoteSource(item->text()); | 156 | m_currentItem = WebPriceQuoteSource(item->text()); | ||
152 | m_editURL->setText(m_currentItem.m_url); | 157 | m_editURL->setText(m_currentItem.m_url); | ||
158 | m_editCSVURL->setText(m_currentItem.m_csvUrl); | ||||
153 | m_editSymbol->setText(m_currentItem.m_sym); | 159 | m_editSymbol->setText(m_currentItem.m_sym); | ||
154 | m_editPrice->setText(m_currentItem.m_price); | 160 | m_editPrice->setText(m_currentItem.m_price); | ||
155 | m_editDate->setText(m_currentItem.m_date); | 161 | m_editDate->setText(m_currentItem.m_date); | ||
156 | m_editDateFormat->setText(m_currentItem.m_dateformat); | 162 | m_editDateFormat->setText(m_currentItem.m_dateformat); | ||
157 | m_skipStripping->setChecked(m_currentItem.m_skipStripping); | 163 | m_skipStripping->setChecked(m_currentItem.m_skipStripping); | ||
158 | } else { | 164 | } else { | ||
159 | m_editURL->setEnabled(false); | 165 | m_editURL->setEnabled(false); | ||
166 | m_editCSVURL->setEnabled(false); | ||||
160 | m_editSymbol->setEnabled(false); | 167 | m_editSymbol->setEnabled(false); | ||
161 | m_editPrice->setEnabled(false); | 168 | m_editPrice->setEnabled(false); | ||
162 | m_editDate->setEnabled(false); | 169 | m_editDate->setEnabled(false); | ||
163 | m_editDateFormat->setEnabled(false); | 170 | m_editDateFormat->setEnabled(false); | ||
164 | m_skipStripping->setEnabled(false); | 171 | m_skipStripping->setEnabled(false); | ||
165 | } | 172 | } | ||
166 | 173 | | |||
167 | m_updateButton->setEnabled(false); | 174 | m_updateButton->setEnabled(false); | ||
168 | 175 | | |||
169 | } | 176 | } | ||
170 | 177 | | |||
171 | void KSettingsOnlineQuotes::slotEntryChanged() | 178 | void KSettingsOnlineQuotes::slotEntryChanged() | ||
172 | { | 179 | { | ||
173 | bool modified = m_editURL->text() != m_currentItem.m_url | 180 | bool modified = m_editURL->text() != m_currentItem.m_url | ||
181 | || m_editCSVURL->text() != m_currentItem.m_csvUrl | ||||
174 | || m_editSymbol->text() != m_currentItem.m_sym | 182 | || m_editSymbol->text() != m_currentItem.m_sym | ||
175 | || m_editDate->text() != m_currentItem.m_date | 183 | || m_editDate->text() != m_currentItem.m_date | ||
176 | || m_editDateFormat->text() != m_currentItem.m_dateformat | 184 | || m_editDateFormat->text() != m_currentItem.m_dateformat | ||
177 | || m_editPrice->text() != m_currentItem.m_price | 185 | || m_editPrice->text() != m_currentItem.m_price | ||
178 | || m_skipStripping->isChecked() != m_currentItem.m_skipStripping; | 186 | || m_skipStripping->isChecked() != m_currentItem.m_skipStripping; | ||
179 | 187 | | |||
180 | m_updateButton->setEnabled(modified); | 188 | m_updateButton->setEnabled(modified); | ||
181 | } | 189 | } | ||
182 | 190 | | |||
191 | void KSettingsOnlineQuotes::slotDumpCSVProfile() | ||||
192 | { | ||||
193 | KSharedConfigPtr config = CSVImporter::configFile(); | ||||
194 | PricesProfile profile; | ||||
195 | profile.m_profileName = m_currentItem.m_name; | ||||
196 | profile.m_profileType = ProfileStockPrices; | ||||
197 | bool profileExists = false; | ||||
198 | bool writeProfile = true; | ||||
199 | | ||||
200 | if (profile.readSettings(config)) | ||||
201 | profileExists = true; | ||||
202 | else { | ||||
203 | profile.m_profileType = ProfileCurrencyPrices; | ||||
204 | if (profile.readSettings(config)) | ||||
205 | profileExists = true; | ||||
206 | } | ||||
207 | | ||||
208 | if (profileExists) | ||||
209 | writeProfile = (KMessageBox::questionYesNoCancel(this, | ||||
210 | i18n("CSV profile <b>%1</b> already exists.<br>" | ||||
211 | "Do you want to overwrite it?", | ||||
212 | m_currentItem.m_name), | ||||
213 | i18n("CSV Profile Already Exists")) == KMessageBox::Yes ? true : false); | ||||
214 | | ||||
215 | if (writeProfile) { | ||||
216 | QMap<QString, PricesProfile> quoteSources = WebPriceQuote::defaultCSVQuoteSources(); | ||||
217 | profile = quoteSources.value(m_currentItem.m_name); | ||||
218 | if (profile.m_profileName.compare(m_currentItem.m_name, Qt::CaseInsensitive) == 0) { | ||||
219 | profile.writeSettings(config); | ||||
220 | CSVImporter::profilesAction(profile.type(), ProfilesAdd, profile.m_profileName, profile.m_profileName); | ||||
221 | } | ||||
222 | } | ||||
223 | CSVImporter::profilesAction(profile.type(), ProfilesUpdateLastUsed, profile.m_profileName, profile.m_profileName); | ||||
224 | } | ||||
225 | | ||||
183 | void KSettingsOnlineQuotes::slotUpdateEntry() | 226 | void KSettingsOnlineQuotes::slotUpdateEntry() | ||
184 | { | 227 | { | ||
185 | m_currentItem.m_url = m_editURL->text(); | 228 | m_currentItem.m_url = m_editURL->text(); | ||
229 | m_currentItem.m_csvUrl = m_editCSVURL->text(); | ||||
186 | m_currentItem.m_sym = m_editSymbol->text(); | 230 | m_currentItem.m_sym = m_editSymbol->text(); | ||
187 | m_currentItem.m_date = m_editDate->text(); | 231 | m_currentItem.m_date = m_editDate->text(); | ||
188 | m_currentItem.m_dateformat = m_editDateFormat->text(); | 232 | m_currentItem.m_dateformat = m_editDateFormat->text(); | ||
189 | m_currentItem.m_price = m_editPrice->text(); | 233 | m_currentItem.m_price = m_editPrice->text(); | ||
190 | m_currentItem.m_skipStripping = m_skipStripping->isChecked(); | 234 | m_currentItem.m_skipStripping = m_skipStripping->isChecked(); | ||
191 | m_currentItem.write(); | 235 | m_currentItem.write(); | ||
192 | slotEntryChanged(); | 236 | slotEntryChanged(); | ||
193 | } | 237 | } | ||
▲ Show 20 Lines • Show All 41 Lines • Show Last 20 Lines |