diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -120,21 +120,21 @@ # check for optional OFX support set(LIBOFX_DEFAULT "AUTO") -if(DEFINED ENABLE_LIBOFX) - set(LIBOFX_DEFAULT ${ENABLE_LIBOFX}) -endif(DEFINED ENABLE_LIBOFX) -option(ENABLE_LIBOFX "Enable OFX plugin" ON) -if(ENABLE_LIBOFX) +if(DEFINED ENABLE_OFXIMPORTER) + set(LIBOFX_DEFAULT ${ENABLE_OFXIMPORTER}) +endif(DEFINED ENABLE_OFXIMPORTER) + +if(ENABLE_OFXIMPORTER) find_package(LibOfx) if(NOT LIBOFX_FOUND) if(NOT LIBOFX_DEFAULT STREQUAL "AUTO") message(FATAL_ERROR "LibOFX not found") endif(NOT LIBOFX_DEFAULT STREQUAL "AUTO") - set(ENABLE_LIBOFX OFF CACHE BOOL "Enable OFX plugin" FORCE) + set(ENABLE_OFXIMPORTER OFF CACHE BOOL "Enable OFX plugin" FORCE) else(NOT LIBOFX_FOUND) check_struct_has_member("struct OfxFiLogin" "clientuid" "libofx/libofx.h" LIBOFX_HAVE_CLIENTUID) endif(NOT LIBOFX_FOUND) -endif(ENABLE_LIBOFX) +endif(ENABLE_OFXIMPORTER) # check for optional KBanking support set(KBANKING_FOUND "AUTO") @@ -204,6 +204,8 @@ option(ENABLE_CSVIMPORTER "Enable CSV Importer" ON) option(ENABLE_CSVEXPORTER "Enable CSV Exporter" ON) +option(ENABLE_OFXIMPORTER "Enable OFX Importer" ON) + option(ENABLE_UNFINISHEDFEATURES "For devs only" OFF) # TODO: this should be removed diff --git a/kmymoney/converter/CMakeLists.txt b/kmymoney/converter/CMakeLists.txt --- a/kmymoney/converter/CMakeLists.txt +++ b/kmymoney/converter/CMakeLists.txt @@ -15,7 +15,7 @@ add_library(converter STATIC ${libconverter_a_SOURCES}) # TODO: clean dependencies -target_link_libraries(converter PUBLIC KF5::Service KF5::XmlGui KF5::Completion KF5::TextWidgets KF5::WidgetsAddons KF5::ConfigCore KF5::I18n Qt5::Widgets Qt5::Gui Qt5::Sql Qt5::Xml Alkimia::alkimia KF5::KIOWidgets kmm_csvimport_core +target_link_libraries(converter PUBLIC KF5::Service KF5::XmlGui KF5::Completion KF5::TextWidgets KF5::WidgetsAddons KF5::ConfigCore KF5::I18n Qt5::Widgets Qt5::Gui Qt5::Sql Qt5::Xml Alkimia::alkimia KF5::KIOWidgets kmm_csvimportercore PRIVATE newaccountwizard) diff --git a/kmymoney/converter/webpricequote.h b/kmymoney/converter/webpricequote.h --- a/kmymoney/converter/webpricequote.h +++ b/kmymoney/converter/webpricequote.h @@ -30,7 +30,7 @@ // ---------------------------------------------------------------------------- // Project Headers -#include "csv/import/core/csvimporter.h" +#include "csv/import/core/csvimportercore.h" class KJob; class QDate; diff --git a/kmymoney/converter/webpricequote.cpp b/kmymoney/converter/webpricequote.cpp --- a/kmymoney/converter/webpricequote.cpp +++ b/kmymoney/converter/webpricequote.cpp @@ -173,7 +173,7 @@ d->m_CSVSource.m_profileType = Profile::StockPrices; d->m_CSVSource.m_profileName = sourcename; - if (!d->m_CSVSource.readSettings(CSVImporter::configFile())) { + if (!d->m_CSVSource.readSettings(CSVImporterCore::configFile())) { QMap result = defaultCSVQuoteSources(); d->m_CSVSource = result.value(sourcename); if (d->m_CSVSource.m_profileName.isEmpty()) { @@ -410,7 +410,7 @@ isOK = false; else { MyMoneyStatement st; - CSVImporter* csvImporter = new CSVImporter; + CSVImporterCore* csvImporter = new CSVImporterCore; st = csvImporter->unattendedImport(filename, &d->m_CSVSource); if (!st.m_listPrices.isEmpty()) emit csvquote(d->m_kmmID, d->m_webID, st); diff --git a/kmymoney/dialogs/settings/CMakeLists.txt b/kmymoney/dialogs/settings/CMakeLists.txt --- a/kmymoney/dialogs/settings/CMakeLists.txt +++ b/kmymoney/dialogs/settings/CMakeLists.txt @@ -12,6 +12,7 @@ ksettingsschedules.cpp ksettingsreports.cpp ksettingskmymoney.cpp + ksettingsplugins.cpp ) set (libsettings_a_UI diff --git a/kmymoney/dialogs/settings/ksettingskmymoney.h b/kmymoney/dialogs/settings/ksettingskmymoney.h --- a/kmymoney/dialogs/settings/ksettingskmymoney.h +++ b/kmymoney/dialogs/settings/ksettingskmymoney.h @@ -29,6 +29,12 @@ { public: explicit KSettingsKMyMoney(QWidget *parent, const QString &name, KCoreConfigSkeleton *config); + +Q_SIGNALS: + void pluginsChanged(); + +private Q_SLOTS: + void slotPluginsChanged(bool changed); }; diff --git a/kmymoney/dialogs/settings/ksettingskmymoney.cpp b/kmymoney/dialogs/settings/ksettingskmymoney.cpp --- a/kmymoney/dialogs/settings/ksettingskmymoney.cpp +++ b/kmymoney/dialogs/settings/ksettingskmymoney.cpp @@ -21,7 +21,6 @@ #include -#include #include #include "ksettingsgeneral.h" @@ -35,9 +34,9 @@ #include "ksettingshome.h" #include "ksettingsforecast.h" #include "ksettingsreports.h" +#include "ksettingsplugins.h" -#include "pluginloader.h" -#include "icons/icons.h" +#include "icons.h" using namespace Icons; @@ -55,8 +54,8 @@ const auto iconsPage = new KSettingsIcons(); const auto onlineQuotesPage = new KSettingsOnlineQuotes(); const auto forecastPage = new KSettingsForecast(); - const auto pluginsPage = KMyMoneyPlugin::PluginLoader::instance()->pluginSelectorWidget(); const auto reportsPage = new KSettingsReports(); + const auto pluginsPage = new KSettingsPlugins(); addPage(generalPage, i18nc("General settings", "General"), Icons::get(Icon::SystemRun).name()); addPage(homePage, i18n("Home"), Icons::get(Icon::ViewHome).name()); @@ -69,15 +68,25 @@ addPage(colorsPage, i18n("Colors"), Icons::get(Icon::PreferencesColor).name()); addPage(fontsPage, i18n("Fonts"), Icons::get(Icon::PreferencesFont).name()); addPage(iconsPage, i18n("Icons"), Icons::get(Icon::PreferencesIcon).name()); - addPage(pluginsPage, i18n("Plugins"), Icons::get(Icon::NetworkDisconect).name()); + addPage(pluginsPage, i18n("Plugins"), Icons::get(Icon::NetworkDisconect).name(), QString(), false); setHelp("details.settings", "kmymoney"); - auto defaultButton = button(QDialogButtonBox::RestoreDefaults); connect(this, &KConfigDialog::rejected, schedulesPage, &KSettingsSchedules::slotResetRegion); connect(this, &KConfigDialog::rejected, iconsPage, &KSettingsIcons::slotResetTheme); connect(this, &KConfigDialog::settingsChanged, generalPage, &KSettingsGeneral::slotUpdateEquitiesVisibility); - connect(this, &KConfigDialog::accepted, pluginsPage, &KPluginSelector::save); - connect(defaultButton, &QPushButton::clicked, pluginsPage, &KPluginSelector::defaults); + auto defaultButton = button(QDialogButtonBox::RestoreDefaults); + auto applyButton = button(QDialogButtonBox::Apply); + connect(this, &KConfigDialog::accepted, pluginsPage, &KSettingsPlugins::slotSavePluginConfiguration); + connect(applyButton, &QPushButton::clicked, pluginsPage, &KSettingsPlugins::slotSavePluginConfiguration); + connect(defaultButton, &QPushButton::clicked, pluginsPage, &KSettingsPlugins::slotResetToDefaults); + connect(pluginsPage, &KSettingsPlugins::changed, this, &KSettingsKMyMoney::slotPluginsChanged); + connect(pluginsPage, &KSettingsPlugins::settingsChanged, this, &KConfigDialog::settingsChanged); +} + +void KSettingsKMyMoney::slotPluginsChanged(bool changed) +{ + auto applyButton = button(QDialogButtonBox::Apply); + applyButton->setEnabled(changed); } diff --git a/kmymoney/dialogs/settings/ksettingsonlinequotes.cpp b/kmymoney/dialogs/settings/ksettingsonlinequotes.cpp --- a/kmymoney/dialogs/settings/ksettingsonlinequotes.cpp +++ b/kmymoney/dialogs/settings/ksettingsonlinequotes.cpp @@ -243,7 +243,7 @@ void KSettingsOnlineQuotes::slotDumpCSVProfile() { Q_D(KSettingsOnlineQuotes); - KSharedConfigPtr config = CSVImporter::configFile(); + KSharedConfigPtr config = CSVImporterCore::configFile(); PricesProfile profile; profile.m_profileName = d->m_currentItem.m_name; profile.m_profileType = Profile::StockPrices; @@ -270,10 +270,10 @@ profile = quoteSources.value(d->m_currentItem.m_name); if (profile.m_profileName.compare(d->m_currentItem.m_name, Qt::CaseInsensitive) == 0) { profile.writeSettings(config); - CSVImporter::profilesAction(profile.type(), ProfileAction::Add, profile.m_profileName, profile.m_profileName); + CSVImporterCore::profilesAction(profile.type(), ProfileAction::Add, profile.m_profileName, profile.m_profileName); } } - CSVImporter::profilesAction(profile.type(), ProfileAction::UpdateLastUsed, profile.m_profileName, profile.m_profileName); + CSVImporterCore::profilesAction(profile.type(), ProfileAction::UpdateLastUsed, profile.m_profileName, profile.m_profileName); } void KSettingsOnlineQuotes::slotUpdateEntry() diff --git a/kmymoney/plugins/qif/export/qifexporterplugin.h b/kmymoney/dialogs/settings/ksettingsplugins.h rename from kmymoney/plugins/qif/export/qifexporterplugin.h rename to kmymoney/dialogs/settings/ksettingsplugins.h --- a/kmymoney/plugins/qif/export/qifexporterplugin.h +++ b/kmymoney/dialogs/settings/ksettingsplugins.h @@ -1,8 +1,7 @@ /*************************************************************************** - qifexporterplugin.h + ksettingsplugins.h ------------------- - copyright : (C) 2017 by Łukasz Wojniłowicz - email : lukasz.wojnilowicz@gmail.com + (C) 2017 by Łukasz Wojniłowicz ***************************************************************************/ /*************************************************************************** @@ -14,44 +13,46 @@ * * ***************************************************************************/ -#ifndef QIFEXPORTERPLUGIN_H -#define QIFEXPORTERPLUGIN_H +#ifndef KSETTINGSPLUGINS_H +#define KSETTINGSPLUGINS_H // ---------------------------------------------------------------------------- -// KDE Includes +// QT Includes + +#include // ---------------------------------------------------------------------------- -// QT Includes +// KDE Includes +// ---------------------------------------------------------------------------- // Project Includes -#include "kmymoneyplugin.h" - -class MyMoneyQifReader; +class KPluginSelector; -class QIFExporterPlugin : public KMyMoneyPlugin::Plugin +class KSettingsPluginsPrivate; +class KSettingsPlugins : public QWidget { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.kmymoney.plugins.qifexport" FILE "qifexport.json") - + Q_DISABLE_COPY(KSettingsPlugins) + public: - explicit QIFExporterPlugin(); - ~QIFExporterPlugin(); + explicit KSettingsPlugins(QWidget* parent = nullptr); + ~KSettingsPlugins(); - QAction *m_action; +public Q_SLOTS: + void slotResetToDefaults(); + void slotSavePluginConfiguration(); - MyMoneyQifReader *m_qifReader; +Q_SIGNALS: + void changed(bool); + void settingsChanged(const QString &dialogName); -public Q_SLOTS: - /** - * Called when the user wishes to export some transaction to a - * QIF formatted file. An account must be open for this to work. - * Uses MyMoneyQifWriter() for the actual output. - */ - void slotQifExport(); - -protected: - void createActions(); -}; +private: + KSettingsPluginsPrivate* const d_ptr; + Q_DECLARE_PRIVATE(KSettingsPlugins) +private Q_SLOTS: + void slotPluginsSelectionChanged(bool changed); +}; #endif + diff --git a/kmymoney/dialogs/settings/ksettingsplugins.cpp b/kmymoney/dialogs/settings/ksettingsplugins.cpp new file mode 100644 --- /dev/null +++ b/kmymoney/dialogs/settings/ksettingsplugins.cpp @@ -0,0 +1,176 @@ +/*************************************************************************** + ksettingsplugins.cpp + -------------------- + (C) 2017 by Łukasz Wojniłowicz + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +#include "ksettingsplugins.h" + +// ---------------------------------------------------------------------------- +// QT Includes + +#include +#include + +// ---------------------------------------------------------------------------- +// KDE Includes + +#include +#include +#include +#include + +// ---------------------------------------------------------------------------- +// Project Includes + +#include "pluginloader.h" + +struct pluginGroupInfo { + QList plugins; + KPluginSelector::PluginLoadMethod loadMethod; + QString categoryName; +}; + +class KSettingsPluginsPrivate +{ + Q_DISABLE_COPY(KSettingsPluginsPrivate) + +public: + KSettingsPluginsPrivate(KSettingsPlugins* qq) : + m_pluginSelector(new KPluginSelector(qq)) + { + } + + ~KSettingsPluginsPrivate() + { + delete m_pluginSelector; + } + + /** + * @brief This should be called after save to kmymoneyrc in order to update cached on/off states + */ + void updateSavedPluginStates() + { + for (auto i = 0 ; i < pluginInfos.size(); ++i) + savedPluginStates[i] = pluginInfos[i].isPluginEnabled(); + } + + /** + * @brief This compares plugin on/off states from KPluginSelector with cached one + * @return true if user changes to plugin on/off state aren't different than initial + */ + bool isEqualToSavedStates() + { + for (auto i = 0 ; i < pluginInfos.size(); ++i) + if (savedPluginStates[i] != pluginInfos[i].isPluginEnabled()) + return false; + return true; + } + + KPluginSelector* const m_pluginSelector; + QList pluginInfos; + /** + * @brief savedPluginStates This caches on/off states as in kmymoneyrc + */ + QBitArray savedPluginStates; +}; + +KSettingsPlugins::KSettingsPlugins(QWidget* parent) : + QWidget(parent), + d_ptr(new KSettingsPluginsPrivate(this)) + +{ + Q_D(KSettingsPlugins); + auto layout = new QVBoxLayout; + setLayout(layout); // otherwise KPluginSelector occupies very little area + layout->addWidget(d->m_pluginSelector); + + auto allPluginDatas = KMyMoneyPlugin::listPlugins(false); // fetch all available KMyMoney plugins + QVector standardPlugins; + QVector payeePlugins; + QVector onlinePlugins; + + // divide plugins in some arbitrary categories + for (const KPluginMetaData& pluginData : allPluginDatas) + switch (KMyMoneyPlugin::pluginCategory(pluginData)) { + case KMyMoneyPlugin::Category::StandardPlugin: + standardPlugins.append(pluginData); + break; + case KMyMoneyPlugin::Category::PayeeIdentifier: + payeePlugins.append(pluginData); + break; + case KMyMoneyPlugin::Category::OnlineBankOperations: + onlinePlugins.append(pluginData); + break; + default: + break; + } + + const QVector pluginGroups { + {KPluginInfo::fromMetaData(standardPlugins), + KPluginSelector::PluginLoadMethod::ReadConfigFile, + i18n("KMyMoney Plugins")}, + + {KPluginInfo::fromMetaData(payeePlugins), + KPluginSelector::PluginLoadMethod::IgnoreConfigFile, + i18n("Payee Identifier")}, + + {KPluginInfo::fromMetaData(onlinePlugins), + KPluginSelector::PluginLoadMethod::IgnoreConfigFile, + i18n("Online Banking Operations")} + }; + + // add all plugins to selector + for(const auto& pluginGroup : pluginGroups) { + if (!pluginGroup.plugins.isEmpty()) { + d->m_pluginSelector->addPlugins(pluginGroup.plugins, + pluginGroup.loadMethod, + pluginGroup.categoryName); // at that step plugin on/off state should be fetched automatically by KPluginSelector + d->pluginInfos.append(pluginGroup.plugins); // store initial on/off state to be able to enable/disable Apply button + } + } + d->savedPluginStates.resize(d->pluginInfos.size()); + d->updateSavedPluginStates(); + + connect(d->m_pluginSelector, &KPluginSelector::changed, this, &KSettingsPlugins::slotPluginsSelectionChanged); +} + +KSettingsPlugins::~KSettingsPlugins() +{ + Q_D(KSettingsPlugins); + delete d; +} + +void KSettingsPlugins::slotPluginsSelectionChanged(bool b) +{ + Q_D(KSettingsPlugins); + if (b) { + d->m_pluginSelector->updatePluginsState(); + emit changed(!d->isEqualToSavedStates()); + } +} + +void KSettingsPlugins::slotResetToDefaults() +{ + Q_D(KSettingsPlugins); + d->m_pluginSelector->defaults(); +} + +void KSettingsPlugins::slotSavePluginConfiguration() +{ + Q_D(KSettingsPlugins); + if (!d->isEqualToSavedStates()) { + d->m_pluginSelector->save(); + d->updateSavedPluginStates(); + emit settingsChanged(QStringLiteral("Plugins")); + } +} diff --git a/kmymoney/kmymoney.h b/kmymoney/kmymoney.h --- a/kmymoney/kmymoney.h +++ b/kmymoney/kmymoney.h @@ -48,7 +48,6 @@ #include "mymoneyenums.h" class QResizeEvent; -class KPluginMetaData; class MyMoneyObject; class MyMoneyInstitution; class MyMoneyAccount; @@ -230,7 +229,7 @@ /** * Call this slot, if any configuration parameter has changed */ - void slotUpdateConfiguration(); + void slotUpdateConfiguration(const QString &dialogName); /** * This slot is used to start new features during the development cycle @@ -366,26 +365,6 @@ */ void createInterfaces(); - /** - * load all available plugins. Make sure you have called createInterfaces() - * before you call this one. - */ - void loadPlugins(); - - /** - * unload all available plugins. Make sure you have called loadPlugins() - * before you call this one. - */ - void unloadPlugins(); - - /** - * @brief Checks if the given plugin is loaded on start up - * - * This filters plugins which are loaded on demand only and deactivated plugins. - * The configGroup must point to the correct group already. - */ - bool isPluginEnabled(const KPluginMetaData& metaData, const KConfigGroup& configGroup); - /** * read general options again and initialize all variables like the recent file list */ @@ -609,16 +588,6 @@ */ void slotUpdateActions(); - /** - * Loads a plugin - */ - void slotPluginLoad(const KPluginMetaData& metaData); - - /** - * Unloads a plugin - */ - void slotPluginUnload(const KPluginMetaData& metaData); - void webConnect(const QString& sourceUrl, const QByteArray &asn_id); void webConnect(const QUrl url) { webConnect(url.path(), QByteArray()); } diff --git a/kmymoney/kmymoney.cpp b/kmymoney/kmymoney.cpp --- a/kmymoney/kmymoney.cpp +++ b/kmymoney/kmymoney.cpp @@ -67,8 +67,6 @@ #include #include #include -#include -#include #ifdef KF5Holidays_FOUND #include #include @@ -211,7 +209,6 @@ m_statementXMLindex(0), m_balanceWarning(0), m_collectingStatements(false), - m_pluginLoader(0), m_backupResult(0), m_backupMount(0), m_ignoreBackupExitCode(false), @@ -262,32 +259,15 @@ bool m_collectingStatements; QStringList m_statementResults; - KMyMoneyPlugin::PluginLoader* m_pluginLoader; QString m_lastPayeeEnteredId; /** the configuration object of the application */ KSharedConfigPtr m_config; /** - * @brief List of all plugged plugins - * - * The key is the file name of the plugin. + * @brief Structure of plugins objects by their interfaces */ - QMap m_plugins; - - /** - * @brief List of plugged importer plugins - * - * The key is the objectName of the plugin. - */ - QMap m_importerPlugins; - - /** - * @brief List of plugged online plugins - * - * The key is the objectName of the plugin. - */ - QMap m_onlinePlugins; + KMyMoneyPlugin::Container m_plugins; /** * The following variable represents the state while crafting a backup. @@ -336,8 +316,6 @@ QQueue m_importUrlsQueue; KFindTransactionDlg* m_searchDlg; - QObject* m_pluginInterface; - MyMoneyAccount m_selectedAccount; MyMoneyAccount m_reconciliationAccount; MyMoneySchedule m_selectedSchedule; @@ -444,8 +422,9 @@ // now initialize the plugin structure createInterfaces(); - loadPlugins(); - d->m_myMoneyView->setOnlinePlugins(d->m_onlinePlugins); + KMyMoneyPlugin::pluginHandling(KMyMoneyPlugin::Action::Load, d->m_plugins, this, guiFactory()); + onlineJobAdministration::instance()->setOnlinePlugins(d->m_plugins.extended); + d->m_myMoneyView->setOnlinePlugins(d->m_plugins.online); setCentralWidget(frame); @@ -484,7 +463,7 @@ d->m_balanceWarning = new KBalanceWarning(this); // setup the initial configuration - slotUpdateConfiguration(); + slotUpdateConfiguration(QString()); // kickstart date change timer slotDateChanged(); @@ -500,7 +479,7 @@ onlineJobAdministration::instance()->clearCaches(); // we need to unload all plugins before we destroy anything else - unloadPlugins(); + KMyMoneyPlugin::pluginHandling(KMyMoneyPlugin::Action::Unload, d->m_plugins, this, guiFactory()); delete d->m_searchDlg; delete d->m_transactionEditor; @@ -1281,8 +1260,8 @@ bool result = false; // Iterate through the plugins and see if there's a loaded plugin who can handle it - QMap::const_iterator it_plugin = d->m_importerPlugins.constBegin(); - while (it_plugin != d->m_importerPlugins.constEnd()) { + QMap::const_iterator it_plugin = d->m_plugins.importer.constBegin(); + while (it_plugin != d->m_plugins.importer.constEnd()) { if ((*it_plugin)->isMyFormat(url.path())) { result = true; break; @@ -1293,7 +1272,7 @@ // If we did not find a match, try importing it as a KMM statement file, // which is really just for testing. the statement file is not exposed // to users. - if (it_plugin == d->m_importerPlugins.constEnd()) + if (it_plugin == d->m_plugins.importer.constEnd()) if (MyMoneyStatement::isStatementFile(url.path())) result = true; @@ -1942,8 +1921,8 @@ return; // otherwise, we have to create it - KConfigDialog* dlg = new KSettingsKMyMoney(this, "KMyMoney-Settings", KMyMoneyGlobalSettings::self()); - connect(dlg, &KConfigDialog::settingsChanged, this, &KMyMoneyApp::slotUpdateConfiguration); + auto dlg = new KSettingsKMyMoney(this, "KMyMoney-Settings", KMyMoneyGlobalSettings::self()); + connect(dlg, &KSettingsKMyMoney::settingsChanged, this, &KMyMoneyApp::slotUpdateConfiguration); dlg->show(); } @@ -1954,8 +1933,13 @@ dlg.exec(); } -void KMyMoneyApp::slotUpdateConfiguration() +void KMyMoneyApp::slotUpdateConfiguration(const QString &dialogName) { + if(dialogName.compare(QLatin1String("Plugins")) == 0) { + KMyMoneyPlugin::pluginHandling(KMyMoneyPlugin::Action::Reorganize, d->m_plugins, this, guiFactory()); + onlineJobAdministration::instance()->updateActions(); + return; + } MyMoneyTransactionFilter::setFiscalYearStart(KMyMoneyGlobalSettings::firstFiscalMonth(), KMyMoneyGlobalSettings::firstFiscalDay()); #ifdef ENABLE_UNFINISHEDFEATURES @@ -2674,12 +2658,12 @@ QList accList; file->accountList(accList); QList::const_iterator it_a; - QMap::const_iterator it_p = d->m_onlinePlugins.constEnd(); - for (it_a = accList.constBegin(); (it_p == d->m_onlinePlugins.constEnd()) && (it_a != accList.constEnd()); ++it_a) { + QMap::const_iterator it_p = d->m_plugins.online.constEnd(); + for (it_a = accList.constBegin(); (it_p == d->m_plugins.online.constEnd()) && (it_a != accList.constEnd()); ++it_a) { if ((*it_a).hasOnlineMapping()) { // check if provider is available - it_p = d->m_onlinePlugins.constFind((*it_a).onlineBankingSettings().value("provider")); - if (it_p != d->m_onlinePlugins.constEnd()) { + it_p = d->m_plugins.online.constFind((*it_a).onlineBankingSettings().value("provider").toLower()); + if (it_p != d->m_plugins.online.constEnd()) { QStringList protocols; (*it_p)->protocols(protocols); if (protocols.count() > 0) { @@ -2701,16 +2685,16 @@ pActions[Action::UnmapOnlineAccount]->setEnabled(true); // check if provider is available QMap::const_iterator it_p; - it_p = d->m_onlinePlugins.constFind(d->m_selectedAccount.onlineBankingSettings().value(QLatin1String("provider"))); - if (it_p != d->m_onlinePlugins.constEnd()) { + it_p = d->m_plugins.online.constFind(d->m_selectedAccount.onlineBankingSettings().value(QLatin1String("provider"))); + if (it_p != d->m_plugins.online.constEnd()) { QStringList protocols; (*it_p)->protocols(protocols); if (protocols.count() > 0) { pActions[Action::UpdateAccount]->setEnabled(true); } } } else { - pActions[Action::MapOnlineAccount]->setEnabled(d->m_onlinePlugins.count() > 0); + pActions[Action::MapOnlineAccount]->setEnabled(d->m_plugins.online.count() > 0); } break; @@ -3060,8 +3044,8 @@ // remove the statement files d->unlinkStatementXML(); - QMap::const_iterator it_plugin = d->m_importerPlugins.constBegin(); - while (it_plugin != d->m_importerPlugins.constEnd()) { + QMap::const_iterator it_plugin = d->m_plugins.importer.constBegin(); + while (it_plugin != d->m_plugins.importer.constEnd()) { if ((*it_plugin)->isMyFormat(url)) { QList statements; if (!(*it_plugin)->import(url)) { @@ -3076,7 +3060,7 @@ // If we did not find a match, try importing it as a KMM statement file, // which is really just for testing. the statement file is not exposed // to users. - if (it_plugin == d->m_importerPlugins.constEnd()) + if (it_plugin == d->m_plugins.importer.constEnd()) if (MyMoneyStatement::isStatementFile(url)) MyMoneyStatementReader::importStatement(url, false, &progressCallback); @@ -3104,125 +3088,6 @@ MyMoneySchedule::setProcessingCalendar(this); } -void KMyMoneyApp::loadPlugins() -{ - Q_ASSERT(!d->m_pluginLoader); - d->m_pluginLoader = new KMyMoneyPlugin::PluginLoader(this); - - //! @todo Junior Job: Improve the config read system - KSharedConfigPtr config = KSharedConfig::openConfig(); - KConfigGroup group{ config->group("Plugins") }; - - const auto plugins = KPluginLoader::findPlugins("kmymoney"); - d->m_pluginLoader->addPluginInfo(plugins); - - for (const KPluginMetaData & pluginData : plugins) { - // Only load plugins which are enabled and have the right serviceType. Other serviceTypes are loaded on demand. - if (isPluginEnabled(pluginData, group)) - slotPluginLoad(pluginData); - } - - connect(d->m_pluginLoader, &KMyMoneyPlugin::PluginLoader::pluginEnabled, this, &KMyMoneyApp::slotPluginLoad); - connect(d->m_pluginLoader, &KMyMoneyPlugin::PluginLoader::pluginDisabled, this, &KMyMoneyApp::slotPluginUnload); -} - -void KMyMoneyApp::unloadPlugins() -{ - Q_ASSERT(d->m_pluginLoader); - delete d->m_pluginLoader; -} - -inline bool KMyMoneyApp::isPluginEnabled(const KPluginMetaData& metaData, const KConfigGroup& configGroup) -{ - //! @fixme: there is a function in KMyMoneyPlugin::PluginLoader which has to have the same content - if (metaData.serviceTypes().contains("KMyMoney/Plugin")) { - const QString keyName{metaData.name() + "Enabled"}; - if (configGroup.hasKey(keyName)) - return configGroup.readEntry(keyName, true); - return metaData.isEnabledByDefault(); - } - return false; -} - -void KMyMoneyApp::slotPluginLoad(const KPluginMetaData& metaData) -{ - std::unique_ptr loader{new QPluginLoader{metaData.fileName()}}; - QObject* plugin = loader->instance(); - if (!plugin) { - qWarning("Could not load plugin '%s', error: %s", qPrintable(metaData.fileName()), qPrintable(loader->errorString())); - return; - } - - if ( d->m_plugins.contains(metaData.fileName()) ) { - /** @fixme Handle a reload e.g. objectNames are equal but the object are different (plugin != d->m_plugins[plugin->objectName()]) - * Also it could be useful to drop the dependence on objectName() - */ - - /* Note: there is nothing to delete here because if the plugin was loaded already, - plugin points to the same object as the previously loaded one. */ - return; - } - - KMyMoneyPlugin::Plugin* kmmPlugin = qobject_cast(plugin); - if (!kmmPlugin) { - qWarning("Could not load plugin '%s'.", qPrintable(metaData.fileName())); - return; - } - - // check for online plugin - KMyMoneyPlugin::OnlinePlugin* op = dynamic_cast(plugin); - // check for extended online plugin - KMyMoneyPlugin::OnlinePluginExtended* ope = dynamic_cast(plugin); - // check for importer plugin - KMyMoneyPlugin::ImporterPlugin* ip = dynamic_cast(plugin); - - // Tell the plugin it is about to get plugged - kmmPlugin->plug(); - - // plug the plugin - guiFactory()->addClient(kmmPlugin); - - d->m_plugins[metaData.fileName()] = kmmPlugin; - - if (op) - d->m_onlinePlugins[plugin->objectName()] = op; - - if (ope) - onlineJobAdministration::instance()->addPlugin(plugin->objectName(), ope); - - if (ip) - d->m_importerPlugins[plugin->objectName()] = ip; - - slotUpdateActions(); -} - -void KMyMoneyApp::slotPluginUnload(const KPluginMetaData& metaData) -{ - KMyMoneyPlugin::Plugin* plugin = d->m_plugins[metaData.fileName()]; - - // Remove and test if the plugin was actually loaded - if (!d->m_plugins.remove(metaData.fileName()) || plugin == nullptr) - return; - - // check for online plugin - KMyMoneyPlugin::OnlinePlugin* op = dynamic_cast(plugin); - // check for importer plugin - KMyMoneyPlugin::ImporterPlugin* ip = dynamic_cast(plugin); - - // unplug the plugin - guiFactory()->removeClient(plugin); - - if (op) - d->m_onlinePlugins.remove(plugin->objectName()); - - if (ip) - d->m_importerPlugins.remove(plugin->objectName()); - - plugin->unplug(); - slotUpdateActions(); - -} - void KMyMoneyApp::slotAutoSave() { if (!d->m_inAutoSaving) { @@ -3328,18 +3193,18 @@ // if we have more than one provider let the user select the current provider QString provider; QMap::const_iterator it_p; - switch (d->m_onlinePlugins.count()) { + switch (d->m_plugins.online.count()) { case 0: break; case 1: - provider = d->m_onlinePlugins.begin().key(); + provider = d->m_plugins.online.begin().key(); break; default: { QMenu popup(this); popup.setTitle(i18n("Select online banking plugin")); // Populate the pick list with all the provider - for (it_p = d->m_onlinePlugins.constBegin(); it_p != d->m_onlinePlugins.constEnd(); ++it_p) { + for (it_p = d->m_plugins.online.constBegin(); it_p != d->m_plugins.online.constEnd(); ++it_p) { popup.addAction(it_p.key())->setData(it_p.key()); } @@ -3362,8 +3227,8 @@ return; // find the provider - it_p = d->m_onlinePlugins.constFind(provider); - if (it_p != d->m_onlinePlugins.constEnd()) { + it_p = d->m_plugins.online.constFind(provider); + if (it_p != d->m_plugins.online.constEnd()) { // plugin found, call it MyMoneyKeyValueContainer settings; if ((*it_p)->mapAccount(d->m_selectedAccount, settings)) { @@ -3396,7 +3261,7 @@ // provider is not currently present for (it_a = accList.begin(); it_a != accList.end();) { if (!(*it_a).hasOnlineMapping() - || d->m_onlinePlugins.find((*it_a).onlineBankingSettings().value("provider")) == d->m_onlinePlugins.end()) { + || d->m_plugins.online.find((*it_a).onlineBankingSettings().value("provider").toLower()) == d->m_plugins.online.end()) { it_a = accList.erase(it_a); } else ++it_a; @@ -3408,7 +3273,7 @@ // now work on the remaining list of accounts int cnt = accList.count() - 1; for (it_a = accList.begin(); it_a != accList.end(); ++it_a) { - it_p = d->m_onlinePlugins.constFind((*it_a).onlineBankingSettings().value("provider")); + it_p = d->m_plugins.online.constFind((*it_a).onlineBankingSettings().value("provider").toLower()); (*it_p)->updateAccount(*it_a, cnt != 0); --cnt; } @@ -3437,8 +3302,8 @@ // find the provider QMap::const_iterator it_p; - it_p = d->m_onlinePlugins.constFind(d->m_selectedAccount.onlineBankingSettings().value("provider")); - if (it_p != d->m_onlinePlugins.constEnd()) { + it_p = d->m_plugins.online.constFind(d->m_selectedAccount.onlineBankingSettings().value("provider").toLower()); + if (it_p != d->m_plugins.online.constEnd()) { // plugin found, call it d->m_collectingStatements = true; d->m_statementResults.clear(); diff --git a/kmymoney/mymoney/onlinejobadministration.h b/kmymoney/mymoney/onlinejobadministration.h --- a/kmymoney/mymoney/onlinejobadministration.h +++ b/kmymoney/mymoney/onlinejobadministration.h @@ -201,6 +201,17 @@ template bool isInherited(const QString& taskIid) const; + /** + * @brief makes plugins loaded in KMyMoneyApp available here + * @param plugins + */ + void setOnlinePlugins(QMap& plugins); + + /** + * @brief updates online actions and should be called after plugin enable or disable + */ + void updateActions(); + Q_SIGNALS: /** * @brief Emitted if canSendAnyTask() changed @@ -217,8 +228,6 @@ void canSendCreditTransferChanged(bool); public Q_SLOTS: - void addPlugin(const QString& pluginName, KMyMoneyPlugin::OnlinePluginExtended*); - /** * @brief Slot for plugins to make an onlineTask available. * @param task the task to register, I take ownership @@ -289,7 +298,7 @@ /** * The key is the onlinePlugin's name */ - QMap m_onlinePlugins; + QMap* m_onlinePlugins; /** * The key is the name of the task diff --git a/kmymoney/mymoney/onlinejobadministration.cpp b/kmymoney/mymoney/onlinejobadministration.cpp --- a/kmymoney/mymoney/onlinejobadministration.cpp +++ b/kmymoney/mymoney/onlinejobadministration.cpp @@ -73,26 +73,25 @@ MyMoneyAccount acc = MyMoneyFile::instance()->account(accountId); QMap::const_iterator it_p; - it_p = m_onlinePlugins.constFind(acc.onlineBankingSettings().value("provider")); + it_p = m_onlinePlugins->constFind(acc.onlineBankingSettings().value("provider").toLower()); - if (it_p != m_onlinePlugins.constEnd()) { + if (it_p != m_onlinePlugins->constEnd()) { // plugin found, use it return *it_p; } return 0; } -void onlineJobAdministration::addPlugin(const QString& pluginName, KMyMoneyPlugin::OnlinePluginExtended *plugin) +void onlineJobAdministration::setOnlinePlugins(QMap& plugins) { - const bool sendAnyTask = canSendAnyTask(); - const bool sendCreditTransfer = canSendCreditTransfer(); - - m_onlinePlugins.insert(pluginName, plugin); + m_onlinePlugins = &plugins; + updateActions(); +} - if (!sendAnyTask && canSendAnyTask()) - emit canSendAnyTaskChanged(true); - if (!sendCreditTransfer && canSendCreditTransfer()) - emit canSendCreditTransferChanged(true); +void onlineJobAdministration::updateActions() +{ + emit canSendAnyTaskChanged(canSendAnyTask()); + emit canSendCreditTransferChanged(canSendCreditTransfer()); } QStringList onlineJobAdministration::availableOnlineTasks() @@ -115,7 +114,9 @@ */ bool onlineJobAdministration::isJobSupported(const QString& accountId, const QString& name) const { - foreach (KMyMoneyPlugin::OnlinePluginExtended* plugin, m_onlinePlugins) { + if (!m_onlinePlugins) + return false; + foreach (KMyMoneyPlugin::OnlinePluginExtended* plugin, *m_onlinePlugins) { if (plugin->availableJobs(accountId).contains(name)) return true; } @@ -136,7 +137,10 @@ if (accountId.isEmpty()) return false; - foreach (KMyMoneyPlugin::OnlinePluginExtended* plugin, m_onlinePlugins) { + if (!m_onlinePlugins) + return false; + + foreach (KMyMoneyPlugin::OnlinePluginExtended* plugin, *m_onlinePlugins) { if (!(plugin->availableJobs(accountId).isEmpty())) return true; } @@ -367,8 +371,11 @@ bool onlineJobAdministration::canSendAnyTask() { + if (!m_onlinePlugins) + return false; + // Check if any plugin supports a loaded online task - foreach (KMyMoneyPlugin::OnlinePluginExtended* plugin, m_onlinePlugins) { + foreach (KMyMoneyPlugin::OnlinePluginExtended* plugin, *m_onlinePlugins) { QList accounts; MyMoneyFile::instance()->accountList(accounts, QStringList(), true); foreach (MyMoneyAccount account, accounts) { @@ -383,10 +390,13 @@ bool onlineJobAdministration::canSendCreditTransfer() { + if (!m_onlinePlugins) + return false; + foreach (onlineTask* task, m_onlineTasks) { // Check if a online task has the correct type if (dynamic_cast(task) != 0) { - foreach (KMyMoneyPlugin::OnlinePluginExtended* plugin, m_onlinePlugins) { + foreach (KMyMoneyPlugin::OnlinePluginExtended* plugin, *m_onlinePlugins) { QList accounts; MyMoneyFile::instance()->accountList(accounts, QStringList(), true); foreach (MyMoneyAccount account, accounts) { diff --git a/kmymoney/pluginloader.h b/kmymoney/pluginloader.h --- a/kmymoney/pluginloader.h +++ b/kmymoney/pluginloader.h @@ -1,9 +1,7 @@ /*************************************************************************** pluginloader.h ------------------- - begin : Thu Feb 12 2009 - copyright : (C) 2009 Cristian Onet - email : onet.cristian@gmail.com + (C) 2017 by Łukasz Wojniłowicz ***************************************************************************/ /*************************************************************************** @@ -18,78 +16,79 @@ #ifndef PLUGINLOADER_H #define PLUGINLOADER_H -#include -#include -#include +// ---------------------------------------------------------------------------- +// QT Includes -class KPluginSelector; -class KConfigGroup; +#include -namespace KMyMoneyPlugin -{ -class Plugin; - -/** - * @brief User Interface for plugins - * - * For historic reasons it is still called plugin loader even though it does not load any plugin anymore. - */ -class PluginLoader : public QObject -{ - Q_OBJECT -public: - explicit PluginLoader(QObject* parent); +// ---------------------------------------------------------------------------- +// KDE Includes +// ---------------------------------------------------------------------------- +// Project Includes - /** - * Needed to delete the unique_ptr which is of incomplete type in the header file - */ - virtual ~PluginLoader(); - static PluginLoader* instance(); +class KPluginMetaData; +class KXMLGUIFactory; - KPluginSelector* pluginSelectorWidget(); - static inline bool isPluginEnabled(const KPluginMetaData& metaData, const KConfigGroup& configGroup); +class QObject; +class QString; -public Q_SLOTS: - /** @brief Adds the given plugins to the plugin selection ui */ - void addPluginInfo(const QVector& metaData); +template class QMap; - /** @brief Find all available plugins */ - void detectPlugins(); +namespace KMyMoneyPlugin +{ + class Plugin; + class OnlinePlugin; + class OnlinePluginExtended; + class ImporterPlugin; -Q_SIGNALS: - /** Load the shared module and emits plug() */ - void pluginEnabled(const KPluginMetaData& metaData); - void pluginDisabled(const KPluginMetaData& metaData); - void configChanged(Plugin*); // configuration of the plugin has changed not the enabled/disabled state + enum class eListing; -private Q_SLOTS: - void changed(); + /** + * @brief The Action enum is for specifing action on plugins + */ + enum Action { + Load, // load all enabled plugins + Unload, // unload all loaded plugins + Reorganize // load requested and unload unneeded plugins + }; -private: - KPluginSelector* m_pluginSelector; + /** + * @brief The Category enum is some arbitrary categorization of plugins + */ + enum Category { + OnlineBankOperations, + PayeeIdentifier, + StandardPlugin + }; /** - * @{ - * Translated strings - * - * They are created on creation time because they are used as identifiers. + * @brief The Container struct to hold all plugin interfaces */ - QString m_categoryKMyMoneyPlugin; - QString m_categoryOnlineTask; - QString m_categoryPayeeIdentifier; - /** @} */ + struct Container { + QMap standard; // this should contain all loaded plugins because every plugin should inherit Plugin class + QMap online; // casted standard plugin, if such interface is available + QMap extended; // casted standard plugin, if such interface is available + QMap importer; // casted standard plugin, if such interface is available + }; + + Category pluginCategory(const KPluginMetaData& pluginInfo); /** - * @brief All plugins which are listed in the UI - * - * The set contains the plugin file name. - * Maybe it can/should be replaced by something different. + * @brief It lists all kmymoney plugins + * @param onlyEnabled = true if plugins should be listed according to on/off saved state in kmymoneyrc + * @return */ - QSet m_displayedPlugins; + QMap listPlugins(bool onlyEnabled); - QString categoryByPluginType(const KPluginMetaData& mataData); -}; + /** + * @brief It should be used to handle all plugin actions + * @param action Action to be taken to all plugins + * @param ctnPlugins Plugin container to be loaded/unloaded with plugins + * @param parent Parent of plugins. This should be KMyMoneyApp + * @param guiFactory GUI Factory of plugins. This should be GUI Factory of KMyMoneyApp + */ + void pluginHandling(Action action, Container& ctnPlugins, QObject* parent, KXMLGUIFactory* guiFactory); } -#endif /* PLUGINLOADER_H */ +#endif diff --git a/kmymoney/pluginloader.cpp b/kmymoney/pluginloader.cpp --- a/kmymoney/pluginloader.cpp +++ b/kmymoney/pluginloader.cpp @@ -1,9 +1,7 @@ /*************************************************************************** pluginloader.cpp ------------------- - begin : Thu Feb 12 2009 - copyright : (C) 2009 Cristian Onet - email : onet.cristian@gmail.com + (C) 2017 by Łukasz Wojniłowicz ***************************************************************************/ /*************************************************************************** @@ -20,128 +18,131 @@ // ---------------------------------------------------------------------------- // QT Includes -#include - // ---------------------------------------------------------------------------- // KDE Includes -#include -#include #include -#include +#include +#include +#include +#include #include // ---------------------------------------------------------------------------- // Project Includes +#include "kmymoneyplugin.h" +#include "onlinepluginextended.h" + namespace KMyMoneyPlugin { + Category pluginCategory(const KPluginMetaData& pluginInfo) + { + if (!pluginInfo.serviceTypes().contains(QStringLiteral("KMyMoney/Plugin"))) { + auto jsonKMyMoneyData = pluginInfo.rawData()[QLatin1String("KMyMoney")].toObject(); + if (!jsonKMyMoneyData[QLatin1String("OnlineTask")].isNull()) + return OnlineBankOperations; + else if (!jsonKMyMoneyData[QLatin1String("PayeeIdentifier")].isNull()) + return PayeeIdentifier; + } + return StandardPlugin; + } -//--------------------------------------------------------------------- -// -// PluginLoader -// -//--------------------------------------------------------------------- -static PluginLoader* s_instance = nullptr; + bool isPluginEnabled(const KPluginMetaData& pluginData, const KConfigGroup& pluginSection) + { + return pluginSection.readEntry(QString::fromLatin1("%1Enabled"). // we search here for e.g. "csvimporterEnabled = true" + arg(pluginData.pluginId()), + pluginData.isEnabledByDefault()); // if not found, then get default from plugin's json file + } -PluginLoader::PluginLoader(QObject* parent) - : QObject(parent), - m_displayedPlugins{} -{ - Q_ASSERT(s_instance == nullptr); - s_instance = this; + QMap listPlugins(bool onlyEnabled) + { + QMap plugins; + const auto pluginDatas = KPluginLoader::findPlugins(QStringLiteral("kmymoney")); // that means search for plugins in "/lib64/plugins/kmymoney/" + const auto pluginSection(KSharedConfig::openConfig()->group(QStringLiteral("Plugins"))); // section of config where plugin on/off were saved + + for (const KPluginMetaData& pluginData : pluginDatas) { + if (pluginData.serviceTypes().contains(QStringLiteral("KMyMoney/Plugin"))) { + if (!onlyEnabled || + (onlyEnabled && isPluginEnabled(pluginData, pluginSection))) { + plugins.insert(pluginData.pluginId(), pluginData); + } + } + } + return plugins; + } - m_categoryKMyMoneyPlugin = i18n("KMyMoney Plugins"); - m_categoryOnlineTask = i18n("Online Banking Operations"); - m_categoryPayeeIdentifier = i18n("Payee Identifier"); + void pluginHandling(Action action, Container& ctnPlugins, QObject* parent, KXMLGUIFactory* guiFactory) + { + + QMap referencePluginDatas; + if (action == Action::Load || + action == Action::Reorganize) + referencePluginDatas = listPlugins(true); + + if (action == Action::Unload || + action == Action::Reorganize) { + auto& plugins = ctnPlugins.standard; + auto& refPlugins = referencePluginDatas; + for (auto it = plugins.begin(); it != plugins.end();) { + if (!refPlugins.contains(it.key())) { + + ctnPlugins.online.remove(it.key()); + ctnPlugins.extended.remove(it.key()); + ctnPlugins.importer.remove(it.key()); + + guiFactory->removeClient(it.value()); + it.value()->unplug(); + delete it.value(); + it = plugins.erase(it); + continue; + + } + ++it; + } + } - m_pluginSelector = new KPluginSelector(); - connect(m_pluginSelector, &KPluginSelector::configCommitted, this, &PluginLoader::changed); -} + if (action == Action::Load || + action == Action::Reorganize) { -PluginLoader::~PluginLoader() -{ - Q_ASSERT(s_instance != nullptr); + auto& refPlugins = referencePluginDatas; + for (auto it = refPlugins.cbegin(); it != refPlugins.cend(); ++it) { + if (!ctnPlugins.standard.contains(it.key())) { - KSharedConfigPtr config = KSharedConfig::openConfig(); - KConfigGroup group{ config->group("Plugins") }; + KPluginLoader loader((*it).fileName()); + auto factory = loader.factory(); + if (!factory) { + qWarning("Could not load plugin '%s', error: %s", qPrintable((*it).fileName()), qPrintable(loader.errorString())); + loader.unload(); + continue; + } - for (const QString& fileName: m_displayedPlugins) { - KPluginMetaData pluginData{fileName}; - pluginDisabled(pluginData); - } + Plugin* plugin = factory->create(parent); + if (!plugin) { + qWarning("This is not KMyMoney plugin: '%s'", qPrintable((*it).fileName())); + loader.unload(); + continue; + } - delete m_pluginSelector; - s_instance = nullptr; -} + ctnPlugins.standard.insert((*it).pluginId(), plugin); + plugin->plug(); + guiFactory->addClient(plugin); -void PluginLoader::detectPlugins() -{ - addPluginInfo(KPluginLoader::findPlugins("kmymoney")); -} + auto IOnline = qobject_cast(plugin); + if (IOnline) + ctnPlugins.online.insert((*it).pluginId(), IOnline); -inline bool PluginLoader::isPluginEnabled(const KPluginMetaData& metaData, const KConfigGroup& configGroup) -{ - //! @fixme: there is a function in KMyMoneyApp which has to have the same content - if (metaData.serviceTypes().contains("KMyMoney/Plugin")) { - const QString keyName{metaData.name() + "Enabled"}; - if (configGroup.hasKey(keyName)) - return configGroup.readEntry(keyName, true); - return metaData.isEnabledByDefault(); - } - return false; -} + auto IExtended = qobject_cast(plugin); + if (IExtended ) + ctnPlugins.extended.insert((*it).pluginId(), IExtended ); -void PluginLoader::addPluginInfo(const QVector& metaData) -{ - m_displayedPlugins.reserve(metaData.size()); - for(const auto& plugin: metaData) { - m_displayedPlugins.insert(plugin.fileName()); - KPluginInfo info {plugin}; - KPluginSelector::PluginLoadMethod loadMethod = (plugin.serviceTypes().contains("KMyMoney/Plugin")) - ? KPluginSelector::PluginLoadMethod::ReadConfigFile - : KPluginSelector::PluginLoadMethod::IgnoreConfigFile; - m_pluginSelector->addPlugins(QList {info}, loadMethod, categoryByPluginType(plugin)); - //! @fixme The not all plugins are deactivated correctly at the moment. This has to change or the user should not get any option to enable and disable them - } -} + auto IImporter = qobject_cast(plugin); + if (IImporter) + ctnPlugins.importer.insert((*it).pluginId(), IImporter); -QString PluginLoader::categoryByPluginType(const KPluginMetaData& mataData) -{ - if (!mataData.serviceTypes().contains("KMyMoney/Plugin")) { - QJsonObject jsonKMyMoneyData = mataData.rawData()["KMyMoney"].toObject(); - if (!jsonKMyMoneyData["OnlineTask"].isNull()) - return m_categoryOnlineTask; - else if (!jsonKMyMoneyData["PayeeIdentifier"].isNull()) - return m_categoryPayeeIdentifier; - } - return m_categoryKMyMoneyPlugin; -} + } + } -void PluginLoader::changed() -{ - KSharedConfigPtr config = KSharedConfig::openConfig(); - KConfigGroup group{ config->group("Plugins") }; - - for (const QString& fileName: m_displayedPlugins) { - KPluginMetaData pluginData{fileName}; - if (isPluginEnabled(pluginData, group)) { - pluginEnabled(pluginData); - } else { - pluginDisabled(pluginData); } } } - -PluginLoader* PluginLoader::instance() -{ - Q_ASSERT(s_instance); - return s_instance; -} - -KPluginSelector* PluginLoader::pluginSelectorWidget() -{ - return m_pluginSelector; -} - -} // namespace diff --git a/kmymoney/plugins/CMakeLists.txt b/kmymoney/plugins/CMakeLists.txt --- a/kmymoney/plugins/CMakeLists.txt +++ b/kmymoney/plugins/CMakeLists.txt @@ -4,15 +4,8 @@ add_subdirectory( csv ) add_subdirectory( qif ) add_subdirectory( gnc ) - -if(ENABLE_LIBOFX) - add_subdirectory( ofximport ) -endif(ENABLE_LIBOFX) - -if (LIBICAL_FOUND) - add_subdirectory( icalendarexport ) -endif (LIBICAL_FOUND) - +add_subdirectory( ofx ) +add_subdirectory( icalendar ) add_subdirectory( reconciliationreport ) add_subdirectory( printcheck ) diff --git a/kmymoney/plugins/csv/export/CMakeLists.txt b/kmymoney/plugins/csv/export/CMakeLists.txt --- a/kmymoney/plugins/csv/export/CMakeLists.txt +++ b/kmymoney/plugins/csv/export/CMakeLists.txt @@ -1,33 +1,33 @@ # patch the version with the version defined in the build system -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/csvexport.json.in ${CMAKE_CURRENT_BINARY_DIR}/csvexport.json @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/csvexporter.json.in ${CMAKE_CURRENT_BINARY_DIR}/csvexporter.json @ONLY) ########### next target ############### -set(kmm_csvexport_PART_SRCS +set(csvexporter_PART_SRCS + csvexporter.cpp csvwriter.cpp - csvexporterplugin.cpp csvexportdlg.cpp ) -ki18n_wrap_ui(kmm_csvexport_PART_SRCS +ki18n_wrap_ui(csvexporter_PART_SRCS csvexportdlg.ui ) -add_library(kmm_csvexport MODULE - ${kmm_csvexport_PART_SRCS} +add_library(csvexporter MODULE + ${csvexporter_PART_SRCS} ) -target_link_libraries(kmm_csvexport +target_link_libraries(csvexporter kmm_mymoney kmm_plugin Alkimia::alkimia ) ########### install files ############### -install(FILES kmm_csvexport.rc - DESTINATION "${KXMLGUI_INSTALL_DIR}/kmm_csvexport") +install(FILES csvexporter.rc + DESTINATION "${KXMLGUI_INSTALL_DIR}/csvexporter") -install(TARGETS kmm_csvexport +install(TARGETS csvexporter DESTINATION "${KDE_INSTALL_PLUGINDIR}/kmymoney/") diff --git a/kmymoney/plugins/csv/export/csvexporterplugin.h b/kmymoney/plugins/csv/export/csvexporter.h rename from kmymoney/plugins/csv/export/csvexporterplugin.h rename to kmymoney/plugins/csv/export/csvexporter.h --- a/kmymoney/plugins/csv/export/csvexporterplugin.h +++ b/kmymoney/plugins/csv/export/csvexporter.h @@ -1,5 +1,5 @@ /*************************************************************************** - csvexporterplugin.h + csvexporter.h ------------------- begin : Wed Mar 20 2013 copyright : (C) 2013 by Allan Anderson @@ -15,8 +15,8 @@ * * ***************************************************************************/ -#ifndef CSVEXPORTERPLUGIN_H -#define CSVEXPORTERPLUGIN_H +#ifndef CSVEXPORTER_H +#define CSVEXPORTER_H // ---------------------------------------------------------------------------- // KDE Includes @@ -30,14 +30,13 @@ class CsvExportDlg; -class CsvExporterPlugin : public KMyMoneyPlugin::Plugin +class CSVExporter : public KMyMoneyPlugin::Plugin { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.kmymoney.plugins.csvexport" FILE "csvexport.json") public: - explicit CsvExporterPlugin(); - ~CsvExporterPlugin(); + explicit CSVExporter(QObject *parent, const QVariantList &args); + ~CSVExporter() override; QAction* m_action; bool okToWriteFile(const QUrl &url); diff --git a/kmymoney/plugins/csv/export/csvexporterplugin.cpp b/kmymoney/plugins/csv/export/csvexporter.cpp rename from kmymoney/plugins/csv/export/csvexporterplugin.cpp rename to kmymoney/plugins/csv/export/csvexporter.cpp --- a/kmymoney/plugins/csv/export/csvexporterplugin.cpp +++ b/kmymoney/plugins/csv/export/csvexporter.cpp @@ -1,6 +1,5 @@ /*************************************************************************** - csvexporterplugin.cpp - (based on ofximporterplugin.cpp) + csvexporter.cpp ------------------- begin : Wed Mar 20 2013 copyright : (C) 2013 by Allan Anderson @@ -16,7 +15,7 @@ * * ***************************************************************************/ -#include "csvexporterplugin.h" +#include "csvexporter.h" #include "csvexportdlg.h" #include "csvwriter.h" // ---------------------------------------------------------------------------- @@ -27,44 +26,47 @@ // ---------------------------------------------------------------------------- // KDE Includes +#include #include #include #include #include // ---------------------------------------------------------------------------- // Project Includes -CsvExporterPlugin::CsvExporterPlugin() : - KMyMoneyPlugin::Plugin(nullptr, "csvexport"/*must be the same as X-KDE-PluginInfo-Name*/) +CSVExporter::CSVExporter(QObject *parent, const QVariantList &args) : + KMyMoneyPlugin::Plugin(parent, "csvexporter"/*must be the same as X-KDE-PluginInfo-Name*/) { - setComponentName("kmm_csvexport", i18n("CSV exporter")); - setXMLFile("kmm_csvexport.rc"); + Q_UNUSED(args); + setComponentName("csvexporter", i18n("CSV exporter")); + setXMLFile("csvexporter.rc"); createActions(); // For information, announce that we have been loaded. - qDebug("KMyMoney csvexport plugin loaded"); + qDebug("Plugins: csvexporter loaded"); } -CsvExporterPlugin::~CsvExporterPlugin() +CSVExporter::~CSVExporter() { + qDebug("Plugins: csvexporter unloaded"); } -void CsvExporterPlugin::createActions() +void CSVExporter::createActions() { m_action = actionCollection()->addAction("file_export_csv"); m_action->setText(i18n("&CSV...")); - connect(m_action, SIGNAL(triggered(bool)), this, SLOT(slotCsvExport())); + connect(m_action, &QAction::triggered, this, &CSVExporter::slotCsvExport); } -void CsvExporterPlugin::slotCsvExport() +void CSVExporter::slotCsvExport() { m_dlg = new CsvExportDlg(); if (m_dlg->exec()) { if (okToWriteFile(QUrl::fromUserInput(m_dlg->filename()))) { m_dlg->setWindowTitle(i18nc("CSV Exporter dialog title", "CSV Exporter")); CsvWriter* writer = new CsvWriter; writer->m_plugin = this; - connect(writer, SIGNAL(signalProgress(int,int)), m_dlg, SLOT(slotStatusProgressBar(int,int))); + connect(writer, &CsvWriter::signalProgress, m_dlg, &CsvExportDlg::slotStatusProgressBar); writer->write(m_dlg->filename(), m_dlg->accountId(), m_dlg->accountSelected(), m_dlg->categorySelected(), @@ -74,7 +76,7 @@ } } -bool CsvExporterPlugin::okToWriteFile(const QUrl &url) +bool CSVExporter::okToWriteFile(const QUrl &url) { // check if the file exists and warn the user bool reallySaveFile = true; @@ -92,8 +94,12 @@ } if (fileExists) { - if (KMessageBox::warningYesNo(0, QString("") + i18n("The file %1 already exists. Do you really want to overwrite it?", url.toDisplayString(QUrl::PreferLocalFile)) + QString(""), i18n("File already exists")) != KMessageBox::Yes) + if (KMessageBox::warningYesNo(0, i18n("The file %1 already exists. Do you really want to overwrite it?", url.toDisplayString(QUrl::PreferLocalFile)), i18n("File already exists")) != KMessageBox::Yes) reallySaveFile = false; } return reallySaveFile; } + +K_PLUGIN_FACTORY_WITH_JSON(CSVExporterFactory, "csvexporter.json", registerPlugin();) + +#include "csvexporter.moc" diff --git a/kmymoney/plugins/csv/export/csvexport.json.in b/kmymoney/plugins/csv/export/csvexporter.json.in rename from kmymoney/plugins/csv/export/csvexport.json.in rename to kmymoney/plugins/csv/export/csvexporter.json.in --- a/kmymoney/plugins/csv/export/csvexport.json.in +++ b/kmymoney/plugins/csv/export/csvexporter.json.in @@ -38,7 +38,7 @@ "Description[zh_TW]": "匯入 CSV 檔到 KMyMoney", "EnabledByDefault": true, "Icon": "document-export", - "Id": "csvexport", + "Id": "csvexporter", "License": "GPL", "Name": "CSV Exporter", "Name[ar]": "تصدير CSV", diff --git a/kmymoney/plugins/csv/export/kmm_csvexport.rc b/kmymoney/plugins/csv/export/csvexporter.rc rename from kmymoney/plugins/csv/export/kmm_csvexport.rc rename to kmymoney/plugins/csv/export/csvexporter.rc diff --git a/kmymoney/plugins/csv/export/csvwriter.h b/kmymoney/plugins/csv/export/csvwriter.h --- a/kmymoney/plugins/csv/export/csvwriter.h +++ b/kmymoney/plugins/csv/export/csvwriter.h @@ -34,7 +34,7 @@ class QTextStream; class MyMoneyTransaction; class MyMoneySplit; -class CsvExporterPlugin; +class CSVExporter; /** * @author Thomas Baumgart @@ -54,7 +54,7 @@ CsvWriter(); ~CsvWriter(); - CsvExporterPlugin* m_plugin; + CSVExporter* m_plugin; /** * This method is used to start the conversion. The parameters control diff --git a/kmymoney/plugins/csv/export/csvwriter.cpp b/kmymoney/plugins/csv/export/csvwriter.cpp --- a/kmymoney/plugins/csv/export/csvwriter.cpp +++ b/kmymoney/plugins/csv/export/csvwriter.cpp @@ -43,7 +43,7 @@ #include "mymoneypayee.h" #include "mymoneyexception.h" #include "csvexportdlg.h" -#include "csvexporterplugin.h" +#include "csvexporter.h" #include "mymoneyenums.h" CsvWriter::CsvWriter() : diff --git a/kmymoney/plugins/csv/import/CMakeLists.txt b/kmymoney/plugins/csv/import/CMakeLists.txt --- a/kmymoney/plugins/csv/import/CMakeLists.txt +++ b/kmymoney/plugins/csv/import/CMakeLists.txt @@ -5,12 +5,12 @@ endif() # patch the version with the version defined in the build system -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/csvimport.json.in ${CMAKE_CURRENT_BINARY_DIR}/csvimport.json @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/csvimporter.json.in ${CMAKE_CURRENT_BINARY_DIR}/csvimporter.json @ONLY) ########### next target ############### -set(kmm_csvimport_PART_SRCS - csvimporterplugin.cpp +set(csvimporter_PART_SRCS + csvimporter.cpp csvwizard.cpp bankingwizardpage.cpp investmentwizardpage.cpp @@ -21,9 +21,9 @@ currenciesdlg.cpp ) -kconfig_add_kcfg_files(kmm_csvimport_PART_SRCS pluginsettings.kcfgc) +kconfig_add_kcfg_files(csvimporter_PART_SRCS pluginsettings.kcfgc) -ki18n_wrap_ui(kmm_csvimport_PART_SRCS +ki18n_wrap_ui(csvimporter_PART_SRCS csvwizard.ui transactiondlg.ui introwizardpage.ui @@ -39,42 +39,42 @@ ) # Use static library for tests and prices importer only -add_library(kmm_csvimport MODULE ${kmm_csvimport_PART_SRCS}) +add_library(csvimporter MODULE ${csvimporter_PART_SRCS}) -target_link_libraries(kmm_csvimport +target_link_libraries(csvimporter PUBLIC - kmm_csvimport_core + kmm_csvimportercore kmm_plugin ) ########### install files ############### -install(FILES kmm_csvimport.rc - DESTINATION "${KXMLGUI_INSTALL_DIR}/kmm_csvimport") +install(FILES csvimporter.rc + DESTINATION "${KXMLGUI_INSTALL_DIR}/csvimporter") -install(TARGETS kmm_csvimport +install(TARGETS csvimporter DESTINATION "${KDE_INSTALL_PLUGINDIR}/kmymoney/") # the KCM module -set(kcm_kmm_csvimport_PART_SRCS - kcm_csvimport.cpp +set(kcm_csvimporter_PART_SRCS + kcm_csvimporter.cpp ) -kconfig_add_kcfg_files(kcm_kmm_csvimport_PART_SRCS pluginsettings.kcfgc) +kconfig_add_kcfg_files(kcm_csvimporter_PART_SRCS pluginsettings.kcfgc) -ki18n_wrap_ui(kcm_kmm_csvimport_PART_SRCS pluginsettingsdecl.ui) +ki18n_wrap_ui(kcm_csvimporter_PART_SRCS pluginsettingsdecl.ui) -add_library(kcm_kmm_csvimport MODULE ${kcm_kmm_csvimport_PART_SRCS}) +add_library(kcm_csvimporter MODULE ${kcm_csvimporter_PART_SRCS}) -kcoreaddons_desktop_to_json(kcm_kmm_csvimport kcm_kmm_csvimport.desktop) +kcoreaddons_desktop_to_json(kcm_csvimporter kcm_csvimporter.desktop) -target_link_libraries(kcm_kmm_csvimport +target_link_libraries(kcm_csvimporter KF5::I18n KF5::ConfigWidgets ) -install(TARGETS kcm_kmm_csvimport +install(TARGETS kcm_csvimporter DESTINATION ${KDE_INSTALL_PLUGINDIR}) -install(FILES kcm_kmm_csvimport.desktop +install(FILES kcm_csvimporter.desktop DESTINATION ${SERVICES_INSTALL_DIR}) diff --git a/kmymoney/plugins/csv/import/bankingwizardpage.h b/kmymoney/plugins/csv/import/bankingwizardpage.h --- a/kmymoney/plugins/csv/import/bankingwizardpage.h +++ b/kmymoney/plugins/csv/import/bankingwizardpage.h @@ -46,7 +46,7 @@ Q_OBJECT public: - explicit BankingPage(CSVWizard *dlg, CSVImporter *imp); + explicit BankingPage(CSVWizard *dlg, CSVImporterCore *imp); ~BankingPage(); bool validateCreditDebit(); diff --git a/kmymoney/plugins/csv/import/bankingwizardpage.cpp b/kmymoney/plugins/csv/import/bankingwizardpage.cpp --- a/kmymoney/plugins/csv/import/bankingwizardpage.cpp +++ b/kmymoney/plugins/csv/import/bankingwizardpage.cpp @@ -35,13 +35,13 @@ // Project Includes #include "csvwizard.h" -#include "csvimporter.h" +#include "core/csvimportercore.h" #include "ui_bankingwizardpage.h" // ---------------------------------------------------------------------------- -BankingPage::BankingPage(CSVWizard *dlg, CSVImporter *imp) : +BankingPage::BankingPage(CSVWizard *dlg, CSVImporterCore *imp) : CSVWizardPage(dlg, imp), ui(new Ui::BankingPage) { diff --git a/kmymoney/plugins/csv/import/core/CMakeLists.txt b/kmymoney/plugins/csv/import/core/CMakeLists.txt --- a/kmymoney/plugins/csv/import/core/CMakeLists.txt +++ b/kmymoney/plugins/csv/import/core/CMakeLists.txt @@ -4,20 +4,20 @@ ########### next target ############### -set(kmm_csvimport_core_PART_SRCS - csvimporter.cpp +set(csvimportercore_PART_SRCS + csvimportercore.cpp convdate.cpp csvutil.cpp ) -add_library(kmm_csvimport_core SHARED ${kmm_csvimport_core_PART_SRCS}) -generate_export_header(kmm_csvimport_core) -target_link_libraries(kmm_csvimport_core +add_library(kmm_csvimportercore SHARED ${csvimportercore_PART_SRCS}) +generate_export_header(kmm_csvimportercore) +target_link_libraries(kmm_csvimportercore PUBLIC kmm_mymoney ) ########### install files ############### -install(TARGETS kmm_csvimport_core +install(TARGETS kmm_csvimportercore ${INSTALL_TARGETS_DEFAULT_ARGS} ) diff --git a/kmymoney/plugins/csv/import/core/convdate.h b/kmymoney/plugins/csv/import/core/convdate.h --- a/kmymoney/plugins/csv/import/core/convdate.h +++ b/kmymoney/plugins/csv/import/core/convdate.h @@ -23,9 +23,9 @@ #include #include "csvenums.h" -#include "csv/import/core/kmm_csvimport_core_export.h" +#include "csv/import/core/kmm_csvimportercore_export.h" -class KMM_CSVIMPORT_CORE_EXPORT ConvertDate +class KMM_CSVIMPORTERCORE_EXPORT ConvertDate { public: diff --git a/kmymoney/plugins/csv/import/core/csvimporter.h b/kmymoney/plugins/csv/import/core/csvimportercore.h rename from kmymoney/plugins/csv/import/core/csvimporter.h rename to kmymoney/plugins/csv/import/core/csvimportercore.h --- a/kmymoney/plugins/csv/import/core/csvimporter.h +++ b/kmymoney/plugins/csv/import/core/csvimportercore.h @@ -1,5 +1,5 @@ /*************************************************************************** - csvimporter.h + csvimportercore.h ------------------- begin : Sun May 21 2017 copyright : (C) 2015 by Allan Anderson @@ -17,8 +17,8 @@ * * ***************************************************************************/ -#ifndef CSVIMPORTER_H -#define CSVIMPORTER_H +#ifndef CSVIMPORTERCORE_H +#define CSVIMPORTERCORE_H // ---------------------------------------------------------------------------- // KDE Includes @@ -33,7 +33,7 @@ #include "mymoneystatement.h" #include "csvenums.h" -#include "csv/import/core/kmm_csvimport_core_export.h" +#include "csv/import/core/kmm_csvimportercore_export.h" class MyMoneyAccount; class KConfigGroup; @@ -60,7 +60,7 @@ enum validationResultE { ValidActionType, InvalidActionValues, NoActionType }; -class KMM_CSVIMPORT_CORE_NO_EXPORT CSVProfile +class KMM_CSVIMPORTERCORE_NO_EXPORT CSVProfile { protected: CSVProfile() {} @@ -107,7 +107,7 @@ QMap m_colNumType; }; -class KMM_CSVIMPORT_CORE_EXPORT BankingProfile : public CSVProfile +class KMM_CSVIMPORTERCORE_EXPORT BankingProfile : public CSVProfile { public: explicit BankingProfile() : CSVProfile() {} @@ -132,7 +132,7 @@ bool m_oppositeSigns; }; -class KMM_CSVIMPORT_CORE_EXPORT InvestmentProfile : public CSVProfile +class KMM_CSVIMPORTERCORE_EXPORT InvestmentProfile : public CSVProfile { public: explicit InvestmentProfile() : CSVProfile() {} @@ -166,7 +166,7 @@ bool m_feeIsPercentage; }; -class KMM_CSVIMPORT_CORE_EXPORT PricesProfile : public CSVProfile +class KMM_CSVIMPORTERCORE_EXPORT PricesProfile : public CSVProfile { public: explicit PricesProfile() : CSVProfile() {} @@ -196,7 +196,7 @@ Profile m_profileType; }; -class KMM_CSVIMPORT_CORE_EXPORT CSVFile +class KMM_CSVIMPORTERCORE_EXPORT CSVFile { public: explicit CSVFile(); @@ -233,11 +233,11 @@ int m_rowCount; }; -class KMM_CSVIMPORT_CORE_EXPORT CSVImporter +class KMM_CSVIMPORTERCORE_EXPORT CSVImporterCore { public: - explicit CSVImporter(); - ~CSVImporter(); + explicit CSVImporterCore(); + ~CSVImporterCore(); /** * This method will silently import csv file. Main purpose of this method are online quotes. diff --git a/kmymoney/plugins/csv/import/core/csvimporter.cpp b/kmymoney/plugins/csv/import/core/csvimportercore.cpp rename from kmymoney/plugins/csv/import/core/csvimporter.cpp rename to kmymoney/plugins/csv/import/core/csvimportercore.cpp --- a/kmymoney/plugins/csv/import/core/csvimporter.cpp +++ b/kmymoney/plugins/csv/import/core/csvimportercore.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - csvimporter.cpp + csvimportercore.cpp ------------------- begin : Sun May 21 2017 copyright : (C) 2010 by Allan Anderson @@ -17,7 +17,7 @@ * * ***************************************************************************/ -#include "csvimporter.h" +#include "csvimportercore.h" // ---------------------------------------------------------------------------- // QT Includes @@ -47,14 +47,14 @@ #include "convdate.h" #include "mymoneyenums.h" -const QHash CSVImporter::m_profileConfPrefix { +const QHash CSVImporterCore::m_profileConfPrefix { {Profile::Banking, QStringLiteral("Bank")}, {Profile::Investment, QStringLiteral("Invest")}, {Profile::CurrencyPrices, QStringLiteral("CPrices")}, {Profile::StockPrices, QStringLiteral("SPrices")} }; -const QHash CSVImporter::m_colTypeConfName { +const QHash CSVImporterCore::m_colTypeConfName { {Column::Date, QStringLiteral("DateCol")}, {Column::Memo, QStringLiteral("MemoCol")}, {Column::Number, QStringLiteral("NumberCol")}, @@ -71,7 +71,7 @@ {Column::Name, QStringLiteral("NameCol")}, }; -const QHash CSVImporter::m_miscSettingsConfName { +const QHash CSVImporterCore::m_miscSettingsConfName { {ConfDirectory, QStringLiteral("Directory")}, {ConfEncoding, QStringLiteral("Encoding")}, {ConfDateFormat, QStringLiteral("DateFormat")}, @@ -93,7 +93,7 @@ {ConfWidth, QStringLiteral("Width")} }; -const QHash CSVImporter::m_transactionConfName { +const QHash CSVImporterCore::m_transactionConfName { {eMyMoney::Transaction::Action::Buy, QStringLiteral("BuyParam")}, {eMyMoney::Transaction::Action::Sell, QStringLiteral("SellParam")}, {eMyMoney::Transaction::Action::ReinvestDividend, QStringLiteral("ReinvdivParam")}, @@ -103,11 +103,11 @@ {eMyMoney::Transaction::Action::Shrsout, QStringLiteral("ShrsoutParam")} }; -const QString CSVImporter::m_confProfileNames = QStringLiteral("ProfileNames"); -const QString CSVImporter::m_confPriorName = QStringLiteral("Prior"); -const QString CSVImporter::m_confMiscName = QStringLiteral("Misc"); +const QString CSVImporterCore::m_confProfileNames = QStringLiteral("ProfileNames"); +const QString CSVImporterCore::m_confPriorName = QStringLiteral("Prior"); +const QString CSVImporterCore::m_confMiscName = QStringLiteral("Misc"); -CSVImporter::CSVImporter() +CSVImporterCore::CSVImporterCore() : m_profile(0) { m_convertDate = new ConvertDate; @@ -118,13 +118,13 @@ validateConfigFile(); readMiscSettings(); } -CSVImporter::~CSVImporter() +CSVImporterCore::~CSVImporterCore() { delete m_convertDate; delete m_file; } -MyMoneyStatement CSVImporter::unattendedImport(const QString &filename, CSVProfile *profile) +MyMoneyStatement CSVImporterCore::unattendedImport(const QString &filename, CSVProfile *profile) { MyMoneyStatement st; m_profile = profile; @@ -146,13 +146,13 @@ return st; } -KSharedConfigPtr CSVImporter::configFile() +KSharedConfigPtr CSVImporterCore::configFile() { return KSharedConfig::openConfig(QDir(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation)) .filePath(QStringLiteral("csvimporterrc"))); } -void CSVImporter::profileFactory(const Profile type, const QString &name) +void CSVImporterCore::profileFactory(const Profile type, const QString &name) { // delete current profile if (m_profile) { @@ -176,7 +176,7 @@ m_profile->m_profileName = name; } -void CSVImporter::readMiscSettings() { +void CSVImporterCore::readMiscSettings() { KConfigGroup miscGroup(configFile(), m_confMiscName); m_autodetect.clear(); m_autodetect.insert(AutoFieldDelimiter, miscGroup.readEntry(QStringLiteral("AutoFieldDelimiter"), true)); @@ -186,7 +186,7 @@ m_autodetect.insert(AutoAccountBank, miscGroup.readEntry(QStringLiteral("AutoAccountBank"), true)); } -void CSVImporter::validateConfigFile() +void CSVImporterCore::validateConfigFile() { const KSharedConfigPtr config = configFile(); KConfigGroup profileNamesGroup(config, m_confProfileNames); @@ -204,17 +204,17 @@ KConfigGroup miscGroup(config, m_confMiscName); if (!miscGroup.exists()) { - miscGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfHeight), "400"); - miscGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfWidth), "800"); + miscGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfHeight), "400"); + miscGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfWidth), "800"); miscGroup.sync(); } QList confVer = miscGroup.readEntry("KMMVer", QList {0, 0, 0}); if (updateConfigFile(confVer)) // write kmmVer only if there were no errors miscGroup.writeEntry("KMMVer", confVer); } -bool CSVImporter::updateConfigFile(QList &confVer) +bool CSVImporterCore::updateConfigFile(QList &confVer) { bool ret = true; @@ -367,7 +367,7 @@ return ret; } -bool CSVImporter::profilesAction(const Profile type, const ProfileAction action, const QString &name, const QString &newname) +bool CSVImporterCore::profilesAction(const Profile type, const ProfileAction action, const QString &name, const QString &newname) { bool ret = false; const KSharedConfigPtr config = configFile(); @@ -418,7 +418,7 @@ return ret; } -bool CSVImporter::validateDateFormat(const int col) +bool CSVImporterCore::validateDateFormat(const int col) { bool isOK = true; for (int row = m_profile->m_startLine; row <= m_profile->m_endLine; ++row) { @@ -432,7 +432,7 @@ return isOK; } -bool CSVImporter::validateDecimalSymbols(const QList &columns) +bool CSVImporterCore::validateDecimalSymbols(const QList &columns) { bool isOK = true; foreach (const auto column, columns) { @@ -453,31 +453,31 @@ return isOK; } -bool CSVImporter::validateCurrencies(const PricesProfile *profile) +bool CSVImporterCore::validateCurrencies(const PricesProfile *profile) { if (profile->m_securitySymbol.isEmpty() || profile->m_currencySymbol.isEmpty()) return false; return true; } -bool CSVImporter::validateSecurity(const PricesProfile *profile) +bool CSVImporterCore::validateSecurity(const PricesProfile *profile) { if (profile->m_securitySymbol.isEmpty() || profile->m_securityName.isEmpty()) return false; return true; } -bool CSVImporter::validateSecurity(const InvestmentProfile *profile) +bool CSVImporterCore::validateSecurity(const InvestmentProfile *profile) { if (profile->m_securitySymbol.isEmpty() || profile->m_securityName.isEmpty()) return false; return true; } -bool CSVImporter::validateSecurities() +bool CSVImporterCore::validateSecurities() { QSet onlySymbols; QSet onlyNames; @@ -488,7 +488,7 @@ return true; } -eMyMoney::Transaction::Action CSVImporter::processActionTypeField(const InvestmentProfile *profile, const int row, const int col) +eMyMoney::Transaction::Action CSVImporterCore::processActionTypeField(const InvestmentProfile *profile, const int row, const int col) { if (col == -1) return eMyMoney::Transaction::Action::None; @@ -508,7 +508,7 @@ return eMyMoney::Transaction::Action::None; } -validationResultE CSVImporter::validateActionType(MyMoneyStatement::Transaction &tr) +validationResultE CSVImporterCore::validateActionType(MyMoneyStatement::Transaction &tr) { validationResultE ret = ValidActionType; QList validActionTypes = createValidActionTypes(tr); @@ -519,7 +519,7 @@ return ret; } -bool CSVImporter::calculateFee() +bool CSVImporterCore::calculateFee() { InvestmentProfile *profile = dynamic_cast(m_profile); if (!profile) @@ -592,7 +592,7 @@ return true; } -DecimalSymbol CSVImporter::detectDecimalSymbol(const int col, const QString &exclude) +DecimalSymbol CSVImporterCore::detectDecimalSymbol(const int col, const QString &exclude) { DecimalSymbol detectedSymbol = DecimalSymbol::Auto; QString pattern; @@ -669,7 +669,7 @@ return detectedSymbol; } -int CSVImporter::detectDecimalSymbols(const QList &columns) +int CSVImporterCore::detectDecimalSymbols(const QList &columns) { int ret = -2; @@ -711,7 +711,7 @@ return ret; } -QList CSVImporter::findAccounts(const QList &accountTypes, const QString &statementHeader) +QList CSVImporterCore::findAccounts(const QList &accountTypes, const QString &statementHeader) { MyMoneyFile* file = MyMoneyFile::instance(); QList accountList; @@ -798,7 +798,7 @@ return filteredAccounts; } -bool CSVImporter::detectAccount(MyMoneyStatement &st) +bool CSVImporterCore::detectAccount(MyMoneyStatement &st) { QString statementHeader; for (int row = 0; row < m_profile->m_startLine; ++row) // concatenate header for better search @@ -857,7 +857,7 @@ return false; } -bool CSVImporter::processBankRow(MyMoneyStatement &st, const BankingProfile *profile, const int row) +bool CSVImporterCore::processBankRow(MyMoneyStatement &st, const BankingProfile *profile, const int row) { MyMoneyStatement::Transaction tr; QString memo; @@ -950,7 +950,7 @@ return true; } -bool CSVImporter::processInvestRow(MyMoneyStatement &st, const InvestmentProfile *profile, const int row) +bool CSVImporterCore::processInvestRow(MyMoneyStatement &st, const InvestmentProfile *profile, const int row) { MyMoneyStatement::Transaction tr; @@ -1061,7 +1061,7 @@ return true; } -bool CSVImporter::processPriceRow(MyMoneyStatement &st, const PricesProfile *profile, const int row) +bool CSVImporterCore::processPriceRow(MyMoneyStatement &st, const PricesProfile *profile, const int row) { MyMoneyStatement::Price pr; @@ -1096,7 +1096,7 @@ return true; } -QDate CSVImporter::processDateField(const int row, const int col) +QDate CSVImporterCore::processDateField(const int row, const int col) { QDate date; if (col != -1) { @@ -1106,7 +1106,7 @@ return date; } -MyMoneyMoney CSVImporter::processCreditDebit(QString &credit, QString &debit) +MyMoneyMoney CSVImporterCore::processCreditDebit(QString &credit, QString &debit) { MyMoneyMoney amount; if (m_profile->m_decimalSymbol == DecimalSymbol::Auto) @@ -1145,7 +1145,7 @@ } -MyMoneyMoney CSVImporter::processQuantityField(const CSVProfile *profile, const int row, const int col) +MyMoneyMoney CSVImporterCore::processQuantityField(const CSVProfile *profile, const int row, const int col) { MyMoneyMoney shares; if (col != -1) { @@ -1161,7 +1161,7 @@ return shares; } -MyMoneyMoney CSVImporter::processAmountField(const CSVProfile *profile, const int row, const int col) +MyMoneyMoney CSVImporterCore::processAmountField(const CSVProfile *profile, const int row, const int col) { MyMoneyMoney amount; if (col != -1) { @@ -1180,7 +1180,7 @@ return amount; } -MyMoneyMoney CSVImporter::processPriceField(const InvestmentProfile *profile, const int row, const int col) +MyMoneyMoney CSVImporterCore::processPriceField(const InvestmentProfile *profile, const int row, const int col) { MyMoneyMoney price; if (col != -1) { @@ -1196,7 +1196,7 @@ return price; } -MyMoneyMoney CSVImporter::processPriceField(const PricesProfile *profile, const int row, const int col) +MyMoneyMoney CSVImporterCore::processPriceField(const PricesProfile *profile, const int row, const int col) { MyMoneyMoney price; if (col != -1) { @@ -1213,7 +1213,7 @@ } -QList CSVImporter::createValidActionTypes(MyMoneyStatement::Transaction &tr) +QList CSVImporterCore::createValidActionTypes(MyMoneyStatement::Transaction &tr) { QList validActionTypes; if (tr.m_shares.isPositive() && @@ -1236,7 +1236,7 @@ } -bool CSVImporter::sortSecurities(QSet& onlySymbols, QSet& onlyNames, QMap& mapSymbolName) +bool CSVImporterCore::sortSecurities(QSet& onlySymbols, QSet& onlyNames, QMap& mapSymbolName) { QList securityList = MyMoneyFile::instance()->securityList(); int symbolCol = m_profile->m_colTypeNum.value(Column::Symbol, -1); @@ -1301,11 +1301,11 @@ return true; } -void CSVImporter::setupFieldDecimalSymbol(int col) { +void CSVImporterCore::setupFieldDecimalSymbol(int col) { m_file->m_parse->setDecimalSymbol(m_decimalSymbolIndexMap.value(col)); } -QList CSVImporter::getNumericalColumns() +QList CSVImporterCore::getNumericalColumns() { QList columns; switch(m_profile->type()) { @@ -1334,7 +1334,7 @@ return columns; } -bool CSVImporter::createStatement(MyMoneyStatement &st) +bool CSVImporterCore::createStatement(MyMoneyStatement &st) { switch (m_profile->type()) { case Profile::Banking: @@ -1413,15 +1413,15 @@ void CSVProfile::readSettings(const KConfigGroup &profilesGroup) { - m_lastUsedDirectory = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfDirectory), QString()); - m_startLine = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfStartLine), 0); - m_trailerLines = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfTrailerLines), 0); - m_encodingMIBEnum = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfEncoding), 106 /* UTF-8 */); - - m_dateFormat = static_cast(profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfDateFormat), (int)DateFormat::YearMonthDay)); - m_textDelimiter = static_cast(profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfTextDelimiter), (int)TextDelimiter::DoubleQuote)); - m_fieldDelimiter = static_cast(profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfFieldDelimiter), (int)FieldDelimiter::Auto)); - m_decimalSymbol = static_cast(profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfDecimalSymbol), (int)DecimalSymbol::Auto)); + m_lastUsedDirectory = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfDirectory), QString()); + m_startLine = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfStartLine), 0); + m_trailerLines = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfTrailerLines), 0); + m_encodingMIBEnum = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfEncoding), 106 /* UTF-8 */); + + m_dateFormat = static_cast(profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfDateFormat), (int)DateFormat::YearMonthDay)); + m_textDelimiter = static_cast(profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfTextDelimiter), (int)TextDelimiter::DoubleQuote)); + m_fieldDelimiter = static_cast(profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfFieldDelimiter), (int)FieldDelimiter::Auto)); + m_decimalSymbol = static_cast(profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfDecimalSymbol), (int)DecimalSymbol::Auto)); initColNumType(); } @@ -1434,190 +1434,190 @@ if (m_lastUsedDirectory.startsWith(QDir::homePath())) // replace /home/user with ~/ for brevity m_lastUsedDirectory.replace(0, QDir::homePath().length(), QLatin1Char('~')); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfDirectory), m_lastUsedDirectory); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfEncoding), m_encodingMIBEnum); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfDateFormat), (int)m_dateFormat); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfFieldDelimiter), (int)m_fieldDelimiter); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfTextDelimiter), (int)m_textDelimiter); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfDecimalSymbol), (int)m_decimalSymbol); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfStartLine), m_startLine); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfTrailerLines), m_trailerLines); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfDirectory), m_lastUsedDirectory); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfEncoding), m_encodingMIBEnum); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfDateFormat), (int)m_dateFormat); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfFieldDelimiter), (int)m_fieldDelimiter); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfTextDelimiter), (int)m_textDelimiter); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfDecimalSymbol), (int)m_decimalSymbol); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfStartLine), m_startLine); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfTrailerLines), m_trailerLines); } bool BankingProfile::readSettings(const KSharedConfigPtr &config) { bool exists = true; - KConfigGroup profilesGroup(config, CSVImporter::m_profileConfPrefix.value(type()) + QLatin1Char('-') + m_profileName); + KConfigGroup profilesGroup(config, CSVImporterCore::m_profileConfPrefix.value(type()) + QLatin1Char('-') + m_profileName); if (!profilesGroup.exists()) exists = false; - m_colTypeNum[Column::Payee] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Payee), -1); - m_colTypeNum[Column::Number] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Number), -1); - m_colTypeNum[Column::Amount] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Amount), -1); - m_colTypeNum[Column::Debit] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Debit), -1); - m_colTypeNum[Column::Credit] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Credit), -1); - m_colTypeNum[Column::Date] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Date), -1); - m_colTypeNum[Column::Category] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Category), -1); + m_colTypeNum[Column::Payee] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Payee), -1); + m_colTypeNum[Column::Number] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Number), -1); + m_colTypeNum[Column::Amount] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Amount), -1); + m_colTypeNum[Column::Debit] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Debit), -1); + m_colTypeNum[Column::Credit] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Credit), -1); + m_colTypeNum[Column::Date] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Date), -1); + m_colTypeNum[Column::Category] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Category), -1); m_colTypeNum[Column::Memo] = -1; // initialize, otherwise random data may go here - m_oppositeSigns = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfOppositeSigns), 0); - m_memoColList = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Memo), QList()); + m_oppositeSigns = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfOppositeSigns), 0); + m_memoColList = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Memo), QList()); CSVProfile::readSettings(profilesGroup); return exists; } void BankingProfile::writeSettings(const KSharedConfigPtr &config) { - KConfigGroup profilesGroup(config, CSVImporter::m_profileConfPrefix.value(type()) + QLatin1Char('-') + m_profileName); + KConfigGroup profilesGroup(config, CSVImporterCore::m_profileConfPrefix.value(type()) + QLatin1Char('-') + m_profileName); CSVProfile::writeSettings(profilesGroup); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfOppositeSigns), m_oppositeSigns); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Payee), + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfOppositeSigns), m_oppositeSigns); + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Payee), m_colTypeNum.value(Column::Payee)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Number), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Number), m_colTypeNum.value(Column::Number)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Amount), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Amount), m_colTypeNum.value(Column::Amount)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Debit), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Debit), m_colTypeNum.value(Column::Debit)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Credit), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Credit), m_colTypeNum.value(Column::Credit)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Date), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Date), m_colTypeNum.value(Column::Date)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Category), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Category), m_colTypeNum.value(Column::Category)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Memo), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Memo), m_memoColList); profilesGroup.config()->sync(); } bool InvestmentProfile::readSettings(const KSharedConfigPtr &config) { bool exists = true; - KConfigGroup profilesGroup(config, CSVImporter::m_profileConfPrefix.value(type()) + QLatin1Char('-') + m_profileName); + KConfigGroup profilesGroup(config, CSVImporterCore::m_profileConfPrefix.value(type()) + QLatin1Char('-') + m_profileName); if (!profilesGroup.exists()) exists = false; - m_transactionNames[eMyMoney::Transaction::Action::Buy] = profilesGroup.readEntry(CSVImporter::m_transactionConfName.value(eMyMoney::Transaction::Action::Buy), + m_transactionNames[eMyMoney::Transaction::Action::Buy] = profilesGroup.readEntry(CSVImporterCore::m_transactionConfName.value(eMyMoney::Transaction::Action::Buy), QString(i18nc("Type of operation as in financial statement", "buy")).split(',', QString::SkipEmptyParts)); - m_transactionNames[eMyMoney::Transaction::Action::Sell] = profilesGroup.readEntry(CSVImporter::m_transactionConfName.value(eMyMoney::Transaction::Action::Sell), + m_transactionNames[eMyMoney::Transaction::Action::Sell] = profilesGroup.readEntry(CSVImporterCore::m_transactionConfName.value(eMyMoney::Transaction::Action::Sell), QString(i18nc("Type of operation as in financial statement", "sell,repurchase")).split(',', QString::SkipEmptyParts)); - m_transactionNames[eMyMoney::Transaction::Action::ReinvestDividend] = profilesGroup.readEntry(CSVImporter::m_transactionConfName.value(eMyMoney::Transaction::Action::ReinvestDividend), + m_transactionNames[eMyMoney::Transaction::Action::ReinvestDividend] = profilesGroup.readEntry(CSVImporterCore::m_transactionConfName.value(eMyMoney::Transaction::Action::ReinvestDividend), QString(i18nc("Type of operation as in financial statement", "reinvest,reinv,re-inv")).split(',', QString::SkipEmptyParts)); - m_transactionNames[eMyMoney::Transaction::Action::CashDividend] = profilesGroup.readEntry(CSVImporter::m_transactionConfName.value(eMyMoney::Transaction::Action::CashDividend), + m_transactionNames[eMyMoney::Transaction::Action::CashDividend] = profilesGroup.readEntry(CSVImporterCore::m_transactionConfName.value(eMyMoney::Transaction::Action::CashDividend), QString(i18nc("Type of operation as in financial statement", "dividend")).split(',', QString::SkipEmptyParts)); - m_transactionNames[eMyMoney::Transaction::Action::Interest] = profilesGroup.readEntry(CSVImporter::m_transactionConfName.value(eMyMoney::Transaction::Action::Interest), + m_transactionNames[eMyMoney::Transaction::Action::Interest] = profilesGroup.readEntry(CSVImporterCore::m_transactionConfName.value(eMyMoney::Transaction::Action::Interest), QString(i18nc("Type of operation as in financial statement", "interest,income")).split(',', QString::SkipEmptyParts)); - m_transactionNames[eMyMoney::Transaction::Action::Shrsin] = profilesGroup.readEntry(CSVImporter::m_transactionConfName.value(eMyMoney::Transaction::Action::Shrsin), + m_transactionNames[eMyMoney::Transaction::Action::Shrsin] = profilesGroup.readEntry(CSVImporterCore::m_transactionConfName.value(eMyMoney::Transaction::Action::Shrsin), QString(i18nc("Type of operation as in financial statement", "add,stock dividend,divd reinv,transfer in,re-registration in,journal entry")).split(',', QString::SkipEmptyParts)); - m_transactionNames[eMyMoney::Transaction::Action::Shrsout] = profilesGroup.readEntry(CSVImporter::m_transactionConfName.value(eMyMoney::Transaction::Action::Shrsout), + m_transactionNames[eMyMoney::Transaction::Action::Shrsout] = profilesGroup.readEntry(CSVImporterCore::m_transactionConfName.value(eMyMoney::Transaction::Action::Shrsout), QString(i18nc("Type of operation as in financial statement", "remove")).split(',', QString::SkipEmptyParts)); - m_colTypeNum[Column::Date] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Date), -1); - m_colTypeNum[Column::Type] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Type), -1); //use for type col. - m_colTypeNum[Column::Price] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Price), -1); - m_colTypeNum[Column::Quantity] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Quantity), -1); - m_colTypeNum[Column::Amount] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Amount), -1); - m_colTypeNum[Column::Name] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Name), -1); - m_colTypeNum[Column::Fee] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Fee), -1); - m_colTypeNum[Column::Symbol] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Symbol), -1); + m_colTypeNum[Column::Date] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Date), -1); + m_colTypeNum[Column::Type] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Type), -1); //use for type col. + m_colTypeNum[Column::Price] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Price), -1); + m_colTypeNum[Column::Quantity] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Quantity), -1); + m_colTypeNum[Column::Amount] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Amount), -1); + m_colTypeNum[Column::Name] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Name), -1); + m_colTypeNum[Column::Fee] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Fee), -1); + m_colTypeNum[Column::Symbol] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Symbol), -1); m_colTypeNum[Column::Memo] = -1; // initialize, otherwise random data may go here - m_feeIsPercentage = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfFeeIsPercentage), false); - m_feeRate = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfFeeRate), QString()); - m_minFee = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfMinFee), QString()); + m_feeIsPercentage = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfFeeIsPercentage), false); + m_feeRate = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfFeeRate), QString()); + m_minFee = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfMinFee), QString()); - m_memoColList = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Memo), QList()); - m_securityName = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfSecurityName), QString()); - m_securitySymbol = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfSecuritySymbol), QString()); - m_dontAsk = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfDontAsk), 0); - m_priceFraction = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfPriceFraction), 2); + m_memoColList = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Memo), QList()); + m_securityName = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfSecurityName), QString()); + m_securitySymbol = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfSecuritySymbol), QString()); + m_dontAsk = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfDontAsk), 0); + m_priceFraction = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfPriceFraction), 2); CSVProfile::readSettings(profilesGroup); return exists; } void InvestmentProfile::writeSettings(const KSharedConfigPtr &config) { - KConfigGroup profilesGroup(config, CSVImporter::m_profileConfPrefix.value(type()) + QLatin1Char('-') + m_profileName); + KConfigGroup profilesGroup(config, CSVImporterCore::m_profileConfPrefix.value(type()) + QLatin1Char('-') + m_profileName); CSVProfile::writeSettings(profilesGroup); - profilesGroup.writeEntry(CSVImporter::m_transactionConfName.value(eMyMoney::Transaction::Action::Buy), + profilesGroup.writeEntry(CSVImporterCore::m_transactionConfName.value(eMyMoney::Transaction::Action::Buy), m_transactionNames.value(eMyMoney::Transaction::Action::Buy)); - profilesGroup.writeEntry(CSVImporter::m_transactionConfName.value(eMyMoney::Transaction::Action::Sell), + profilesGroup.writeEntry(CSVImporterCore::m_transactionConfName.value(eMyMoney::Transaction::Action::Sell), m_transactionNames.value(eMyMoney::Transaction::Action::Sell)); - profilesGroup.writeEntry(CSVImporter::m_transactionConfName.value(eMyMoney::Transaction::Action::ReinvestDividend), + profilesGroup.writeEntry(CSVImporterCore::m_transactionConfName.value(eMyMoney::Transaction::Action::ReinvestDividend), m_transactionNames.value(eMyMoney::Transaction::Action::ReinvestDividend)); - profilesGroup.writeEntry(CSVImporter::m_transactionConfName.value(eMyMoney::Transaction::Action::CashDividend), + profilesGroup.writeEntry(CSVImporterCore::m_transactionConfName.value(eMyMoney::Transaction::Action::CashDividend), m_transactionNames.value(eMyMoney::Transaction::Action::CashDividend)); - profilesGroup.writeEntry(CSVImporter::m_transactionConfName.value(eMyMoney::Transaction::Action::Interest), + profilesGroup.writeEntry(CSVImporterCore::m_transactionConfName.value(eMyMoney::Transaction::Action::Interest), m_transactionNames.value(eMyMoney::Transaction::Action::Interest)); - profilesGroup.writeEntry(CSVImporter::m_transactionConfName.value(eMyMoney::Transaction::Action::Shrsin), + profilesGroup.writeEntry(CSVImporterCore::m_transactionConfName.value(eMyMoney::Transaction::Action::Shrsin), m_transactionNames.value(eMyMoney::Transaction::Action::Shrsin)); - profilesGroup.writeEntry(CSVImporter::m_transactionConfName.value(eMyMoney::Transaction::Action::Shrsout), + profilesGroup.writeEntry(CSVImporterCore::m_transactionConfName.value(eMyMoney::Transaction::Action::Shrsout), m_transactionNames.value(eMyMoney::Transaction::Action::Shrsout)); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfPriceFraction), m_priceFraction); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfFeeIsPercentage), m_feeIsPercentage); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfFeeRate), m_feeRate); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfMinFee), m_minFee); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfSecurityName), m_securityName); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfSecuritySymbol), m_securitySymbol); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfDontAsk), m_dontAsk); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfPriceFraction), m_priceFraction); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfFeeIsPercentage), m_feeIsPercentage); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfFeeRate), m_feeRate); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfMinFee), m_minFee); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfSecurityName), m_securityName); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfSecuritySymbol), m_securitySymbol); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfDontAsk), m_dontAsk); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Date), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Date), m_colTypeNum.value(Column::Date)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Type), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Type), m_colTypeNum.value(Column::Type)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Quantity), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Quantity), m_colTypeNum.value(Column::Quantity)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Amount), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Amount), m_colTypeNum.value(Column::Amount)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Price), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Price), m_colTypeNum.value(Column::Price)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Symbol), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Symbol), m_colTypeNum.value(Column::Symbol)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Name), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Name), m_colTypeNum.value(Column::Name)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Fee), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Fee), m_colTypeNum.value(Column::Fee)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Memo), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Memo), m_memoColList); profilesGroup.config()->sync(); } bool PricesProfile::readSettings(const KSharedConfigPtr &config) { bool exists = true; - KConfigGroup profilesGroup(config, CSVImporter::m_profileConfPrefix.value(type()) + QLatin1Char('-') + m_profileName); + KConfigGroup profilesGroup(config, CSVImporterCore::m_profileConfPrefix.value(type()) + QLatin1Char('-') + m_profileName); if (!profilesGroup.exists()) exists = false; - m_colTypeNum[Column::Date] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Date), -1); - m_colTypeNum[Column::Price] = profilesGroup.readEntry(CSVImporter::m_colTypeConfName.value(Column::Price), -1); - m_priceFraction = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfPriceFraction), 2); - m_securityName = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfSecurityName), QString()); - m_securitySymbol = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfSecuritySymbol), QString()); - m_currencySymbol = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfCurrencySymbol), QString()); - m_dontAsk = profilesGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfDontAsk), 0); + m_colTypeNum[Column::Date] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Date), -1); + m_colTypeNum[Column::Price] = profilesGroup.readEntry(CSVImporterCore::m_colTypeConfName.value(Column::Price), -1); + m_priceFraction = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfPriceFraction), 2); + m_securityName = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfSecurityName), QString()); + m_securitySymbol = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfSecuritySymbol), QString()); + m_currencySymbol = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfCurrencySymbol), QString()); + m_dontAsk = profilesGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfDontAsk), 0); CSVProfile::readSettings(profilesGroup); return exists; } void PricesProfile::writeSettings(const KSharedConfigPtr &config) { - KConfigGroup profilesGroup(config, CSVImporter::m_profileConfPrefix.value(type()) + QLatin1Char('-') + m_profileName); + KConfigGroup profilesGroup(config, CSVImporterCore::m_profileConfPrefix.value(type()) + QLatin1Char('-') + m_profileName); CSVProfile::writeSettings(profilesGroup); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Date), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Date), m_colTypeNum.value(Column::Date)); - profilesGroup.writeEntry(CSVImporter::m_colTypeConfName.value(Column::Price), + profilesGroup.writeEntry(CSVImporterCore::m_colTypeConfName.value(Column::Price), m_colTypeNum.value(Column::Price)); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfPriceFraction), m_priceFraction); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfSecurityName), m_securityName); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfSecuritySymbol), m_securitySymbol); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfCurrencySymbol), m_currencySymbol); - profilesGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfDontAsk), m_dontAsk); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfPriceFraction), m_priceFraction); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfSecurityName), m_securityName); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfSecuritySymbol), m_securitySymbol); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfCurrencySymbol), m_currencySymbol); + profilesGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfDontAsk), m_dontAsk); profilesGroup.config()->sync(); } diff --git a/kmymoney/plugins/csv/import/core/csvutil.h b/kmymoney/plugins/csv/import/core/csvutil.h --- a/kmymoney/plugins/csv/import/core/csvutil.h +++ b/kmymoney/plugins/csv/import/core/csvutil.h @@ -23,9 +23,9 @@ #include #include "csvenums.h" -#include "csv/import/core/kmm_csvimport_core_export.h" +#include "csv/import/core/kmm_csvimportercore_export.h" -class KMM_CSVIMPORT_CORE_EXPORT Parse +class KMM_CSVIMPORTERCORE_EXPORT Parse { public: Parse(); diff --git a/kmymoney/plugins/csv/import/core/tests/CMakeLists.txt b/kmymoney/plugins/csv/import/core/tests/CMakeLists.txt --- a/kmymoney/plugins/csv/import/core/tests/CMakeLists.txt +++ b/kmymoney/plugins/csv/import/core/tests/CMakeLists.txt @@ -16,6 +16,6 @@ "csvimport-" LINK_LIBRARIES Qt5::Test - kmm_csvimport_core + kmm_csvimportercore csvimport_testcommon ) diff --git a/kmymoney/plugins/csv/import/core/tests/csvimporter-test.h b/kmymoney/plugins/csv/import/core/tests/csvimportercore-test.h rename from kmymoney/plugins/csv/import/core/tests/csvimporter-test.h rename to kmymoney/plugins/csv/import/core/tests/csvimportercore-test.h --- a/kmymoney/plugins/csv/import/core/tests/csvimporter-test.h +++ b/kmymoney/plugins/csv/import/core/tests/csvimportercore-test.h @@ -1,5 +1,5 @@ /*************************************************************************** - csvimporter-test.h + csvimportercore.h ------------------- copyright : (C) 2017 by Łukasz Wojniłowicz email : lukasz.wojnilowicz@gmail.com @@ -13,23 +13,23 @@ * (at your option) any later version. * * * ***************************************************************************/ -#ifndef CSVIMPORTERTEST_H -#define CSVIMPORTERTEST_H +#ifndef CSVIMPORTERCORETEST_H +#define CSVIMPORTERCORETEST_H #include -class CSVImporter; +class CSVImporterCore; class BankingProfile; class PricesProfile; class InvestmentProfile; class MyMoneyFile; class MyMoneySeqAccessMgr; -class CsvImporterTest : public QObject +class CSVImporterCoreTest : public QObject { Q_OBJECT - CSVImporter *csvImporter; + CSVImporterCore *csvImporter; BankingProfile *debitCreditProfile; BankingProfile *amountProfile; PricesProfile *pricesProfile; diff --git a/kmymoney/plugins/csv/import/core/tests/csvimporter-test.cpp b/kmymoney/plugins/csv/import/core/tests/csvimportercore-test.cpp rename from kmymoney/plugins/csv/import/core/tests/csvimporter-test.cpp rename to kmymoney/plugins/csv/import/core/tests/csvimportercore-test.cpp --- a/kmymoney/plugins/csv/import/core/tests/csvimporter-test.cpp +++ b/kmymoney/plugins/csv/import/core/tests/csvimportercore-test.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - csvimporter-test.cpp + csvimportercore.cpp ------------------- copyright : (C) 2017 by Łukasz Wojniłowicz email : lukasz.wojnilowicz@gmail.com @@ -13,34 +13,33 @@ * (at your option) any later version. * * * ***************************************************************************/ -#include "csvimporter-test.h" +#include "csvimportercore-test.h" #include -#include #include "mymoneyfile.h" #include "mymoneyaccount.h" #include - +#include "csvimportercore.h" #include "csvimporttestcommon.h" -QTEST_GUILESS_MAIN(CsvImporterTest) +QTEST_GUILESS_MAIN(CSVImporterCoreTest) -void CsvImporterTest::initTestCase() +void CSVImporterCoreTest::initTestCase() { // setup the MyMoneyMoney locale settings according to the KDE settings MyMoneyMoney::setThousandSeparator(QLocale().groupSeparator()); MyMoneyMoney::setDecimalSeparator(QLocale().decimalPoint()); } -void CsvImporterTest::init() +void CSVImporterCoreTest::init() { storage = new MyMoneySeqAccessMgr; file = MyMoneyFile::instance(); file->attachStorage(storage); - csvImporter = new CSVImporter; + csvImporter = new CSVImporterCore; csvImporter->m_mapSymbolName.insert("STK1", "Stock 1"); csvImporter->m_mapSymbolName.insert("STK2", "Stock 2"); @@ -77,7 +76,7 @@ } -void CsvImporterTest::cleanup() +void CSVImporterCoreTest::cleanup() { delete investmentProfile; delete pricesProfile; @@ -87,7 +86,7 @@ delete storage; } -void CsvImporterTest::testBasicPriceTable() +void CSVImporterCoreTest::testBasicPriceTable() { QString csvContent; csvContent += QLatin1String("Date,Open,High,Low,Close,Volume\n"); @@ -110,7 +109,7 @@ QVERIFY(st.m_listPrices[2].m_strSecurity == pricesProfile->m_securityName); } -void CsvImporterTest::testPriceFractionSetting() { +void CSVImporterCoreTest::testPriceFractionSetting() { QString csvContent; csvContent += QLatin1String("Date;Open;High;Low;Close;Volume\n"); @@ -138,7 +137,7 @@ QVERIFY(st.m_listPrices[2].m_amount == MyMoneyMoney(0.5567, 10000)); // user reported that visible price (5.567) should be treated as a fraction of real price (0.5567) } -void CsvImporterTest::testImportByDebitCredit() +void CSVImporterCoreTest::testImportByDebitCredit() { QString csvContent; csvContent += QLatin1String("\"Trans Date\",\"Post Date\",\"Description\",\"Debit\",\"Credit\",\"Category\"\n"); @@ -162,7 +161,7 @@ QVERIFY(st.m_listTransactions[4].m_amount == MyMoneyMoney()); } -void CsvImporterTest::testImportByAmount() +void CSVImporterCoreTest::testImportByAmount() { QString csvContent; csvContent += QLatin1String("\"Trans Date\",\"Post Date\",\"Description\",\"Amount\",\"Category\"\n"); @@ -182,7 +181,7 @@ QVERIFY(st.m_listTransactions[1].m_amount == MyMoneyMoney(56.78)); } -void CsvImporterTest::testImportByName() +void CSVImporterCoreTest::testImportByName() { auto stockNames = csvImporter->m_mapSymbolName.values(); auto stockSymbols = csvImporter->m_mapSymbolName.keys(); @@ -207,7 +206,7 @@ QVERIFY(st.m_listTransactions[0].m_strSymbol == stockSymbols.at(0)); } -void CsvImporterTest::testImportBySymbol() +void CSVImporterCoreTest::testImportBySymbol() { auto stockNames = csvImporter->m_mapSymbolName.values(); auto stockSymbols = csvImporter->m_mapSymbolName.keys(); @@ -232,7 +231,7 @@ QVERIFY(st.m_listTransactions[0].m_strSymbol == stockSymbols.at(0)); } -void CsvImporterTest::testFeeColumn() +void CSVImporterCoreTest::testFeeColumn() { auto csvContent = csvDataset(0); QString filename("fee-column.csv"); @@ -252,7 +251,7 @@ QVERIFY(st.m_listTransactions[0].m_fees == MyMoneyMoney(5)); // new_fee = original_amount * fee/100 } -void CsvImporterTest::testAutoDecimalSymbol() +void CSVImporterCoreTest::testAutoDecimalSymbol() { auto csvContent = csvDataset(0); csvContent += QLatin1String("2017-08-04-12.02.10;Stock 1;sell;101;1.25;126,25;4\n"); // mixed decimal symbols are on purpose here @@ -267,7 +266,7 @@ QVERIFY(st.m_listTransactions[3].m_shares == MyMoneyMoney(101)); } -void CsvImporterTest::testInvAccountAutodetection() +void CSVImporterCoreTest::testInvAccountAutodetection() { MyMoneyFileTransaction ft; makeAccount("Eas", "123", eMyMoney::Account::Type::Investment, QDate(2017, 8, 1), file->asset().id()); @@ -309,7 +308,7 @@ QVERIFY(st.m_accountId == accID); } -void CsvImporterTest::testCalculatedFeeColumn() +void CSVImporterCoreTest::testCalculatedFeeColumn() { auto csvContent = csvDataset(0); QString filename("calculated-fee-column.csv"); diff --git a/kmymoney/plugins/csv/import/csvimporterplugin.h b/kmymoney/plugins/csv/import/csvimporter.h rename from kmymoney/plugins/csv/import/csvimporterplugin.h rename to kmymoney/plugins/csv/import/csvimporter.h --- a/kmymoney/plugins/csv/import/csvimporterplugin.h +++ b/kmymoney/plugins/csv/import/csvimporter.h @@ -1,5 +1,5 @@ /*************************************************************************** - csvimporterplugin.h + csvimporter.h ------------------- begin : Sat Jan 01 2010 copyright : (C) 2010 by Allan Anderson @@ -17,8 +17,8 @@ * * ***************************************************************************/ -#ifndef CSVIMPORTERPLUGIN_H -#define CSVIMPORTERPLUGIN_H +#ifndef CSVIMPORTER_H +#define CSVIMPORTER_H // ---------------------------------------------------------------------------- // KDE Includes @@ -30,40 +30,39 @@ #include "kmymoneyplugin.h" -class CSVImporter; +class CSVImporterCore; class CSVWizard; class MyMoneyStatement; -class CsvImporterPlugin : public KMyMoneyPlugin::Plugin, public KMyMoneyPlugin::ImporterPlugin +class CSVImporter : public KMyMoneyPlugin::Plugin, public KMyMoneyPlugin::ImporterPlugin { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.kmymoney.plugins.csvimport" FILE "csvimport.json") Q_INTERFACES(KMyMoneyPlugin::ImporterPlugin) public: - explicit CsvImporterPlugin(); - ~CsvImporterPlugin(); + explicit CSVImporter(QObject *parent, const QVariantList &args); + ~CSVImporter() override; QAction* m_action; CSVWizard* m_wizard; - CSVImporter* m_importer; + CSVImporterCore* m_importer; /** * This method returns the english-language name of the format * this plugin imports, e.g. "OFX" * * @return QString Name of the format */ - virtual QString formatName() const; + virtual QString formatName() const override; /** * This method returns the filename filter suitable for passing to * KFileDialog::setFilter(), e.g. "*.csv" which describes how * files of this format are likely to be named in the file system * * @return QString Filename filter string */ - virtual QString formatFilenameFilter() const; + virtual QString formatFilenameFilter() const override; /** * This method returns whether this plugin is able to import @@ -73,25 +72,25 @@ * * @return bool Whether the indicated file is importable by this plugin */ - virtual bool isMyFormat(const QString& filename) const; + virtual bool isMyFormat(const QString& filename) const override; /** * Import a file * * @param filename File to import * * @return bool Whether the import was successful. */ - virtual bool import(const QString& filename); + virtual bool import(const QString& filename) override; /** * Returns the error result of the last import * * @return QString English-language name of the error encountered in the * last import, or QString() if it was successful. * */ - virtual QString lastError() const; + virtual QString lastError() const override; private: bool m_silent; diff --git a/kmymoney/plugins/csv/import/csvimporterplugin.cpp b/kmymoney/plugins/csv/import/csvimporter.cpp rename from kmymoney/plugins/csv/import/csvimporterplugin.cpp rename to kmymoney/plugins/csv/import/csvimporter.cpp --- a/kmymoney/plugins/csv/import/csvimporterplugin.cpp +++ b/kmymoney/plugins/csv/import/csvimporter.cpp @@ -1,6 +1,5 @@ /*************************************************************************** - csvimporterplugin.cpp - (based on ofximporterplugin.cpp) + csvimporter.cpp ------------------- begin : Sat Jan 01 2010 copyright : (C) 2010 by Allan Anderson @@ -18,7 +17,7 @@ * * ***************************************************************************/ -#include "csvimporterplugin.h" +#include "csvimporter.h" // ---------------------------------------------------------------------------- // QT Includes @@ -28,65 +27,68 @@ // ---------------------------------------------------------------------------- // KDE Includes +#include #include #include // ---------------------------------------------------------------------------- // Project Includes -#include "csvimporter.h" +#include "core/csvimportercore.h" #include "csvwizard.h" #include "statementinterface.h" -CsvImporterPlugin::CsvImporterPlugin() : - KMyMoneyPlugin::Plugin(nullptr, "csvimport"/*must be the same as X-KDE-PluginInfo-Name*/) +CSVImporter::CSVImporter(QObject *parent, const QVariantList &args) : + KMyMoneyPlugin::Plugin(parent, "csvimporter"/*must be the same as X-KDE-PluginInfo-Name*/) { - setComponentName("kmm_csvimport", i18n("CSV importer")); - setXMLFile("kmm_csvimport.rc"); + Q_UNUSED(args); + setComponentName("csvimporter", i18n("CSV importer")); + setXMLFile("csvimporter.rc"); createActions(); // For information, announce that we have been loaded. - qDebug("KMyMoney csvimport plugin loaded"); + qDebug("Plugins: csvimporter loaded"); } -CsvImporterPlugin::~CsvImporterPlugin() +CSVImporter::~CSVImporter() { + qDebug("Plugins: csvimporter unloaded"); } -void CsvImporterPlugin::createActions() +void CSVImporter::createActions() { m_action = actionCollection()->addAction("file_import_csv"); m_action->setText(i18n("CSV...")); - connect(m_action, SIGNAL(triggered(bool)), this, SLOT(startWizardRun())); + connect(m_action, &QAction::triggered, this, &CSVImporter::startWizardRun); } -void CsvImporterPlugin::startWizardRun() +void CSVImporter::startWizardRun() { m_action->setEnabled(false); - m_importer = new CSVImporter; + m_importer = new CSVImporterCore; m_wizard = new CSVWizard(this, m_importer); m_silent = false; - connect(m_wizard, SIGNAL(statementReady(MyMoneyStatement&)), this, SLOT(slotGetStatement(MyMoneyStatement&))); + connect(m_wizard, &CSVWizard::statementReady, this, &CSVImporter::slotGetStatement); m_action->setEnabled(false);// don't allow further plugins to start while this is open } -bool CsvImporterPlugin::slotGetStatement(MyMoneyStatement& s) +bool CSVImporter::slotGetStatement(MyMoneyStatement& s) { bool ret = statementInterface()->import(s, m_silent); delete m_importer; return ret; } -QString CsvImporterPlugin::formatName() const +QString CSVImporter::formatName() const { return QLatin1String("CSV"); } -QString CsvImporterPlugin::formatFilenameFilter() const +QString CSVImporter::formatFilenameFilter() const { return "*.csv"; } -bool CsvImporterPlugin::isMyFormat(const QString& filename) const +bool CSVImporter::isMyFormat(const QString& filename) const { // filename is considered a CSV file if it can be opened // and the filename ends in ".csv". @@ -101,18 +103,22 @@ return result; } -bool CsvImporterPlugin::import(const QString& filename) +bool CSVImporter::import(const QString& filename) { bool rc = true; - m_importer = new CSVImporter; + m_importer = new CSVImporterCore; m_wizard = new CSVWizard(this, m_importer); m_wizard->presetFilename(filename); m_silent = false; - connect(m_wizard, SIGNAL(statementReady(MyMoneyStatement&)), this, SLOT(slotGetStatement(MyMoneyStatement&))); + connect(m_wizard, &CSVWizard::statementReady, this, &CSVImporter::slotGetStatement); return rc; } -QString CsvImporterPlugin::lastError() const +QString CSVImporter::lastError() const { return QString(); } + +K_PLUGIN_FACTORY_WITH_JSON(CSVImporterFactory, "csvimporter.json", registerPlugin();) + +#include "csvimporter.moc" diff --git a/kmymoney/plugins/csv/import/csvimport.json.in b/kmymoney/plugins/csv/import/csvimporter.json.in rename from kmymoney/plugins/csv/import/csvimport.json.in rename to kmymoney/plugins/csv/import/csvimporter.json.in --- a/kmymoney/plugins/csv/import/csvimport.json.in +++ b/kmymoney/plugins/csv/import/csvimporter.json.in @@ -40,7 +40,7 @@ "Description[zh_TW]": "匯入 CSV 檔到 KMyMoney", "EnabledByDefault": true, "Icon": "document-import", - "Id": "csvimport", + "Id": "csvimporter", "License": "GPL", "Name": "CSV Importer", "Name[ar]": "استيراد CSV", diff --git a/kmymoney/plugins/csv/import/kmm_csvimport.rc b/kmymoney/plugins/csv/import/csvimporter.rc rename from kmymoney/plugins/csv/import/kmm_csvimport.rc rename to kmymoney/plugins/csv/import/csvimporter.rc diff --git a/kmymoney/plugins/csv/import/csvwizard.h b/kmymoney/plugins/csv/import/csvwizard.h --- a/kmymoney/plugins/csv/import/csvwizard.h +++ b/kmymoney/plugins/csv/import/csvwizard.h @@ -36,8 +36,8 @@ #include "csvwizardpage.h" #include "mymoneystatement.h" -class CsvImporterPlugin; class CSVImporter; +class CSVImporterCore; class IntroPage; class SeparatorPage; @@ -57,7 +57,7 @@ Q_OBJECT public: - CSVWizard(CsvImporterPlugin *plugin, CSVImporter *importer); + explicit CSVWizard(CSVImporter *plugin, CSVImporterCore *importer); ~CSVWizard(); enum wizardPageE { PageIntro, PageSeparator, PageRows, @@ -109,17 +109,17 @@ QPointer m_pagePrices; FormatsPage *m_pageFormats; - CsvImporterPlugin* m_plugin; - CSVImporter* m_imp; + CSVImporter* m_plugin; + CSVImporterCore* m_imp; QWizard* m_wiz; QString m_fileName; void readWindowSize(const KSharedConfigPtr& config); void saveWindowSize(const KSharedConfigPtr& config); void showStage(); - void closeEvent(QCloseEvent *event); - bool eventFilter(QObject *object, QEvent *event); + void closeEvent(QCloseEvent *event) override; + bool eventFilter(QObject *object, QEvent *event) override; private Q_SLOTS: /** @@ -145,10 +145,10 @@ Q_OBJECT public: - explicit IntroPage(CSVWizard *dlg, CSVImporter *imp); + explicit IntroPage(CSVWizard *dlg, CSVImporterCore *imp); ~IntroPage(); - void initializePage(); + void initializePage() override; Profile m_profileType; Ui::IntroPage *ui; @@ -161,8 +161,8 @@ private: QStringList m_profiles; - bool validatePage(); - int nextId() const; + bool validatePage() override; + int nextId() const override; void profileChanged(const ProfileAction action); void profileTypeChanged(const Profile profileType, bool toggled); @@ -188,7 +188,7 @@ Q_OBJECT public: - explicit SeparatorPage(CSVWizard *dlg, CSVImporter *imp); + explicit SeparatorPage(CSVWizard *dlg, CSVImporterCore *imp); ~SeparatorPage(); private Q_SLOTS: @@ -202,10 +202,10 @@ private: Ui::SeparatorPage *ui; void initializeEncodingCombobox(); - void initializePage(); - bool isComplete() const; - void cleanupPage(); - bool validatePage(); + void initializePage() override; + bool isComplete() const override; + void cleanupPage() override; + bool validatePage() override; }; namespace Ui @@ -218,7 +218,7 @@ Q_OBJECT public: - explicit RowsPage(CSVWizard *dlg, CSVImporter *imp); + explicit RowsPage(CSVWizard *dlg, CSVImporterCore *imp); ~RowsPage(); private Q_SLOTS: @@ -233,9 +233,9 @@ void endRowChanged(int val); private: Ui::RowsPage *ui; - void initializePage(); - int nextId() const; - void cleanupPage(); + void initializePage() override; + int nextId() const override; + void cleanupPage() override; }; namespace Ui @@ -248,7 +248,7 @@ Q_OBJECT public: - explicit FormatsPage(CSVWizard *dlg, CSVImporter *imp); + explicit FormatsPage(CSVWizard *dlg, CSVImporterCore *imp); ~FormatsPage(); private: @@ -268,9 +268,9 @@ */ bool validateDateFormat(const int index); - void initializePage(); - bool isComplete() const; - void cleanupPage(); + void initializePage() override; + bool isComplete() const override; + void cleanupPage() override; Q_SIGNALS: void completeChanged(); diff --git a/kmymoney/plugins/csv/import/csvwizard.cpp b/kmymoney/plugins/csv/import/csvwizard.cpp --- a/kmymoney/plugins/csv/import/csvwizard.cpp +++ b/kmymoney/plugins/csv/import/csvwizard.cpp @@ -42,10 +42,10 @@ // ---------------------------------------------------------------------------- // Project Includes -#include "csvimporterplugin.h" -#include "csvutil.h" -#include "convdate.h" #include "csvimporter.h" +#include "core/csvutil.h" +#include "core/convdate.h" +#include "core/csvimportercore.h" #include "investmentwizardpage.h" #include "bankingwizardpage.h" #include "priceswizardpage.h" @@ -58,15 +58,15 @@ using namespace Icons; -CSVWizard::CSVWizard(CsvImporterPlugin* plugin, CSVImporter* importer) : +CSVWizard::CSVWizard(CSVImporter *plugin, CSVImporterCore* importer) : ui(new Ui::CSVWizard), m_plugin(plugin), m_imp(importer), m_wiz(new QWizard) { ui->setupUi(this); ui->tableView->setModel(m_imp->m_file->m_model); - readWindowSize(CSVImporter::configFile()); + readWindowSize(CSVImporterCore::configFile()); m_wiz->setWizardStyle(QWizard::ClassicStyle); ui->horizontalLayout->addWidget(m_wiz); m_curId = -1; @@ -140,17 +140,17 @@ } void CSVWizard::readWindowSize(const KSharedConfigPtr& config) { - KConfigGroup miscGroup(config, CSVImporter::m_confMiscName); - m_initialWidth = miscGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfWidth), 800); - m_initialHeight = miscGroup.readEntry(CSVImporter::m_miscSettingsConfName.value(ConfHeight), 400); + KConfigGroup miscGroup(config, CSVImporterCore::m_confMiscName); + m_initialWidth = miscGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfWidth), 800); + m_initialHeight = miscGroup.readEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfHeight), 400); } void CSVWizard::saveWindowSize(const KSharedConfigPtr& config) { - KConfigGroup miscGroup(config, CSVImporter::m_confMiscName); + KConfigGroup miscGroup(config, CSVImporterCore::m_confMiscName); m_initialHeight = this->geometry().height(); m_initialWidth = this->geometry().width(); - miscGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfWidth), m_initialWidth); - miscGroup.writeEntry(CSVImporter::m_miscSettingsConfName.value(ConfHeight), m_initialHeight); + miscGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfWidth), m_initialWidth); + miscGroup.writeEntry(CSVImporterCore::m_miscSettingsConfName.value(ConfHeight), m_initialHeight); miscGroup.sync(); } @@ -308,15 +308,15 @@ void CSVWizard::slotClose() { m_imp->m_profile->m_lastUsedDirectory = m_imp->m_file->m_inFileName; - m_imp->m_profile->writeSettings(CSVImporter::configFile()); + m_imp->m_profile->writeSettings(CSVImporterCore::configFile()); m_imp->profilesAction(m_imp->m_profile->type(), ProfileAction::UpdateLastUsed, m_imp->m_profile->m_profileName, m_imp->m_profile->m_profileName); close(); } void CSVWizard::fileDialogClicked() { m_imp->profileFactory(m_pageIntro->m_profileType, m_pageIntro->ui->m_profiles->currentText()); - bool profileExists = m_imp->m_profile->readSettings(CSVImporter::configFile()); + bool profileExists = m_imp->m_profile->readSettings(CSVImporterCore::configFile()); if (!m_fileName.isEmpty()) { if (!m_imp->m_file->getInFileName(m_fileName)) { @@ -327,7 +327,7 @@ } else if (!m_imp->m_file->getInFileName(m_imp->m_profile->m_lastUsedDirectory)) return; - saveWindowSize(CSVImporter::configFile()); + saveWindowSize(CSVImporterCore::configFile()); m_imp->m_file->readFile(m_imp->m_profile); m_imp->m_file->setupParser(m_imp->m_profile); @@ -443,7 +443,7 @@ } //------------------------------------------------------------------------------------------------------- -IntroPage::IntroPage(CSVWizard *dlg, CSVImporter *imp) : +IntroPage::IntroPage(CSVWizard *dlg, CSVImporterCore *imp) : CSVWizardPage(dlg, imp), ui(new Ui::IntroPage) { @@ -551,7 +551,7 @@ break; } - if (CSVImporter::profilesAction(m_profileType, action, m_profiles.value(cbIndex), cbText)) { + if (CSVImporterCore::profilesAction(m_profileType, action, m_profiles.value(cbIndex), cbText)) { switch (action) { case ProfileAction::Add: m_profiles.append(cbText); @@ -601,7 +601,7 @@ if (!toggled) return; - KConfigGroup profilesGroup(CSVImporter::configFile(), CSVImporter::m_confProfileNames); + KConfigGroup profilesGroup(CSVImporterCore::configFile(), CSVImporterCore::m_confProfileNames); m_profileType = profileType; QString profileTypeStr; switch (m_profileType) { @@ -628,10 +628,10 @@ default: break; } - profileTypeStr = CSVImporter::m_profileConfPrefix.value(m_profileType); + profileTypeStr = CSVImporterCore::m_profileConfPrefix.value(m_profileType); m_profiles = profilesGroup.readEntry(profileTypeStr, QStringList()); - int priorProfile = profilesGroup.readEntry(CSVImporter::m_confPriorName + profileTypeStr, 0); + int priorProfile = profilesGroup.readEntry(CSVImporterCore::m_confPriorName + profileTypeStr, 0); ui->m_profiles->clear(); ui->m_profiles->addItems(m_profiles); ui->m_profiles->setCurrentIndex(priorProfile); @@ -659,7 +659,7 @@ profileTypeChanged(Profile::StockPrices, toggled); } -SeparatorPage::SeparatorPage(CSVWizard *dlg, CSVImporter *imp) : +SeparatorPage::SeparatorPage(CSVWizard *dlg, CSVImporterCore *imp) : CSVWizardPage(dlg, imp), ui(new Ui::SeparatorPage) { @@ -827,7 +827,7 @@ m_dlg->m_pageIntro->initializePage(); // Need to show button(QWizard::CustomButton1) not 'NextButton' } -RowsPage::RowsPage(CSVWizard *dlg, CSVImporter *imp) : +RowsPage::RowsPage(CSVWizard *dlg, CSVImporterCore *imp) : CSVWizardPage(dlg, imp), ui(new Ui::RowsPage) { @@ -924,7 +924,7 @@ } -FormatsPage::FormatsPage(CSVWizard *dlg, CSVImporter *imp) : +FormatsPage::FormatsPage(CSVWizard *dlg, CSVImporterCore *imp) : CSVWizardPage(dlg, imp), ui(new Ui::FormatsPage) { diff --git a/kmymoney/plugins/csv/import/csvwizardpage.h b/kmymoney/plugins/csv/import/csvwizardpage.h --- a/kmymoney/plugins/csv/import/csvwizardpage.h +++ b/kmymoney/plugins/csv/import/csvwizardpage.h @@ -18,19 +18,19 @@ #define CSVWIZARDPAGE_H #include -#include "csvenums.h" +#include "core/csvenums.h" class CSVWizard; -class CSVImporter; +class CSVImporterCore; class CSVWizardPage : public QWizardPage { public: - CSVWizardPage(CSVWizard *dlg, CSVImporter *imp) : QWizardPage(nullptr), m_dlg(dlg), m_imp(imp) {} + CSVWizardPage(CSVWizard *dlg, CSVImporterCore *imp) : QWizardPage(nullptr), m_dlg(dlg), m_imp(imp) {} protected: CSVWizard *m_dlg; - CSVImporter *m_imp; + CSVImporterCore *m_imp; }; #endif // CSVWIZARDPAGE_H diff --git a/kmymoney/plugins/csv/import/investmentwizardpage.h b/kmymoney/plugins/csv/import/investmentwizardpage.h --- a/kmymoney/plugins/csv/import/investmentwizardpage.h +++ b/kmymoney/plugins/csv/import/investmentwizardpage.h @@ -50,7 +50,7 @@ Q_OBJECT public: - explicit InvestmentPage(CSVWizard *dlg, CSVImporter *imp); + explicit InvestmentPage(CSVWizard *dlg, CSVImporterCore *imp); ~InvestmentPage(); /** diff --git a/kmymoney/plugins/csv/import/investmentwizardpage.cpp b/kmymoney/plugins/csv/import/investmentwizardpage.cpp --- a/kmymoney/plugins/csv/import/investmentwizardpage.cpp +++ b/kmymoney/plugins/csv/import/investmentwizardpage.cpp @@ -38,7 +38,7 @@ #include "mymoneyfile.h" #include "mymoneysecurity.h" #include "csvwizard.h" -#include "csvimporter.h" +#include "core/csvimportercore.h" #include "transactiondlg.h" #include "securitydlg.h" @@ -50,7 +50,7 @@ // ---------------------------------------------------------------------------- -InvestmentPage::InvestmentPage(CSVWizard *dlg, CSVImporter *imp) : +InvestmentPage::InvestmentPage(CSVWizard *dlg, CSVImporterCore *imp) : CSVWizardPage(dlg, imp), ui(new Ui::InvestmentPage) { diff --git a/kmymoney/plugins/csv/import/kcm_csvimport.h b/kmymoney/plugins/csv/import/kcm_csvimporter.h rename from kmymoney/plugins/csv/import/kcm_csvimport.h rename to kmymoney/plugins/csv/import/kcm_csvimporter.h --- a/kmymoney/plugins/csv/import/kcm_csvimport.h +++ b/kmymoney/plugins/csv/import/kcm_csvimporter.h @@ -17,8 +17,8 @@ * You should have received a copy of the GNU General Public License * * along with this program. If not, see * ***************************************************************************/ -#ifndef KCM_CSVIMPORT_H -#define KCM_CSVIMPORT_H +#ifndef KCM_CSVIMPORTER_H +#define KCM_CSVIMPORTER_H #include #include @@ -29,17 +29,13 @@ Q_OBJECT public: explicit PluginSettingsWidget(QWidget* parent = 0); - -public Q_SLOTS: - -private: }; -class KCMcsvimport : public KCModule +class KCMCSVImporter : public KCModule { public: - explicit KCMcsvimport(QWidget* parent, const QVariantList& args); - ~KCMcsvimport(); + explicit KCMCSVImporter(QWidget* parent, const QVariantList& args); + ~KCMCSVImporter(); }; #endif // KCM_CSVIMPORT_H diff --git a/kmymoney/plugins/csv/import/kcm_csvimport.cpp b/kmymoney/plugins/csv/import/kcm_csvimporter.cpp rename from kmymoney/plugins/csv/import/kcm_csvimport.cpp rename to kmymoney/plugins/csv/import/kcm_csvimporter.cpp --- a/kmymoney/plugins/csv/import/kcm_csvimport.cpp +++ b/kmymoney/plugins/csv/import/kcm_csvimporter.cpp @@ -18,7 +18,7 @@ * along with this program. If not, see * ***************************************************************************/ -#include "kcm_csvimport.h" +#include "kcm_csvimporter.h" #include // KDE includes @@ -32,21 +32,9 @@ setupUi(this); } -K_PLUGIN_FACTORY_WITH_JSON(KCMcsvimportFactory, "kcm_kmm_csvimport.json", registerPlugin();) - -KCMcsvimport::KCMcsvimport(QWidget *parent, const QVariantList& args) +KCMCSVImporter::KCMCSVImporter(QWidget *parent, const QVariantList& args) : KCModule(parent, args) { - KAboutData *about = new KAboutData(QStringLiteral("kmm_csvimport"), - i18n("KMyMoney CSV importer"), - QStringLiteral(VERSION), QString(), - KAboutLicense::GPL, - i18n("Copyright 2010-2017" ) ); - about->addAuthor( QLatin1String("Allan Anderson") ); - about->addAuthor( QString::fromUtf8("Łukasz Wojniłowicz") ); - - setAboutData( about ); - PluginSettingsWidget* w = new PluginSettingsWidget(this); addConfig(PluginSettings::self(), w); QVBoxLayout *layout = new QVBoxLayout; @@ -56,8 +44,10 @@ load(); } -KCMcsvimport::~KCMcsvimport() +KCMCSVImporter::~KCMCSVImporter() { } -#include "kcm_csvimport.moc" +K_PLUGIN_FACTORY_WITH_JSON(KCMCSVImporterFactory, "kcm_csvimporter.json", registerPlugin();) + +#include "kcm_csvimporter.moc" diff --git a/kmymoney/plugins/csv/import/kcm_kmm_csvimport.desktop b/kmymoney/plugins/csv/import/kcm_csvimporter.desktop rename from kmymoney/plugins/csv/import/kcm_kmm_csvimport.desktop rename to kmymoney/plugins/csv/import/kcm_csvimporter.desktop --- a/kmymoney/plugins/csv/import/kcm_kmm_csvimport.desktop +++ b/kmymoney/plugins/csv/import/kcm_csvimporter.desktop @@ -21,9 +21,9 @@ Icon=document-import Type=Service ServiceTypes=KCModule -Exec=kcmshell5 kmm_csvimport +Exec=kcmshell5 csvimporter Categories=Qt;KDE;kmymoney; -Keywords=csvimport;kmymoney; +Keywords=csvimporter;kmymoney; Keywords[ca]=csvimport;kmymoney; Keywords[ca@valencia]=csvimport;kmymoney; Keywords[cs]=csvimport;kmymoney; @@ -42,9 +42,9 @@ Keywords[tr]=csvimport;kmymoney; Keywords[uk]=csvimport;kmymoney;імпортування;кома;кмаймані; Keywords[x-test]=xxcsvimportxx;xxkmymoneyxx; -X-KDE-Library=kcm_kmm_csvimport -X-KDE-ParentApp=csvimport -X-KDE-ParentComponents=csvimport +X-KDE-Library=kcm_csvimporter +X-KDE-ParentApp=csvimporter +X-KDE-ParentComponents=csvimporter Comment=Configuration for CSV Importer plugin Comment[ca]=Configuració del connector d'importació de CSV Comment[ca@valencia]=Configuració del connector d'importació de CSV diff --git a/kmymoney/plugins/csv/import/priceswizardpage.h b/kmymoney/plugins/csv/import/priceswizardpage.h --- a/kmymoney/plugins/csv/import/priceswizardpage.h +++ b/kmymoney/plugins/csv/import/priceswizardpage.h @@ -47,7 +47,7 @@ Q_OBJECT public: - explicit PricesPage(CSVWizard *dlg, CSVImporter *imp); + explicit PricesPage(CSVWizard *dlg, CSVImporterCore *imp); ~PricesPage(); private: diff --git a/kmymoney/plugins/csv/import/priceswizardpage.cpp b/kmymoney/plugins/csv/import/priceswizardpage.cpp --- a/kmymoney/plugins/csv/import/priceswizardpage.cpp +++ b/kmymoney/plugins/csv/import/priceswizardpage.cpp @@ -32,7 +32,7 @@ #include "mymoneysecurity.h" #include "csvwizard.h" -#include "csvimporter.h" +#include "core/csvimportercore.h" #include "securitydlg.h" #include "currenciesdlg.h" @@ -43,7 +43,7 @@ // ---------------------------------------------------------------------------- -PricesPage::PricesPage(CSVWizard *dlg, CSVImporter *imp) : +PricesPage::PricesPage(CSVWizard *dlg, CSVImporterCore *imp) : CSVWizardPage(dlg, imp), ui(new Ui::PricesPage) { diff --git a/kmymoney/plugins/gnc/import/CMakeLists.txt b/kmymoney/plugins/gnc/import/CMakeLists.txt --- a/kmymoney/plugins/gnc/import/CMakeLists.txt +++ b/kmymoney/plugins/gnc/import/CMakeLists.txt @@ -1,34 +1,34 @@ # patch the version with the version defined in the build system -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/gncimport.json.in ${CMAKE_CURRENT_BINARY_DIR}/gncimport.json @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/gncimporter.json.in ${CMAKE_CURRENT_BINARY_DIR}/gncimporter.json @ONLY) ########### next target ############### -set(kmm_gncimport_PART_SRCS - gncimporterplugin.cpp +set(gncimporter_PART_SRCS + gncimporter.cpp kgncimportoptionsdlg.cpp kgncpricesourcedlg.cpp ../../../widgets/kmymoneymoneyvalidator.cpp mymoneygncreader.cpp ) -set(kmm_gncimport_PART_UI +set(gncimporter_PART_UI kgncimportoptionsdlg.ui kgncpricesourcedlg.ui ) -ki18n_wrap_ui(kmm_gncimport_PART_SRCS ${kmm_gncimport_PART_UI}) +ki18n_wrap_ui(gncimporter_PART_SRCS ${gncimporter_PART_UI}) -add_library(kmm_gncimport MODULE ${kmm_gncimport_PART_SRCS}) +add_library(gncimporter MODULE ${gncimporter_PART_SRCS}) -target_link_libraries(kmm_gncimport +target_link_libraries(gncimporter kmm_plugin Alkimia::alkimia ) ########### install files ############### -install(FILES kmm_gncimport.rc - DESTINATION "${KXMLGUI_INSTALL_DIR}/kmm_gncimport") +install(FILES gncimporter.rc + DESTINATION "${KXMLGUI_INSTALL_DIR}/gncimporter") -install(TARGETS kmm_gncimport +install(TARGETS gncimporter DESTINATION "${KDE_INSTALL_PLUGINDIR}/kmymoney/") diff --git a/kmymoney/plugins/gnc/import/gncimporterplugin.h b/kmymoney/plugins/gnc/import/gncimporter.h rename from kmymoney/plugins/gnc/import/gncimporterplugin.h rename to kmymoney/plugins/gnc/import/gncimporter.h --- a/kmymoney/plugins/gnc/import/gncimporterplugin.h +++ b/kmymoney/plugins/gnc/import/gncimporter.h @@ -1,5 +1,5 @@ /*************************************************************************** - gncimporterplugin.h + gncimporter.h ------------------- copyright : (C) 2017 by Łukasz Wojniłowicz email : lukasz.wojnilowicz@gmail.com @@ -14,8 +14,8 @@ * * ***************************************************************************/ -#ifndef GNCIMPORTERPLUGIN_H -#define GNCIMPORTERPLUGIN_H +#ifndef GNCIMPORTER_H +#define GNCIMPORTER_H // ---------------------------------------------------------------------------- // KDE Includes @@ -29,14 +29,13 @@ class MyMoneyGncReader; -class GNCImporterPlugin : public KMyMoneyPlugin::Plugin +class GNCImporter : public KMyMoneyPlugin::Plugin { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.kmymoney.plugins.gncimport" FILE "gncimport.json") public: - explicit GNCImporterPlugin(); - ~GNCImporterPlugin(); + explicit GNCImporter(QObject *parent, const QVariantList &args); + ~GNCImporter() override; QAction *m_action; diff --git a/kmymoney/plugins/gnc/import/gncimporterplugin.cpp b/kmymoney/plugins/gnc/import/gncimporter.cpp rename from kmymoney/plugins/gnc/import/gncimporterplugin.cpp rename to kmymoney/plugins/gnc/import/gncimporter.cpp --- a/kmymoney/plugins/gnc/import/gncimporterplugin.cpp +++ b/kmymoney/plugins/gnc/import/gncimporter.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - gncimporterplugin.cpp + gncimporter.cpp ------------------- copyright : (C) 2017 by Łukasz Wojniłowicz @@ -15,7 +15,7 @@ * * ***************************************************************************/ -#include "gncimporterplugin.h" +#include "gncimporter.h" // ---------------------------------------------------------------------------- // QT Includes @@ -41,28 +41,30 @@ class MyMoneyStatement; -GNCImporterPlugin::GNCImporterPlugin() : - KMyMoneyPlugin::Plugin(nullptr, "gncimport"/*must be the same as X-KDE-PluginInfo-Name*/) +GNCImporter::GNCImporter(QObject *parent, const QVariantList &args) : + KMyMoneyPlugin::Plugin(parent, "gncimporter"/*must be the same as X-KDE-PluginInfo-Name*/) { - setComponentName("kmm_gncimport", i18n("GnuCash importer")); - setXMLFile("kmm_gncimport.rc"); + Q_UNUSED(args) + setComponentName("gncimporter", i18n("GnuCash importer")); + setXMLFile("gncimporter.rc"); createActions(); // For information, announce that we have been loaded. - qDebug("KMyMoney gncimport plugin loaded"); + qDebug("Plugins: gncimporter loaded"); } -GNCImporterPlugin::~GNCImporterPlugin() +GNCImporter::~GNCImporter() { + qDebug("Plugins: gncimporter unloaded"); } -void GNCImporterPlugin::createActions() +void GNCImporter::createActions() { m_action = actionCollection()->addAction("file_import_gnc"); m_action->setText(i18n("GnuCash...")); - connect(m_action, &QAction::triggered, this, &GNCImporterPlugin::slotGNCImport); + connect(m_action, &QAction::triggered, this, &GNCImporter::slotGNCImport); } -void GNCImporterPlugin::slotGNCImport() +void GNCImporter::slotGNCImport() { m_action->setEnabled(false); @@ -81,3 +83,7 @@ m_action->setEnabled(true); } + +K_PLUGIN_FACTORY_WITH_JSON(GNCImporterFactory, "gncimporter.json", registerPlugin();) + +#include "gncimporter.moc" diff --git a/kmymoney/plugins/gnc/import/gncimport.json.in b/kmymoney/plugins/gnc/import/gncimporter.json.in rename from kmymoney/plugins/gnc/import/gncimport.json.in rename to kmymoney/plugins/gnc/import/gncimporter.json.in --- a/kmymoney/plugins/gnc/import/gncimport.json.in +++ b/kmymoney/plugins/gnc/import/gncimporter.json.in @@ -9,7 +9,7 @@ "Description": "Add GnuCash importing to KMyMoney", "EnabledByDefault": true, "Icon": "document-import", - "Id": "gncimport", + "Id": "gncimporter", "License": "GPL", "Name": "GNC Importer", "ServiceTypes": [ diff --git a/kmymoney/plugins/gnc/import/kmm_gncimport.rc b/kmymoney/plugins/gnc/import/gncimporter.rc rename from kmymoney/plugins/gnc/import/kmm_gncimport.rc rename to kmymoney/plugins/gnc/import/gncimporter.rc diff --git a/kmymoney/plugins/icalendar/CMakeLists.txt b/kmymoney/plugins/icalendar/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/kmymoney/plugins/icalendar/CMakeLists.txt @@ -0,0 +1,3 @@ +if(LIBICAL_FOUND) + add_subdirectory( export ) +endif(LIBICAL_FOUND) diff --git a/kmymoney/plugins/icalendar/export/CMakeLists.txt b/kmymoney/plugins/icalendar/export/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/kmymoney/plugins/icalendar/export/CMakeLists.txt @@ -0,0 +1,54 @@ +# patch the version with the version defined in the build system +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/icalendarexporter.json.in + ${CMAKE_CURRENT_BINARY_DIR}/icalendarexporter.json + @ONLY +) + +set(icalendarexporter_PART_SRCS + schedulestoicalendar.cpp + icalendarexporter.cpp +) + +kconfig_add_kcfg_files(icalendarexporter_PART_SRCS pluginsettings.kcfgc) +add_library(icalendarexporter MODULE ${icalendarexporter_PART_SRCS}) + +target_include_directories(icalendarexporter PRIVATE ${LIBICAL_INCLUDE_DIRS}) +target_link_libraries(icalendarexporter + KF5::KIOWidgets + kmm_mymoney + kmm_plugin + ${LIBICAL_LIBRARIES} +) + +install(FILES icalendarexporter.rc + DESTINATION "${KXMLGUI_INSTALL_DIR}/icalendarexporter") + +install(TARGETS icalendarexporter + DESTINATION "${KDE_INSTALL_PLUGINDIR}/kmymoney/") + +# the KCM module + +set(kcm_icalendarexporter_PART_SRCS + kcm_icalendarexporter.cpp + ) + +kconfig_add_kcfg_files(kcm_icalendarexporter_PART_SRCS pluginsettings.kcfgc) +ki18n_wrap_ui(kcm_icalendarexporter_PART_SRCS pluginsettingsdecl.ui) + +add_library(kcm_icalendarexporter MODULE ${kcm_icalendarexporter_PART_SRCS}) +kcoreaddons_desktop_to_json(kcm_icalendarexporter kcm_icalendarexporter.desktop) + +target_link_libraries(kcm_icalendarexporter + KF5::I18n + KF5::ConfigWidgets + KF5::KIOWidgets + KF5::Completion + Qt5::Widgets + Qt5::Gui +) + +install(TARGETS kcm_icalendarexporter + DESTINATION ${KDE_INSTALL_PLUGINDIR}) + +install(FILES kcm_icalendarexporter.desktop + DESTINATION ${SERVICES_INSTALL_DIR}) diff --git a/kmymoney/plugins/icalendarexport/icalendarexport.h b/kmymoney/plugins/icalendar/export/icalendarexporter.h rename from kmymoney/plugins/icalendarexport/icalendarexport.h rename to kmymoney/plugins/icalendar/export/icalendarexporter.h --- a/kmymoney/plugins/icalendarexport/icalendarexport.h +++ b/kmymoney/plugins/icalendar/export/icalendarexporter.h @@ -18,8 +18,8 @@ * along with this program. If not, see * ***************************************************************************/ -#ifndef ICALENDAREXPORT_H -#define ICALENDAREXPORT_H +#ifndef ICALENDAREXPORTER_H +#define ICALENDAREXPORTER_H #include @@ -30,14 +30,13 @@ class QStringList; class KPluginInfo; -class KMMiCalendarExportPlugin: public KMyMoneyPlugin::Plugin +class iCalendarExporter: public KMyMoneyPlugin::Plugin { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.kmymoney.plugins.icalendarexport" FILE "kmm_icalendarexport.json") public: - KMMiCalendarExportPlugin(); - ~KMMiCalendarExportPlugin(); + explicit iCalendarExporter(QObject *parent, const QVariantList &args); + ~iCalendarExporter() override; protected Q_SLOTS: // this is the export function called when the user selects the interface menu diff --git a/kmymoney/plugins/icalendarexport/icalendarexport.cpp b/kmymoney/plugins/icalendar/export/icalendarexporter.cpp rename from kmymoney/plugins/icalendarexport/icalendarexport.cpp rename to kmymoney/plugins/icalendar/export/icalendarexporter.cpp --- a/kmymoney/plugins/icalendarexport/icalendarexport.cpp +++ b/kmymoney/plugins/icalendar/export/icalendarexporter.cpp @@ -18,7 +18,7 @@ * along with this program. If not, see * ***************************************************************************/ -#include "icalendarexport.h" +#include "icalendarexporter.h" #include #include @@ -38,26 +38,27 @@ #include "schedulestoicalendar.h" #include "pluginsettings.h" -struct KMMiCalendarExportPlugin::Private { +struct iCalendarExporter::Private { QAction* m_action; QString m_profileName; QString m_iCalendarFileEntryName; KMMSchedulesToiCalendar m_exporter; }; -KMMiCalendarExportPlugin::KMMiCalendarExportPlugin() - : KMyMoneyPlugin::Plugin(nullptr, "iCalendar"/*must be the same as X-KDE-PluginInfo-Name*/), +iCalendarExporter::iCalendarExporter(QObject *parent, const QVariantList &args) : + KMyMoneyPlugin::Plugin(parent, "icalendarexporter"/*must be the same as X-KDE-PluginInfo-Name*/), d(std::unique_ptr(new Private)) { + Q_UNUSED(args); d->m_profileName = "iCalendarPlugin"; d->m_iCalendarFileEntryName = "iCalendarFile"; // Tell the host application to load my GUI component - setComponentName("kmm_icalendarexport", i18n("iCalendar exporter")); - setXMLFile("kmm_icalendarexport.rc"); + setComponentName("icalendarexporter", i18n("iCalendar exporter")); + setXMLFile("icalendarexporter.rc"); // For ease announce that we have been loaded. - qDebug("KMyMoney iCalendar plugin loaded"); + qDebug("Plugins: icalendarexporter loaded"); // Create the actions of this plugin QString actionName = i18n("Schedules to iCalendar"); @@ -84,14 +85,15 @@ d->m_action = actionCollection()->addAction("file_export_icalendar"); d->m_action->setText(actionName); - connect(d->m_action, &QAction::triggered, this, &KMMiCalendarExportPlugin::slotFirstExport); + connect(d->m_action, &QAction::triggered, this, &iCalendarExporter::slotFirstExport); } -KMMiCalendarExportPlugin::~KMMiCalendarExportPlugin() +iCalendarExporter::~iCalendarExporter() { + qDebug("Plugins: icalendarexporter unloaded"); } -void KMMiCalendarExportPlugin::slotFirstExport() +void iCalendarExporter::slotFirstExport() { QPointer fileDialog = new QFileDialog(d->m_action->parentWidget(), QString(), QString(), QString("%1|%2\n").arg("*.ics").arg(i18nc("ICS (Filefilter)", "iCalendar files"))); @@ -109,29 +111,32 @@ delete fileDialog; } -void KMMiCalendarExportPlugin::slotExport() +void iCalendarExporter::slotExport() { QString icalFilePath = PluginSettings::icalendarFile(); if (!icalFilePath.isEmpty()) d->m_exporter.exportToFile(icalFilePath); } -void KMMiCalendarExportPlugin::plug() +void iCalendarExporter::plug() { - connect(MyMoneyFile::instance(), &MyMoneyFile::dataChanged, this, &KMMiCalendarExportPlugin::slotExport); + connect(MyMoneyFile::instance(), &MyMoneyFile::dataChanged, this, &iCalendarExporter::slotExport); } -void KMMiCalendarExportPlugin::unplug() +void iCalendarExporter::unplug() { - disconnect(MyMoneyFile::instance(), &MyMoneyFile::dataChanged, this, &KMMiCalendarExportPlugin::slotExport); + disconnect(MyMoneyFile::instance(), &MyMoneyFile::dataChanged, this, &iCalendarExporter::slotExport); } -void KMMiCalendarExportPlugin::configurationChanged() +void iCalendarExporter::configurationChanged() { PluginSettings::self()->load(); // export the schedules because the configuration has changed QString icalFilePath = PluginSettings::icalendarFile(); if (!icalFilePath.isEmpty()) d->m_exporter.exportToFile(icalFilePath); } +K_PLUGIN_FACTORY_WITH_JSON(iCalendarExporterFactory, "icalendarexporter.json", registerPlugin();) + +#include "icalendarexporter.moc" diff --git a/kmymoney/plugins/icalendarexport/kmm_icalendarexport.json.in b/kmymoney/plugins/icalendar/export/icalendarexporter.json.in rename from kmymoney/plugins/icalendarexport/kmm_icalendarexport.json.in rename to kmymoney/plugins/icalendar/export/icalendarexporter.json.in --- a/kmymoney/plugins/icalendarexport/kmm_icalendarexport.json.in +++ b/kmymoney/plugins/icalendar/export/icalendarexporter.json.in @@ -39,7 +39,7 @@ "Description[zh_TW]": "匯出排程到 iCalendar 檔", "EnabledByDefault": true, "Icon": "x-office-calendar", - "Id": "iCalendar", + "Id": "icalendarexporter", "License": "GPL", "Name": "iCalendar", "Name[bs]": "iCalendar", diff --git a/kmymoney/plugins/icalendarexport/kmm_icalendarexport.rc b/kmymoney/plugins/icalendar/export/icalendarexporter.rc rename from kmymoney/plugins/icalendarexport/kmm_icalendarexport.rc rename to kmymoney/plugins/icalendar/export/icalendarexporter.rc diff --git a/kmymoney/plugins/icalendarexport/kcm_icalendarexport.h b/kmymoney/plugins/icalendar/export/kcm_icalendarexporter.h rename from kmymoney/plugins/icalendarexport/kcm_icalendarexport.h rename to kmymoney/plugins/icalendar/export/kcm_icalendarexporter.h --- a/kmymoney/plugins/icalendarexport/kcm_icalendarexport.h +++ b/kmymoney/plugins/icalendar/export/kcm_icalendarexporter.h @@ -18,19 +18,19 @@ * along with this program. If not, see * ***************************************************************************/ -#ifndef KCM_ICALENDAREXPORT_H -#define KCM_ICALENDAREXPORT_H +#ifndef KCM_ICALENDAREXPORTER_H +#define KCM_ICALENDAREXPORTER_H #include class QStringList; class KPluginInfo; -class KCMiCalendarExport : public KCModule +class KCMiCalendarExporter : public KCModule { public: - explicit KCMiCalendarExport(QWidget *parent = 0, const QVariantList& args = QVariantList()); - ~KCMiCalendarExport(); + explicit KCMiCalendarExporter(QWidget *parent = 0, const QVariantList& args = QVariantList()); + ~KCMiCalendarExporter(); }; #endif // KCM_ICALENDAREXPORT_H diff --git a/kmymoney/plugins/icalendarexport/kcm_icalendarexport.cpp b/kmymoney/plugins/icalendar/export/kcm_icalendarexporter.cpp rename from kmymoney/plugins/icalendarexport/kcm_icalendarexport.cpp rename to kmymoney/plugins/icalendar/export/kcm_icalendarexporter.cpp --- a/kmymoney/plugins/icalendarexport/kcm_icalendarexport.cpp +++ b/kmymoney/plugins/icalendar/export/kcm_icalendarexporter.cpp @@ -18,7 +18,7 @@ * along with this program. If not, see * ***************************************************************************/ -#include "kcm_icalendarexport.h" +#include "kcm_icalendarexporter.h" #include // Qt includes @@ -52,12 +52,7 @@ } }; -K_PLUGIN_FACTORY_WITH_JSON(KCMiCalendarExportFactory, - "kcm_kmm_icalendarexport.json", - registerPlugin(); - ) - -KCMiCalendarExport::KCMiCalendarExport(QWidget *parent, const QVariantList& args) +KCMiCalendarExporter::KCMiCalendarExporter(QWidget *parent, const QVariantList& args) : KCModule(parent, args) { KAboutData *about = new KAboutData(QStringLiteral("kmm_printcheck"), @@ -77,8 +72,13 @@ load(); } -KCMiCalendarExport::~KCMiCalendarExport() +KCMiCalendarExporter::~KCMiCalendarExporter() { } -#include "kcm_icalendarexport.moc" +K_PLUGIN_FACTORY_WITH_JSON(KCMiCalendarExporterFactory, + "kcm_icalendarexporter.json", + registerPlugin(); + ) + +#include "kcm_icalendarexporter.moc" diff --git a/kmymoney/plugins/icalendarexport/kcm_kmm_icalendarexport.desktop b/kmymoney/plugins/icalendar/export/kcm_icalendarexporter.desktop rename from kmymoney/plugins/icalendarexport/kcm_kmm_icalendarexport.desktop rename to kmymoney/plugins/icalendar/export/kcm_icalendarexporter.desktop --- a/kmymoney/plugins/icalendarexport/kcm_kmm_icalendarexport.desktop +++ b/kmymoney/plugins/icalendar/export/kcm_icalendarexporter.desktop @@ -12,7 +12,7 @@ Name[et]=iCalendari ekspordiplugina seadistamine Name[eu]=Konfiguratu icalendar-en esportazio-plugina Name[fi]=Aseta icalendar-vientiliitännäinen -Name[fr]=Configurer le module externe d'exportation « iCalendar » +Name[fr]=Configurer le module externe d'exportation « iCalendar » Name[gl]=Configurar o complemento de exportación a icalendar Name[hu]=icalendar export bővítmény beállítása Name[it]=Configura l'estensione di esportazione iCalendar @@ -34,9 +34,9 @@ Icon=x-office-calendar Type=Service ServiceTypes=KCModule -Exec=kcmshell4 kmm_icalendarexport +Exec=kcmshell5 icalendarexporter Categories=Qt;KDE;kmymoney; -Keywords=icalendar;kmymoney; +Keywords=icalendarexporter;kmymoney; Keywords[bs]=icalendar;kmymoney; Keywords[ca]=icalendar;kmymoney; Keywords[ca@valencia]=icalendar;kmymoney; @@ -67,9 +67,9 @@ Keywords[uk]=icalendar;kmymoney; Keywords[x-test]=xxicalendarxx;xxkmymoneyxx; Keywords[zh_TW]=icalendar;kmymoney; -X-KDE-Library=kcm_kmm_icalendarexport -X-KDE-ParentApp=iCalendar -X-KDE-ParentComponents=iCalendar +X-KDE-Library=kcm_icalendarexporter +X-KDE-ParentApp=icalendarexporter +X-KDE-ParentComponents=icalendarexporter Comment=Permits the configuration of the iCalendar plugin's options Comment[bs]=Dopušta konfiguraciju opcija iCalendar dodatka Comment[ca]=Permet la configuració de les opcions del connector iCalendar diff --git a/kmymoney/plugins/icalendarexport/pluginsettings.kcfg b/kmymoney/plugins/icalendar/export/pluginsettings.kcfg rename from kmymoney/plugins/icalendarexport/pluginsettings.kcfg rename to kmymoney/plugins/icalendar/export/pluginsettings.kcfg diff --git a/kmymoney/plugins/icalendarexport/pluginsettings.kcfgc b/kmymoney/plugins/icalendar/export/pluginsettings.kcfgc rename from kmymoney/plugins/icalendarexport/pluginsettings.kcfgc rename to kmymoney/plugins/icalendar/export/pluginsettings.kcfgc diff --git a/kmymoney/plugins/icalendarexport/pluginsettingsdecl.ui b/kmymoney/plugins/icalendar/export/pluginsettingsdecl.ui rename from kmymoney/plugins/icalendarexport/pluginsettingsdecl.ui rename to kmymoney/plugins/icalendar/export/pluginsettingsdecl.ui diff --git a/kmymoney/plugins/icalendarexport/schedulestoicalendar.h b/kmymoney/plugins/icalendar/export/schedulestoicalendar.h rename from kmymoney/plugins/icalendarexport/schedulestoicalendar.h rename to kmymoney/plugins/icalendar/export/schedulestoicalendar.h diff --git a/kmymoney/plugins/icalendarexport/schedulestoicalendar.cpp b/kmymoney/plugins/icalendar/export/schedulestoicalendar.cpp rename from kmymoney/plugins/icalendarexport/schedulestoicalendar.cpp rename to kmymoney/plugins/icalendar/export/schedulestoicalendar.cpp diff --git a/kmymoney/plugins/icalendarexport/CMakeLists.txt b/kmymoney/plugins/icalendarexport/CMakeLists.txt deleted file mode 100644 --- a/kmymoney/plugins/icalendarexport/CMakeLists.txt +++ /dev/null @@ -1,54 +0,0 @@ -# patch the version with the version defined in the build system -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/kmm_icalendarexport.json.in - ${CMAKE_CURRENT_BINARY_DIR}/kmm_icalendarexport.json - @ONLY -) - -set(kmm_icalendarexport_PART_SRCS - schedulestoicalendar.cpp - icalendarexport.cpp -) - -kconfig_add_kcfg_files(kmm_icalendarexport_PART_SRCS pluginsettings.kcfgc) -add_library(kmm_icalendarexport MODULE ${kmm_icalendarexport_PART_SRCS}) - -target_include_directories(kmm_icalendarexport PRIVATE ${LIBICAL_INCLUDE_DIRS}) -target_link_libraries(kmm_icalendarexport - KF5::KIOWidgets - kmm_mymoney - kmm_plugin - ${LIBICAL_LIBRARIES} -) - -install(FILES kmm_icalendarexport.rc - DESTINATION "${KXMLGUI_INSTALL_DIR}/kmm_icalendarexport") - -install(TARGETS kmm_icalendarexport - DESTINATION "${KDE_INSTALL_PLUGINDIR}/kmymoney/") - -# the KCM module - -set(kcm_kmm_icalendarexport_PART_SRCS - kcm_icalendarexport.cpp - ) - -kconfig_add_kcfg_files(kcm_kmm_icalendarexport_PART_SRCS pluginsettings.kcfgc) -ki18n_wrap_ui(kcm_kmm_icalendarexport_PART_SRCS pluginsettingsdecl.ui) - -add_library(kcm_kmm_icalendarexport MODULE ${kcm_kmm_icalendarexport_PART_SRCS}) -kcoreaddons_desktop_to_json(kcm_kmm_icalendarexport kcm_kmm_icalendarexport.desktop) - -target_link_libraries(kcm_kmm_icalendarexport - KF5::I18n - KF5::ConfigWidgets - KF5::KIOWidgets - KF5::Completion - Qt5::Widgets - Qt5::Gui -) - -install(TARGETS kcm_kmm_icalendarexport - DESTINATION ${KDE_INSTALL_PLUGINDIR}) - -install(FILES kcm_kmm_icalendarexport.desktop - DESTINATION ${SERVICES_INSTALL_DIR}) diff --git a/kmymoney/plugins/kbanking/CMakeLists.txt b/kmymoney/plugins/kbanking/CMakeLists.txt --- a/kmymoney/plugins/kbanking/CMakeLists.txt +++ b/kmymoney/plugins/kbanking/CMakeLists.txt @@ -6,23 +6,23 @@ add_subdirectory( qml ) add_subdirectory( tasksettings ) -set(kmm_kbanking_PART_SRCS - mymoneybanking.cpp +set(kbanking_PART_SRCS + kbanking.cpp ../../mymoney/onlinejobmessage.cpp banking.cpp aqbankingkmmoperators.cpp gwenhywfarqtoperators.cpp gwenkdegui.cpp ) -kconfig_add_kcfg_files(kmm_kbanking_PART_SRCS kbankingsettings.kcfgc) +kconfig_add_kcfg_files(kbanking_PART_SRCS kbankingsettings.kcfgc) -add_library(kmm_kbanking MODULE ${kmm_kbanking_PART_SRCS}) +add_library(kbanking MODULE ${kbanking_PART_SRCS}) -target_link_libraries(kmm_kbanking - kmm_kbanking_dialogs - kmm_kbanking_widgets - kmm_kbanking_tasksettings +target_link_libraries(kbanking + kbanking_dialogs + kbanking_widgets + kbanking_tasksettings kmm_mymoney kmm_widgets kmm_plugin @@ -38,23 +38,23 @@ ) # List might not be complete -target_compile_features(kmm_kbanking PRIVATE cxx_generalized_initializers cxx_nullptr) +target_compile_features(kbanking PRIVATE cxx_generalized_initializers cxx_nullptr) # Add new menu entries if debugging is enabled set(KMM_BANKING_DEBUG_OPTIONS) # preprocessor definitions in case this is a debug build string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_TOLOWER) if("${CMAKE_BUILD_TYPE_TOLOWER}" MATCHES "debug") - file(READ kmm_kbanking_debug.rc KMM_BANKING_DEBUG_OPTIONS) + file(READ kbanking_debug.rc KMM_BANKING_DEBUG_OPTIONS) endif() -configure_file(kmm_kbanking.rc "${CMAKE_CURRENT_BINARY_DIR}/kmm_kbanking.rc" @ONLY) +configure_file(kbanking.rc "${CMAKE_CURRENT_BINARY_DIR}/kbanking.rc" @ONLY) ########### install files ############### -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kmm_kbanking.rc - DESTINATION ${KXMLGUI_INSTALL_DIR}/kmm_kbanking) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/kbanking.rc + DESTINATION ${KXMLGUI_INSTALL_DIR}/kbanking) -install(TARGETS kmm_kbanking +install(TARGETS kbanking DESTINATION "${KDE_INSTALL_PLUGINDIR}/kmymoney/") install(FILES kbanking.kcfg diff --git a/kmymoney/plugins/kbanking/dialogs/CMakeLists.txt b/kmymoney/plugins/kbanking/dialogs/CMakeLists.txt --- a/kmymoney/plugins/kbanking/dialogs/CMakeLists.txt +++ b/kmymoney/plugins/kbanking/dialogs/CMakeLists.txt @@ -1,22 +1,22 @@ ########### next target ############### -set(kmm_kbanking_dialogs_la_SOURCES +set(kbanking_dialogs_la_SOURCES kbaccountsettings.cpp kbpickstartdate.cpp kbmapaccount.cpp ) -set(kmm_kbanking_dialogs_UI +set(kbanking_dialogs_UI kbaccountsettings.ui kbpickstartdate.ui kbmapaccount.ui ) -ki18n_wrap_ui(kmm_kbanking_dialogs_la_SOURCES ${kmm_kbanking_dialogs_UI}) +ki18n_wrap_ui(kbanking_dialogs_la_SOURCES ${kbanking_dialogs_UI}) -add_library(kmm_kbanking_dialogs STATIC ${kmm_kbanking_dialogs_la_SOURCES}) -target_link_libraries(kmm_kbanking_dialogs +add_library(kbanking_dialogs STATIC ${kbanking_dialogs_la_SOURCES}) +target_link_libraries(kbanking_dialogs widgets dialogs aqbanking::aqbanking diff --git a/kmymoney/plugins/kbanking/dialogs/kbmapaccount.h b/kmymoney/plugins/kbanking/dialogs/kbmapaccount.h --- a/kmymoney/plugins/kbanking/dialogs/kbmapaccount.h +++ b/kmymoney/plugins/kbanking/dialogs/kbmapaccount.h @@ -19,13 +19,13 @@ #include -class KMyMoneyBanking; +class KBankingExt; class KBMapAccount: public QDialog { Q_OBJECT public: - KBMapAccount(KMyMoneyBanking *kb, + KBMapAccount(KBankingExt *kb, const char *bankCode, const char *accountId, QWidget* parent = 0, diff --git a/kmymoney/plugins/kbanking/dialogs/kbmapaccount.cpp b/kmymoney/plugins/kbanking/dialogs/kbmapaccount.cpp --- a/kmymoney/plugins/kbanking/dialogs/kbmapaccount.cpp +++ b/kmymoney/plugins/kbanking/dialogs/kbmapaccount.cpp @@ -21,7 +21,7 @@ // QBanking includes #include "kbmapaccount.h" #include "../widgets/kbaccountlist.h" -#include "../mymoneybanking.h" +#include "../kbanking.h" // QT includes #include @@ -35,11 +35,11 @@ struct KBMapAccount::Private { Ui::KBMapAccount ui; - KMyMoneyBanking *banking; + KBankingExt *banking; AB_ACCOUNT *account; }; -KBMapAccount::KBMapAccount(KMyMoneyBanking *kb, +KBMapAccount::KBMapAccount(KBankingExt *kb, const char *bankCode, const char *accountId, QWidget* parent, diff --git a/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.h b/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.h --- a/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.h +++ b/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.h @@ -24,7 +24,7 @@ #include #include -class KMyMoneyBanking; +class KBankingExt; /** * Class derived from QBPickStartDate and modified to @@ -37,7 +37,7 @@ { Q_OBJECT public: - KBPickStartDate(KMyMoneyBanking* qb, + KBPickStartDate(KBankingExt* qb, const QDate &firstPossible, const QDate &lastUpdate, const QString& accountName, diff --git a/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.cpp b/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.cpp --- a/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.cpp +++ b/kmymoney/plugins/kbanking/dialogs/kbpickstartdate.cpp @@ -45,13 +45,13 @@ struct KBPickStartDate::Private { Ui::KBPickStartDate ui; - KMyMoneyBanking *banking; + KBankingExt *banking; QDate firstPossible; QDate lastUpdate; }; -KBPickStartDate::KBPickStartDate(KMyMoneyBanking* qb, +KBPickStartDate::KBPickStartDate(KBankingExt* qb, const QDate &firstPossible, const QDate &lastUpdate, const QString& accountName, diff --git a/kmymoney/plugins/kbanking/mymoneybanking.h b/kmymoney/plugins/kbanking/kbanking.h rename from kmymoney/plugins/kbanking/mymoneybanking.h rename to kmymoney/plugins/kbanking/kbanking.h --- a/kmymoney/plugins/kbanking/mymoneybanking.h +++ b/kmymoney/plugins/kbanking/kbanking.h @@ -37,7 +37,7 @@ class KAction; class QBanking; -class KMyMoneyBanking; +class KBankingExt; class KBAccountSettings; #include @@ -60,16 +60,17 @@ * All GUI related issues are handled in this object. */ class MyMoneyStatement; -class KBankingPlugin : public KMyMoneyPlugin::OnlinePluginExtended +class KBanking : public KMyMoneyPlugin::OnlinePluginExtended { - friend class KMyMoneyBanking; + friend class KBankingExt; Q_OBJECT - Q_PLUGIN_METADATA(IID "org.kmymoney.plugins.kbanking" FILE "kbanking.json") + Q_INTERFACES(KMyMoneyPlugin::OnlinePluginExtended + KMyMoneyPlugin::OnlinePlugin) public: - KBankingPlugin(); - virtual ~KBankingPlugin(); + explicit KBanking(QObject *parent, const QVariantList &args); + ~KBanking() override; bool importStatement(const MyMoneyStatement& s); @@ -84,8 +85,8 @@ void sendOnlineJob(QList& jobs) override; - virtual void plug() override; - virtual void unplug() override; + void plug() override; + void unplug() override; private: /** @@ -196,7 +197,7 @@ Private* const d; KAction* m_configAction; KAction* m_importAction; - KMyMoneyBanking* m_kbanking; + KBankingExt* m_kbanking; QMap m_protocolConversionMap; KBAccountSettings* m_accountSettings; @@ -211,13 +212,13 @@ * This class is the special implementation to glue the AB_Banking class * with the KMyMoneyPlugin structure. */ -class KMyMoneyBanking : public AB_Banking +class KBankingExt : public AB_Banking { - friend class KBankingPlugin; + friend class KBanking; public: - KMyMoneyBanking(KBankingPlugin* parent, const char* appname, const char* fname = 0); - virtual ~KMyMoneyBanking() {}; + explicit KBankingExt(KBanking* parent, const char* appname, const char* fname = 0); + virtual ~KBankingExt() {} int executeQueue(AB_IMEXPORTER_CONTEXT *ctx); @@ -243,7 +244,7 @@ void clearPasswordCache(); private: - KBankingPlugin* m_parent; + KBanking* m_parent; QMap m_hashMap; AB_JOB_LIST2 *_jobQueue; QSet m_sepaKeywords; diff --git a/kmymoney/plugins/kbanking/mymoneybanking.cpp b/kmymoney/plugins/kbanking/kbanking.cpp rename from kmymoney/plugins/kbanking/mymoneybanking.cpp rename to kmymoney/plugins/kbanking/kbanking.cpp --- a/kmymoney/plugins/kbanking/mymoneybanking.cpp +++ b/kmymoney/plugins/kbanking/kbanking.cpp @@ -22,7 +22,7 @@ ***************************************************************************/ #include -#include "mymoneybanking.h" +#include "kbanking.h" #include @@ -42,6 +42,7 @@ // ---------------------------------------------------------------------------- // KDE Includes +#include #include #include #include @@ -94,7 +95,7 @@ #include "chiptandialog.h" #endif -class KBankingPlugin::Private +class KBanking::Private { public: Private() : @@ -154,29 +155,32 @@ }; -KBankingPlugin::KBankingPlugin() - : KMyMoneyPlugin::OnlinePluginExtended(nullptr, "KBanking"/*must be the same as X-KDE-PluginInfo-Name*/) +KBanking::KBanking(QObject *parent, const QVariantList &args) : + OnlinePluginExtended(parent, "kbanking") , d(new Private) , m_configAction(nullptr) , m_importAction(nullptr) , m_kbanking(nullptr) , m_accountSettings(nullptr) { + Q_UNUSED(args) + qDebug("Plugins: kbanking loaded"); } -KBankingPlugin::~KBankingPlugin() +KBanking::~KBanking() { delete d; + qDebug("Plugins: kbanking unloaded"); } -void KBankingPlugin::plug() +void KBanking::plug() { - m_kbanking = new KMyMoneyBanking(this, "KMyMoney"); + m_kbanking = new KBankingExt(this, "KMyMoney"); d->passwordCacheTimer = new QTimer(this); d->passwordCacheTimer->setSingleShot(true); d->passwordCacheTimer->setInterval(60000); - connect(d->passwordCacheTimer, &QTimer::timeout, this, &KBankingPlugin::slotClearPasswordCache); + connect(d->passwordCacheTimer, &QTimer::timeout, this, &KBanking::slotClearPasswordCache); if (m_kbanking) { if (AB_Banking_HasConf4(m_kbanking->getCInterface())) { @@ -200,9 +204,9 @@ if (m_kbanking->init() == 0) { // Tell the host application to load my GUI component - setComponentName("kmm_kbanking", "KBanking"); - setXMLFile("kmm_kbanking.rc"); - qDebug("KMyMoney kbanking plugin loaded"); + setComponentName("kbanking", "KBanking"); + setXMLFile("kbanking.rc"); + qDebug("Plugins: kbanking pluged"); // get certificate handling and dialog settings management AB_Gui_Extend(gui->getCInterface(), m_kbanking->getCInterface()); @@ -213,7 +217,7 @@ // load protocol conversion list loadProtocolConversion(); GWEN_Logger_SetLevel(AQBANKING_LOGDOMAIN, GWEN_LoggerLevel_Warning); - GWEN_Gui_SetLogHookFn(GWEN_Gui_GetGui(), &KBankingPlugin::Private::gwenLogHook); + GWEN_Gui_SetLogHookFn(GWEN_Gui_GetGui(), &KBanking::Private::gwenLogHook); } else { qWarning("Could not initialize KBanking online banking interface"); @@ -223,17 +227,18 @@ } } -void KBankingPlugin::unplug() +void KBanking::unplug() { d->passwordCacheTimer->deleteLater(); if (m_kbanking) { m_kbanking->fini(); delete m_kbanking; + qDebug("Plugins: kbanking unpluged"); } } -void KBankingPlugin::loadProtocolConversion() +void KBanking::loadProtocolConversion() { if (m_kbanking) { m_protocolConversionMap = { @@ -247,7 +252,7 @@ } -void KBankingPlugin::protocols(QStringList& protocolList) const +void KBanking::protocols(QStringList& protocolList) const { if (m_kbanking) { std::list list = m_kbanking->getActiveProviders(); @@ -267,7 +272,7 @@ } -QWidget* KBankingPlugin::accountConfigTab(const MyMoneyAccount& acc, QString& name) +QWidget* KBanking::accountConfigTab(const MyMoneyAccount& acc, QString& name) { const MyMoneyKeyValueContainer& kvp = acc.onlineBankingSettings(); name = i18n("Online settings"); @@ -282,7 +287,7 @@ } -MyMoneyKeyValueContainer KBankingPlugin::onlineBankingSettings(const MyMoneyKeyValueContainer& current) +MyMoneyKeyValueContainer KBanking::onlineBankingSettings(const MyMoneyKeyValueContainer& current) { MyMoneyKeyValueContainer kvp(current); kvp["provider"] = objectName(); @@ -293,15 +298,15 @@ } -void KBankingPlugin::createActions() +void KBanking::createActions() { QAction *settings_aqbanking = actionCollection()->addAction("settings_aqbanking"); settings_aqbanking->setText(i18n("Configure Aq&Banking...")); - connect(settings_aqbanking, &QAction::triggered, this, &KBankingPlugin::slotSettings); + connect(settings_aqbanking, &QAction::triggered, this, &KBanking::slotSettings); QAction *file_import_aqbanking = actionCollection()->addAction("file_import_aqbanking"); file_import_aqbanking->setText(i18n("AqBanking importer...")); - connect(file_import_aqbanking, &QAction::triggered, this, &KBankingPlugin::slotImport); + connect(file_import_aqbanking, &QAction::triggered, this, &KBanking::slotImport); Q_CHECK_PTR(viewInterface()); connect(viewInterface(), &KMyMoneyPlugin::ViewInterface::viewStateChanged, action("file_import_aqbanking"), &QAction::setEnabled); @@ -320,7 +325,7 @@ #endif } -void KBankingPlugin::slotSettings() +void KBanking::slotSettings() { if (m_kbanking) { GWEN_DIALOG* dlg = AB_SetupDialog_new(m_kbanking->getCInterface()); @@ -339,7 +344,7 @@ } -bool KBankingPlugin::mapAccount(const MyMoneyAccount& acc, MyMoneyKeyValueContainer& settings) +bool KBanking::mapAccount(const MyMoneyAccount& acc, MyMoneyKeyValueContainer& settings) { bool rc = false; if (m_kbanking && !acc.id().isEmpty()) { @@ -360,7 +365,7 @@ } -AB_ACCOUNT* KBankingPlugin::aqbAccount(const MyMoneyAccount& acc) const +AB_ACCOUNT* KBanking::aqbAccount(const MyMoneyAccount& acc) const { if (m_kbanking == 0) { return 0; @@ -387,14 +392,14 @@ } -AB_ACCOUNT* KBankingPlugin::aqbAccount(const QString& accountId) const +AB_ACCOUNT* KBanking::aqbAccount(const QString& accountId) const { MyMoneyAccount account = MyMoneyFile::instance()->account(accountId); return aqbAccount(account); } -QString KBankingPlugin::stripLeadingZeroes(const QString& s) const +QString KBanking::stripLeadingZeroes(const QString& s) const { QString rc(s); QRegExp exp("^(0*)([^0].*)"); @@ -404,7 +409,7 @@ return rc; } -void KBankingPlugin::setupAccountReference(const MyMoneyAccount& acc, AB_ACCOUNT* ab_acc) +void KBanking::setupAccountReference(const MyMoneyAccount& acc, AB_ACCOUNT* ab_acc) { MyMoneyKeyValueContainer kvp; @@ -436,19 +441,19 @@ } -bool KBankingPlugin::accountIsMapped(const MyMoneyAccount& acc) +bool KBanking::accountIsMapped(const MyMoneyAccount& acc) { return aqbAccount(acc) != 0; } -bool KBankingPlugin::updateAccount(const MyMoneyAccount& acc) +bool KBanking::updateAccount(const MyMoneyAccount& acc) { return updateAccount(acc, false); } -bool KBankingPlugin::updateAccount(const MyMoneyAccount& acc, bool moreAccounts) +bool KBanking::updateAccount(const MyMoneyAccount& acc, bool moreAccounts) { if (!m_kbanking) return false; @@ -604,7 +609,7 @@ } -void KBankingPlugin::executeQueue() +void KBanking::executeQueue() { if (m_kbanking && m_kbanking->getEnqueuedJobs().size() > 0) { AB_IMEXPORTER_CONTEXT *ctx; @@ -623,7 +628,7 @@ /** @todo improve error handling, e.g. by adding a .isValid to nationalTransfer * @todo use new onlineJob system */ -void KBankingPlugin::sendOnlineJob(QList& jobs) +void KBanking::sendOnlineJob(QList& jobs) { Q_CHECK_PTR(m_kbanking); @@ -650,7 +655,7 @@ } -QStringList KBankingPlugin::availableJobs(QString accountId) +QStringList KBanking::availableJobs(QString accountId) { try { MyMoneyAccount acc = MyMoneyFile::instance()->account(accountId); @@ -708,7 +713,7 @@ }; -IonlineTaskSettings::ptr KBankingPlugin::settings(QString accountId, QString taskName) +IonlineTaskSettings::ptr KBanking::settings(QString accountId, QString taskName) { AB_ACCOUNT* abAcc = aqbAccount(accountId); if (abAcc == 0) @@ -726,7 +731,7 @@ } -bool KBankingPlugin::enqueTransaction(onlineJobTyped& job) +bool KBanking::enqueTransaction(onlineJobTyped& job) { /* get AqBanking account */ const QString accId = job.constTask()->responsibleAccount(); @@ -791,55 +796,55 @@ } -void KBankingPlugin::startPasswordTimer() +void KBanking::startPasswordTimer() { if (d->passwordCacheTimer->isActive()) d->passwordCacheTimer->stop(); d->passwordCacheTimer->start(); } -void KBankingPlugin::slotClearPasswordCache() +void KBanking::slotClearPasswordCache() { m_kbanking->clearPasswordCache(); } -void KBankingPlugin::slotImport() +void KBanking::slotImport() { if (!m_kbanking->interactiveImport()) qWarning("Error on import dialog"); } -bool KBankingPlugin::importStatement(const MyMoneyStatement& s) +bool KBanking::importStatement(const MyMoneyStatement& s) { return statementInterface()->import(s); } -MyMoneyAccount KBankingPlugin::account(const QString& key, const QString& value) const +MyMoneyAccount KBanking::account(const QString& key, const QString& value) const { return statementInterface()->account(key, value); } -void KBankingPlugin::setAccountOnlineParameters(const MyMoneyAccount& acc, const MyMoneyKeyValueContainer& kvps) const +void KBanking::setAccountOnlineParameters(const MyMoneyAccount& acc, const MyMoneyKeyValueContainer& kvps) const { return statementInterface()->setAccountOnlineParameters(acc, kvps); } -KMyMoneyBanking::KMyMoneyBanking(KBankingPlugin* parent, const char* appname, const char* fname) +KBankingExt::KBankingExt(KBanking* parent, const char* appname, const char* fname) : AB_Banking(appname, fname) , m_parent(parent) , _jobQueue(0) { m_sepaKeywords = {QString::fromUtf8("SEPA-BASISLASTSCHRIFT"), QString::fromUtf8("SEPA-ÜBERWEISUNG")}; } -int KMyMoneyBanking::init() +int KBankingExt::init() { int rv = AB_Banking::init(); if (rv < 0) @@ -857,7 +862,7 @@ } -int KMyMoneyBanking::fini() +int KBankingExt::fini() { if (_jobQueue) { AB_Job_List2_FreeAll(_jobQueue); @@ -873,7 +878,7 @@ } -int KMyMoneyBanking::executeQueue(AB_IMEXPORTER_CONTEXT *ctx) +int KBankingExt::executeQueue(AB_IMEXPORTER_CONTEXT *ctx) { m_parent->startPasswordTimer(); @@ -937,14 +942,14 @@ } -void KMyMoneyBanking::clearPasswordCache() +void KBankingExt::clearPasswordCache() { /* clear password DB */ GWEN_Gui_SetPasswordStatus(NULL, NULL, GWEN_Gui_PasswordStatus_Remove, 0); } -std::list KMyMoneyBanking::getEnqueuedJobs() +std::list KBankingExt::getEnqueuedJobs() { AB_JOB_LIST2 *ll; std::list rl; @@ -968,7 +973,7 @@ } -int KMyMoneyBanking::enqueueJob(AB_JOB *j) +int KBankingExt::enqueueJob(AB_JOB *j) { assert(_jobQueue); assert(j); @@ -978,7 +983,7 @@ } -int KMyMoneyBanking::dequeueJob(AB_JOB *j) +int KBankingExt::dequeueJob(AB_JOB *j) { assert(_jobQueue); AB_Job_List2_Remove(_jobQueue, j); @@ -988,13 +993,13 @@ } -void KMyMoneyBanking::transfer() +void KBankingExt::transfer() { //m_parent->transfer(); } -bool KMyMoneyBanking::askMapAccount(const MyMoneyAccount& acc) +bool KBankingExt::askMapAccount(const MyMoneyAccount& acc) { MyMoneyFile* file = MyMoneyFile::instance(); @@ -1054,7 +1059,7 @@ } -QString KMyMoneyBanking::mappingId(const MyMoneyObject& object) const +QString KBankingExt::mappingId(const MyMoneyObject& object) const { QString id = MyMoneyFile::instance()->storageId() + QLatin1Char('-') + object.id(); @@ -1065,7 +1070,7 @@ } -bool KMyMoneyBanking::interactiveImport() +bool KBankingExt::interactiveImport() { AB_IMEXPORTER_CONTEXT *ctx; GWEN_DIALOG *dlg; @@ -1100,7 +1105,7 @@ } -const AB_ACCOUNT_STATUS* KMyMoneyBanking::_getAccountStatus(AB_IMEXPORTER_ACCOUNTINFO *ai) +const AB_ACCOUNT_STATUS* KBankingExt::_getAccountStatus(AB_IMEXPORTER_ACCOUNTINFO *ai) { const AB_ACCOUNT_STATUS *ast; const AB_ACCOUNT_STATUS *best; @@ -1137,7 +1142,7 @@ } -void KMyMoneyBanking::_xaToStatement(MyMoneyStatement &ks, +void KBankingExt::_xaToStatement(MyMoneyStatement &ks, const MyMoneyAccount& acc, const AB_TRANSACTION *t) { @@ -1406,7 +1411,7 @@ } -bool KMyMoneyBanking::importAccountInfo(AB_IMEXPORTER_ACCOUNTINFO *ai, +bool KBankingExt::importAccountInfo(AB_IMEXPORTER_ACCOUNTINFO *ai, uint32_t /*flags*/) { const char *p; @@ -1512,4 +1517,6 @@ return true; } -#include "mymoneybanking.moc" +K_PLUGIN_FACTORY_WITH_JSON(KBankingFactory, "kbanking.json", registerPlugin();) + +#include "kbanking.moc" diff --git a/kmymoney/plugins/kbanking/kbanking.json.in b/kmymoney/plugins/kbanking/kbanking.json.in --- a/kmymoney/plugins/kbanking/kbanking.json.in +++ b/kmymoney/plugins/kbanking/kbanking.json.in @@ -39,7 +39,7 @@ "Description[zh_TW]": "新增線上銀行到 KMyMoney", "EnabledByDefault": true, "Icon": "network-connect", - "Id": "KBanking", + "Id": "kbanking", "License": "GPL", "Name": "KBanking", "Name[ar]": "مصرفك", diff --git a/kmymoney/plugins/kbanking/kmm_kbanking.rc b/kmymoney/plugins/kbanking/kbanking.rc rename from kmymoney/plugins/kbanking/kmm_kbanking.rc rename to kmymoney/plugins/kbanking/kbanking.rc diff --git a/kmymoney/plugins/kbanking/kmm_kbanking_debug.rc b/kmymoney/plugins/kbanking/kbanking_debug.rc rename from kmymoney/plugins/kbanking/kmm_kbanking_debug.rc rename to kmymoney/plugins/kbanking/kbanking_debug.rc diff --git a/kmymoney/plugins/kbanking/qml/chipTan/CMakeLists.txt b/kmymoney/plugins/kbanking/qml/chipTan/CMakeLists.txt --- a/kmymoney/plugins/kbanking/qml/chipTan/CMakeLists.txt +++ b/kmymoney/plugins/kbanking/qml/chipTan/CMakeLists.txt @@ -5,4 +5,4 @@ positionmarker.svg ) -install(FILES ${kbanking_qml_files} DESTINATION ${DATA_INSTALL_DIR}/kmm_kbanking/qml/chipTan/) +install(FILES ${kbanking_qml_files} DESTINATION ${DATA_INSTALL_DIR}/kbanking/qml/chipTan/) diff --git a/kmymoney/plugins/kbanking/tasksettings/CMakeLists.txt b/kmymoney/plugins/kbanking/tasksettings/CMakeLists.txt --- a/kmymoney/plugins/kbanking/tasksettings/CMakeLists.txt +++ b/kmymoney/plugins/kbanking/tasksettings/CMakeLists.txt @@ -2,9 +2,9 @@ credittransfersettingsbase.cpp ) -add_library( kmm_kbanking_tasksettings STATIC ${kbanking_tasksettings_SRCS} ) +add_library( kbanking_tasksettings STATIC ${kbanking_tasksettings_SRCS} ) -target_link_libraries( kmm_kbanking_tasksettings +target_link_libraries( kbanking_tasksettings kmm_utils_validators Qt5::Gui Qt5::Xml diff --git a/kmymoney/plugins/kbanking/views/CMakeLists.txt b/kmymoney/plugins/kbanking/views/CMakeLists.txt --- a/kmymoney/plugins/kbanking/views/CMakeLists.txt +++ b/kmymoney/plugins/kbanking/views/CMakeLists.txt @@ -1,19 +1,19 @@ ########### next target ############### -set(kmm_kbanking_views_la_SOURCES +set(kbanking_views_la_SOURCES kbjobview.cpp ) -set(kmm_kbanking_views_UI +set(kbanking_views_UI kbjobview.ui ) -ki18n_wrap_ui(kmm_kbanking_views_la_SOURCES - ${kmm_kbanking_views_UI}) +ki18n_wrap_ui(kbanking_views_la_SOURCES + ${kbanking_views_UI}) -add_library(kmm_kbanking_views STATIC ${kmm_kbanking_views_la_SOURCES}) +add_library(kbanking_views STATIC ${kbanking_views_la_SOURCES}) -target_link_libraries(kmm_kbanking_views +target_link_libraries(kbanking_views Qt5::Widgets ) diff --git a/kmymoney/plugins/kbanking/widgets/CMakeLists.txt b/kmymoney/plugins/kbanking/widgets/CMakeLists.txt --- a/kmymoney/plugins/kbanking/widgets/CMakeLists.txt +++ b/kmymoney/plugins/kbanking/widgets/CMakeLists.txt @@ -1,23 +1,23 @@ ########### next target ############### -set(kmm_kbanking_widgets_la_SOURCES +set(kbanking_widgets_la_SOURCES chiptandialog.cpp kbaccountlist.cpp kbjoblist.cpp ) -set(kmm_kbanking_widgets_UI +set(kbanking_widgets_UI chiptandialog.ui ) -kconfig_add_kcfg_files(kmm_kbanking_widgets_la_SOURCES ../kbankingsettings.kcfgc) +kconfig_add_kcfg_files(kbanking_widgets_la_SOURCES ../kbankingsettings.kcfgc) -ki18n_wrap_ui(kmm_kbanking_widgets_la_SOURCES ${kmm_kbanking_widgets_UI}) +ki18n_wrap_ui(kbanking_widgets_la_SOURCES ${kbanking_widgets_UI}) -add_library(kmm_kbanking_widgets STATIC ${kmm_kbanking_widgets_la_SOURCES}) +add_library(kbanking_widgets STATIC ${kbanking_widgets_la_SOURCES}) -target_link_libraries(kmm_kbanking_widgets +target_link_libraries(kbanking_widgets Qt5::Widgets Qt5::QuickWidgets aqbanking::aqbanking diff --git a/kmymoney/plugins/ofx/CMakeLists.txt b/kmymoney/plugins/ofx/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/kmymoney/plugins/ofx/CMakeLists.txt @@ -0,0 +1,3 @@ +if(ENABLE_OFXIMPORTER) + add_subdirectory( import ) +endif(ENABLE_OFXIMPORTER) diff --git a/kmymoney/plugins/ofximport/CMakeLists.txt b/kmymoney/plugins/ofx/import/CMakeLists.txt rename from kmymoney/plugins/ofximport/CMakeLists.txt rename to kmymoney/plugins/ofx/import/CMakeLists.txt --- a/kmymoney/plugins/ofximport/CMakeLists.txt +++ b/kmymoney/plugins/ofx/import/CMakeLists.txt @@ -1,5 +1,5 @@ # patch the version with the version defined in the build system -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ofximport.json.in ${CMAKE_CURRENT_BINARY_DIR}/ofximport.json @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/ofximporter.json.in ${CMAKE_CURRENT_BINARY_DIR}/ofximporter.json @ONLY) if(${LIBOFX_HAVE_CLIENTUID}) add_definitions(-DLIBOFX_HAVE_CLIENTUID) @@ -9,21 +9,21 @@ ########### next target ############### -set(kmm_ofximport_PART_SRCS - ofximporterplugin.cpp +set(ofximporter_PART_SRCS + ofximporter.cpp ofxpartner.cpp ) -set(kmm_ofximport_PART_UI +set(ofximporter_PART_UI importoption.ui ) -ki18n_wrap_ui(kmm_ofximport_PART_SRCS ${kmm_ofximport_PART_UI}) +ki18n_wrap_ui(ofximporter_PART_SRCS ${ofximporter_PART_UI}) -add_library(kmm_ofximport MODULE ${kmm_ofximport_PART_SRCS}) +add_library(ofximporter MODULE ${ofximporter_PART_SRCS}) -target_link_libraries(kmm_ofximport - kmm_ofximport_dialogs +target_link_libraries(ofximporter + ofximporter_dialogs kmm_mymoney kmm_widgets kmm_plugin @@ -33,17 +33,17 @@ ${LIBOFX_LIBRARIES} ) -target_include_directories(kmm_ofximport +target_include_directories(ofximporter PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/dialogs ${CMAKE_CURRENT_BINARY_DIR}/dialogs ${LIBOFX_INCLUDE_DIR} ) ########### install files ############### -install(FILES kmm_ofximport.rc - DESTINATION "${KXMLGUI_INSTALL_DIR}/kmm_ofximport") +install(FILES ofximporter.rc + DESTINATION "${KXMLGUI_INSTALL_DIR}/ofximporter") -install(TARGETS kmm_ofximport +install(TARGETS ofximporter DESTINATION "${KDE_INSTALL_PLUGINDIR}/kmymoney/") diff --git a/kmymoney/plugins/ofx/import/dialogs/CMakeLists.txt b/kmymoney/plugins/ofx/import/dialogs/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/kmymoney/plugins/ofx/import/dialogs/CMakeLists.txt @@ -0,0 +1,18 @@ +include_directories(${LIBOFX_INCLUDE_DIR}) + +########### next target ############### + +set(ofximporter_dialogs_la_SOURCES + kofxdirectconnectdlg.cpp konlinebankingsetupwizard.cpp + konlinebankingstatus.cpp mymoneyofxconnector.cpp + ) + +set(ofximporter_dialogs_UI + kofxdirectconnectdlgdecl.ui konlinebankingsetupwizard.ui + konlinebankingstatusdecl.ui + ) + +ki18n_wrap_ui(ofximporter_dialogs_la_SOURCES + ${ofximporter_dialogs_UI}) +add_library(ofximporter_dialogs STATIC ${ofximporter_dialogs_la_SOURCES}) +target_link_libraries(ofximporter_dialogs kmm_widgets KF5::WidgetsAddons KF5::I18n KF5::CoreAddons KF5::KIOCore KF5::KIOWidgets KF5::Wallet Qt5::Widgets Qt5::Sql Qt5::Xml) diff --git a/kmymoney/plugins/ofximport/dialogs/kofxdirectconnectdlg.h b/kmymoney/plugins/ofx/import/dialogs/kofxdirectconnectdlg.h rename from kmymoney/plugins/ofximport/dialogs/kofxdirectconnectdlg.h rename to kmymoney/plugins/ofx/import/dialogs/kofxdirectconnectdlg.h diff --git a/kmymoney/plugins/ofximport/dialogs/kofxdirectconnectdlg.cpp b/kmymoney/plugins/ofx/import/dialogs/kofxdirectconnectdlg.cpp rename from kmymoney/plugins/ofximport/dialogs/kofxdirectconnectdlg.cpp rename to kmymoney/plugins/ofx/import/dialogs/kofxdirectconnectdlg.cpp diff --git a/kmymoney/plugins/ofximport/dialogs/kofxdirectconnectdlgdecl.ui b/kmymoney/plugins/ofx/import/dialogs/kofxdirectconnectdlgdecl.ui rename from kmymoney/plugins/ofximport/dialogs/kofxdirectconnectdlgdecl.ui rename to kmymoney/plugins/ofx/import/dialogs/kofxdirectconnectdlgdecl.ui diff --git a/kmymoney/plugins/ofximport/dialogs/konlinebankingsetupwizard.h b/kmymoney/plugins/ofx/import/dialogs/konlinebankingsetupwizard.h rename from kmymoney/plugins/ofximport/dialogs/konlinebankingsetupwizard.h rename to kmymoney/plugins/ofx/import/dialogs/konlinebankingsetupwizard.h diff --git a/kmymoney/plugins/ofximport/dialogs/konlinebankingsetupwizard.cpp b/kmymoney/plugins/ofx/import/dialogs/konlinebankingsetupwizard.cpp rename from kmymoney/plugins/ofximport/dialogs/konlinebankingsetupwizard.cpp rename to kmymoney/plugins/ofx/import/dialogs/konlinebankingsetupwizard.cpp diff --git a/kmymoney/plugins/ofximport/dialogs/konlinebankingsetupwizard.ui b/kmymoney/plugins/ofx/import/dialogs/konlinebankingsetupwizard.ui rename from kmymoney/plugins/ofximport/dialogs/konlinebankingsetupwizard.ui rename to kmymoney/plugins/ofx/import/dialogs/konlinebankingsetupwizard.ui diff --git a/kmymoney/plugins/ofximport/dialogs/konlinebankingstatus.h b/kmymoney/plugins/ofx/import/dialogs/konlinebankingstatus.h rename from kmymoney/plugins/ofximport/dialogs/konlinebankingstatus.h rename to kmymoney/plugins/ofx/import/dialogs/konlinebankingstatus.h diff --git a/kmymoney/plugins/ofximport/dialogs/konlinebankingstatus.cpp b/kmymoney/plugins/ofx/import/dialogs/konlinebankingstatus.cpp rename from kmymoney/plugins/ofximport/dialogs/konlinebankingstatus.cpp rename to kmymoney/plugins/ofx/import/dialogs/konlinebankingstatus.cpp diff --git a/kmymoney/plugins/ofximport/dialogs/konlinebankingstatusdecl.ui b/kmymoney/plugins/ofx/import/dialogs/konlinebankingstatusdecl.ui rename from kmymoney/plugins/ofximport/dialogs/konlinebankingstatusdecl.ui rename to kmymoney/plugins/ofx/import/dialogs/konlinebankingstatusdecl.ui diff --git a/kmymoney/plugins/ofximport/dialogs/mymoneyofxconnector.h b/kmymoney/plugins/ofx/import/dialogs/mymoneyofxconnector.h rename from kmymoney/plugins/ofximport/dialogs/mymoneyofxconnector.h rename to kmymoney/plugins/ofx/import/dialogs/mymoneyofxconnector.h diff --git a/kmymoney/plugins/ofximport/dialogs/mymoneyofxconnector.cpp b/kmymoney/plugins/ofx/import/dialogs/mymoneyofxconnector.cpp rename from kmymoney/plugins/ofximport/dialogs/mymoneyofxconnector.cpp rename to kmymoney/plugins/ofx/import/dialogs/mymoneyofxconnector.cpp diff --git a/kmymoney/plugins/ofximport/importoption.ui b/kmymoney/plugins/ofx/import/importoption.ui rename from kmymoney/plugins/ofximport/importoption.ui rename to kmymoney/plugins/ofx/import/importoption.ui diff --git a/kmymoney/plugins/ofximport/nodeparser.h b/kmymoney/plugins/ofx/import/nodeparser.h rename from kmymoney/plugins/ofximport/nodeparser.h rename to kmymoney/plugins/ofx/import/nodeparser.h diff --git a/kmymoney/plugins/ofximport/nodeparser.cpp b/kmymoney/plugins/ofx/import/nodeparser.cpp rename from kmymoney/plugins/ofximport/nodeparser.cpp rename to kmymoney/plugins/ofx/import/nodeparser.cpp diff --git a/kmymoney/plugins/ofximport/ofximporterplugin.h b/kmymoney/plugins/ofx/import/ofximporter.h rename from kmymoney/plugins/ofximport/ofximporterplugin.h rename to kmymoney/plugins/ofx/import/ofximporter.h --- a/kmymoney/plugins/ofximport/ofximporterplugin.h +++ b/kmymoney/plugins/ofx/import/ofximporter.h @@ -1,5 +1,5 @@ /*************************************************************************** - ofximporterplugin.h + ofximporter.h ------------------- begin : Sat Jan 01 2005 copyright : (C) 2005 by Ace Jones @@ -15,8 +15,8 @@ * * ***************************************************************************/ -#ifndef OFXIMPORTERPLUGIN_H -#define OFXIMPORTERPLUGIN_H +#ifndef OFXIMPORTER_H +#define OFXIMPORTER_H // ---------------------------------------------------------------------------- // KDE Includes @@ -38,33 +38,32 @@ */ class MyMoneyAccount; class MyMoneyStatement; -class OfxImporterPlugin : public KMyMoneyPlugin::Plugin, public KMyMoneyPlugin::ImporterPlugin, public KMyMoneyPlugin::OnlinePlugin +class OFXImporter : public KMyMoneyPlugin::Plugin, public KMyMoneyPlugin::ImporterPlugin, public KMyMoneyPlugin::OnlinePlugin { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.kmymoney.plugins.ofximport" FILE "ofximport.json") Q_INTERFACES(KMyMoneyPlugin::ImporterPlugin) Q_INTERFACES(KMyMoneyPlugin::OnlinePlugin) public: - explicit OfxImporterPlugin(); - ~OfxImporterPlugin(); + explicit OFXImporter(QObject *parent, const QVariantList &args); + ~OFXImporter() override; /** * This method returns the english-language name of the format * this plugin imports, e.g. "OFX" * * @return QString Name of the format */ - virtual QString formatName() const; + QString formatName() const override; /** * This method returns the filename filter suitable for passing to * KFileDialog::setFilter(), e.g. "*.ofx *.qfx" which describes how * files of this format are likely to be named in the file system * * @return QString Filename filter string */ - virtual QString formatFilenameFilter() const; + QString formatFilenameFilter() const override; /** * This method returns whether this plugin is able to import @@ -74,47 +73,47 @@ * * @return bool Whether the indicated file is importable by this plugin */ - virtual bool isMyFormat(const QString& filename) const; + bool isMyFormat(const QString& filename) const override; /** * Import a file * * @param filename File to import * * @return bool Whether the import was successful. */ - virtual bool import(const QString& filename); + bool import(const QString& filename) override; /** * Returns the error result of the last import * * @return QString English-language name of the error encountered in the * last import, or QString() if it was successful. * */ - virtual QString lastError() const; + QString lastError() const override; /** * Returns a pointer to a widget that will be added as tab to * the account edit dialog. @sa KNewAccountDlg. The data of the * current account is passed as const reference @a acc. @a name references * a QString that will receive the name of the tab to be shown in the dialog. */ - QWidget* accountConfigTab(const MyMoneyAccount& acc, QString& name); + QWidget* accountConfigTab(const MyMoneyAccount& acc, QString& name) override; /** * Retrieves the online banking settings and updates the password in the KDE wallet. * The caller has the choice to pass a MyMoneyKeyValueContainer with the @a current * settings. Only those are modified that are used by the plugin. */ - MyMoneyKeyValueContainer onlineBankingSettings(const MyMoneyKeyValueContainer& current); + MyMoneyKeyValueContainer onlineBankingSettings(const MyMoneyKeyValueContainer& current) override; MyMoneyAccount account(const QString& key, const QString& value) const; - void protocols(QStringList& protocolList) const; + void protocols(QStringList& protocolList) const override; - bool mapAccount(const MyMoneyAccount& acc, MyMoneyKeyValueContainer& settings); - bool updateAccount(const MyMoneyAccount& acc, bool moreAccounts); + bool mapAccount(const MyMoneyAccount& acc, MyMoneyKeyValueContainer& settings) override; + bool updateAccount(const MyMoneyAccount& acc, bool moreAccounts) override; protected Q_SLOTS: void slotImportFile(); diff --git a/kmymoney/plugins/ofximport/ofximporterplugin.cpp b/kmymoney/plugins/ofx/import/ofximporter.cpp rename from kmymoney/plugins/ofximport/ofximporterplugin.cpp rename to kmymoney/plugins/ofx/import/ofximporter.cpp --- a/kmymoney/plugins/ofximport/ofximporterplugin.cpp +++ b/kmymoney/plugins/ofx/import/ofximporter.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - ofximporterplugin.cpp + ofximporter.cpp ------------------- begin : Sat Jan 01 2005 copyright : (C) 2005 by Ace Jones @@ -15,7 +15,7 @@ * * ***************************************************************************/ -#include "ofximporterplugin.h" +#include "ofximporter.h" // ---------------------------------------------------------------------------- // QT Includes @@ -29,6 +29,7 @@ // ---------------------------------------------------------------------------- // KDE Includes +#include #include #include #include @@ -53,7 +54,7 @@ using KWallet::Wallet; -class OfxImporterPlugin::Private +class OFXImporter::Private { public: Private() : m_valid(false), m_preferName(PreferId), m_walletIsOpen(false), m_statusDlg(0), m_wallet(0), @@ -80,37 +81,39 @@ -OfxImporterPlugin::OfxImporterPlugin() : - KMyMoneyPlugin::Plugin(nullptr, "KMyMoney OFX"), +OFXImporter::OFXImporter(QObject *parent, const QVariantList &args) : + KMyMoneyPlugin::Plugin(parent, "ofximporter"), /* * the string in the line above must be the same as * X-KDE-PluginInfo-Name and the provider name assigned in * OfxImporterPlugin::onlineBankingSettings() */ KMyMoneyPlugin::ImporterPlugin(), d(new Private) { - setComponentName("kmm_ofximport", i18n("KMyMoney OFX")); - setXMLFile("kmm_ofximport.rc"); + Q_UNUSED(args) + setComponentName("ofximporter", i18n("OFX Importer")); + setXMLFile("ofximporter.rc"); createActions(); // For ease announce that we have been loaded. - qDebug("KMyMoney ofximport plugin loaded"); + qDebug("Plugins: ofximporter loaded"); } -OfxImporterPlugin::~OfxImporterPlugin() +OFXImporter::~OFXImporter() { delete d; + qDebug("Plugins: ofximporter unloaded"); } -void OfxImporterPlugin::createActions() +void OFXImporter::createActions() { QAction *action = actionCollection()->addAction("file_import_ofx"); action->setText(i18n("OFX...")); connect(action, SIGNAL(triggered(bool)), this, SLOT(slotImportFile())); } -void OfxImporterPlugin::slotImportFile() +void OFXImporter::slotImportFile() { QWidget * widget = new QWidget; Ui_ImportOption* option = new Ui_ImportOption; @@ -122,7 +125,7 @@ QFileDialog::ExistingFile, widget); - d->m_preferName = static_cast(option->m_preferName->currentIndex()); + d->m_preferName = static_cast(option->m_preferName->currentIndex()); if (url.isValid()) { if (isMyFormat(url.path())) { @@ -135,18 +138,18 @@ delete widget; } -QString OfxImporterPlugin::formatName() const +QString OFXImporter::formatName() const { return "OFX"; } -QString OfxImporterPlugin::formatFilenameFilter() const +QString OFXImporter::formatFilenameFilter() const { return "*.ofx *.qfx *.ofc"; } -bool OfxImporterPlugin::isMyFormat(const QString& filename) const +bool OFXImporter::isMyFormat(const QString& filename) const { // filename is considered an Ofx file if it contains // the tag "" or "" in the first 20 lines. @@ -174,7 +177,7 @@ return result; } -bool OfxImporterPlugin::import(const QString& filename) +bool OFXImporter::import(const QString& filename) { d->m_fatalerror = i18n("Unable to parse file"); d->m_valid = false; @@ -222,7 +225,7 @@ return d->m_valid; } -QString OfxImporterPlugin::lastError() const +QString OFXImporter::lastError() const { if (d->m_errors.count() == 0) return d->m_fatalerror; @@ -237,11 +240,11 @@ * YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY */ -int OfxImporterPlugin::ofxTransactionCallback(struct OfxTransactionData data, void * pv) +int OFXImporter::ofxTransactionCallback(struct OfxTransactionData data, void * pv) { // kDebug(2) << Q_FUNC_INFO; - OfxImporterPlugin* pofx = reinterpret_cast(pv); + OFXImporter* pofx = reinterpret_cast(pv); MyMoneyStatement& s = pofx->back(); MyMoneyStatement::Transaction t; @@ -281,7 +284,7 @@ bool validity[3] = {false, false, false}; QStringList values; switch (pofx->d->m_preferName) { - case OfxImporterPlugin::Private::PreferId: // PAYEEID + case OFXImporter::Private::PreferId: // PAYEEID default: validity[0] = data.payee_id_valid; validity[1] = data.name_valid; @@ -291,16 +294,16 @@ values += QString::fromUtf8(data.memo); break; - case OfxImporterPlugin::Private::PreferName: // NAME + case OFXImporter::Private::PreferName: // NAME validity[0] = data.name_valid; validity[1] = data.payee_id_valid; validity[2] = data.memo_valid; values += QString::fromUtf8(data.name); values += QString::fromUtf8(data.payee_id); values += QString::fromUtf8(data.memo); break; - case OfxImporterPlugin::Private::PreferMemo: // MEMO + case OFXImporter::Private::PreferMemo: // MEMO validity[0] = data.memo_valid; validity[1] = data.payee_id_valid; validity[2] = data.name_valid; @@ -319,7 +322,7 @@ // extract memo field if we haven't used it as payee if ((data.memo_valid) - && (pofx->d->m_preferName != OfxImporterPlugin::Private::PreferMemo)) { + && (pofx->d->m_preferName != OFXImporter::Private::PreferMemo)) { t.m_strMemo = QString::fromUtf8(data.memo); } @@ -462,11 +465,11 @@ return 0; } -int OfxImporterPlugin::ofxStatementCallback(struct OfxStatementData data, void* pv) +int OFXImporter::ofxStatementCallback(struct OfxStatementData data, void* pv) { // kDebug(2) << Q_FUNC_INFO; - OfxImporterPlugin* pofx = reinterpret_cast(pv); + OFXImporter* pofx = reinterpret_cast(pv); MyMoneyStatement& s = pofx->back(); pofx->setValid(); @@ -502,11 +505,11 @@ return 0; } -int OfxImporterPlugin::ofxAccountCallback(struct OfxAccountData data, void * pv) +int OFXImporter::ofxAccountCallback(struct OfxAccountData data, void * pv) { // kDebug(2) << Q_FUNC_INFO; - OfxImporterPlugin* pofx = reinterpret_cast(pv); + OFXImporter* pofx = reinterpret_cast(pv); pofx->addnew(); MyMoneyStatement& s = pofx->back(); @@ -557,11 +560,11 @@ return 0; } -int OfxImporterPlugin::ofxSecurityCallback(struct OfxSecurityData data, void* pv) +int OFXImporter::ofxSecurityCallback(struct OfxSecurityData data, void* pv) { // kDebug(2) << Q_FUNC_INFO; - OfxImporterPlugin* pofx = reinterpret_cast(pv); + OFXImporter* pofx = reinterpret_cast(pv); MyMoneyStatement::Security sec; if (data.unique_id_valid) { @@ -579,11 +582,11 @@ return 0; } -int OfxImporterPlugin::ofxStatusCallback(struct OfxStatusData data, void * pv) +int OFXImporter::ofxStatusCallback(struct OfxStatusData data, void * pv) { // kDebug(2) << Q_FUNC_INFO; - OfxImporterPlugin* pofx = reinterpret_cast(pv); + OFXImporter* pofx = reinterpret_cast(pv); QString message; // if we got this far, we know we were able to parse the file. @@ -623,35 +626,35 @@ return 0; } -bool OfxImporterPlugin::importStatement(const MyMoneyStatement& s) +bool OFXImporter::importStatement(const MyMoneyStatement& s) { qDebug("OfxImporterPlugin::importStatement start"); return statementInterface()->import(s); } -MyMoneyAccount OfxImporterPlugin::account(const QString& key, const QString& value) const +MyMoneyAccount OFXImporter::account(const QString& key, const QString& value) const { return statementInterface()->account(key, value); } -void OfxImporterPlugin::protocols(QStringList& protocolList) const +void OFXImporter::protocols(QStringList& protocolList) const { protocolList.clear(); protocolList << "OFX"; } -QWidget* OfxImporterPlugin::accountConfigTab(const MyMoneyAccount& acc, QString& name) +QWidget* OFXImporter::accountConfigTab(const MyMoneyAccount& acc, QString& name) { name = i18n("Online settings"); d->m_statusDlg = new KOnlineBankingStatus(acc, 0); return d->m_statusDlg; } -MyMoneyKeyValueContainer OfxImporterPlugin::onlineBankingSettings(const MyMoneyKeyValueContainer& current) +MyMoneyKeyValueContainer OFXImporter::onlineBankingSettings(const MyMoneyKeyValueContainer& current) { MyMoneyKeyValueContainer kvp(current); // keep the provider name in sync with the one found in kmm_ofximport.desktop - kvp["provider"] = "KMyMoney OFX"; + kvp["provider"] = QLatin1String("OFX Importer"); if (d->m_statusDlg) { kvp.deletePair("appId"); kvp.deletePair("kmmofx-headerVersion"); @@ -694,7 +697,7 @@ return kvp; } -bool OfxImporterPlugin::mapAccount(const MyMoneyAccount& acc, MyMoneyKeyValueContainer& settings) +bool OFXImporter::mapAccount(const MyMoneyAccount& acc, MyMoneyKeyValueContainer& settings) { Q_UNUSED(acc); @@ -711,15 +714,15 @@ return rc; } -bool OfxImporterPlugin::updateAccount(const MyMoneyAccount& acc, bool moreAccounts) +bool OFXImporter::updateAccount(const MyMoneyAccount& acc, bool moreAccounts) { Q_UNUSED(moreAccounts); qDebug("OfxImporterPlugin::updateAccount"); try { if (!acc.id().isEmpty()) { // Save the value of preferName to be used by ofxTransactionCallback - d->m_preferName = static_cast(acc.onlineBankingSettings().value("kmmofx-preferName").toInt()); + d->m_preferName = static_cast(acc.onlineBankingSettings().value("kmmofx-preferName").toInt()); QPointer dlg = new KOfxDirectConnectDlg(acc); connect(dlg, SIGNAL(statementReady(QString)), @@ -761,15 +764,15 @@ return false; } -void OfxImporterPlugin::slotImportFile(const QString& url) +void OFXImporter::slotImportFile(const QString& url) { qDebug("OfxImporterPlugin::slotImportFile"); if (!import(url)) { KMessageBox::error(0, QString("%1").arg(i18n("

