diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -131,6 +131,8 @@ add_feature_info("Forecast view" ENABLE_FORECASTVIEW "It adds possibility to calculate forecasts.") option(ENABLE_REPORTSVIEW "Enable reports view" ON) add_feature_info("Reports view" ENABLE_REPORTSVIEW "It adds possibility to display chart and table reports.") +option(ENABLE_ONLINEJOBOUTBOXVIEW "Enable online job outbox view" ON) +add_feature_info("Online job outbox view" ENABLE_ONLINEJOBOUTBOXVIEW "It adds outbox for sending online jobs.") cmake_dependent_option(ENABLE_SQLSTORAGE "Enable SQL storage support." ON "Qt5Sql_FOUND" OFF) diff --git a/kmymoney/dialogs/CMakeLists.txt b/kmymoney/dialogs/CMakeLists.txt --- a/kmymoney/dialogs/CMakeLists.txt +++ b/kmymoney/dialogs/CMakeLists.txt @@ -43,7 +43,6 @@ transactioneditor.cpp stdtransactioneditor.cpp transactionmatcher.cpp - konlinetransferform.cpp ) set(dialogs_HEADERS @@ -71,7 +70,6 @@ ksortoptiondlg.ui ksplitcorrectiondlg.ui ksplittransactiondlg.ui ktemplateexportdlg.ui kupdatestockpricedlg.ui - konlinetransferform.ui ) ki18n_wrap_ui(libdialogs_a_SOURCES ${dialogs_UI} ) diff --git a/kmymoney/kmymoney.cpp b/kmymoney/kmymoney.cpp --- a/kmymoney/kmymoney.cpp +++ b/kmymoney/kmymoney.cpp @@ -117,7 +117,6 @@ #include "widgets/kmymoneymvccombo.h" #include "views/kmymoneyview.h" -#include "views/konlinejoboutbox.h" #include "models/onlinejobmessagesmodel.h" #include "models/models.h" #include "models/accountsmodel.h" @@ -168,7 +167,6 @@ #include #include "transactioneditor.h" -#include "konlinetransferform.h" #include #include @@ -179,6 +177,7 @@ #include "storageenums.h" #include "mymoneyenums.h" #include "dialogenums.h" +#include "viewenums.h" #include "menuenums.h" #include "misc/platformtools.h" @@ -3083,6 +3082,9 @@ if(dialogName.compare(QLatin1String("Plugins")) == 0) { KMyMoneyPlugin::pluginHandling(KMyMoneyPlugin::Action::Reorganize, d->m_plugins, this, guiFactory()); onlineJobAdministration::instance()->updateActions(); + onlineJobAdministration::instance()->setOnlinePlugins(d->m_plugins.extended); + d->m_myMoneyView->setOnlinePlugins(d->m_plugins.online); + d->m_myMoneyView->setStoragePlugins(d->m_plugins.storage); return; } MyMoneyTransactionFilter::setFiscalYearStart(KMyMoneySettings::firstFiscalMonth(), KMyMoneySettings::firstFiscalDay()); diff --git a/kmymoney/plugins/views/CMakeLists.txt b/kmymoney/plugins/views/CMakeLists.txt --- a/kmymoney/plugins/views/CMakeLists.txt +++ b/kmymoney/plugins/views/CMakeLists.txt @@ -5,3 +5,7 @@ if(ENABLE_REPORTSVIEW) add_subdirectory(reports) endif() + +if(ENABLE_ONLINEJOBOUTBOXVIEW) + add_subdirectory(onlinejoboutbox) +endif() diff --git a/kmymoney/plugins/views/onlinejoboutbox/CMakeLists.txt b/kmymoney/plugins/views/onlinejoboutbox/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/kmymoney/plugins/views/onlinejoboutbox/CMakeLists.txt @@ -0,0 +1,33 @@ +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/onlinejoboutboxview.json.in ${CMAKE_CURRENT_BINARY_DIR}/onlinejoboutboxview.json @ONLY) + +set(onlinejoboutboxview_SOURCES + onlinejoboutboxview.cpp + konlinejoboutboxview.cpp + konlinetransferform.cpp + ${CMAKE_SOURCE_DIR}/kmymoney/widgets/kmymoneyaccountcombo.cpp + ) + +ki18n_wrap_ui(onlinejoboutboxview_SOURCES + konlinejoboutboxview.ui + konlinetransferform.ui + ) + +kcoreaddons_add_plugin(onlinejoboutboxview + SOURCES ${onlinejoboutboxview_SOURCES} + JSON "${CMAKE_CURRENT_BINARY_DIR}/onlinejoboutboxview.json" + INSTALL_NAMESPACE "kmymoney") + +#kcoreaddons_add_plugin sets LIBRARY_OUTPUT_DIRECTORY to ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/${INSTALL_NAMESPACE} +set_target_properties(onlinejoboutboxview + PROPERTIES + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}") + +target_link_libraries(onlinejoboutboxview + PUBLIC + kmm_plugin + models + onlinetask_interfaces + KF5::TextWidgets + viewbase + kmm_menus +) diff --git a/kmymoney/views/konlinejoboutbox.h b/kmymoney/plugins/views/onlinejoboutbox/konlinejoboutboxview.h rename from kmymoney/views/konlinejoboutbox.h rename to kmymoney/plugins/views/onlinejoboutbox/konlinejoboutboxview.h --- a/kmymoney/views/konlinejoboutbox.h +++ b/kmymoney/plugins/views/onlinejoboutbox/konlinejoboutboxview.h @@ -16,8 +16,8 @@ * along with this program. If not, see . */ -#ifndef KONLINEJOBOUTBOX_H -#define KONLINEJOBOUTBOX_H +#ifndef KONLINEJOBOUTBOXVIEW_H +#define KONLINEJOBOUTBOXVIEW_H #include "kmymoneyviewbase.h" @@ -27,14 +27,14 @@ namespace KMyMoneyPlugin { class OnlinePlugin; } -class KOnlineJobOutboxPrivate; -class KOnlineJobOutbox : public KMyMoneyViewBase +class KOnlineJobOutboxViewPrivate; +class KOnlineJobOutboxView : public KMyMoneyViewBase { Q_OBJECT public: - explicit KOnlineJobOutbox(QWidget *parent = 0); - ~KOnlineJobOutbox() override; + explicit KOnlineJobOutboxView(QWidget *parent = 0); + ~KOnlineJobOutboxView() override; void executeCustomAction(eView::Action action) override; @@ -42,10 +42,9 @@ QStringList selectedOnlineJobs() const; - void setOnlinePlugins(QMap& plugins); - public Q_SLOTS: void slotSelectByObject(const MyMoneyObject& obj, eView::Intent intent) override; + void slotSelectByVariant(const QVariantList& variant, eView::Intent intent) override; Q_SIGNALS: void sendJobs(QList); @@ -57,7 +56,7 @@ void contextMenuEvent(QContextMenuEvent*) override; private: - Q_DECLARE_PRIVATE(KOnlineJobOutbox) + Q_DECLARE_PRIVATE(KOnlineJobOutboxView) private Q_SLOTS: void updateNewCreditTransferButton(); @@ -86,4 +85,4 @@ void slotNewCreditTransfer(); }; -#endif // KONLINEJOBOUTBOX_H +#endif // KONLINEJOBOUTBOXVIEW_H diff --git a/kmymoney/views/konlinejoboutbox.cpp b/kmymoney/plugins/views/onlinejoboutbox/konlinejoboutboxview.cpp rename from kmymoney/views/konlinejoboutbox.cpp rename to kmymoney/plugins/views/onlinejoboutbox/konlinejoboutboxview.cpp --- a/kmymoney/views/konlinejoboutbox.cpp +++ b/kmymoney/plugins/views/onlinejoboutbox/konlinejoboutboxview.cpp @@ -16,11 +16,11 @@ * along with this program. If not, see . */ -#include "konlinejoboutbox.h" +#include "konlinejoboutboxview.h" #include -#include "ui_konlinejoboutbox.h" +#include "ui_konlinejoboutboxview.h" #include "kmymoneyviewbase_p.h" #include "konlinetransferform.h" #include "kmymoneyplugin.h" @@ -51,51 +51,51 @@ #include -class KOnlineJobOutboxPrivate : public KMyMoneyViewBasePrivate +class KOnlineJobOutboxViewPrivate : public KMyMoneyViewBasePrivate { - Q_DECLARE_PUBLIC(KOnlineJobOutbox) + Q_DECLARE_PUBLIC(KOnlineJobOutboxView) public: - explicit KOnlineJobOutboxPrivate(KOnlineJobOutbox *qq) : + explicit KOnlineJobOutboxViewPrivate(KOnlineJobOutboxView *qq) : KMyMoneyViewBasePrivate(), q_ptr(qq), - ui(new Ui::KOnlineJobOutbox), + ui(new Ui::KOnlineJobOutboxView), m_needLoad(true), m_onlinePlugins(nullptr) { } - ~KOnlineJobOutboxPrivate() + ~KOnlineJobOutboxViewPrivate() { if (!m_needLoad) { // Save column state - KConfigGroup configGroup = KSharedConfig::openConfig()->group("KOnlineJobOutbox"); + KConfigGroup configGroup = KSharedConfig::openConfig()->group("KOnlineJobOutboxView"); configGroup.writeEntry("HeaderState", ui->m_onlineJobView->header()->saveState()); } } void init() { - Q_Q(KOnlineJobOutbox); + Q_Q(KOnlineJobOutboxView); m_needLoad = false; ui->setupUi(q); // Restore column state - KConfigGroup configGroup = KSharedConfig::openConfig()->group("KOnlineJobOutbox"); + KConfigGroup configGroup = KSharedConfig::openConfig()->group("KOnlineJobOutboxView"); QByteArray columns; columns = configGroup.readEntry("HeaderState", columns); ui->m_onlineJobView->header()->restoreState(columns); ui->m_onlineJobView->setModel(Models::instance()->onlineJobsModel()); - q->connect(ui->m_buttonSend, &QAbstractButton::clicked, q, &KOnlineJobOutbox::slotSendJobs); - q->connect(ui->m_buttonRemove, &QAbstractButton::clicked, q, &KOnlineJobOutbox::slotRemoveJob); - q->connect(ui->m_buttonEdit, &QAbstractButton::clicked, q, static_cast(&KOnlineJobOutbox::slotEditJob)); - q->connect(ui->m_onlineJobView, &QAbstractItemView::doubleClicked, q, static_cast(&KOnlineJobOutbox::slotEditJob)); - q->connect(ui->m_onlineJobView->selectionModel(), &QItemSelectionModel::selectionChanged, q, &KOnlineJobOutbox::updateButtonState); + q->connect(ui->m_buttonSend, &QAbstractButton::clicked, q, &KOnlineJobOutboxView::slotSendJobs); + q->connect(ui->m_buttonRemove, &QAbstractButton::clicked, q, &KOnlineJobOutboxView::slotRemoveJob); + q->connect(ui->m_buttonEdit, &QAbstractButton::clicked, q, static_cast(&KOnlineJobOutboxView::slotEditJob)); + q->connect(ui->m_onlineJobView, &QAbstractItemView::doubleClicked, q, static_cast(&KOnlineJobOutboxView::slotEditJob)); + q->connect(ui->m_onlineJobView->selectionModel(), &QItemSelectionModel::selectionChanged, q, &KOnlineJobOutboxView::updateButtonState); // Set new credit transfer button - q->connect(pActions[eMenu::Action::AccountCreditTransfer], &QAction::changed, q, &KOnlineJobOutbox::updateNewCreditTransferButton); - q->connect(ui->m_buttonNewCreditTransfer, &QAbstractButton::clicked, q, &KOnlineJobOutbox::slotNewCreditTransfer); + q->connect(pActions[eMenu::Action::AccountCreditTransfer], &QAction::changed, q, &KOnlineJobOutboxView::updateNewCreditTransferButton); + q->connect(ui->m_buttonNewCreditTransfer, &QAbstractButton::clicked, q, &KOnlineJobOutboxView::slotNewCreditTransfer); q->updateNewCreditTransferButton(); } @@ -120,18 +120,18 @@ void editJob(const onlineJobTyped job) { - Q_Q(KOnlineJobOutbox); + Q_Q(KOnlineJobOutboxView); auto transferForm = new kOnlineTransferForm(q); transferForm->setOnlineJob(job); q->connect(transferForm, &QDialog::rejected, transferForm, &QObject::deleteLater); - q->connect(transferForm, &kOnlineTransferForm::acceptedForSave, q, &KOnlineJobOutbox::slotOnlineJobSave); - q->connect(transferForm, &kOnlineTransferForm::acceptedForSend, q, static_cast(&KOnlineJobOutbox::slotOnlineJobSend)); + q->connect(transferForm, &kOnlineTransferForm::acceptedForSave, q, &KOnlineJobOutboxView::slotOnlineJobSave); + q->connect(transferForm, &kOnlineTransferForm::acceptedForSend, q, static_cast(&KOnlineJobOutboxView::slotOnlineJobSend)); q->connect(transferForm, &QDialog::accepted, transferForm, &QObject::deleteLater); transferForm->show(); } - KOnlineJobOutbox *q_ptr; - std::unique_ptr ui; + KOnlineJobOutboxView *q_ptr; + std::unique_ptr ui; /** * This member holds the load state of page @@ -141,20 +141,20 @@ MyMoneyAccount m_currentAccount; }; -KOnlineJobOutbox::KOnlineJobOutbox(QWidget *parent) : - KMyMoneyViewBase(*new KOnlineJobOutboxPrivate(this), parent) +KOnlineJobOutboxView::KOnlineJobOutboxView(QWidget *parent) : + KMyMoneyViewBase(*new KOnlineJobOutboxViewPrivate(this), parent) { - connect(pActions[eMenu::Action::LogOnlineJob], &QAction::triggered, this, static_cast(&KOnlineJobOutbox::slotOnlineJobLog)); - connect(pActions[eMenu::Action::AccountCreditTransfer], &QAction::triggered, this, &KOnlineJobOutbox::slotNewCreditTransfer); + connect(pActions[eMenu::Action::LogOnlineJob], &QAction::triggered, this, static_cast(&KOnlineJobOutboxView::slotOnlineJobLog)); + connect(pActions[eMenu::Action::AccountCreditTransfer], &QAction::triggered, this, &KOnlineJobOutboxView::slotNewCreditTransfer); } -KOnlineJobOutbox::~KOnlineJobOutbox() +KOnlineJobOutboxView::~KOnlineJobOutboxView() { } -void KOnlineJobOutbox::updateButtonState() const +void KOnlineJobOutboxView::updateButtonState() const { - Q_D(const KOnlineJobOutbox); + Q_D(const KOnlineJobOutboxView); const QModelIndexList indexes = d->ui->m_onlineJobView->selectionModel()->selectedRows(); const int selectedItems = indexes.count(); @@ -201,17 +201,17 @@ d->ui->m_buttonRemove->setEnabled(onlinejob_delete->isEnabled()); } -void KOnlineJobOutbox::updateNewCreditTransferButton() +void KOnlineJobOutboxView::updateNewCreditTransferButton() { - Q_D(KOnlineJobOutbox); + Q_D(KOnlineJobOutboxView); auto action = pActions[eMenu::Action::AccountCreditTransfer]; Q_CHECK_PTR(action); d->ui->m_buttonNewCreditTransfer->setEnabled(action->isEnabled()); } -void KOnlineJobOutbox::slotRemoveJob() +void KOnlineJobOutboxView::slotRemoveJob() { - Q_D(KOnlineJobOutbox); + Q_D(KOnlineJobOutboxView); QAbstractItemModel* model = d->ui->m_onlineJobView->model(); QModelIndexList indexes = d->ui->m_onlineJobView->selectionModel()->selectedRows(); @@ -221,9 +221,9 @@ } } -QStringList KOnlineJobOutbox::selectedOnlineJobs() const +QStringList KOnlineJobOutboxView::selectedOnlineJobs() const { - Q_D(const KOnlineJobOutbox); + Q_D(const KOnlineJobOutboxView); QModelIndexList indexes = d->ui->m_onlineJobView->selectionModel()->selectedRows(); if (indexes.isEmpty()) @@ -239,13 +239,7 @@ return list; } -void KOnlineJobOutbox::setOnlinePlugins(QMap& plugins) -{ - Q_D(KOnlineJobOutbox); - d->m_onlinePlugins = &plugins; -} - -void KOnlineJobOutbox::slotSelectByObject(const MyMoneyObject& obj, eView::Intent intent) +void KOnlineJobOutboxView::slotSelectByObject(const MyMoneyObject& obj, eView::Intent intent) { switch(intent) { case eView::Intent::UpdateActions: @@ -257,16 +251,29 @@ } } -void KOnlineJobOutbox::slotSendJobs() +void KOnlineJobOutboxView::slotSelectByVariant(const QVariantList& variant, eView::Intent intent) +{ + Q_D(KOnlineJobOutboxView); + switch(intent) { + case eView::Intent::SetOnlinePlugins: + if (variant.count() == 1) + d->m_onlinePlugins = static_cast*>(variant.first().value()); + break; + default: + break; + } +} + +void KOnlineJobOutboxView::slotSendJobs() { - Q_D(KOnlineJobOutbox); + Q_D(KOnlineJobOutboxView); if (d->ui->m_onlineJobView->selectionModel()->hasSelection()) slotSendSelectedJobs(); else slotSendAllSendableJobs(); } -void KOnlineJobOutbox::slotSendAllSendableJobs() +void KOnlineJobOutboxView::slotSendAllSendableJobs() { QList validJobs; foreach (const onlineJob& job, MyMoneyFile::instance()->onlineJobList()) { @@ -279,9 +286,9 @@ // emit sendJobs(validJobs); } -void KOnlineJobOutbox::slotSendSelectedJobs() +void KOnlineJobOutboxView::slotSendSelectedJobs() { - Q_D(KOnlineJobOutbox); + Q_D(KOnlineJobOutboxView); QModelIndexList indexes = d->ui->m_onlineJobView->selectionModel()->selectedRows(); if (indexes.isEmpty()) return; @@ -310,9 +317,9 @@ // emit sendJobs(validJobs); } -void KOnlineJobOutbox::slotEditJob() +void KOnlineJobOutboxView::slotEditJob() { - Q_D(KOnlineJobOutbox); + Q_D(KOnlineJobOutboxView); QModelIndexList indexes = d->ui->m_onlineJobView->selectionModel()->selectedIndexes(); if (!indexes.isEmpty()) { QString jobId = d->ui->m_onlineJobView->model()->data(indexes.first(), onlineJobModel::OnlineJobId).toString(); @@ -322,17 +329,17 @@ } } -void KOnlineJobOutbox::slotEditJob(const QModelIndex &index) +void KOnlineJobOutboxView::slotEditJob(const QModelIndex &index) { - Q_D(KOnlineJobOutbox); + Q_D(KOnlineJobOutboxView); auto jobId = d->ui->m_onlineJobView->model()->data(index, onlineJobModel::OnlineJobId).toString(); d->editJob(jobId); // emit editJob(jobId); } -void KOnlineJobOutbox::contextMenuEvent(QContextMenuEvent*) +void KOnlineJobOutboxView::contextMenuEvent(QContextMenuEvent*) { - Q_D(KOnlineJobOutbox); + Q_D(KOnlineJobOutboxView); QModelIndexList indexes = d->ui->m_onlineJobView->selectionModel()->selectedIndexes(); if (!indexes.isEmpty()) { // onlineJob job = d->ui->m_onlineJobView->model()->data(indexes.first(), onlineJobModel::OnlineJobRole).value(); @@ -343,9 +350,9 @@ /** * Do not know why this is needed, but all other views in KMyMoney have it. */ -void KOnlineJobOutbox::showEvent(QShowEvent* event) +void KOnlineJobOutboxView::showEvent(QShowEvent* event) { - Q_D(KOnlineJobOutbox); + Q_D(KOnlineJobOutboxView); if (d->m_needLoad) d->init(); @@ -354,12 +361,12 @@ QWidget::showEvent(event); } -void KOnlineJobOutbox::executeCustomAction(eView::Action action) +void KOnlineJobOutboxView::executeCustomAction(eView::Action action) { switch(action) { case eView::Action::SetDefaultFocus: { - Q_D(KOnlineJobOutbox); + Q_D(KOnlineJobOutboxView); QTimer::singleShot(0, d->ui->m_onlineJobView, SLOT(setFocus())); } break; @@ -369,9 +376,9 @@ } } -void KOnlineJobOutbox::updateActions(const MyMoneyObject& obj) +void KOnlineJobOutboxView::updateActions(const MyMoneyObject& obj) { - Q_D(KOnlineJobOutbox); + Q_D(KOnlineJobOutboxView); if (typeid(obj) != typeid(MyMoneyAccount) && (obj.id().isEmpty() && d->m_currentAccount.id().isEmpty())) // do not disable actions that were already disabled))) return; @@ -380,7 +387,7 @@ d->m_currentAccount = acc; } -void KOnlineJobOutbox::slotOnlineJobSave(onlineJob job) +void KOnlineJobOutboxView::slotOnlineJobSave(onlineJob job) { MyMoneyFileTransaction fileTransaction; if (job.id().isEmpty()) @@ -391,7 +398,7 @@ } /** @todo when onlineJob queue is used, continue here */ -void KOnlineJobOutbox::slotOnlineJobSend(onlineJob job) +void KOnlineJobOutboxView::slotOnlineJobSend(onlineJob job) { MyMoneyFileTransaction fileTransaction; if (job.id().isEmpty()) @@ -405,9 +412,9 @@ slotOnlineJobSend(jobList); } -void KOnlineJobOutbox::slotOnlineJobSend(QList jobs) +void KOnlineJobOutboxView::slotOnlineJobSend(QList jobs) { - Q_D(KOnlineJobOutbox); + Q_D(KOnlineJobOutboxView); MyMoneyFile *const kmmFile = MyMoneyFile::instance(); QMultiMap jobsByPlugin; @@ -467,13 +474,13 @@ } } -void KOnlineJobOutbox::slotOnlineJobLog() +void KOnlineJobOutboxView::slotOnlineJobLog() { QStringList jobIds = this->selectedOnlineJobs(); slotOnlineJobLog(jobIds); } -void KOnlineJobOutbox::slotOnlineJobLog(const QStringList& onlineJobIds) +void KOnlineJobOutboxView::slotOnlineJobLog(const QStringList& onlineJobIds) { onlineJobMessagesView *const dialog = new onlineJobMessagesView(); onlineJobMessagesModel *const model = new onlineJobMessagesModel(dialog); @@ -484,16 +491,16 @@ // Note: Objects are not deleted here, Qt's parent-child system has to do that. } -void KOnlineJobOutbox::slotNewCreditTransfer() +void KOnlineJobOutboxView::slotNewCreditTransfer() { - Q_D(KOnlineJobOutbox); + Q_D(KOnlineJobOutboxView); auto *transferForm = new kOnlineTransferForm(this); if (!d->m_currentAccount.id().isEmpty()) { transferForm->setCurrentAccount(d->m_currentAccount.id()); } connect(transferForm, &QDialog::rejected, transferForm, &QObject::deleteLater); - connect(transferForm, &kOnlineTransferForm::acceptedForSave, this, &KOnlineJobOutbox::slotOnlineJobSave); - connect(transferForm, &kOnlineTransferForm::acceptedForSend, this, static_cast(&KOnlineJobOutbox::slotOnlineJobSend)); + connect(transferForm, &kOnlineTransferForm::acceptedForSave, this, &KOnlineJobOutboxView::slotOnlineJobSave); + connect(transferForm, &kOnlineTransferForm::acceptedForSend, this, static_cast(&KOnlineJobOutboxView::slotOnlineJobSend)); connect(transferForm, &QDialog::accepted, transferForm, &QObject::deleteLater); transferForm->show(); } diff --git a/kmymoney/views/konlinejoboutbox.ui b/kmymoney/plugins/views/onlinejoboutbox/konlinejoboutboxview.ui rename from kmymoney/views/konlinejoboutbox.ui rename to kmymoney/plugins/views/onlinejoboutbox/konlinejoboutboxview.ui --- a/kmymoney/views/konlinejoboutbox.ui +++ b/kmymoney/plugins/views/onlinejoboutbox/konlinejoboutboxview.ui @@ -1,7 +1,7 @@ - KOnlineJobOutbox - + KOnlineJobOutboxView + 0 diff --git a/kmymoney/dialogs/konlinetransferform.h b/kmymoney/plugins/views/onlinejoboutbox/konlinetransferform.h rename from kmymoney/dialogs/konlinetransferform.h rename to kmymoney/plugins/views/onlinejoboutbox/konlinetransferform.h diff --git a/kmymoney/dialogs/konlinetransferform.cpp b/kmymoney/plugins/views/onlinejoboutbox/konlinetransferform.cpp rename from kmymoney/dialogs/konlinetransferform.cpp rename to kmymoney/plugins/views/onlinejoboutbox/konlinetransferform.cpp diff --git a/kmymoney/dialogs/konlinetransferform.ui b/kmymoney/plugins/views/onlinejoboutbox/konlinetransferform.ui rename from kmymoney/dialogs/konlinetransferform.ui rename to kmymoney/plugins/views/onlinejoboutbox/konlinetransferform.ui diff --git a/kmymoney/plugins/views/onlinejoboutbox/onlinejoboutboxview.h b/kmymoney/plugins/views/onlinejoboutbox/onlinejoboutboxview.h new file mode 100644 --- /dev/null +++ b/kmymoney/plugins/views/onlinejoboutbox/onlinejoboutboxview.h @@ -0,0 +1,47 @@ +/*************************************************************************** + onlinejoboutboxview.h + ------------------- + copyright : (C) 2018 by Łukasz Wojniłowicz + email : lukasz.wojnilowicz@gmail.com + ***************************************************************************/ + +/*************************************************************************** + * * + * 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. * + * * + ***************************************************************************/ + +#ifndef ONLINEJOBOUTBOXVIEW_H +#define ONLINEJOBOUTBOXVIEW_H + +// ---------------------------------------------------------------------------- +// KDE Includes + +// ---------------------------------------------------------------------------- +// QT Includes + +// Project Includes + +#include "kmymoneyplugin.h" + +class KOnlineJobOutboxView; + +class OnlineJobOutboxView : public KMyMoneyPlugin::Plugin +{ + Q_OBJECT + +public: + explicit OnlineJobOutboxView(QObject *parent, const QVariantList &args); + ~OnlineJobOutboxView() final; + + void plug() final; + void unplug() final; + +private: + KOnlineJobOutboxView* m_view; +}; + +#endif diff --git a/kmymoney/plugins/views/onlinejoboutbox/onlinejoboutboxview.cpp b/kmymoney/plugins/views/onlinejoboutbox/onlinejoboutboxview.cpp new file mode 100644 --- /dev/null +++ b/kmymoney/plugins/views/onlinejoboutbox/onlinejoboutboxview.cpp @@ -0,0 +1,63 @@ +/*************************************************************************** + onlinejoboutboxview.cpp + ------------------- + + copyright : (C) 2018 by Łukasz Wojniłowicz + email : lukasz.wojnilowicz@gmail.com + ***************************************************************************/ + +/*************************************************************************** + * * + * 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 "onlinejoboutboxview.h" + +// ---------------------------------------------------------------------------- +// QT Includes + +// ---------------------------------------------------------------------------- +// KDE Includes + +#include +#include + +// ---------------------------------------------------------------------------- +// Project Includes + +#include "viewinterface.h" +#include "konlinejoboutboxview.h" + +OnlineJobOutboxView::OnlineJobOutboxView(QObject *parent, const QVariantList &args) : + KMyMoneyPlugin::Plugin(parent, "onlinejoboutboxview"/*must be the same as X-KDE-PluginInfo-Name*/), + m_view(nullptr) +{ + Q_UNUSED(args) + setComponentName("onlinejoboutboxview", i18n("Reports view")); + // For information, announce that we have been loaded. + qDebug("Plugins: onlinejoboutboxview loaded"); +} + +OnlineJobOutboxView::~OnlineJobOutboxView() +{ + qDebug("Plugins: onlinejoboutboxview unloaded"); +} + +void OnlineJobOutboxView::plug() +{ + m_view = new KOnlineJobOutboxView; + viewInterface()->addView(m_view, i18n("Outbox"), View::OnlineJobOutbox); +} + +void OnlineJobOutboxView::unplug() +{ + viewInterface()->removeView(View::OnlineJobOutbox); +} + +K_PLUGIN_FACTORY_WITH_JSON(OnlineJobOutboxViewFactory, "onlinejoboutboxview.json", registerPlugin();) + +#include "onlinejoboutboxview.moc" diff --git a/kmymoney/plugins/views/onlinejoboutbox/onlinejoboutboxview.json.in b/kmymoney/plugins/views/onlinejoboutbox/onlinejoboutboxview.json.in new file mode 100644 --- /dev/null +++ b/kmymoney/plugins/views/onlinejoboutbox/onlinejoboutboxview.json.in @@ -0,0 +1,21 @@ +{ + "KPlugin": { + "Authors": [ + { + "Email": "christian-david@web.de", + "Name": "Christian Dávid" + } + ], + "Description": "Adds online job outbox view to KMyMoney", + "EnabledByDefault": true, + "Icon": "online-banking", + "Id": "onlinejoboutboxview", + "License": "GPL", + "Name": "Online job outbox view", + "ServiceTypes": [ + "KMyMoney/Plugin" + ], + "Version": "@PROJECT_VERSION@@PROJECT_VERSION_SUFFIX@", + "Website": "https://kmymoney.org/plugins.html" + } +} diff --git a/kmymoney/views/CMakeLists.txt b/kmymoney/views/CMakeLists.txt --- a/kmymoney/views/CMakeLists.txt +++ b/kmymoney/views/CMakeLists.txt @@ -1,7 +1,7 @@ set(viewbase_SOURCES kmymoneyviewbase.cpp ) - + add_library(viewbase STATIC ${viewbase_SOURCES}) target_link_libraries(viewbase PUBLIC KF5::TextWidgets) @@ -23,7 +23,6 @@ kscheduledview.cpp kscheduletreeitem.cpp ktagsview.cpp - konlinejoboutbox.cpp kpayeeidentifierview.cpp payeeidentifierselectiondelegate.cpp kmymoneywebpage.cpp @@ -53,12 +52,11 @@ kpayeesview.ui kscheduledview.ui ktagsview.ui - konlinejoboutbox.ui kpayeeidentifierview.ui ) if(ENABLE_UNFINISHEDFEATURES) - list(APPEND libviews_a_UI + list(APPEND libviews_a_UI simpleledgerview.ui ledgerview.ui ledgerviewpage.ui diff --git a/kmymoney/views/kaccountsview.h b/kmymoney/views/kaccountsview.h --- a/kmymoney/views/kaccountsview.h +++ b/kmymoney/views/kaccountsview.h @@ -54,12 +54,6 @@ void refresh(); void updateActions(const MyMoneyObject &obj); - /** - * Gets access to plugins found in KMyMoneyApp - * @param plugins - */ - void setOnlinePlugins(QMap& plugins); - public Q_SLOTS: void slotNetWorthChanged(const MyMoneyMoney &); void slotShowAccountMenu(const MyMoneyAccount& acc); diff --git a/kmymoney/views/kaccountsview.cpp b/kmymoney/views/kaccountsview.cpp --- a/kmymoney/views/kaccountsview.cpp +++ b/kmymoney/views/kaccountsview.cpp @@ -238,12 +238,6 @@ } -void KAccountsView::setOnlinePlugins(QMap& plugins) -{ - Q_D(KAccountsView); - d->m_onlinePlugins = &plugins; -} - /** * The view is notified that an unused income expense account has been hidden. */ @@ -290,6 +284,12 @@ if (variant.count() == 1 && d->m_proxyModel) slotNetWorthChanged(variant.first().value()); break; + + case eView::Intent::SetOnlinePlugins: + if (variant.count() == 1) + d->m_onlinePlugins = static_cast*>(variant.first().value()); + break; + default: break; } diff --git a/kmymoney/views/kmymoneyview.cpp b/kmymoney/views/kmymoneyview.cpp --- a/kmymoney/views/kmymoneyview.cpp +++ b/kmymoney/views/kmymoneyview.cpp @@ -80,7 +80,6 @@ #include "kgloballedgerview.h" #include "kinvestmentview.h" #include "kbudgetview.h" -#include "konlinejoboutbox.h" #include "kmymoney.h" #include "models.h" #include "accountsmodel.h" @@ -154,7 +153,6 @@ viewBases[View::Ledgers] = new KGlobalLedgerView; viewBases[View::Investments] = new KInvestmentView; viewBases[View::Budget] = new KBudgetView; - viewBases[View::OnlineJobOutbox] = new KOnlineJobOutbox; #ifdef ENABLE_UNFINISHEDFEATURES viewBases[View::NewLedgers] = new SimpleLedgerView; #endif @@ -178,7 +176,6 @@ {View::Ledgers, i18n("Ledgers"), Icon::ViewLedgers}, {View::Investments, i18n("Investments"), Icon::ViewInvestment}, {View::Budget, i18n("Budgets"), Icon::ViewBudgets}, - {View::OnlineJobOutbox, i18n("Outbox"), Icon::ViewOutbox}, #ifdef ENABLE_UNFINISHEDFEATURES {View::NewLedgers, i18n("New ledger"), Icon::DocumentProperties}, #endif @@ -432,13 +429,11 @@ void KMyMoneyView::setOnlinePlugins(QMap& plugins) { - static_cast(viewBases[View::Accounts])->setOnlinePlugins(plugins); - if (viewBases.contains(View::OnlineJobOutbox)) { - if (plugins.isEmpty()) - removeView(View::OnlineJobOutbox); - else - static_cast(viewBases[View::OnlineJobOutbox])->setOnlinePlugins(plugins); - } + if (viewBases.contains(View::Accounts)) + viewBases[View::Accounts]->slotSelectByVariant(QVariantList {QVariant::fromValue(static_cast(&plugins))}, eView::Intent::SetOnlinePlugins); + + if (viewBases.contains(View::OnlineJobOutbox)) + viewBases[View::OnlineJobOutbox]->slotSelectByVariant(QVariantList {QVariant::fromValue(static_cast(&plugins))}, eView::Intent::SetOnlinePlugins); } void KMyMoneyView::setStoragePlugins(QMap& plugins) @@ -457,10 +452,6 @@ for (auto i = (int)idView; i < (int)View::None; ++i) { if (viewFrames.contains((View)i)) { viewFrames[idView] = m_model->insertPage(viewFrames[(View)i],view, name); - viewBases[idView] = view; - connect(viewBases[idView], &KMyMoneyViewBase::selectByObject, this, &KMyMoneyView::slotSelectByObject); - connect(viewBases[idView], &KMyMoneyViewBase::selectByVariant, this, &KMyMoneyView::slotSelectByVariant); - connect(viewBases[idView], &KMyMoneyViewBase::customActionRequested, this, &KMyMoneyView::slotCustomActionRequested); isViewInserted = true; break; } @@ -469,6 +460,11 @@ if (!isViewInserted) viewFrames[idView] = m_model->addPage(view, name); + viewBases[idView] = view; + connect(viewBases[idView], &KMyMoneyViewBase::selectByObject, this, &KMyMoneyView::slotSelectByObject); + connect(viewBases[idView], &KMyMoneyViewBase::selectByVariant, this, &KMyMoneyView::slotSelectByVariant); + connect(viewBases[idView], &KMyMoneyViewBase::customActionRequested, this, &KMyMoneyView::slotCustomActionRequested); + auto icon = Icon::ViewForecast; switch (idView) { case View::Reports: diff --git a/kmymoney/views/viewenums.h b/kmymoney/views/viewenums.h --- a/kmymoney/views/viewenums.h +++ b/kmymoney/views/viewenums.h @@ -50,7 +50,8 @@ ReportProgress, ReportProgressMessage, SelectRegisterTransactions, - AccountReconciled + AccountReconciled, + SetOnlinePlugins }; enum class Action {