Unable to import '%1' using the OFX importer plugin. The plugin returned the following error:

%2

", url, lastError())), i18n("Importing error")); } } -bool OfxImporterPlugin::storeStatements(QList& statements) +bool OFXImporter::storeStatements(QList& statements) { bool hasstatements = (statements.count() > 0); bool ok = true; @@ -802,43 +805,47 @@ return (!hasstatements || ok); } -void OfxImporterPlugin::addnew() +void OFXImporter::addnew() { d->m_statementlist.push_back(MyMoneyStatement()); } -MyMoneyStatement& OfxImporterPlugin::back() +MyMoneyStatement& OFXImporter::back() { return d->m_statementlist.back(); } -bool OfxImporterPlugin::isValid() const +bool OFXImporter::isValid() const { return d->m_valid; } -void OfxImporterPlugin::setValid() +void OFXImporter::setValid() { d->m_valid = true; } -void OfxImporterPlugin::addInfo(const QString& _msg) +void OFXImporter::addInfo(const QString& _msg) { d->m_infos += _msg; } -void OfxImporterPlugin::addWarning(const QString& _msg) +void OFXImporter::addWarning(const QString& _msg) { d->m_warnings += _msg; } -void OfxImporterPlugin::addError(const QString& _msg) +void OFXImporter::addError(const QString& _msg) { d->m_errors += _msg; } -const QStringList& OfxImporterPlugin::infos() const // krazy:exclude=spelling +const QStringList& OFXImporter::infos() const // krazy:exclude=spelling { return d->m_infos; } -const QStringList& OfxImporterPlugin::warnings() const +const QStringList& OFXImporter::warnings() const { return d->m_warnings; } -const QStringList& OfxImporterPlugin::errors() const +const QStringList& OFXImporter::errors() const { return d->m_errors; } + +K_PLUGIN_FACTORY_WITH_JSON(OFXImporterFactory, "ofximporter.json", registerPlugin();) + +#include "ofximporter.moc" diff --git a/kmymoney/plugins/ofximport/ofximport.json.in b/kmymoney/plugins/ofx/import/ofximporter.json.in rename from kmymoney/plugins/ofximport/ofximport.json.in rename to kmymoney/plugins/ofx/import/ofximporter.json.in --- a/kmymoney/plugins/ofximport/ofximport.json.in +++ b/kmymoney/plugins/ofx/import/ofximporter.json.in @@ -39,9 +39,9 @@ "Description[zh_TW]": "匯入 OFX 檔到 KMyMoney", "EnabledByDefault": true, "Icon": "network-connect", - "Id": "KMyMoney OFX", + "Id": "ofximporter", "License": "GPL", - "Name": "KMyMoney OFX", + "Name": "OFX Importer", "Name[ar]": "OFX لأموالك", "Name[bs]": "KMyMoney OFX", "Name[ca@valencia]": "KMyMoney OFX", diff --git a/kmymoney/plugins/ofximport/kmm_ofximport.rc b/kmymoney/plugins/ofx/import/ofximporter.rc rename from kmymoney/plugins/ofximport/kmm_ofximport.rc rename to kmymoney/plugins/ofx/import/ofximporter.rc diff --git a/kmymoney/plugins/ofximport/ofxpartner.h b/kmymoney/plugins/ofx/import/ofxpartner.h rename from kmymoney/plugins/ofximport/ofxpartner.h rename to kmymoney/plugins/ofx/import/ofxpartner.h diff --git a/kmymoney/plugins/ofximport/ofxpartner.cpp b/kmymoney/plugins/ofx/import/ofxpartner.cpp rename from kmymoney/plugins/ofximport/ofxpartner.cpp rename to kmymoney/plugins/ofx/import/ofxpartner.cpp diff --git a/kmymoney/plugins/ofximport/dialogs/CMakeLists.txt b/kmymoney/plugins/ofximport/dialogs/CMakeLists.txt deleted file mode 100644 --- a/kmymoney/plugins/ofximport/dialogs/CMakeLists.txt +++ /dev/null @@ -1,18 +0,0 @@ -include_directories(${LIBOFX_INCLUDE_DIR}) - -########### next target ############### - -set(kmm_ofximport_dialogs_la_SOURCES - kofxdirectconnectdlg.cpp konlinebankingsetupwizard.cpp - konlinebankingstatus.cpp mymoneyofxconnector.cpp - ) - -set(kmm_ofximport_dialogs_UI - kofxdirectconnectdlgdecl.ui konlinebankingsetupwizard.ui - konlinebankingstatusdecl.ui - ) - -ki18n_wrap_ui(kmm_ofximport_dialogs_la_SOURCES - ${kmm_ofximport_dialogs_UI}) -add_library(kmm_ofximport_dialogs STATIC ${kmm_ofximport_dialogs_la_SOURCES}) -target_link_libraries(kmm_ofximport_dialogs kmm_widgets KF5::WidgetsAddons KF5::I18n KF5::CoreAddons KF5::KIOCore KF5::KIOWidgets KF5::Wallet Qt5::Widgets Qt5::Sql Qt5::Xml) diff --git a/kmymoney/plugins/onlinejobpluginmockup/CMakeLists.txt b/kmymoney/plugins/onlinejobpluginmockup/CMakeLists.txt --- a/kmymoney/plugins/onlinejobpluginmockup/CMakeLists.txt +++ b/kmymoney/plugins/onlinejobpluginmockup/CMakeLists.txt @@ -1,20 +1,20 @@ ########### next target ############### -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/kmm_onlinejobpluginmockup.json.in ${CMAKE_CURRENT_BINARY_DIR}/kmm_onlinejobpluginmockup.json @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/onlinejobpluginmockup.json.in ${CMAKE_CURRENT_BINARY_DIR}/onlinejobpluginmockup.json @ONLY) -set(kmm_onlinejobpluginmockup_PART_SRCS +set(onlinejobpluginmockup_PART_SRCS onlinejobpluginmockup.cpp ) -add_library(kmm_onlinejobpluginmockup MODULE ${kmm_onlinejobpluginmockup_PART_SRCS}) +add_library(onlinejobpluginmockup MODULE ${onlinejobpluginmockup_PART_SRCS}) -target_link_libraries(kmm_onlinejobpluginmockup +target_link_libraries(onlinejobpluginmockup kmm_mymoney kmm_plugin ) ########### install files ############### -install(TARGETS kmm_onlinejobpluginmockup +install(TARGETS onlinejobpluginmockup DESTINATION "${KDE_INSTALL_PLUGINDIR}/kmymoney/") diff --git a/kmymoney/plugins/onlinejobpluginmockup/onlinejobpluginmockup.h b/kmymoney/plugins/onlinejobpluginmockup/onlinejobpluginmockup.h --- a/kmymoney/plugins/onlinejobpluginmockup/onlinejobpluginmockup.h +++ b/kmymoney/plugins/onlinejobpluginmockup/onlinejobpluginmockup.h @@ -41,25 +41,26 @@ class onlineJobPluginMockup : public KMyMoneyPlugin::OnlinePluginExtended { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.kmymoney.plugins.onlineJobPluginMockup" FILE "kmm_onlinejobpluginmockup.json") + Q_INTERFACES(KMyMoneyPlugin::OnlinePluginExtended + KMyMoneyPlugin::OnlinePlugin) public: + explicit onlineJobPluginMockup(QObject *parent, const QVariantList &args); + ~onlineJobPluginMockup() override; - onlineJobPluginMockup(); + void protocols(QStringList& protocolList) const override; + QWidget* accountConfigTab(const MyMoneyAccount& account, QString& tabName) override; - void protocols(QStringList& protocolList) const; - QWidget* accountConfigTab(const MyMoneyAccount& account, QString& tabName); + MyMoneyKeyValueContainer onlineBankingSettings(const MyMoneyKeyValueContainer& current) override; + bool mapAccount(const MyMoneyAccount& acc, MyMoneyKeyValueContainer& onlineBankingSettings) override; - MyMoneyKeyValueContainer onlineBankingSettings(const MyMoneyKeyValueContainer& current); - bool mapAccount(const MyMoneyAccount& acc, MyMoneyKeyValueContainer& onlineBankingSettings); + bool updateAccount(const MyMoneyAccount& acc, bool moreAccounts = false) override; - bool updateAccount(const MyMoneyAccount& acc, bool moreAccounts = false); - - QStringList availableJobs(QString accountId); - IonlineTaskSettings::ptr settings(QString accountId, QString taskName); - void sendOnlineJob(QList< onlineJob >& jobs); - void plug() override {}; - void unplug() override {}; + QStringList availableJobs(QString accountId) override; + IonlineTaskSettings::ptr settings(QString accountId, QString taskName) override; + void sendOnlineJob(QList< onlineJob >& jobs) override; + void plug() override {} + void unplug() override {} }; #endif // ONLINEJOBPLUGINMOCKUP_H diff --git a/kmymoney/plugins/onlinejobpluginmockup/onlinejobpluginmockup.cpp b/kmymoney/plugins/onlinejobpluginmockup/onlinejobpluginmockup.cpp --- a/kmymoney/plugins/onlinejobpluginmockup/onlinejobpluginmockup.cpp +++ b/kmymoney/plugins/onlinejobpluginmockup/onlinejobpluginmockup.cpp @@ -20,18 +20,25 @@ #include +#include + #include "mymoneyfile.h" #include "onlinejobadministration.h" #include "plugins/onlinetasks/sepa/tasks/sepaonlinetransfer.h" #include "sepacredittransfersettingsmockup.h" -onlineJobPluginMockup::onlineJobPluginMockup() - : OnlinePluginExtended(nullptr, "onlinejobpluginmockup") +onlineJobPluginMockup::onlineJobPluginMockup(QObject *parent, const QVariantList &args) : + OnlinePluginExtended(parent, "onlinejobpluginmockup") { + Q_UNUSED(args); qDebug("onlineJobPluginMockup should be used during development only!"); } +onlineJobPluginMockup::~onlineJobPluginMockup() +{ +} + void onlineJobPluginMockup::protocols(QStringList& protocolList) const { protocolList << QLatin1String("Imaginary debugging protocol"); @@ -60,15 +67,15 @@ bool onlineJobPluginMockup::updateAccount(const MyMoneyAccount& acc, bool moreAccounts) { Q_UNUSED(moreAccounts); - if (acc.onlineBankingSettings().value("provider") == objectName()) + if (acc.onlineBankingSettings().value("provider").toLower() == objectName()) return true; return false; } QStringList onlineJobPluginMockup::availableJobs(QString accountId) { try { - if (MyMoneyFile::instance()->account(accountId).onlineBankingSettings().value("provider") == objectName()) + if (MyMoneyFile::instance()->account(accountId).onlineBankingSettings().value("provider").toLower() == objectName()) return onlineJobAdministration::instance()->availableOnlineTasks(); } catch (MyMoneyException&) { } @@ -79,7 +86,7 @@ IonlineTaskSettings::ptr onlineJobPluginMockup::settings(QString accountId, QString taskName) { try { - if (taskName == sepaOnlineTransfer::name() && MyMoneyFile::instance()->account(accountId).onlineBankingSettings().value("provider") == objectName()) + if (taskName == sepaOnlineTransfer::name() && MyMoneyFile::instance()->account(accountId).onlineBankingSettings().value("provider").toLower() == objectName()) return IonlineTaskSettings::ptr(new sepaCreditTransferSettingsMockup); } catch (MyMoneyException&) { } @@ -92,3 +99,7 @@ qDebug() << "Pretend to send: " << job.taskIid() << job.id(); } } + +K_PLUGIN_FACTORY_WITH_JSON(onlineJobPluginMockupFactory, "onlinejobpluginmockup.json", registerPlugin();) + +#include "onlinejobpluginmockup.moc" diff --git a/kmymoney/plugins/onlinejobpluginmockup/kmm_onlinejobpluginmockup.json.in b/kmymoney/plugins/onlinejobpluginmockup/onlinejobpluginmockup.json.in rename from kmymoney/plugins/onlinejobpluginmockup/kmm_onlinejobpluginmockup.json.in rename to kmymoney/plugins/onlinejobpluginmockup/onlinejobpluginmockup.json.in diff --git a/kmymoney/plugins/printcheck/CMakeLists.txt b/kmymoney/plugins/printcheck/CMakeLists.txt --- a/kmymoney/plugins/printcheck/CMakeLists.txt +++ b/kmymoney/plugins/printcheck/CMakeLists.txt @@ -1,56 +1,56 @@ # patch the version with the version defined in the build system -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/kmm_printcheck.json.in ${CMAKE_CURRENT_BINARY_DIR}/kmm_printcheck.json @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/printcheck.json.in ${CMAKE_CURRENT_BINARY_DIR}/printcheck.json @ONLY) -set(kmm_printcheck_PART_SRCS +set(printcheck_PART_SRCS numbertowords.cpp printcheck.cpp ../../widgets/selectedtransaction.cpp ) -kconfig_add_kcfg_files(kmm_printcheck_PART_SRCS pluginsettings.kcfgc) +kconfig_add_kcfg_files(printcheck_PART_SRCS pluginsettings.kcfgc) -add_library(kmm_printcheck MODULE ${kmm_printcheck_PART_SRCS}) +add_library(printcheck MODULE ${printcheck_PART_SRCS}) -target_link_libraries(kmm_printcheck +target_link_libraries(printcheck Qt5::PrintSupport KF5::I18n kmm_mymoney kmm_plugin ) if(ENABLE_WEBENGINE) - target_link_libraries(kmm_printcheck Qt5::WebEngineWidgets) + target_link_libraries(printcheck Qt5::WebEngineWidgets) else(ENABLE_WEBENGINE) - target_link_libraries(kmm_printcheck KF5::WebKit) + target_link_libraries(printcheck KF5::WebKit) endif(ENABLE_WEBENGINE) -install(TARGETS kmm_printcheck +install(TARGETS printcheck DESTINATION "${KDE_INSTALL_PLUGINDIR}/kmymoney/") -install(FILES kmm_printcheck.rc - DESTINATION "${KXMLGUI_INSTALL_DIR}/kmm_printcheck") +install(FILES printcheck.rc + DESTINATION "${KXMLGUI_INSTALL_DIR}/printcheck") install(FILES check_template.html - DESTINATION "${DATA_INSTALL_DIR}/kmm_printcheck") + DESTINATION "${DATA_INSTALL_DIR}/printcheck") install(FILES check_template_green_linen.html - DESTINATION "${DATA_INSTALL_DIR}/kmm_printcheck") + DESTINATION "${DATA_INSTALL_DIR}/printcheck") # the KCM module -set(kcm_kmm_printcheck_PART_SRCS +set(kcm_printcheck_PART_SRCS kcm_printcheck.cpp ) -kconfig_add_kcfg_files(kcm_kmm_printcheck_PART_SRCS pluginsettings.kcfgc) +kconfig_add_kcfg_files(kcm_printcheck_PART_SRCS pluginsettings.kcfgc) -ki18n_wrap_ui(kcm_kmm_printcheck_PART_SRCS pluginsettingsdecl.ui) +ki18n_wrap_ui(kcm_printcheck_PART_SRCS pluginsettingsdecl.ui) -add_library(kcm_kmm_printcheck MODULE ${kcm_kmm_printcheck_PART_SRCS}) +add_library(kcm_printcheck MODULE ${kcm_printcheck_PART_SRCS}) -kcoreaddons_desktop_to_json(kcm_kmm_printcheck kcm_kmm_printcheck.desktop) +kcoreaddons_desktop_to_json(kcm_printcheck kcm_printcheck.desktop) -target_link_libraries(kcm_kmm_printcheck +target_link_libraries(kcm_printcheck Qt5::PrintSupport KF5::I18n KF5::ConfigWidgets @@ -60,13 +60,13 @@ ) if(ENABLE_WEBENGINE) - target_link_libraries(kcm_kmm_printcheck Qt5::WebEngineWidgets) + target_link_libraries(kcm_printcheck Qt5::WebEngineWidgets) else(ENABLE_WEBENGINE) - target_link_libraries(kcm_kmm_printcheck KF5::WebKit) + target_link_libraries(kcm_printcheck KF5::WebKit) endif(ENABLE_WEBENGINE) -install(TARGETS kcm_kmm_printcheck +install(TARGETS kcm_printcheck DESTINATION "${KDE_INSTALL_PLUGINDIR}") -install(FILES kcm_kmm_printcheck.desktop +install(FILES kcm_printcheck.desktop DESTINATION "${SERVICES_INSTALL_DIR}") diff --git a/kmymoney/plugins/printcheck/kcm_printcheck.cpp b/kmymoney/plugins/printcheck/kcm_printcheck.cpp --- a/kmymoney/plugins/printcheck/kcm_printcheck.cpp +++ b/kmymoney/plugins/printcheck/kcm_printcheck.cpp @@ -67,20 +67,9 @@ m_checkTemplatePreviewHTMLPart->load(QUrl::fromUserInput(url)); } -K_PLUGIN_FACTORY_WITH_JSON(KCMPrintCheckFactory, "kcm_kmm_printcheck.json", registerPlugin();) - KCMPrintCheck::KCMPrintCheck(QWidget *parent, const QVariantList& args) : KCModule(parent, args) { - KAboutData *about = new KAboutData(QStringLiteral("kmm_printcheck"), - i18n("KMyMoney print check"), - QStringLiteral(VERSION), QString(), - KAboutLicense::GPL, - i18n("Copyright 2009" ) ); - about->addAuthor( QString::fromUtf8("Cristian Oneț") ); - - setAboutData( about ); - PluginSettingsWidget* w = new PluginSettingsWidget(this); addConfig(PluginSettings::self(), w); QVBoxLayout *layout = new QVBoxLayout; @@ -94,4 +83,6 @@ { } +K_PLUGIN_FACTORY_WITH_JSON(KCMPrintCheckFactory, "kcm_printcheck.json", registerPlugin();) + #include "kcm_printcheck.moc" diff --git a/kmymoney/plugins/printcheck/kcm_kmm_printcheck.desktop b/kmymoney/plugins/printcheck/kcm_printcheck.desktop rename from kmymoney/plugins/printcheck/kcm_kmm_printcheck.desktop rename to kmymoney/plugins/printcheck/kcm_printcheck.desktop --- a/kmymoney/plugins/printcheck/kcm_kmm_printcheck.desktop +++ b/kmymoney/plugins/printcheck/kcm_printcheck.desktop @@ -33,7 +33,7 @@ Icon=document-print Type=Service ServiceTypes=KCModule -Exec=kcmshell4 kmm_printcheck +Exec=kcmshell5 printcheck Categories=Qt;KDE;kmymoney; Keywords=printcheck;kmymoney; Keywords[bs]=printcheck;kmymoney; @@ -65,9 +65,9 @@ Keywords[uk]=printcheck;kmymoney;надрукувати;чек; Keywords[x-test]=xxprintcheckxx;xxkmymoneyxx; Keywords[zh_TW]=printcheck;kmymoney; -X-KDE-Library=kcm_kmm_printcheck -X-KDE-ParentApp=Print check -X-KDE-ParentComponents=Print check +X-KDE-Library=kcm_printcheck +X-KDE-ParentApp=printcheck +X-KDE-ParentComponents=printcheck Comment=Permits the configuration of the print check plugin's options Comment[bs]=Dopušta konfiguraciju opcija dodatka za štampanje čekva Comment[ca]=Permet la configuració de les opcions del connector d'impressió de xecs diff --git a/kmymoney/plugins/printcheck/printcheck.h b/kmymoney/plugins/printcheck/printcheck.h --- a/kmymoney/plugins/printcheck/printcheck.h +++ b/kmymoney/plugins/printcheck/printcheck.h @@ -28,14 +28,18 @@ class KPluginInfo; class QPrinter; class QObject; -class KMMPrintCheckPlugin: public KMyMoneyPlugin::Plugin +class PrintCheck : public KMyMoneyPlugin::Plugin { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.kmymoney.plugins.printcheck" FILE "kmm_printcheck.json") public: - KMMPrintCheckPlugin(); - ~KMMPrintCheckPlugin(); + explicit PrintCheck(QObject *parent, const QVariantList &args); + ~PrintCheck() override; + +public Q_SLOTS: + void plug() override; + void unplug() override; + void configurationChanged() override; private: void readCheckTemplate(); @@ -46,10 +50,6 @@ protected Q_SLOTS: void slotPrintCheck(); void slotTransactionsSelected(const KMyMoneyRegister::SelectedTransactions& transactions); - // the plugin loader plugs in a plugin - void slotPlug(KPluginInfo*); - // the plugin's configurations has changed - void slotUpdateConfig(); private: struct Private; diff --git a/kmymoney/plugins/printcheck/printcheck.cpp b/kmymoney/plugins/printcheck/printcheck.cpp --- a/kmymoney/plugins/printcheck/printcheck.cpp +++ b/kmymoney/plugins/printcheck/printcheck.cpp @@ -35,8 +35,8 @@ #include // KDE includes +#include #include -#include #include #include @@ -57,22 +57,23 @@ #include "pluginsettings.h" #include "mymoneyenums.h" -struct KMMPrintCheckPlugin::Private { +struct PrintCheck::Private { QAction* m_action; QString m_checkTemplateHTML; QStringList m_printedTransactionIdList; KMyMoneyRegister::SelectedTransactions m_transactions; }; -KMMPrintCheckPlugin::KMMPrintCheckPlugin() - : KMyMoneyPlugin::Plugin(nullptr, "Print check"/*must be the same as X-KDE-PluginInfo-Name*/) +PrintCheck::PrintCheck(QObject *parent, const QVariantList &args) : + KMyMoneyPlugin::Plugin(parent, "printcheck"/*must be the same as X-KDE-PluginInfo-Name*/) { + Q_UNUSED(args); // Tell the host application to load my GUI component - setComponentName("kmm_printcheck", i18n("Print check")); - setXMLFile("kmm_printcheck.rc"); + setComponentName("printcheck", i18n("Print check")); + setXMLFile("printcheck.rc"); // For ease announce that we have been loaded. - qDebug("KMyMoney printcheck plugin loaded"); + qDebug("Plugins: printcheck loaded"); d = std::unique_ptr(new Private); @@ -89,21 +90,31 @@ //! @todo Christian: Replace #if 0 - connect(KMyMoneyPlugin::PluginLoader::instance(), SIGNAL(plug(KPluginInfo*)), this, SLOT(slotPlug(KPluginInfo*))); connect(KMyMoneyPlugin::PluginLoader::instance(), SIGNAL(configChanged(Plugin*)), this, SLOT(slotUpdateConfig())); #endif } /** * @internal Destructor is needed because destructor call of unique_ptr must be in this compile unit */ -KMMPrintCheckPlugin::~KMMPrintCheckPlugin() +PrintCheck::~PrintCheck() { + qDebug("Plugins: printcheck unloaded"); } -void KMMPrintCheckPlugin::readCheckTemplate() +void PrintCheck::plug() { - QString checkTemplateHTMLPath = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kmm_printcheck/check_template.html"); + connect(viewInterface(), &KMyMoneyPlugin::ViewInterface::transactionsSelected, this, &PrintCheck::slotTransactionsSelected); +} + +void PrintCheck::unplug() +{ + disconnect(viewInterface(), &KMyMoneyPlugin::ViewInterface::transactionsSelected, this, &PrintCheck::slotTransactionsSelected); +} + +void PrintCheck::readCheckTemplate() +{ + QString checkTemplateHTMLPath = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "printcheck/check_template.html"); if (PluginSettings::checkTemplateFile().isEmpty()) { PluginSettings::setCheckTemplateFile(checkTemplateHTMLPath); @@ -120,20 +131,20 @@ checkTemplateHTMLFile.close(); } -bool KMMPrintCheckPlugin::canBePrinted(const KMyMoneyRegister::SelectedTransaction & selectedTransaction) const +bool PrintCheck::canBePrinted(const KMyMoneyRegister::SelectedTransaction & selectedTransaction) const { MyMoneyFile* file = MyMoneyFile::instance(); bool isACheck = file->account(selectedTransaction.split().accountId()).accountType() == eMyMoney::Account::Type::Checkings && selectedTransaction.split().shares().isNegative(); return isACheck && d->m_printedTransactionIdList.contains(selectedTransaction.transaction().id()) == 0; } -void KMMPrintCheckPlugin::markAsPrinted(const KMyMoneyRegister::SelectedTransaction & selectedTransaction) +void PrintCheck::markAsPrinted(const KMyMoneyRegister::SelectedTransaction & selectedTransaction) { d->m_printedTransactionIdList.append(selectedTransaction.transaction().id()); } -void KMMPrintCheckPlugin::slotPrintCheck() +void PrintCheck::slotPrintCheck() { MyMoneyFile* file = MyMoneyFile::instance(); MyMoneyMoneyToWordsConverter converter; @@ -205,7 +216,7 @@ delete htmlPart; } -void KMMPrintCheckPlugin::slotTransactionsSelected(const KMyMoneyRegister::SelectedTransactions& transactions) +void PrintCheck::slotTransactionsSelected(const KMyMoneyRegister::SelectedTransactions& transactions) { d->m_transactions = transactions; bool actionEnabled = false; @@ -221,20 +232,15 @@ d->m_action->setEnabled(actionEnabled); } -// the plugin loader plugs in a plugin -void KMMPrintCheckPlugin::slotPlug(KPluginInfo *info) -{ - if (info->name() == objectName()) { - connect(viewInterface(), SIGNAL(transactionsSelected(KMyMoneyRegister::SelectedTransactions)), - this, SLOT(slotTransactionsSelected(KMyMoneyRegister::SelectedTransactions))); - } -} - // the plugin's configurations has changed -void KMMPrintCheckPlugin::slotUpdateConfig() +void PrintCheck::configurationChanged() { PluginSettings::self()->load(); // re-read the data because the configuration has changed readCheckTemplate(); d->m_printedTransactionIdList = PluginSettings::printedChecks(); } + +K_PLUGIN_FACTORY_WITH_JSON(PrintCheckFactory, "printcheck.json", registerPlugin();) + +#include "printcheck.moc" diff --git a/kmymoney/plugins/printcheck/kmm_printcheck.json.in b/kmymoney/plugins/printcheck/printcheck.json.in rename from kmymoney/plugins/printcheck/kmm_printcheck.json.in rename to kmymoney/plugins/printcheck/printcheck.json.in --- a/kmymoney/plugins/printcheck/kmm_printcheck.json.in +++ b/kmymoney/plugins/printcheck/printcheck.json.in @@ -39,7 +39,7 @@ "Description[zh_TW]": "提供列印支票的功能", "EnabledByDefault": true, "Icon": "document-print", - "Id": "Print check", + "Id": "printcheck", "License": "GPL", "Name": "Print check", "Name[ar]": "اطبع شيكًا", diff --git a/kmymoney/plugins/printcheck/kmm_printcheck.rc b/kmymoney/plugins/printcheck/printcheck.rc rename from kmymoney/plugins/printcheck/kmm_printcheck.rc rename to kmymoney/plugins/printcheck/printcheck.rc diff --git a/kmymoney/plugins/qif/config/CMakeLists.txt b/kmymoney/plugins/qif/config/CMakeLists.txt --- a/kmymoney/plugins/qif/config/CMakeLists.txt +++ b/kmymoney/plugins/qif/config/CMakeLists.txt @@ -1,41 +1,41 @@ # the KCM module -set(kcm_kmm_qif_PART_SRCS +set(kcm_qif_PART_SRCS mymoneyqifprofileeditor.cpp mymoneyqifprofile.cpp kcm_qif.cpp ) -ki18n_wrap_ui(kcm_kmm_qif_PART_SRCS mymoneyqifprofileeditor.ui) +ki18n_wrap_ui(kcm_qif_PART_SRCS mymoneyqifprofileeditor.ui) -add_library(kcm_kmm_qif MODULE ${kcm_kmm_qif_PART_SRCS}) +add_library(kcm_qif MODULE ${kcm_qif_PART_SRCS}) if(ENABLE_QIFIMPORTER) - kcoreaddons_desktop_to_json(kcm_kmm_qif kcm_kmm_qifimport.desktop) + kcoreaddons_desktop_to_json(kcm_qif kcm_qifimporter.desktop) endif() if(ENABLE_QIFEXPORTER) - kcoreaddons_desktop_to_json(kcm_kmm_qif kcm_kmm_qifexport.desktop) + kcoreaddons_desktop_to_json(kcm_qif kcm_qifexporter.desktop) endif() -target_link_libraries(kcm_kmm_qif +target_link_libraries(kcm_qif kmm_mymoney KF5::I18n KF5::ConfigWidgets KF5::Completion KF5::KIOWidgets ) -install(TARGETS kcm_kmm_qif +install(TARGETS kcm_qif DESTINATION ${KDE_INSTALL_PLUGINDIR}) if(ENABLE_QIFIMPORTER) - install(FILES kcm_kmm_qifimport.desktop + install(FILES kcm_qifimporter.desktop DESTINATION ${SERVICES_INSTALL_DIR}) endif() if(ENABLE_QIFEXPORTER) - install(FILES kcm_kmm_qifexport.desktop + install(FILES kcm_qifexporter.desktop DESTINATION ${SERVICES_INSTALL_DIR}) endif() diff --git a/kmymoney/plugins/qif/config/kcm_qif.cpp b/kmymoney/plugins/qif/config/kcm_qif.cpp --- a/kmymoney/plugins/qif/config/kcm_qif.cpp +++ b/kmymoney/plugins/qif/config/kcm_qif.cpp @@ -22,30 +22,22 @@ #include // KDE includes + #include #include #include "mymoneyqifprofileeditor.h" -K_PLUGIN_FACTORY(KCMqifFactory, registerPlugin();) - KCMqif::KCMqif(QWidget *parent, const QVariantList& args) : KCModule(parent, args) { - KAboutData *about = new KAboutData(QStringLiteral("kmm_csvimport"), - i18n("KMyMoney QIF importer"), - QStringLiteral(VERSION), QString(), - KAboutLicense::GPL, - i18n("Copyright 2002-2017" ) ); - about->addAuthor( QLatin1String("Thomas Baumgart") ); - - setAboutData( about ); - auto editor = new MyMoneyQifProfileEditor(true, this); auto layout = new QVBoxLayout; setLayout(layout); layout->addWidget(editor); setButtons(NoAdditionalButton); load(); } +K_PLUGIN_FACTORY(KCMqifFactory, registerPlugin();) + #include "kcm_qif.moc" diff --git a/kmymoney/plugins/qif/config/kcm_kmm_qifexport.desktop b/kmymoney/plugins/qif/config/kcm_qifexporter.desktop rename from kmymoney/plugins/qif/config/kcm_kmm_qifexport.desktop rename to kmymoney/plugins/qif/config/kcm_qifexporter.desktop --- a/kmymoney/plugins/qif/config/kcm_kmm_qifexport.desktop +++ b/kmymoney/plugins/qif/config/kcm_qifexporter.desktop @@ -17,10 +17,10 @@ Icon=document-import Type=Service ServiceTypes=KCModule -Exec=kcmshell5 kmm_qifexport +Exec=kcmshell5 qifexporter Categories=Qt;KDE;kmymoney; -Keywords=qifexport;kmymoney; -Keywords[ca]=qifexport;kmymoney; +Keywords=qifexporter;kmymoney; +Keywords[ca]=qifexporter;kmymoney; Keywords[ca@valencia]=qifexport;kmymoney; Keywords[cs]=qifexport;kmymoney; Keywords[de]=qifexport;kmymoney; @@ -34,9 +34,9 @@ Keywords[tr]=qifexport;kmymoney; Keywords[uk]=qifexport;kmymoney;експорт;кома;кмаймані;кіф; Keywords[x-test]=xxqifexportxx;xxkmymoneyxx; -X-KDE-Library=kcm_kmm_qif -X-KDE-ParentApp=qifexport -X-KDE-ParentComponents=qifexport +X-KDE-Library=kcm_qif +X-KDE-ParentApp=qifexporter +X-KDE-ParentComponents=qifexporter Comment=Configuration for QIF Importer plugin Comment[ca]=Configuració del connector d'importació de QIF Comment[ca@valencia]=Configuració del connector d'importació de QIF diff --git a/kmymoney/plugins/qif/config/kcm_kmm_qifimport.desktop b/kmymoney/plugins/qif/config/kcm_qifimporter.desktop rename from kmymoney/plugins/qif/config/kcm_kmm_qifimport.desktop rename to kmymoney/plugins/qif/config/kcm_qifimporter.desktop --- a/kmymoney/plugins/qif/config/kcm_kmm_qifimport.desktop +++ b/kmymoney/plugins/qif/config/kcm_qifimporter.desktop @@ -17,9 +17,9 @@ Icon=document-import Type=Service ServiceTypes=KCModule -Exec=kcmshell5 kmm_qifimport +Exec=kcmshell5 qifimporter Categories=Qt;KDE;kmymoney; -Keywords=qifimport;kmymoney; +Keywords=qifimporter;kmymoney; Keywords[ca]=qifimport;kmymoney; Keywords[ca@valencia]=qifimport;kmymoney; Keywords[cs]=qifimport;kmymoney; @@ -34,9 +34,9 @@ Keywords[tr]=qifimport;kmymoney; Keywords[uk]=qifimport;kmymoney;імпортування;кіф;кмаймані; Keywords[x-test]=xxqifimportxx;xxkmymoneyxx; -X-KDE-Library=kcm_kmm_qif -X-KDE-ParentApp=qifimport -X-KDE-ParentComponents=qifimport +X-KDE-Library=kcm_qif +X-KDE-ParentApp=qifimporter +X-KDE-ParentComponents=qifimporter Comment=Configuration for QIF Importer plugin Comment[ca]=Configuració del connector d'importació de QIF Comment[ca@valencia]=Configuració del connector d'importació de QIF diff --git a/kmymoney/plugins/qif/export/CMakeLists.txt b/kmymoney/plugins/qif/export/CMakeLists.txt --- a/kmymoney/plugins/qif/export/CMakeLists.txt +++ b/kmymoney/plugins/qif/export/CMakeLists.txt @@ -1,33 +1,33 @@ # patch the version with the version defined in the build system -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/qifexport.json.in ${CMAKE_CURRENT_BINARY_DIR}/qifexport.json @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/qifexporter.json.in ${CMAKE_CURRENT_BINARY_DIR}/qifexporter.json @ONLY) ########### next target ############### -set(kmm_qifexport_PART_SRCS - qifexporterplugin.cpp +set(qifexporter_PART_SRCS + qifexporter.cpp ../config/mymoneyqifprofile.cpp mymoneyqifwriter.cpp kexportdlg.cpp ${CMAKE_SOURCE_DIR}/kmymoney/widgets/kmymoneyaccountcombo.cpp ) -set(kmm_qifexport_PART_UI +set(qifexporter_PART_UI kexportdlgdecl.ui ) -ki18n_wrap_ui(kmm_qifexport_PART_SRCS ${kmm_qifexport_PART_UI}) +ki18n_wrap_ui(qifexporter_PART_SRCS ${qifexporter_PART_UI}) -add_library(kmm_qifexport MODULE ${kmm_qifexport_PART_SRCS}) +add_library(qifexporter MODULE ${qifexporter_PART_SRCS}) -target_link_libraries(kmm_qifexport +target_link_libraries(qifexporter kmm_plugin models #TODO: Get rid of this big dependency ) ########### install files ############### -install(FILES kmm_qifexport.rc - DESTINATION "${KXMLGUI_INSTALL_DIR}/kmm_qifexport") +install(FILES qifexporter.rc + DESTINATION "${KXMLGUI_INSTALL_DIR}/qifexporter") -install(TARGETS kmm_qifexport +install(TARGETS qifexporter DESTINATION "${KDE_INSTALL_PLUGINDIR}/kmymoney/") diff --git a/kmymoney/plugins/qif/export/kcm_kmm_qifexport.desktop b/kmymoney/plugins/qif/export/kcm_kmm_qifexport.desktop deleted file mode 100644 --- a/kmymoney/plugins/qif/export/kcm_kmm_qifexport.desktop +++ /dev/null @@ -1,54 +0,0 @@ -[Desktop Entry] -Name=QIF Importer configuration -Name[ca]=Configuració de l'importador de QIF -Name[ca@valencia]=Configuració de l'importador de QIF -Name[cs]=Nastavení importu QIF -Name[de]=QIF-Importeinrichtung -Name[en_GB]=QIF Importer configuration -Name[es]=Configuración del importador QIF -Name[it]=Configurazione dello strumento di importazione QIF -Name[nl]=Instellingen van QIF-importeren -Name[pl]=Ustawienia importera QIF -Name[pt]=Configuração da Importação de QIF -Name[sv]=QIF-importinställning -Name[tr]=QIF İçe Aktarıcı yapılandırması -Name[uk]=Налаштування засобу імпортування QIF -Name[x-test]=xxQIF Importer configurationxx -Icon=document-import -Type=Service -ServiceTypes=KCModule -Exec=kcmshell5 kmm_qifimport -Categories=Qt;KDE;kmymoney; -Keywords=qifexport;kmymoney; -Keywords[ca]=qifexport;kmymoney; -Keywords[ca@valencia]=qifexport;kmymoney; -Keywords[cs]=qifexport;kmymoney; -Keywords[de]=qifexport;kmymoney; -Keywords[en_GB]=qifexport;kmymoney; -Keywords[es]=qifexport;kmymoney; -Keywords[it]=qifexport;kmymoney; -Keywords[nl]=qifexport;kmymoney; -Keywords[pl]=qifexport;kmymoney; -Keywords[pt]=exportação qif;kmymoney; -Keywords[sv]=qif-export;kmymoney; -Keywords[tr]=qifexport;kmymoney; -Keywords[uk]=qifexport;kmymoney;експорт;кома;кмаймані;кіф; -Keywords[x-test]=xxqifexportxx;xxkmymoneyxx; -X-KDE-Library=kcm_kmm_qifimport -X-KDE-ParentApp=qifexport -X-KDE-ParentComponents=qifexport -Comment=Configuration for QIF Importer plugin -Comment[ca]=Configuració del connector d'importació de QIF -Comment[ca@valencia]=Configuració del connector d'importació de QIF -Comment[cs]=Nastavení modulu pro import QIF -Comment[de]=Einrichtung des QIF-Importmoduls -Comment[en_GB]=Configuration for QIF Importer plugin -Comment[es]=Configuración para el complemento de importación QIF -Comment[it]=Configurazione dell'estensione di importazione QIF -Comment[nl]=Instellingen voor plug-in voor QIF importeren -Comment[pl]=Ustawienia dla wtyczki Importera QIF -Comment[pt]=Configuração do 'plugin' de Importação de QIF -Comment[sv]=Anpassa QIF-importinsticksprogram -Comment[tr]=QIF İçe Aktarıcı eklentisi için yapılandırma -Comment[uk]=Налаштування додатка імпортування у форматі QIF -Comment[x-test]=xxConfiguration for QIF Importer pluginxx diff --git a/kmymoney/plugins/qif/export/qifexporterplugin.h b/kmymoney/plugins/qif/export/qifexporter.h rename from kmymoney/plugins/qif/export/qifexporterplugin.h rename to kmymoney/plugins/qif/export/qifexporter.h --- a/kmymoney/plugins/qif/export/qifexporterplugin.h +++ b/kmymoney/plugins/qif/export/qifexporter.h @@ -1,5 +1,5 @@ /*************************************************************************** - qifexporterplugin.h + qifexporter.h ------------------- copyright : (C) 2017 by Łukasz Wojniłowicz email : lukasz.wojnilowicz@gmail.com @@ -14,8 +14,8 @@ * * ***************************************************************************/ -#ifndef QIFEXPORTERPLUGIN_H -#define QIFEXPORTERPLUGIN_H +#ifndef QIFEXPORTER_H +#define QIFEXPORTER_H // ---------------------------------------------------------------------------- // KDE Includes @@ -29,14 +29,13 @@ class MyMoneyQifReader; -class QIFExporterPlugin : public KMyMoneyPlugin::Plugin +class QIFExporter : public KMyMoneyPlugin::Plugin { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.kmymoney.plugins.qifexport" FILE "qifexport.json") public: - explicit QIFExporterPlugin(); - ~QIFExporterPlugin(); + explicit QIFExporter(QObject *parent, const QVariantList &args); + ~QIFExporter() override; QAction *m_action; diff --git a/kmymoney/plugins/qif/export/qifexporterplugin.cpp b/kmymoney/plugins/qif/export/qifexporter.cpp rename from kmymoney/plugins/qif/export/qifexporterplugin.cpp rename to kmymoney/plugins/qif/export/qifexporter.cpp --- a/kmymoney/plugins/qif/export/qifexporterplugin.cpp +++ b/kmymoney/plugins/qif/export/qifexporter.cpp @@ -1,6 +1,5 @@ /*************************************************************************** - qifimporterplugin.cpp - (based on qifimporterplugin.cpp) + qifexporter.cpp ------------------- copyright : (C) 2017 by Łukasz Wojniłowicz @@ -16,14 +15,15 @@ * * ***************************************************************************/ -#include "qifexporterplugin.h" +#include "qifexporter.h" // ---------------------------------------------------------------------------- // QT Includes // ---------------------------------------------------------------------------- // KDE Includes +#include #include #include @@ -34,30 +34,31 @@ #include "mymoneyqifwriter.h" - -QIFExporterPlugin::QIFExporterPlugin() : - KMyMoneyPlugin::Plugin(nullptr, "qifexport"/*must be the same as X-KDE-PluginInfo-Name*/) +QIFExporter::QIFExporter(QObject *parent, const QVariantList &args) : + KMyMoneyPlugin::Plugin(parent, "qifexporter"/*must be the same as X-KDE-PluginInfo-Name*/) { - setComponentName("kmm_qifexport", i18n("QIF exporter")); - setXMLFile("kmm_qifexport.rc"); + Q_UNUSED(args); + setComponentName("qifexporter", i18n("QIF exporter")); + setXMLFile("qifexporter.rc"); createActions(); // For information, announce that we have been loaded. - qDebug("KMyMoney qifexport plugin loaded"); + qDebug("Plugins: qifexporter loaded"); } -QIFExporterPlugin::~QIFExporterPlugin() +QIFExporter::~QIFExporter() { + qDebug("Plugins: qifexporter unloaded"); } -void QIFExporterPlugin::createActions() +void QIFExporter::createActions() { m_action = actionCollection()->addAction("file_export_qif"); m_action->setText(i18n("QIF...")); - connect(m_action, &QAction::triggered, this, &QIFExporterPlugin::slotQifExport); + connect(m_action, &QAction::triggered, this, &QIFExporter::slotQifExport); } -void QIFExporterPlugin::slotQifExport() +void QIFExporter::slotQifExport() { m_action->setEnabled(false); QPointer dlg = new KExportDlg(nullptr); @@ -75,4 +76,6 @@ m_action->setEnabled(true); } -//#include "qifexporterplugin.moc" +K_PLUGIN_FACTORY_WITH_JSON(QIFExporterFactory, "qifexporter.json", registerPlugin();) + +#include "qifexporter.moc" diff --git a/kmymoney/plugins/qif/export/qifexport.json.in b/kmymoney/plugins/qif/export/qifexporter.json.in rename from kmymoney/plugins/qif/export/qifexport.json.in rename to kmymoney/plugins/qif/export/qifexporter.json.in --- a/kmymoney/plugins/qif/export/qifexport.json.in +++ b/kmymoney/plugins/qif/export/qifexporter.json.in @@ -9,7 +9,7 @@ "Description": "Add QIF exporting to KMyMoney", "EnabledByDefault": true, "Icon": "document-export", - "Id": "qifexport", + "Id": "qifexporter", "License": "GPL", "Name": "QIF Exporter", "ServiceTypes": [ diff --git a/kmymoney/plugins/qif/export/kmm_qifexport.rc b/kmymoney/plugins/qif/export/qifexporter.rc rename from kmymoney/plugins/qif/export/kmm_qifexport.rc rename to kmymoney/plugins/qif/export/qifexporter.rc diff --git a/kmymoney/plugins/qif/import/CMakeLists.txt b/kmymoney/plugins/qif/import/CMakeLists.txt --- a/kmymoney/plugins/qif/import/CMakeLists.txt +++ b/kmymoney/plugins/qif/import/CMakeLists.txt @@ -1,32 +1,32 @@ # patch the version with the version defined in the build system -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/qifimport.json.in ${CMAKE_CURRENT_BINARY_DIR}/qifimport.json @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/qifimporter.json.in ${CMAKE_CURRENT_BINARY_DIR}/qifimporter.json @ONLY) ########### next target ############### -set(kmm_qifimport_PART_SRCS - qifimporterplugin.cpp +set(qifimporter_PART_SRCS + qifimporter.cpp ../config/mymoneyqifprofile.cpp mymoneyqifreader.cpp kimportdlg.cpp ) -set(kmm_qifimport_PART_UI +set(qifimporter_PART_UI kimportdlgdecl.ui ) -ki18n_wrap_ui(kmm_qifimport_PART_SRCS ${kmm_qifimport_PART_UI}) +ki18n_wrap_ui(qifimporter_PART_SRCS ${qifimporter_PART_UI}) -add_library(kmm_qifimport MODULE ${kmm_qifimport_PART_SRCS}) +add_library(qifimporter MODULE ${qifimporter_PART_SRCS}) -target_link_libraries(kmm_qifimport +target_link_libraries(qifimporter kmm_plugin Alkimia::alkimia ) ########### install files ############### -install(FILES kmm_qifimport.rc - DESTINATION "${KXMLGUI_INSTALL_DIR}/kmm_qifimport") +install(FILES qifimporter.rc + DESTINATION "${KXMLGUI_INSTALL_DIR}/qifimporter") -install(TARGETS kmm_qifimport +install(TARGETS qifimporter DESTINATION "${KDE_INSTALL_PLUGINDIR}/kmymoney/") diff --git a/kmymoney/plugins/qif/import/qifimporterplugin.h b/kmymoney/plugins/qif/import/qifimporter.h rename from kmymoney/plugins/qif/import/qifimporterplugin.h rename to kmymoney/plugins/qif/import/qifimporter.h --- a/kmymoney/plugins/qif/import/qifimporterplugin.h +++ b/kmymoney/plugins/qif/import/qifimporter.h @@ -1,5 +1,5 @@ /*************************************************************************** - qifimporterplugin.h + qifimporter.h ------------------- copyright : (C) 2017 by Łukasz Wojniłowicz email : lukasz.wojnilowicz@gmail.com @@ -14,8 +14,8 @@ * * ***************************************************************************/ -#ifndef QIFIMPORTERPLUGIN_H -#define QIFIMPORTERPLUGIN_H +#ifndef QIFIMPORTER_H +#define QIFIMPORTER_H // ---------------------------------------------------------------------------- // KDE Includes @@ -30,14 +30,13 @@ class MyMoneyQifReader; -class QIFImporterPlugin : public KMyMoneyPlugin::Plugin +class QIFImporter : public KMyMoneyPlugin::Plugin { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.kmymoney.plugins.qifimport" FILE "qifimport.json") public: - explicit QIFImporterPlugin(); - ~QIFImporterPlugin(); + explicit QIFImporter(QObject *parent, const QVariantList &args); + ~QIFImporter() override; QAction *m_action; diff --git a/kmymoney/plugins/qif/import/qifimporterplugin.cpp b/kmymoney/plugins/qif/import/qifimporter.cpp rename from kmymoney/plugins/qif/import/qifimporterplugin.cpp rename to kmymoney/plugins/qif/import/qifimporter.cpp --- a/kmymoney/plugins/qif/import/qifimporterplugin.cpp +++ b/kmymoney/plugins/qif/import/qifimporter.cpp @@ -1,6 +1,5 @@ /*************************************************************************** - qifimporterplugin.cpp - (based on qifimporterplugin.cpp) + qifimporter.cpp ------------------- copyright : (C) 2017 by Łukasz Wojniłowicz @@ -16,14 +15,15 @@ * * ***************************************************************************/ -#include "qifimporterplugin.h" +#include "qifimporter.h" // ---------------------------------------------------------------------------- // QT Includes // ---------------------------------------------------------------------------- // KDE Includes +#include #include #include #include @@ -37,35 +37,37 @@ class MyMoneyStatement; -QIFImporterPlugin::QIFImporterPlugin() : - KMyMoneyPlugin::Plugin(nullptr, "qifimport"/*must be the same as X-KDE-PluginInfo-Name*/) +QIFImporter::QIFImporter(QObject *parent, const QVariantList &args) : + KMyMoneyPlugin::Plugin(parent, "qifimporter"/*must be the same as X-KDE-PluginInfo-Name*/) { - setComponentName("kmm_qifimport", i18n("QIF importer")); - setXMLFile("kmm_qifimport.rc"); + Q_UNUSED(args); + setComponentName("qifimporter", i18n("QIF importer")); + setXMLFile("qifimporter.rc"); createActions(); // For information, announce that we have been loaded. - qDebug("KMyMoney qifimport plugin loaded"); + qDebug("Plugins: qifimporter loaded"); } -QIFImporterPlugin::~QIFImporterPlugin() +QIFImporter::~QIFImporter() { + qDebug("Plugins: qifimporter unloaded"); } -void QIFImporterPlugin::createActions() +void QIFImporter::createActions() { m_action = actionCollection()->addAction("file_import_qif"); m_action->setText(i18n("QIF...")); - connect(m_action, &QAction::triggered, this, &QIFImporterPlugin::slotQifImport); + connect(m_action, &QAction::triggered, this, &QIFImporter::slotQifImport); } -void QIFImporterPlugin::slotQifImport() +void QIFImporter::slotQifImport() { m_action->setEnabled(false); QPointer dlg = new KImportDlg(nullptr); if (dlg->exec() == QDialog::Accepted && dlg != nullptr) { m_qifReader = new MyMoneyQifReader; - connect(m_qifReader, &MyMoneyQifReader::statementsReady, this, &QIFImporterPlugin::slotGetStatements); + connect(m_qifReader, &MyMoneyQifReader::statementsReady, this, &QIFImporter::slotGetStatements); m_qifReader->setURL(dlg->file()); m_qifReader->setProfile(dlg->profile()); @@ -77,7 +79,7 @@ m_action->setEnabled(true); } -bool QIFImporterPlugin::slotGetStatements(QList &statements) +bool QIFImporter::slotGetStatements(QList &statements) { auto ret = true; foreach (const auto statement, statements) @@ -87,4 +89,6 @@ return ret; } -//#include "qifimporterplugin.moc" +K_PLUGIN_FACTORY_WITH_JSON(QIFImporterFactory, "qifimporter.json", registerPlugin();) + +#include "qifimporter.moc" diff --git a/kmymoney/plugins/qif/import/qifimport.json.in b/kmymoney/plugins/qif/import/qifimporter.json.in rename from kmymoney/plugins/qif/import/qifimport.json.in rename to kmymoney/plugins/qif/import/qifimporter.json.in --- a/kmymoney/plugins/qif/import/qifimport.json.in +++ b/kmymoney/plugins/qif/import/qifimporter.json.in @@ -9,7 +9,7 @@ "Description": "Add QIF importing to KMyMoney", "EnabledByDefault": true, "Icon": "document-import", - "Id": "qifimport", + "Id": "qifimporter", "License": "GPL", "Name": "QIF Importer", "ServiceTypes": [ diff --git a/kmymoney/plugins/qif/import/kmm_qifimport.rc b/kmymoney/plugins/qif/import/qifimporter.rc rename from kmymoney/plugins/qif/import/kmm_qifimport.rc rename to kmymoney/plugins/qif/import/qifimporter.rc diff --git a/kmymoney/plugins/reconciliationreport/CMakeLists.txt b/kmymoney/plugins/reconciliationreport/CMakeLists.txt --- a/kmymoney/plugins/reconciliationreport/CMakeLists.txt +++ b/kmymoney/plugins/reconciliationreport/CMakeLists.txt @@ -1,29 +1,29 @@ # patch the version with the version defined in the build system -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/kmm_reconciliationreport.json.in - ${CMAKE_CURRENT_BINARY_DIR}/kmm_reconciliationreport.json +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/reconciliationreport.json.in + ${CMAKE_CURRENT_BINARY_DIR}/reconciliationreport.json @ONLY ) -set(kmm_reconciliationreport_PART_SRCS +set(reconciliationreport_PART_SRCS kreconciliationreportdlg.cpp reconciliationreport.cpp ) -ki18n_wrap_ui(kmm_reconciliationreport_PART_SRCS kreconciliationreportdlgdecl.ui ) +ki18n_wrap_ui(reconciliationreport_PART_SRCS kreconciliationreportdlgdecl.ui ) -add_library(kmm_reconciliationreport MODULE ${kmm_reconciliationreport_PART_SRCS}) +add_library(reconciliationreport MODULE ${reconciliationreport_PART_SRCS}) -target_link_libraries(kmm_reconciliationreport +target_link_libraries(reconciliationreport Qt5::PrintSupport kmm_mymoney kmm_plugin ) if(ENABLE_WEBENGINE) - target_link_libraries(kmm_reconciliationreport Qt5::WebEngineWidgets) + target_link_libraries(reconciliationreport Qt5::WebEngineWidgets) else(ENABLE_WEBENGINE) - target_link_libraries(kmm_reconciliationreport KF5::WebKit) + target_link_libraries(reconciliationreport KF5::WebKit) endif(ENABLE_WEBENGINE) -install(TARGETS kmm_reconciliationreport +install(TARGETS reconciliationreport DESTINATION "${KDE_INSTALL_PLUGINDIR}/kmymoney/") diff --git a/kmymoney/plugins/reconciliationreport/reconciliationreport.h b/kmymoney/plugins/reconciliationreport/reconciliationreport.h --- a/kmymoney/plugins/reconciliationreport/reconciliationreport.h +++ b/kmymoney/plugins/reconciliationreport/reconciliationreport.h @@ -28,13 +28,13 @@ class MyMoneySplit; class MyMoneyTransaction; -class KMMReconciliationReportPlugin: public KMyMoneyPlugin::Plugin +class ReconciliationReport: public KMyMoneyPlugin::Plugin { Q_OBJECT - Q_PLUGIN_METADATA(IID "org.kmymoney.plugins.reconcilationreport" FILE "kmm_reconciliationreport.json") public: - KMMReconciliationReportPlugin(); + explicit ReconciliationReport(QObject *parent, const QVariantList &args); + ~ReconciliationReport() override; public Q_SLOTS: void plug() override; diff --git a/kmymoney/plugins/reconciliationreport/reconciliationreport.cpp b/kmymoney/plugins/reconciliationreport/reconciliationreport.cpp --- a/kmymoney/plugins/reconciliationreport/reconciliationreport.cpp +++ b/kmymoney/plugins/reconciliationreport/reconciliationreport.cpp @@ -27,6 +27,7 @@ #include // KDE includes +#include #include #include @@ -44,23 +45,30 @@ #include "kreconciliationreportdlg.h" -KMMReconciliationReportPlugin::KMMReconciliationReportPlugin() - : KMyMoneyPlugin::Plugin(nullptr, "Reconciliation report"/*must be the same as X-KDE-PluginInfo-Name*/) +ReconciliationReport::ReconciliationReport(QObject *parent, const QVariantList &args) : + KMyMoneyPlugin::Plugin(parent, "reconciliationreport"/*must be the same as X-KDE-PluginInfo-Name*/) { + Q_UNUSED(args); + qDebug("Plugins: reconciliation report loaded"); } -void KMMReconciliationReportPlugin::plug() +ReconciliationReport::~ReconciliationReport() { - connect(viewInterface(), &KMyMoneyPlugin::ViewInterface::accountReconciled, this, &KMMReconciliationReportPlugin::slotGenerateReconciliationReport); - qDebug() << "Connect was done" << viewInterface(); + qDebug("Plugins: reconciliation report unloaded"); } -void KMMReconciliationReportPlugin::unplug() +void ReconciliationReport::plug() { - disconnect(viewInterface(), &KMyMoneyPlugin::ViewInterface::accountReconciled, this, &KMMReconciliationReportPlugin::slotGenerateReconciliationReport); + connect(viewInterface(), &KMyMoneyPlugin::ViewInterface::accountReconciled, this, &ReconciliationReport::slotGenerateReconciliationReport); +// qDebug() << "Connect was done" << viewInterface(); } -void KMMReconciliationReportPlugin::slotGenerateReconciliationReport(const MyMoneyAccount& account, const QDate& date, const MyMoneyMoney& startingBalance, const MyMoneyMoney& endingBalance, const QList >& transactionList) +void ReconciliationReport::unplug() +{ + disconnect(viewInterface(), &KMyMoneyPlugin::ViewInterface::accountReconciled, this, &ReconciliationReport::slotGenerateReconciliationReport); +} + +void ReconciliationReport::slotGenerateReconciliationReport(const MyMoneyAccount& account, const QDate& date, const MyMoneyMoney& startingBalance, const MyMoneyMoney& endingBalance, const QList >& transactionList) { MyMoneyFile* file = MyMoneyFile::instance(); MyMoneySecurity currency = file->currency(account.currencyId()); @@ -322,3 +330,7 @@ dlg->exec(); delete dlg; } + +K_PLUGIN_FACTORY_WITH_JSON(ReconciliationReportFactory, "reconciliationreport.json", registerPlugin();) + +#include "reconciliationreport.moc" diff --git a/kmymoney/plugins/reconciliationreport/kmm_reconciliationreport.json.in b/kmymoney/plugins/reconciliationreport/reconciliationreport.json.in rename from kmymoney/plugins/reconciliationreport/kmm_reconciliationreport.json.in rename to kmymoney/plugins/reconciliationreport/reconciliationreport.json.in --- a/kmymoney/plugins/reconciliationreport/kmm_reconciliationreport.json.in +++ b/kmymoney/plugins/reconciliationreport/reconciliationreport.json.in @@ -38,7 +38,7 @@ "Description[zh_TW]": "在對帳後產生報告,包含對帳程序的資料", "EnabledByDefault": true, "Icon": "application-vnd.oasis.opendocument.spreadsheet", - "Id": "Reconciliation report", + "Id": "reconciliationreport", "License": "GPL", "Name": "Reconciliation report", "Name[bs]": "Izvještaj o usaglašavanju", diff --git a/kmymoney/plugins/weboob/CMakeLists.txt b/kmymoney/plugins/weboob/CMakeLists.txt --- a/kmymoney/plugins/weboob/CMakeLists.txt +++ b/kmymoney/plugins/weboob/CMakeLists.txt @@ -4,21 +4,21 @@ include(KDECompilerSettings NO_POLICY_SCOPE) # patch the version with the version defined in the build system -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/kmm_weboob.json.in ${CMAKE_CURRENT_BINARY_DIR}/kmm_weboob.json @ONLY) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/weboob.json.in ${CMAKE_CURRENT_BINARY_DIR}/weboob.json @ONLY) add_subdirectory( dialogs ) ########### next target ############### -set(kmm_weboob_PART_SRCS +set(weboob_PART_SRCS + weboobext.cpp weboob.cpp - plugin.cpp ) -add_library(kmm_weboob MODULE ${kmm_weboob_PART_SRCS}) +add_library(weboob MODULE ${weboob_PART_SRCS}) -target_link_libraries(kmm_weboob - kmm_weboob_dialogs +target_link_libraries(weboob + weboob_dialogs kmm_mymoney kmm_widgets kmm_plugin @@ -28,11 +28,11 @@ ########### install files ############### install(FILES weboob.py - DESTINATION "${DATA_INSTALL_DIR}/kmm_weboob") + DESTINATION "${DATA_INSTALL_DIR}/weboob") -install(FILES kmm_weboob.rc - DESTINATION "${KXMLGUI_INSTALL_DIR}/kmm_weboob") +install(FILES weboob.rc + DESTINATION "${KXMLGUI_INSTALL_DIR}/weboob") -install(TARGETS kmm_weboob +install(TARGETS weboob DESTINATION "${KDE_INSTALL_PLUGINDIR}/kmymoney/") diff --git a/kmymoney/plugins/weboob/dialogs/CMakeLists.txt b/kmymoney/plugins/weboob/dialogs/CMakeLists.txt --- a/kmymoney/plugins/weboob/dialogs/CMakeLists.txt +++ b/kmymoney/plugins/weboob/dialogs/CMakeLists.txt @@ -1,17 +1,17 @@ ########### next target ############### -set(kmm_weboob_dialogs_la_SOURCES +set(weboob_dialogs_la_SOURCES mapaccount.cpp webaccount.cpp ) -set(kmm_weboob_dialogs_UI +set(weboob_dialogs_UI mapaccount.ui webaccount.ui ) -ki18n_wrap_ui(kmm_weboob_dialogs_la_SOURCES - ${kmm_weboob_dialogs_UI}) -add_library(kmm_weboob_dialogs STATIC ${kmm_weboob_dialogs_la_SOURCES}) -target_link_libraries(kmm_weboob_dialogs Qt5::Concurrent KF5::KrossCore widgets dialogs) +ki18n_wrap_ui(weboob_dialogs_la_SOURCES + ${weboob_dialogs_UI}) +add_library(weboob_dialogs STATIC ${weboob_dialogs_la_SOURCES}) +target_link_libraries(weboob_dialogs Qt5::Concurrent KF5::KrossCore widgets dialogs) diff --git a/kmymoney/plugins/weboob/dialogs/mapaccount.h b/kmymoney/plugins/weboob/dialogs/mapaccount.h --- a/kmymoney/plugins/weboob/dialogs/mapaccount.h +++ b/kmymoney/plugins/weboob/dialogs/mapaccount.h @@ -32,7 +32,7 @@ Q_OBJECT public: - Weboob *weboob; + WeboobExt *weboob; explicit WbMapAccountDialog(QWidget *parent = 0); virtual ~WbMapAccountDialog(); diff --git a/kmymoney/plugins/weboob/dialogs/mapaccount.cpp b/kmymoney/plugins/weboob/dialogs/mapaccount.cpp --- a/kmymoney/plugins/weboob/dialogs/mapaccount.cpp +++ b/kmymoney/plugins/weboob/dialogs/mapaccount.cpp @@ -30,8 +30,8 @@ struct WbMapAccountDialog::Private { - QFutureWatcher > watcher; - QFutureWatcher > watcher2; + QFutureWatcher > watcher; + QFutureWatcher > watcher2; std::unique_ptr progress; }; @@ -98,7 +98,7 @@ QCoreApplication::processEvents(); - QFuture > future = QtConcurrent::run(weboob, &Weboob::getBackends); + QFuture > future = QtConcurrent::run(weboob, &WeboobExt::getBackends); d2->watcher2.setFuture(future); break; @@ -110,7 +110,7 @@ QCoreApplication::processEvents(); - QFuture > future = QtConcurrent::run(weboob, &Weboob::getAccounts, backendsList->currentItem()->text(0)); + QFuture > future = QtConcurrent::run(weboob, &WeboobExt::getAccounts, backendsList->currentItem()->text(0)); d->watcher.setFuture(future); button(QWizard::BackButton)->setEnabled(false); accountsList->setEnabled(false); @@ -126,10 +126,10 @@ void WbMapAccountDialog::gotBackends() { - QList backends = d2->watcher2.result(); + QList backends = d2->watcher2.result(); - for (QListIterator it(backends); it.hasNext();) { - Weboob::Backend backend = it.next(); + for (QListIterator it(backends); it.hasNext();) { + WeboobExt::Backend backend = it.next(); QStringList headers; headers << backend.name << backend.module; backendsList->addTopLevelItem(new QTreeWidgetItem(headers)); @@ -140,10 +140,10 @@ void WbMapAccountDialog::gotAccounts() { - QList accounts = d->watcher.result(); + QList accounts = d->watcher.result(); - for (QListIterator it(accounts); it.hasNext();) { - Weboob::Account account = it.next(); + for (QListIterator it(accounts); it.hasNext();) { + WeboobExt::Account account = it.next(); QStringList headers; headers << account.id << account.name << account.balance.formatMoney(QString(), 2); accountsList->addTopLevelItem(new QTreeWidgetItem(headers)); diff --git a/kmymoney/plugins/weboob/plugin.h b/kmymoney/plugins/weboob/plugin.h deleted file mode 100644 --- a/kmymoney/plugins/weboob/plugin.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * This file is part of KMyMoney, A Personal Finance Manager by KDE - * Copyright (C) 2014-2015 Romain Bignon - * Copyright (C) 2014-2015 Florent Fourcot - * - * 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. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#ifndef WEBOOB_PLUGIN_HPP -#define WEBOOB_PLUGIN_HPP - -#include - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include "kmymoneyplugin.h" -#include "mymoneyaccount.h" -#include "mymoneykeyvaluecontainer.h" -#include "weboob.h" - -class WeboobPlugin : public KMyMoneyPlugin::Plugin, public KMyMoneyPlugin::OnlinePlugin -{ - Q_OBJECT - Q_INTERFACES(KMyMoneyPlugin::OnlinePlugin) - Q_PLUGIN_METADATA(IID "org.kmymoney.plugins.weboob" FILE "kmm_weboob.json") - -public: - Weboob weboob; - WeboobPlugin(); - virtual ~WeboobPlugin(); - - void protocols(QStringList& protocolList) const; - - QWidget* accountConfigTab(const MyMoneyAccount& account, QString& tabName); - - MyMoneyKeyValueContainer onlineBankingSettings(const MyMoneyKeyValueContainer& current); - - bool mapAccount(const MyMoneyAccount& acc, MyMoneyKeyValueContainer& onlineBankingSettings); - - bool updateAccount(const MyMoneyAccount& acc, bool moreAccounts = false); - -protected Q_SLOTS: - - void gotAccount(); - -private: - - struct Private; - /// \internal d-pointer instance. - const std::unique_ptr d; -}; - -#endif /* WEBOOB_PLUGIN_HPP */ diff --git a/kmymoney/plugins/weboob/plugin.cpp b/kmymoney/plugins/weboob/plugin.cpp deleted file mode 100644 --- a/kmymoney/plugins/weboob/plugin.cpp +++ /dev/null @@ -1,176 +0,0 @@ -/* - * This file is part of KMyMoney, A Personal Finance Manager by KDE - * Copyright (C) 2014-2015 Romain Bignon - * Copyright (C) 2014-2015 Florent Fourcot - * Copyright (C) 2016 Christian David - * - * 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. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "plugin.h" -#include "weboob.h" - -#include -#include -#include - -#include -#include - -#include "dialogs/mapaccount.h" -#include "dialogs/webaccount.h" - -#include "mymoneystatement.h" -#include "statementinterface.h" - -struct WeboobPlugin::Private -{ - QFutureWatcher watcher; - std::unique_ptr progress; - WebAccountSettings* accountSettings; -}; - -WeboobPlugin::WeboobPlugin() : - KMyMoneyPlugin::Plugin(), - KMyMoneyPlugin::OnlinePlugin(), - d(new Private()) -{ - setComponentName("kmm_weboob", i18n("Weboob")); - setXMLFile("kmm_weboob.rc"); - - connect(&d->watcher, &QFutureWatcher::finished, this, &WeboobPlugin::gotAccount); -} - -WeboobPlugin::~WeboobPlugin() -{ -} - -void WeboobPlugin::protocols(QStringList& protocolList) const -{ - protocolList << "weboob"; -} - -QWidget* WeboobPlugin::accountConfigTab(const MyMoneyAccount& account, QString& tabName) -{ - const MyMoneyKeyValueContainer& kvp = account.onlineBankingSettings(); - tabName = i18n("Weboob configuration"); - - d->accountSettings = new WebAccountSettings(account, 0); - d->accountSettings->loadUi(kvp); - - return d->accountSettings; -} - -MyMoneyKeyValueContainer WeboobPlugin::onlineBankingSettings(const MyMoneyKeyValueContainer& current) -{ - MyMoneyKeyValueContainer kvp(current); - kvp["provider"] = objectName(); - if (d->accountSettings) { - d->accountSettings->loadKvp(kvp); - } - return kvp; -} - -bool WeboobPlugin::mapAccount(const MyMoneyAccount& acc, MyMoneyKeyValueContainer& onlineBankingSettings) -{ - Q_UNUSED(acc); - - WbMapAccountDialog w; - w.weboob = &weboob; - if (w.exec() == QDialog::Accepted) { - onlineBankingSettings.setValue("wb-backend", w.backendsList->currentItem()->text(0)); - onlineBankingSettings.setValue("wb-id", w.accountsList->currentItem()->text(0)); - onlineBankingSettings.setValue("wb-max", "0"); - return true; - } - return false; -} - -bool WeboobPlugin::updateAccount(const MyMoneyAccount& kacc, bool moreAccounts) -{ - Q_UNUSED(moreAccounts); - - QString bname = kacc.onlineBankingSettings().value("wb-backend"); - QString id = kacc.onlineBankingSettings().value("wb-id"); - QString max = kacc.onlineBankingSettings().value("wb-max"); - - //! @todo C++14 use make_unique() - d->progress = std::unique_ptr(new QProgressDialog()); - d->progress->setWindowTitle(i18n("Connecting to bank...")); - d->progress->setLabelText(i18n("Retrieving transactions...")); - d->progress->setModal(true); - d->progress->setCancelButton(nullptr); - d->progress->setMinimum(0); - d->progress->setMaximum(0); - d->progress->setMinimumDuration(0); - - QFuture future = QtConcurrent::run(&weboob, &Weboob::getAccount, bname, id, max); - d->watcher.setFuture(future); - - d->progress->exec(); - d->progress.reset(); - - return true; -} - -void WeboobPlugin::gotAccount() -{ - Weboob::Account acc = d->watcher.result(); - - MyMoneyAccount kacc = statementInterface()->account("wb-id", acc.id); - MyMoneyStatement ks; - - ks.m_accountId = kacc.id(); - ks.m_strAccountName = acc.name; - ks.m_closingBalance = acc.balance; - if (acc.transactions.length() > 0) - ks.m_dateEnd = acc.transactions.front().date; - -#if 0 - switch (acc.type) { - case Weboob::Account::TYPE_CHECKING: - ks.m_eType = MyMoneyStatement::etCheckings; - break; - case Weboob::Account::TYPE_SAVINGS: - ks.m_eType = MyMoneyStatement::etSavings; - break; - case Weboob::Account::TYPE_MARKET: - ks.m_eType = MyMoneyStatement::etInvestment; - break; - case Weboob::Account::TYPE_DEPOSIT: - case Weboob::Account::TYPE_LOAN: - case Weboob::Account::TYPE_JOINT: - case Weboob::Account::TYPE_UNKNOWN: - break; - } -#endif - - for (QListIterator it(acc.transactions); it.hasNext();) { - Weboob::Transaction tr = it.next(); - MyMoneyStatement::Transaction kt; - - kt.m_strBankID = QLatin1String("ID ") + tr.id; - kt.m_datePosted = tr.rdate; - kt.m_amount = tr.amount; - kt.m_strMemo = tr.raw; - kt.m_strPayee = tr.label; - - ks.m_listTransactions += kt; - } - - statementInterface()->import(ks); - - d->progress->hide(); -} - diff --git a/kmymoney/plugins/weboob/weboob.h b/kmymoney/plugins/weboob/weboob.h --- a/kmymoney/plugins/weboob/weboob.h +++ b/kmymoney/plugins/weboob/weboob.h @@ -20,81 +20,49 @@ #ifndef WEBOOB_HPP #define WEBOOB_HPP -#include -#include -#include -#include +#include -#include "mymoneymoney.h" +#ifdef HAVE_CONFIG_H +#include +#endif -class Weboob : public QObject +#include "kmymoneyplugin.h" +#include "mymoneyaccount.h" +#include "mymoneykeyvaluecontainer.h" +#include "weboobext.h" + +class Weboob : public KMyMoneyPlugin::Plugin, public KMyMoneyPlugin::OnlinePlugin { Q_OBJECT - - Kross::Action* action; - QMutex *mutex; - QString path; + Q_INTERFACES(KMyMoneyPlugin::OnlinePlugin) public: + WeboobExt weboob; + explicit Weboob(QObject *parent, const QVariantList &args); + ~Weboob() override; + + void plug() override; + void unplug() override; + + void protocols(QStringList& protocolList) const override; + + QWidget* accountConfigTab(const MyMoneyAccount& account, QString& tabName) override; + + MyMoneyKeyValueContainer onlineBankingSettings(const MyMoneyKeyValueContainer& current) override; + + bool mapAccount(const MyMoneyAccount& acc, MyMoneyKeyValueContainer& onlineBankingSettings) override; + + bool updateAccount(const MyMoneyAccount& acc, bool moreAccounts = false) override; + +protected Q_SLOTS: + + void gotAccount(); - struct Backend { - QString name; - QString module; - }; - - struct Transaction { - QString id; - QDate date; - QDate rdate; - enum type_t { - TYPE_UNKNOWN = 0, - TYPE_TRANSFER, - TYPE_ORDER, - TYPE_CHECK, - TYPE_DEPOSIT, - TYPE_PAYBACK, - TYPE_WITHDRAWAL, - TYPE_CARD, - TYPE_LOAN_PAYMENT, - TYPE_BANK - } type; - QString raw; - QString category; - QString label; - MyMoneyMoney amount; - }; - - struct Account { - QString id; - QString name; - enum type_t { - TYPE_UNKNOWN = 0, - TYPE_CHECKING, - TYPE_SAVINGS, - TYPE_DEPOSIT, - TYPE_LOAN, - TYPE_MARKET, - TYPE_JOINT - } type; - MyMoneyMoney balance; - - QList transactions; - }; - - explicit Weboob(QObject* parent = 0); - - ~Weboob(); - - QStringList getProtocols(); - - QList getBackends(); - - QList getAccounts(QString backend); - - Account getAccount(QString backend, QString account, QString max); - - QVariant execute(QString method, QVariantList args); +private: + struct Private; + /// \internal d-pointer instance. + const std::unique_ptr d; }; -#endif /* WEBOOB_HPP */ +#endif /* WEBOOB_PLUGIN_HPP */ diff --git a/kmymoney/plugins/weboob/weboob.cpp b/kmymoney/plugins/weboob/weboob.cpp --- a/kmymoney/plugins/weboob/weboob.cpp +++ b/kmymoney/plugins/weboob/weboob.cpp @@ -2,6 +2,7 @@ * This file is part of KMyMoney, A Personal Finance Manager by KDE * Copyright (C) 2014-2015 Romain Bignon * Copyright (C) 2014-2015 Florent Fourcot + * Copyright (C) 2016 Christian David * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -18,119 +19,172 @@ */ #include "weboob.h" +#include "weboobext.h" -#include -#include -#include +#include +#include +#include -Weboob::Weboob(QObject* parent) - : QObject(parent) +#include +#include + +#include "dialogs/mapaccount.h" +#include "dialogs/webaccount.h" + +#include "mymoneystatement.h" +#include "statementinterface.h" + +struct Weboob::Private +{ + QFutureWatcher watcher; + std::unique_ptr progress; + WebAccountSettings* accountSettings; +}; + +Weboob::Weboob(QObject *parent, const QVariantList &args) : + KMyMoneyPlugin::Plugin(parent, "weboob"), + d(new Private()) { - mutex = new QMutex(); - path = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kmm_weboob/weboob.py"); - action = new Kross::Action(0, path); - action->setFile(path); + Q_UNUSED(args) + setComponentName("weboob", i18n("Weboob")); + setXMLFile("weboob.rc"); + + qDebug("Plugins: weboob loaded"); } Weboob::~Weboob() { - delete mutex; - action->finalize(); - delete action; + qDebug("Plugins: weboob unloaded"); } -QVariant Weboob::execute(QString method, QVariantList args) +void Weboob::plug() { - QVariant result; - - mutex->lock(); - result = action->callFunction(method, args); - mutex->unlock(); - - return result; + connect(&d->watcher, &QFutureWatcher::finished, this, &Weboob::gotAccount); } -QList Weboob::getBackends() +void Weboob::unplug() { - QList backendsList; - - QVariantList args; + disconnect(&d->watcher, &QFutureWatcher::finished, this, &Weboob::gotAccount); +} - QVariant result = this->execute("get_backends", args); +void Weboob::protocols(QStringList& protocolList) const +{ + protocolList << "weboob"; +} - QMap list = result.toMap(); - QMapIterator it(list); +QWidget* Weboob::accountConfigTab(const MyMoneyAccount& account, QString& tabName) +{ + const MyMoneyKeyValueContainer& kvp = account.onlineBankingSettings(); + tabName = i18n("Weboob configuration"); - while (it.hasNext()) { - it.next(); - QMap params = it.value().toMap(); + d->accountSettings = new WebAccountSettings(account, 0); + d->accountSettings->loadUi(kvp); - Weboob::Backend backend; - backend.name = it.key(); - backend.module = params["module"].toString(); + return d->accountSettings; +} - backendsList.append(backend); +MyMoneyKeyValueContainer Weboob::onlineBankingSettings(const MyMoneyKeyValueContainer& current) +{ + MyMoneyKeyValueContainer kvp(current); + kvp["provider"] = objectName(); + if (d->accountSettings) { + d->accountSettings->loadKvp(kvp); } - - return backendsList; + return kvp; } +bool Weboob::mapAccount(const MyMoneyAccount& acc, MyMoneyKeyValueContainer& onlineBankingSettings) +{ + Q_UNUSED(acc); + + WbMapAccountDialog w; + w.weboob = &weboob; + if (w.exec() == QDialog::Accepted) { + onlineBankingSettings.setValue("wb-backend", w.backendsList->currentItem()->text(0)); + onlineBankingSettings.setValue("wb-id", w.accountsList->currentItem()->text(0)); + onlineBankingSettings.setValue("wb-max", "0"); + return true; + } + return false; +} -QList Weboob::getAccounts(QString backend) +bool Weboob::updateAccount(const MyMoneyAccount& kacc, bool moreAccounts) { - QList accountsList; + Q_UNUSED(moreAccounts); - QVariantList args; - args << backend; - QVariant result = this->execute("get_accounts", args); + QString bname = kacc.onlineBankingSettings().value("wb-backend"); + QString id = kacc.onlineBankingSettings().value("wb-id"); + QString max = kacc.onlineBankingSettings().value("wb-max"); - QMap list = result.toMap(); - for (QMapIterator it(list); it.hasNext();) { - it.next(); - QMap params = it.value().toMap(); + //! @todo C++14 use make_unique() + d->progress = std::unique_ptr(new QProgressDialog()); + d->progress->setWindowTitle(i18n("Connecting to bank...")); + d->progress->setLabelText(i18n("Retrieving transactions...")); + d->progress->setModal(true); + d->progress->setCancelButton(nullptr); + d->progress->setMinimum(0); + d->progress->setMaximum(0); + d->progress->setMinimumDuration(0); - Weboob::Account account; - account.id = it.key(); - account.name = params["name"].toString(); - account.balance = MyMoneyMoney(params["balance"].toInt(), 100); - account.type = (Weboob::Account::type_t)params["type"].toInt(); + QFuture future = QtConcurrent::run(&weboob, &WeboobExt::getAccount, bname, id, max); + d->watcher.setFuture(future); - accountsList.append(account); - } + d->progress->exec(); + d->progress.reset(); - return accountsList; + return true; } -Weboob::Account Weboob::getAccount(QString backend, QString accid, QString max) +void Weboob::gotAccount() { - Weboob::Account acc; - - QVariantList args; - args << backend; - args << accid; - args << max; - QMap result = this->execute("get_transactions", args).toMap(); - - acc.id = result["id"].toString(); - acc.name = result["name"].toString(); - acc.balance = MyMoneyMoney(result["balance"].toInt(), 100); - acc.type = (Weboob::Account::type_t)result["type"].toInt(); - - QList list = result["transactions"].toList(); - for (QListIterator it(list); it.hasNext();) { - QMap params = it.next().toMap(); - Weboob::Transaction tr; - - tr.id = params["id"].toString(); - tr.date = QDate::fromString(params["date"].toString(), "yyyy-MM-dd"); - tr.rdate = QDate::fromString(params["rdate"].toString(), "yyyy-MM-dd"); - tr.type = (Weboob::Transaction::type_t)params["type"].toInt(); - tr.raw = params["raw"].toString(); - tr.category = params["category"].toString(); - tr.label = params["label"].toString(); - tr.amount = MyMoneyMoney(params["amount"].toInt(), 100); - - acc.transactions.append(tr); + WeboobExt::Account acc = d->watcher.result(); + + MyMoneyAccount kacc = statementInterface()->account("wb-id", acc.id); + MyMoneyStatement ks; + + ks.m_accountId = kacc.id(); + ks.m_strAccountName = acc.name; + ks.m_closingBalance = acc.balance; + if (acc.transactions.length() > 0) + ks.m_dateEnd = acc.transactions.front().date; + +#if 0 + switch (acc.type) { + case Weboob::Account::TYPE_CHECKING: + ks.m_eType = MyMoneyStatement::etCheckings; + break; + case Weboob::Account::TYPE_SAVINGS: + ks.m_eType = MyMoneyStatement::etSavings; + break; + case Weboob::Account::TYPE_MARKET: + ks.m_eType = MyMoneyStatement::etInvestment; + break; + case Weboob::Account::TYPE_DEPOSIT: + case Weboob::Account::TYPE_LOAN: + case Weboob::Account::TYPE_JOINT: + case Weboob::Account::TYPE_UNKNOWN: + break; } - return acc; +#endif + + for (QListIterator it(acc.transactions); it.hasNext();) { + WeboobExt::Transaction tr = it.next(); + MyMoneyStatement::Transaction kt; + + kt.m_strBankID = QLatin1String("ID ") + tr.id; + kt.m_datePosted = tr.rdate; + kt.m_amount = tr.amount; + kt.m_strMemo = tr.raw; + kt.m_strPayee = tr.label; + + ks.m_listTransactions += kt; + } + + statementInterface()->import(ks); + + d->progress->hide(); } + +K_PLUGIN_FACTORY_WITH_JSON(WeboobFactory, "weboob.json", registerPlugin();) + +#include "weboob.moc" diff --git a/kmymoney/plugins/weboob/kmm_weboob.json.in b/kmymoney/plugins/weboob/weboob.json.in rename from kmymoney/plugins/weboob/kmm_weboob.json.in rename to kmymoney/plugins/weboob/weboob.json.in --- a/kmymoney/plugins/weboob/kmm_weboob.json.in +++ b/kmymoney/plugins/weboob/weboob.json.in @@ -22,7 +22,7 @@ "Description[x-test]": "xxPlugin for weboobxx", "EnabledByDefault": true, "Icon": "network-connect", - "Id": "Weboob", + "Id": "weboob", "License": "GPL", "Name": "Weboob", "Name[ca@valencia]": "Weboob", diff --git a/kmymoney/plugins/weboob/kmm_weboob.rc b/kmymoney/plugins/weboob/weboob.rc rename from kmymoney/plugins/weboob/kmm_weboob.rc rename to kmymoney/plugins/weboob/weboob.rc diff --git a/kmymoney/plugins/weboob/weboob.h b/kmymoney/plugins/weboob/weboobext.h copy from kmymoney/plugins/weboob/weboob.h copy to kmymoney/plugins/weboob/weboobext.h --- a/kmymoney/plugins/weboob/weboob.h +++ b/kmymoney/plugins/weboob/weboobext.h @@ -17,17 +17,17 @@ * along with this program. If not, see . */ -#ifndef WEBOOB_HPP -#define WEBOOB_HPP +#ifndef WEBOOBEXT_HPP +#define WEBOOBEXT_HPP #include #include #include #include #include "mymoneymoney.h" -class Weboob : public QObject +class WeboobExt : public QObject { Q_OBJECT @@ -81,9 +81,9 @@ QList transactions; }; - explicit Weboob(QObject* parent = 0); + explicit WeboobExt(QObject* parent = 0); - ~Weboob(); + ~WeboobExt(); QStringList getProtocols(); @@ -97,4 +97,4 @@ }; -#endif /* WEBOOB_HPP */ +#endif /* WEBOOBEXT_HPP */ diff --git a/kmymoney/plugins/weboob/weboob.cpp b/kmymoney/plugins/weboob/weboobext.cpp copy from kmymoney/plugins/weboob/weboob.cpp copy to kmymoney/plugins/weboob/weboobext.cpp --- a/kmymoney/plugins/weboob/weboob.cpp +++ b/kmymoney/plugins/weboob/weboobext.cpp @@ -17,29 +17,29 @@ * along with this program. If not, see . */ -#include "weboob.h" +#include "weboobext.h" #include #include #include -Weboob::Weboob(QObject* parent) +WeboobExt::WeboobExt(QObject* parent) : QObject(parent) { mutex = new QMutex(); path = QStandardPaths::locate(QStandardPaths::GenericDataLocation, "kmm_weboob/weboob.py"); action = new Kross::Action(0, path); action->setFile(path); } -Weboob::~Weboob() +WeboobExt::~WeboobExt() { delete mutex; action->finalize(); delete action; } -QVariant Weboob::execute(QString method, QVariantList args) +QVariant WeboobExt::execute(QString method, QVariantList args) { QVariant result; @@ -50,9 +50,9 @@ return result; } -QList Weboob::getBackends() +QList WeboobExt::getBackends() { - QList backendsList; + QList backendsList; QVariantList args; @@ -65,7 +65,7 @@ it.next(); QMap params = it.value().toMap(); - Weboob::Backend backend; + WeboobExt::Backend backend; backend.name = it.key(); backend.module = params["module"].toString(); @@ -76,9 +76,9 @@ } -QList Weboob::getAccounts(QString backend) +QList WeboobExt::getAccounts(QString backend) { - QList accountsList; + QList accountsList; QVariantList args; args << backend; @@ -89,21 +89,21 @@ it.next(); QMap params = it.value().toMap(); - Weboob::Account account; + WeboobExt::Account account; account.id = it.key(); account.name = params["name"].toString(); account.balance = MyMoneyMoney(params["balance"].toInt(), 100); - account.type = (Weboob::Account::type_t)params["type"].toInt(); + account.type = (WeboobExt::Account::type_t)params["type"].toInt(); accountsList.append(account); } return accountsList; } -Weboob::Account Weboob::getAccount(QString backend, QString accid, QString max) +WeboobExt::Account WeboobExt::getAccount(QString backend, QString accid, QString max) { - Weboob::Account acc; + WeboobExt::Account acc; QVariantList args; args << backend; @@ -114,17 +114,17 @@ acc.id = result["id"].toString(); acc.name = result["name"].toString(); acc.balance = MyMoneyMoney(result["balance"].toInt(), 100); - acc.type = (Weboob::Account::type_t)result["type"].toInt(); + acc.type = (WeboobExt::Account::type_t)result["type"].toInt(); QList list = result["transactions"].toList(); for (QListIterator it(list); it.hasNext();) { QMap params = it.next().toMap(); - Weboob::Transaction tr; + WeboobExt::Transaction tr; tr.id = params["id"].toString(); tr.date = QDate::fromString(params["date"].toString(), "yyyy-MM-dd"); tr.rdate = QDate::fromString(params["rdate"].toString(), "yyyy-MM-dd"); - tr.type = (Weboob::Transaction::type_t)params["type"].toInt(); + tr.type = (WeboobExt::Transaction::type_t)params["type"].toInt(); tr.raw = params["raw"].toString(); tr.category = params["category"].toString(); tr.label = params["label"].toString(); diff --git a/kmymoney/views/konlinejoboutbox.cpp b/kmymoney/views/konlinejoboutbox.cpp --- a/kmymoney/views/konlinejoboutbox.cpp +++ b/kmymoney/views/konlinejoboutbox.cpp @@ -395,11 +395,11 @@ // find the provider const MyMoneyAccount originAcc = job.responsibleMyMoneyAccount(); job.setLock(); - job.addJobMessage(onlineJobMessage(eMyMoney::OnlineJob::MessageType::Debug, "KMyMoneyApp::slotOnlineJobSend", "Added to queue for plugin '" + originAcc.onlineBankingSettings().value("provider") + '\'')); + job.addJobMessage(onlineJobMessage(eMyMoney::OnlineJob::MessageType::Debug, "KMyMoneyApp::slotOnlineJobSend", "Added to queue for plugin '" + originAcc.onlineBankingSettings().value("provider").toLower() + '\'')); MyMoneyFileTransaction fileTransaction; kmmFile->modifyOnlineJob(job); fileTransaction.commit(); - jobsByPlugin.insert(originAcc.onlineBankingSettings().value("provider"), job); + jobsByPlugin.insert(originAcc.onlineBankingSettings().value("provider").toLower(), job); } // Send onlineJobs to plugins