[office/skrooge] /: Remove all dashboard to keep only the qml version
Stephane MANKOWSKI
null at kde.org
Sat Mar 4 22:22:56 GMT 2023
Git commit 215398f3c89735444ef4b7ed67fa3ce1768bf1e5 by Stephane MANKOWSKI.
Committed on 04/03/2023 at 22:22.
Pushed by smankowski into branch 'master'.
Remove all dashboard to keep only the qml version
M +2 -0 .gitignore
M +1 -0 CHANGELOG
M +1 -1 doc/index.docbook
M +0 -4 plugins/generic/skg_dashboard/CMakeLists.txt
M +0 -14 plugins/generic/skg_dashboard/skgdashboardplugin.cpp
M +0 -15 plugins/generic/skg_dashboard/skgdashboardplugin.h
D +0 -43 plugins/generic/skg_dashboard/skgdashboardpluginwidget_pref.ui
A +61 -0 plugins/skrooge/default/account_table_light.qml [License: GPL(v3.0+)]
M +30 -11 plugins/skrooge/skrooge_bank/skgbankplugin.cpp
M +1 -5 plugins/skrooge/skrooge_calculator/skgcalculatorplugin.cpp
M +4 -9 plugins/skrooge/skrooge_categories/skgcategoriesplugin.cpp
M +1 -2 plugins/skrooge/skrooge_operation/CMakeLists.txt
D +0 -377 plugins/skrooge/skrooge_operation/skgoperationboardwidget.cpp
D +0 -83 plugins/skrooge/skrooge_operation/skgoperationboardwidget.h
M +1 -10 plugins/skrooge/skrooge_operation/skgoperationplugin.cpp
D +0 -248 plugins/skrooge/skrooge_operation/skgoperationpluginwidget_board.ui
M +1 -6 plugins/skrooge/skrooge_report/skgreportplugin.cpp
M +1 -2 plugins/skrooge/skrooge_scheduled/skgscheduledboardwidget.cpp
M +1 -2 plugins/skrooge/skrooge_search/CMakeLists.txt
D +0 -186 plugins/skrooge/skrooge_search/skgalarmboardwidget.cpp
D +0 -64 plugins/skrooge/skrooge_search/skgalarmboardwidget.h
M +4 -12 plugins/skrooge/skrooge_search/skgsearchplugin.cpp
M +1 -1 plugins/skrooge/skrooge_unit/skgunitplugin.cpp
https://invent.kde.org/office/skrooge/commit/215398f3c89735444ef4b7ed67fa3ce1768bf1e5
diff --git a/.gitignore b/.gitignore
index c34f3da68..0f4ff3fe2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,5 @@ mxe
*~
*.txt.user
*.wrk
+.vscode/c_cpp_properties.json
+.vscode/tasks.json
diff --git a/CHANGELOG b/CHANGELOG
index 3acb2da1c..690d73553 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,6 @@
skrooge (2.30.0)
*Correction bug 435762: Income&Expenditure widget don't match with Income&Expense report
+ *Correction: Remove all dashboard to keep only the qml version
-- Stephane MANKOWSKI <stephane at mankowski.fr> xxx
diff --git a/doc/index.docbook b/doc/index.docbook
index 7ceec494b..d0ee4e949 100644
--- a/doc/index.docbook
+++ b/doc/index.docbook
@@ -918,7 +918,7 @@
<listitem><para><guimenuitem>Next</guimenuitem>: Change the content of the current page with the content of the next one. (like in a web browser)</para></listitem>
<listitem><para><guimenuitem>Open highlights...</guimenuitem>: Open highlighted operations</para></listitem>
<listitem><para><guimenuitem>Open last modified...</guimenuitem>: Open operations modified by the last action done</para></listitem>
- <listitem><para><guimenuitem>Open potential duplicates...</guimenuitem>: Open operations opens a page with operations that have the same amounts and same dates</para></listitem>
+ <listitem><para><guimenuitem>Open potential duplicates...</guimenuitem>: Open a page with operations that have the same amounts and same dates</para></listitem>
<listitem><para><guimenuitem>Open sub operations...</guimenuitem>: Open sub operations of the selected operation. Similar to a double click</para></listitem>
<listitem><para><guimenuitem>Open report...</guimenuitem>: Open a report based on the selection. This is really useful. For example: if you select two accounts and launch this action then the <link linkend="reports">report</link> page will be opened but only for operations of those accounts</para></listitem>
<listitem><para><guimenuitem>Open imported operations not yet validated...</guimenuitem>: nothing to add</para></listitem>
diff --git a/plugins/generic/skg_dashboard/CMakeLists.txt b/plugins/generic/skg_dashboard/CMakeLists.txt
index 3f3e30d7b..6e8004448 100644
--- a/plugins/generic/skg_dashboard/CMakeLists.txt
+++ b/plugins/generic/skg_dashboard/CMakeLists.txt
@@ -15,12 +15,8 @@ SET(skg_dashboard_SRCS
skgdashboardwidget.cpp
skgdashboardboardwidget.cpp)
-ki18n_wrap_ui(skg_dashboard_SRCS skgdashboardpluginwidget_pref.ui)
-kconfig_add_kcfg_files(skg_dashboard_SRCS skgdashboard_settings.kcfgc )
-
KCOREADDONS_ADD_PLUGIN(skg_dashboard SOURCES ${skg_dashboard_SRCS} INSTALL_NAMESPACE "skg_gui" JSON "metadata.json")
TARGET_LINK_LIBRARIES(skg_dashboard Qt5::Gui KF5::Parts skgbasemodeler skgbasegui)
########### install files ###############
INSTALL(FILES ${PROJECT_SOURCE_DIR}/skg_dashboard.rc DESTINATION ${KDE_INSTALL_KXMLGUI5DIR}/skg_dashboard )
-INSTALL(FILES ${PROJECT_SOURCE_DIR}/skgdashboard_settings.kcfg DESTINATION ${KDE_INSTALL_KCFGDIR} )
diff --git a/plugins/generic/skg_dashboard/skgdashboardplugin.cpp b/plugins/generic/skg_dashboard/skgdashboardplugin.cpp
index c8d5ecf80..6840932a3 100644
--- a/plugins/generic/skg_dashboard/skgdashboardplugin.cpp
+++ b/plugins/generic/skg_dashboard/skgdashboardplugin.cpp
@@ -15,7 +15,6 @@
#include <kpluginfactory.h>
#include <kstandardaction.h>
-#include "skgdashboard_settings.h"
#include "skgdashboardboardwidget.h"
#include "skgdashboardpluginwidget.h"
#include "skgmainpanel.h"
@@ -76,19 +75,6 @@ SKGTabPage* SKGDashboardPlugin::getWidget()
return new SKGDashboardPluginWidget(SKGMainPanel::getMainPanel(), m_currentDocument);
}
-QWidget* SKGDashboardPlugin::getPreferenceWidget()
-{
- SKGTRACEINFUNC(10)
- auto w = new QWidget();
- ui.setupUi(w);
- return w;
-}
-
-KConfigSkeleton* SKGDashboardPlugin::getPreferenceSkeleton()
-{
- return skgdashboard_settings::self();
-}
-
QString SKGDashboardPlugin::title() const
{
return i18nc("Noun, a summary of your financial situation", "Dashboard");
diff --git a/plugins/generic/skg_dashboard/skgdashboardplugin.h b/plugins/generic/skg_dashboard/skgdashboardplugin.h
index 87b1e803c..dbc631e21 100644
--- a/plugins/generic/skg_dashboard/skgdashboardplugin.h
+++ b/plugins/generic/skg_dashboard/skgdashboardplugin.h
@@ -11,7 +11,6 @@
* @author Stephane MANKOWSKI
*/
#include "skginterfaceplugin.h"
-#include "ui_skgdashboardpluginwidget_pref.h"
/**
@@ -66,18 +65,6 @@ public:
*/
SKGTabPage* getWidget() override;
- /**
- * The preference widget of the plugin.
- * @return The preference widget of the plugin
- */
- QWidget* getPreferenceWidget() override;
-
- /**
- * The preference skeleton of the plugin.
- * @return The preference skeleton of the plugin
- */
- KConfigSkeleton* getPreferenceSkeleton() override;
-
/**
* The title of the plugin.
* @return The title of the plugin
@@ -120,8 +107,6 @@ private:
Q_DISABLE_COPY(SKGDashboardPlugin)
SKGDocument* m_currentDocument;
-
- Ui::skgdashboardplugin_pref ui{};
};
#endif // SKGDASHBOARDPLUGIN_H
diff --git a/plugins/generic/skg_dashboard/skgdashboardpluginwidget_pref.ui b/plugins/generic/skg_dashboard/skgdashboardpluginwidget_pref.ui
deleted file mode 100644
index b08d3d2c8..000000000
--- a/plugins/generic/skg_dashboard/skgdashboardpluginwidget_pref.ui
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <author>
-SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane at mankowski.fr
-SPDX-FileCopyrightText: 2022 G. DE BURE support at mankowski.fr
-SPDX-License-Identifier: GPL-3.0-or-later
- </author>
- <class>skgdashboardplugin_pref</class>
- <widget class="QWidget" name="skgdashboardplugin_pref">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>367</width>
- <height>184</height>
- </rect>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <widget class="QCheckBox" name="kcfg_qmlmode">
- <property name="text">
- <string>Dashboard in QML mode (Experimental)</string>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>126</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/plugins/skrooge/default/account_table_light.qml b/plugins/skrooge/default/account_table_light.qml
new file mode 100644
index 000000000..67e4f009f
--- /dev/null
+++ b/plugins/skrooge/default/account_table_light.qml
@@ -0,0 +1,61 @@
+/***************************************************************************
+ * SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane at mankowski.fr
+ * SPDX-FileCopyrightText: 2022 G. DE BURE support at mankowski.fr
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ ***************************************************************************/
+import QtQuick 2.0
+import QtQuick.Controls 1.0
+import QtQuick.Layouts 1.0
+
+RowLayout {
+ id: grid
+ property var m: report==null ? null : report.account_table
+ property var pixel_size: report==null ? 0 : report.point_size
+ spacing: 2
+
+ function maxValues(m, id) {
+ var output = 0
+ for (var i = 1; i < m.length; i++) {
+ if (!m[i][0] && Math.abs(m[i][id]) > output)
+ output = Math.abs(m[i][id])
+ }
+ return output
+ }
+
+ ColumnLayout {
+ spacing: 0
+
+ // Set titles
+ Repeater {
+ model: m
+ Label {
+ Layout.fillWidth: true
+ font.bold: index == 0 || modelData[0]
+ font.pixelSize: pixel_size
+ text: modelData[1]
+ horizontalAlignment: index == 0 ? Text.AlignHCenter : Text.AlignLeft
+ }
+ }
+ }
+
+ ColumnLayout {
+ spacing: 0
+
+ // Set values
+ Repeater {
+ model: m
+ SKGValue {
+ font.pixelSize: pixel_size
+ Layout.fillWidth: true
+ horizontalAlignment: index == 0 ? Text.AlignHCenter : Text.AlignRight
+ font.bold: index == 0 || modelData[0]
+
+ value: index == 0 ? null : modelData[6]
+ max: modelData[0] ? null : maxValues(m, 6)
+ backgroundColor: '#' + (value == null || value < 0 ? color_negativetext : color_positivetext)
+ text: index == 0 ? modelData[6] : document.formatPrimaryMoney(modelData[6])
+ url: font.bold || parent.modelId != 6 ? "" : "skg://Skrooge_operation_plugin/?operationWhereClause=t_ACCOUNT='"+ modelData[1] + "'&title="+ modelData[1] + "&title_icon=view-bank-account"
+ }
+ }
+ }
+}
diff --git a/plugins/skrooge/skrooge_bank/skgbankplugin.cpp b/plugins/skrooge/skrooge_bank/skgbankplugin.cpp
index 9b82b57a9..5f560d82e 100644
--- a/plugins/skrooge/skrooge_bank/skgbankplugin.cpp
+++ b/plugins/skrooge/skrooge_bank/skgbankplugin.cpp
@@ -69,13 +69,13 @@ bool SKGBankPlugin::setupActions(SKGDocument* iDocument)
int SKGBankPlugin::getNbDashboardWidgets()
{
- return 4;
+ return 5;
}
QString SKGBankPlugin::getDashboardWidgetTitle(int iIndex)
{
if (iIndex == 0) {
- return i18nc("Noun, a list of bank accounts", "Accounts (Light)");
+ return i18nc("Noun, a list of bank accounts", "Accounts (Medium)");
}
if (iIndex == 1) {
return i18nc("Noun, a list of bank accounts", "Accounts (Full)");
@@ -83,7 +83,10 @@ QString SKGBankPlugin::getDashboardWidgetTitle(int iIndex)
if (iIndex == 2) {
return i18nc("Noun, a list of banks", "Banks (Light)");
}
- return i18nc("Noun, a list of banks", "Banks (Full)");
+ if (iIndex == 3) {
+ return i18nc("Noun, a list of banks", "Banks (Full)");
+ }
+ return i18nc("Noun, a list of bank accounts", "Accounts (Light)");
}
SKGBoardWidget* SKGBankPlugin::getDashboardWidget(int iIndex)
@@ -98,18 +101,13 @@ SKGBoardWidget* SKGBankPlugin::getDashboardWidget(int iIndex)
<< QStringLiteral("t_TYPENLS")
<< QStringLiteral("t_BANK")
<< QStringLiteral("t_BANK_NUMBER");
- // Get QML mode for dashboard
- KConfigSkeleton* skl = SKGMainPanel::getMainPanel()->getPluginByName(QStringLiteral("Dashboard plugin"))->getPreferenceSkeleton();
- KConfigSkeletonItem* sklItem = skl->findItem(QStringLiteral("qmlmode"));
- bool qml = sklItem->property().toBool();
-
if (iIndex == 0) {
return new SKGAccountBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument);
}
if (iIndex == 1) {
return new SKGHtmlBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument,
getDashboardWidgetTitle(iIndex),
- QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/account_table.") % (qml ? QStringLiteral("qml") : QStringLiteral("html"))),
+ QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/account_table.qml")),
QStringList() << QStringLiteral("v_account_display"),
SKGSimplePeriodEdit::PREVIOUS_AND_CURRENT_PERIODS,
listForFilter);
@@ -117,7 +115,7 @@ SKGBoardWidget* SKGBankPlugin::getDashboardWidget(int iIndex)
if (iIndex == 2) {
auto w = new SKGHtmlBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument,
getDashboardWidgetTitle(iIndex),
- QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/bank_table_light.") % (qml ? QStringLiteral("qml") : QStringLiteral("html"))),
+ QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/bank_table_light.qml")),
QStringList() << QStringLiteral("v_account_display"),
SKGSimplePeriodEdit::NONE,
listForFilter);
@@ -135,9 +133,30 @@ SKGBoardWidget* SKGBankPlugin::getDashboardWidget(int iIndex)
w->addAction(open);
return w;
}
+ if (iIndex == 3) {
+ return new SKGHtmlBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument,
+ getDashboardWidgetTitle(iIndex),
+ QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/bank_table.qml")),
+ QStringList() << QStringLiteral("v_account_display"),
+ SKGSimplePeriodEdit::PREVIOUS_AND_CURRENT_PERIODS,
+ listForFilter);
+ }
+
+ listForFilter = QStringList()
+ << QStringLiteral("t_name")
+ << QStringLiteral("t_number")
+ << QStringLiteral("t_agency_number")
+ << QStringLiteral("t_agency_address")
+ << QStringLiteral("t_comment")
+ << QStringLiteral("t_TYPENLS")
+ << QStringLiteral("t_BANK")
+ << QStringLiteral("t_BANK_NUMBER")
+ << QStringLiteral("t_close")
+ << QStringLiteral("t_type")
+ << QStringLiteral("t_bookmarked");
return new SKGHtmlBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument,
getDashboardWidgetTitle(iIndex),
- QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/bank_table.") % (qml ? QStringLiteral("qml") : QStringLiteral("html"))),
+ QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/account_table_light.qml")),
QStringList() << QStringLiteral("v_account_display"),
SKGSimplePeriodEdit::PREVIOUS_AND_CURRENT_PERIODS,
listForFilter);
diff --git a/plugins/skrooge/skrooge_calculator/skgcalculatorplugin.cpp b/plugins/skrooge/skrooge_calculator/skgcalculatorplugin.cpp
index b06e9ec29..fbc53b185 100644
--- a/plugins/skrooge/skrooge_calculator/skgcalculatorplugin.cpp
+++ b/plugins/skrooge/skrooge_calculator/skgcalculatorplugin.cpp
@@ -68,10 +68,6 @@ QString SKGCalculatorPlugin::getDashboardWidgetTitle(int iIndex)
SKGBoardWidget* SKGCalculatorPlugin::getDashboardWidget(int iIndex)
{
Q_UNUSED(iIndex)
- // Get QML mode for dashboard
- KConfigSkeleton* skl = SKGMainPanel::getMainPanel()->getPluginByName(QStringLiteral("Dashboard plugin"))->getPreferenceSkeleton();
- KConfigSkeletonItem* sklItem = skl->findItem(QStringLiteral("qmlmode"));
- bool qml = sklItem->property().toBool();
auto listForFilter = QStringList()
<< QStringLiteral("t_name")
<< QStringLiteral("t_number")
@@ -85,7 +81,7 @@ SKGBoardWidget* SKGCalculatorPlugin::getDashboardWidget(int iIndex)
return new SKGHtmlBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument,
getDashboardWidgetTitle(iIndex),
- QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/interests.") % (qml ? QStringLiteral("qml") : QStringLiteral("html"))),
+ QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/interests.qml")),
QStringList() << QStringLiteral("v_account_display") << QStringLiteral("interest"),
SKGSimplePeriodEdit::PREVIOUS_AND_CURRENT_YEARS,
listForFilter);
diff --git a/plugins/skrooge/skrooge_categories/skgcategoriesplugin.cpp b/plugins/skrooge/skrooge_categories/skgcategoriesplugin.cpp
index 6aef84dae..0c8b39c1c 100644
--- a/plugins/skrooge/skrooge_categories/skgcategoriesplugin.cpp
+++ b/plugins/skrooge/skrooge_categories/skgcategoriesplugin.cpp
@@ -140,32 +140,27 @@ QString SKGCategoriesPlugin::getDashboardWidgetTitle(int iIndex)
SKGBoardWidget* SKGCategoriesPlugin::getDashboardWidget(int iIndex)
{
SKGTRACEINFUNC(1)
- // Get QML mode for dashboard
- KConfigSkeleton* skl = SKGMainPanel::getMainPanel()->getPluginByName(QStringLiteral("Dashboard plugin"))->getPreferenceSkeleton();
- KConfigSkeletonItem* sklItem = skl->findItem(QStringLiteral("qmlmode"));
- bool qml = sklItem->property().toBool();
-
if (iIndex == 0) {
return new SKGHtmlBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument,
getDashboardWidgetTitle(iIndex),
- QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/categories_period_table.") % (qml ? QStringLiteral("qml") : QStringLiteral("html"))),
+ QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/categories_period_table.qml")),
QStringList() << QStringLiteral("v_suboperation_consolidated"), SKGSimplePeriodEdit::ALL_PERIODS);
}
if (iIndex == 1) {
return new SKGHtmlBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument,
getDashboardWidgetTitle(iIndex) % " - %1",
- QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/categories_variations.") % (qml ? QStringLiteral("qml") : QStringLiteral("html"))),
+ QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/categories_variations.qml")),
QStringList() << QStringLiteral("v_suboperation_consolidated"), SKGSimplePeriodEdit::PREVIOUS_AND_CURRENT_PERIODS);
}
if (iIndex == 2) {
return new SKGHtmlBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument,
getDashboardWidgetTitle(iIndex) % " - %1",
- QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/budget_table.") % (qml ? QStringLiteral("qml") : QStringLiteral("html"))),
+ QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/budget_table.qml")),
QStringList() << QStringLiteral("v_budget"), SKGSimplePeriodEdit::PREVIOUS_AND_CURRENT_MONTHS);
}
return new SKGHtmlBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument,
getDashboardWidgetTitle(iIndex) % " - %1",
- QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/categories_variations_issues.") % (qml ? QStringLiteral("qml") : QStringLiteral("html"))),
+ QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/categories_variations_issues.qml")),
QStringList() << QStringLiteral("v_suboperation_consolidated"), SKGSimplePeriodEdit::PREVIOUS_AND_CURRENT_PERIODS);
}
diff --git a/plugins/skrooge/skrooge_operation/CMakeLists.txt b/plugins/skrooge/skrooge_operation/CMakeLists.txt
index 097edc555..10ff15414 100644
--- a/plugins/skrooge/skrooge_operation/CMakeLists.txt
+++ b/plugins/skrooge/skrooge_operation/CMakeLists.txt
@@ -13,11 +13,10 @@ SET(skrooge_operation_SRCS
skgsplittabledelegate.cpp
skgoperationplugin.cpp
skgoperationpluginwidget.cpp
- skgoperationboardwidget.cpp
skgoperationboardwidgetqml.cpp
)
-ki18n_wrap_ui(skrooge_operation_SRCS skgoperationpluginwidget_base.ui skgoperationpluginwidget_pref.ui skgoperationpluginwidget_board.ui )
+ki18n_wrap_ui(skrooge_operation_SRCS skgoperationpluginwidget_base.ui skgoperationpluginwidget_pref.ui)
kconfig_add_kcfg_files(skrooge_operation_SRCS skgoperation_settings.kcfgc )
KCOREADDONS_ADD_PLUGIN(skrooge_operation SOURCES ${skrooge_operation_SRCS} INSTALL_NAMESPACE "skg_gui" JSON "metadata.json")
diff --git a/plugins/skrooge/skrooge_operation/skgoperationboardwidget.cpp b/plugins/skrooge/skrooge_operation/skgoperationboardwidget.cpp
deleted file mode 100644
index dcfd3fc2b..000000000
--- a/plugins/skrooge/skrooge_operation/skgoperationboardwidget.cpp
+++ /dev/null
@@ -1,377 +0,0 @@
-/***************************************************************************
- * SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane at mankowski.fr
- * SPDX-FileCopyrightText: 2022 G. DE BURE support at mankowski.fr
- * SPDX-License-Identifier: GPL-3.0-or-later
- ***************************************************************************/
-/** @file
- * This file is Skrooge plugin for operation management.
- *
- * @author Stephane MANKOWSKI / Guillaume DE BURE
- */
-#include "skgoperationboardwidget.h"
-
-#include <qdom.h>
-#include <qparallelanimationgroup.h>
-#include <qpropertyanimation.h>
-#include <qaction.h>
-#include <qwidgetaction.h>
-
-#include <kcolorscheme.h>
-
-#include "skgdocumentbank.h"
-#include "skgmainpanel.h"
-#include "skgobjectbase.h"
-#include "skgperiodedit.h"
-#include "skgreportbank.h"
-#include "skgservices.h"
-#include "skgtraces.h"
-
-SKGOperationBoardWidget::SKGOperationBoardWidget(QWidget* iParent, SKGDocument* iDocument)
- : SKGBoardWidget(iParent, iDocument, i18nc("Dashboard widget title", "Income & Expenditure")),
- m_periodEdit1(nullptr), m_periodEdit2(nullptr), m_anim(nullptr)
-{
- SKGTRACEINFUNC(10)
-
- m_timer.setSingleShot(true);
- connect(&m_timer, &QTimer::timeout, this, [ = ]() {
- this->dataModified();
- }, Qt::QueuedConnection);
-
- // Initialize animation group
- m_anim = new QParallelAnimationGroup(this);
-
- auto f = new QFrame();
- ui.setupUi(f);
- setMainWidget(f);
- KColorScheme scheme(QPalette::Normal, KColorScheme::Window);
- auto color = scheme.foreground(KColorScheme::NormalText).color().name().right(6);
-
- ui.kIncomeLabel->setText("<a href=\"IC\" style=\"color: #" % color % "\">" % ui.kIncomeLabel->text() % "</a>");
- ui.kExpenseLabel->setText("<a href=\"EC\" style=\"color: #" % color % "\">" % ui.kExpenseLabel->text() % "</a>");
- ui.kSavingLabel->setText("<a href=\"SC\" style=\"color: #" % color % "\">" % ui.kSavingLabel->text() % "</a>");
- ui.kIncome_previousLabel->setText("<a href=\"IP\" style=\"color: #" % color % "\">" % ui.kIncome_previousLabel->text() % "</a>");
- ui.kExpense_previousLabel->setText("<a href=\"EP\" style=\"color: #" % color % "\">" % ui.kExpense_previousLabel->text() % "</a>");
- ui.kSaving_previousLabel->setText("<a href=\"SP\" style=\"color: #" % color % "\">" % ui.kSaving_previousLabel->text() % "</a>");
-
- connect(ui.kIncomeLabel, &QLabel::linkActivated, this, &SKGOperationBoardWidget::onOpen);
- connect(ui.kExpenseLabel, &QLabel::linkActivated, this, &SKGOperationBoardWidget::onOpen);
- connect(ui.kSavingLabel, &QLabel::linkActivated, this, &SKGOperationBoardWidget::onOpen);
- connect(ui.kIncome_previousLabel, &QLabel::linkActivated, this, &SKGOperationBoardWidget::onOpen);
- connect(ui.kExpense_previousLabel, &QLabel::linkActivated, this, &SKGOperationBoardWidget::onOpen);
- connect(ui.kSaving_previousLabel, &QLabel::linkActivated, this, &SKGOperationBoardWidget::onOpen);
-
- // Create menu
- setContextMenuPolicy(Qt::ActionsContextMenu);
-
- QStringList overlayopen;
- overlayopen.push_back(QStringLiteral("quickopen"));
- m_menuOpen = new QAction(SKGServices::fromTheme(QStringLiteral("view-statistics"), overlayopen), i18nc("Verb", "Open report..."), this);
- connect(m_menuOpen, &QAction::triggered, SKGMainPanel::getMainPanel(), [ = ]() {
- SKGMainPanel::getMainPanel()->SKGMainPanel::openPage();
- });
- addAction(m_menuOpen);
-
- {
- auto sep = new QAction(this);
- sep->setSeparator(true);
- addAction(sep);
- }
- m_menuGroup = new QAction(i18nc("Noun, a type of operations", "Grouped"), this);
- m_menuGroup->setCheckable(true);
- m_menuGroup->setChecked(false);
- connect(m_menuGroup, &QAction::triggered, this, &SKGOperationBoardWidget::refreshDelayed);
- addAction(m_menuGroup);
-
- m_menuTransfer = new QAction(i18nc("Noun, a type of operations", "Transfers"), this);
- m_menuTransfer->setCheckable(true);
- m_menuTransfer->setChecked(false);
- connect(m_menuTransfer, &QAction::triggered, this, &SKGOperationBoardWidget::refreshDelayed);
- addAction(m_menuTransfer);
-
- connect(m_menuGroup, &QAction::toggled, m_menuTransfer, &QAction::setEnabled);
-
- m_menuTracked = new QAction(i18nc("Noun, a type of operations", "Tracked"), this);
- m_menuTracked->setCheckable(true);
- m_menuTracked->setChecked(true);
- connect(m_menuTracked, &QAction::triggered, this, &SKGOperationBoardWidget::refreshDelayed);
- addAction(m_menuTracked);
-
- m_menuSuboperation = new QAction(i18nc("Noun, a type of operations", "On suboperations"), this);
- m_menuSuboperation->setCheckable(true);
- m_menuSuboperation->setChecked(false);
- connect(m_menuSuboperation, &QAction::triggered, this, &SKGOperationBoardWidget::refreshDelayed);
- addAction(m_menuSuboperation);
-
- {
- auto sep = new QAction(this);
- sep->setSeparator(true);
- addAction(sep);
- }
-
- m_periodEdit1 = new SKGPeriodEdit(this, true);
- m_periodEdit1->setObjectName(QStringLiteral("m_periodEdit1"));
- {
- // Set default
- QDomDocument doc(QStringLiteral("SKGML"));
- QDomElement root = doc.createElement(QStringLiteral("parameters"));
- doc.appendChild(root);
- root.setAttribute(QStringLiteral("period"), SKGServices::intToString(static_cast<int>(SKGPeriodEdit::CURRENT)));
- m_periodEdit1->setState(doc.toString());
-
- // Add widget in menu
- auto periodEditWidget = new QWidgetAction(this);
- periodEditWidget->setObjectName(QStringLiteral("m_periodEdit1Action"));
- periodEditWidget->setDefaultWidget(m_periodEdit1);
-
- addAction(periodEditWidget);
- }
-
- {
- auto sep = new QAction(this);
- sep->setSeparator(true);
- addAction(sep);
- }
-
- m_periodEdit2 = new SKGPeriodEdit(this, true);
- m_periodEdit2->setObjectName(QStringLiteral("m_periodEdit2"));
- {
- // Set default
- QDomDocument doc(QStringLiteral("SKGML"));
- QDomElement root = doc.createElement(QStringLiteral("parameters"));
- doc.appendChild(root);
- root.setAttribute(QStringLiteral("period"), SKGServices::intToString(static_cast<int>(SKGPeriodEdit::PREVIOUS)));
- m_periodEdit2->setState(doc.toString());
-
- // Add widget in menu
- auto periodEditWidget = new QWidgetAction(this);
- periodEditWidget->setObjectName(QStringLiteral("m_periodEdit2Action"));
- periodEditWidget->setDefaultWidget(m_periodEdit2);
-
- addAction(periodEditWidget);
- }
-
- // Refresh
- connect(m_periodEdit1, &SKGPeriodEdit::changed, this, &SKGOperationBoardWidget::refreshDelayed, Qt::QueuedConnection);
- connect(m_periodEdit2, &SKGPeriodEdit::changed, this, &SKGOperationBoardWidget::refreshDelayed, Qt::QueuedConnection);
- connect(getDocument(), &SKGDocument::tableModified, this, &SKGOperationBoardWidget::dataModified, Qt::QueuedConnection);
-}
-
-SKGOperationBoardWidget::~SKGOperationBoardWidget()
-{
- SKGTRACEINFUNC(10)
- m_menuGroup = nullptr;
- m_menuTransfer = nullptr;
- m_menuTracked = nullptr;
- m_anim = nullptr;
-}
-
-QString SKGOperationBoardWidget::getState()
-{
- QDomDocument doc(QStringLiteral("SKGML"));
- doc.setContent(SKGBoardWidget::getState());
- QDomElement root = doc.documentElement();
-
- root.setAttribute(QStringLiteral("menuGroup"), (m_menuGroup != nullptr) && m_menuGroup->isChecked() ? QStringLiteral("Y") : QStringLiteral("N"));
- root.setAttribute(QStringLiteral("menuTransfert"), (m_menuTransfer != nullptr) && m_menuTransfer->isChecked() ? QStringLiteral("Y") : QStringLiteral("N"));
- root.setAttribute(QStringLiteral("menuTracked"), (m_menuTracked != nullptr) && m_menuTracked->isChecked() ? QStringLiteral("Y") : QStringLiteral("N"));
- root.setAttribute(QStringLiteral("menuSuboperation"), (m_menuSuboperation != nullptr) && m_menuSuboperation->isChecked() ? QStringLiteral("Y") : QStringLiteral("N"));
- root.setAttribute(QStringLiteral("period1"), m_periodEdit1 != nullptr ? m_periodEdit1->getState() : QLatin1String(""));
- root.setAttribute(QStringLiteral("period2"), m_periodEdit2 != nullptr ? m_periodEdit2->getState() : QLatin1String(""));
- return doc.toString();
-}
-
-void SKGOperationBoardWidget::setState(const QString& iState)
-{
- SKGBoardWidget::setState(iState);
-
- QDomDocument doc(QStringLiteral("SKGML"));
- doc.setContent(iState);
- QDomElement root = doc.documentElement();
- if (m_menuGroup != nullptr) {
- QString val = root.attribute(QStringLiteral("menuGroup"));
- if (val.isEmpty()) {
- val = root.attribute(QStringLiteral("menuTransfert"));
- }
- m_menuGroup->setChecked(val == QStringLiteral("Y"));
- }
- if (m_menuTransfer != nullptr) {
- m_menuTransfer->setChecked(root.attribute(QStringLiteral("menuTransfert")) == QStringLiteral("Y"));
- }
- if (m_menuTracked != nullptr) {
- m_menuTracked->setChecked(root.attribute(QStringLiteral("menuTracked")) != QStringLiteral("N"));
- }
- if (m_menuSuboperation != nullptr) {
- m_menuSuboperation->setChecked(root.attribute(QStringLiteral("menuSuboperation")) == QStringLiteral("Y"));
- }
- QString period1 = root.attribute(QStringLiteral("period1"));
- if ((m_periodEdit1 != nullptr) && !period1.isEmpty()) {
- m_periodEdit1->setState(period1);
- }
- QString period2 = root.attribute(QStringLiteral("period2"));
- if ((m_periodEdit2 != nullptr) && !period2.isEmpty()) {
- m_periodEdit2->setState(period2);
- }
- refreshDelayed();
-}
-
-void SKGOperationBoardWidget::onOpen(const QString& iLink)
-{
- bool onSubOperation = ((m_menuSuboperation != nullptr) && m_menuSuboperation->isChecked());
-
- // Call operation plugin
- QString wc;
- if (iLink.endsWith(QLatin1String("C"))) {
- wc = m_periodEdit1->getWhereClause() % " AND t_TYPEACCOUNT<>'L'";
- } else {
- wc = m_periodEdit2->getWhereClause() % " AND t_TYPEACCOUNT<>'L'";
- }
-
- if (iLink.startsWith(QLatin1String("I"))) {
- wc = wc % " AND t_TYPEEXPENSE='+'";
- } else if (iLink.startsWith(QLatin1String("E"))) {
- wc = wc % " AND t_TYPEEXPENSE='-'";
- }
-
- wc = wc % ((m_menuGroup != nullptr) && m_menuGroup->isChecked() ? "" : " AND i_group_id=0") % ((m_menuTransfer != nullptr) && m_menuTransfer->isChecked() ? "" : " AND t_TRANSFER='N'") % ((m_menuTracked != nullptr) && m_menuTracked->isChecked() ? "" : (onSubOperation ? " AND t_REALREFUND=''" : " AND t_REFUND=''"));
-
- QString title;
- if (iLink == QStringLiteral("IC")) {
- title = i18nc("Title of a list of operations", "Incomes of %1", ui.kLabel->text());
- } else if (iLink == QStringLiteral("EC")) {
- title = i18nc("Title of a list of operations", "Expenses of %1", ui.kLabel->text());
- } else if (iLink == QStringLiteral("SC")) {
- title = i18nc("Title of a list of operations", "Savings of %1", ui.kLabel->text());
- } else if (iLink == QStringLiteral("IP")) {
- title = i18nc("Title of a list of operations", "Incomes of %1", ui.kLabel_previous->text());
- } else if (iLink == QStringLiteral("EP")) {
- title = i18nc("Title of a list of operations", "Expenses of %1", ui.kLabel_previous->text());
- } else if (iLink == QStringLiteral("SP")) {
- title = i18nc("Title of a list of operations", "Savings of %1", ui.kLabel_previous->text());
- }
- SKGMainPanel::getMainPanel()->openPage("skg://skrooge_operation_plugin/" % QString(onSubOperation ? QStringLiteral("SKGOPERATION_CONSOLIDATED_DEFAULT_PARAMETERS/") : QString()) % "?operationTable=" % SKGServices::encodeForUrl(onSubOperation ? QStringLiteral("v_suboperation_consolidated") : QStringLiteral("v_operation_display")) % "&title_icon=view-bank-account¤tPage=-1&title=" % SKGServices::encodeForUrl(title) %
- "&operationWhereClause=" % SKGServices::encodeForUrl(wc));
-}
-
-void SKGOperationBoardWidget::refreshDelayed()
-{
- m_timer.start(300);
-}
-
-void SKGOperationBoardWidget::dataModified(const QString& iTableName, int iIdTransaction)
-{
- SKGTRACEINFUNC(10)
- Q_UNUSED(iIdTransaction)
- QString table = ((m_menuSuboperation != nullptr) && m_menuSuboperation->isChecked() ? QStringLiteral("v_suboperation_consolidated") : QStringLiteral("v_operation_display"));
- if ((m_periodEdit1 != nullptr) && (m_periodEdit2 != nullptr) && (iTableName == table || iTableName.isEmpty())) {
- // Set titles
- ui.kLabel->setText(m_periodEdit1->text());
- ui.kLabel_previous->setText(m_periodEdit2->text());
-
- auto* doc = qobject_cast<SKGDocumentBank*>(getDocument());
- if (doc != nullptr) {
- if (m_menuOpen != nullptr) {
- QString url = QStringLiteral("skg://skrooge_report_plugin/?grouped=") % ((m_menuGroup != nullptr) && m_menuGroup->isChecked() ? QStringLiteral("Y") : QStringLiteral("N")) % "&transfers="
- % ((m_menuTransfer != nullptr) && m_menuTransfer->isChecked() ? QStringLiteral("Y") : QStringLiteral("N")) % "&tracked="
- % ((m_menuTracked != nullptr) && m_menuTracked->isChecked() ? QStringLiteral("Y") : QStringLiteral("N")) % "&expenses=Y&incomes=Y&lines2=t_TYPEEXPENSENLS&columns=d_DATEMONTH¤tPage=-1" %
- "&mode=0&interval=3&period=3" %
- "&tableAndGraphState.graphMode=1&tableAndGraphState.allPositive=Y&tableAndGraphState.show=graph&title=" %
- SKGServices::encodeForUrl(i18nc("Noun, the title of a section", "Income & Expenditure"));
- m_menuOpen->setData(url);
- }
-
- SKGServices::SKGUnitInfo primary = doc->getPrimaryUnit();
- SKGServices::SKGUnitInfo secondary = doc->getSecondaryUnit();
-
- auto* bk = qobject_cast< SKGReportBank* >(doc->getReport());
- if (bk != nullptr) {
- QVariantList table2 = bk->getIncomeVsExpenditure((m_menuSuboperation != nullptr) && m_menuSuboperation->isChecked(),
- (m_menuGroup != nullptr) && m_menuGroup->isChecked(),
- (m_menuTransfer != nullptr) && m_menuTransfer->isChecked(),
- (m_menuTracked != nullptr) && m_menuTracked->isChecked(),
- m_periodEdit1->getWhereClause(),
- m_periodEdit2->getWhereClause());
- delete bk;
-
- QVariantList l1 = table2.value(1).toList();
- QVariantList l2 = table2.value(2).toList();
- double income_previous_month = l1.value(2).toDouble();
- double expense_previous_month = l2.value(2).toDouble();
- double income_month = l1.value(3).toDouble();
- double expense_month = l2.value(3).toDouble();
-
- // Set Maximum
- int max = qMax(income_previous_month, qMax(expense_previous_month, qMax(income_month, expense_month)));
- if (max == 0) {
- max = 100.0;
- }
- ui.kIncome->setMaximum(max);
- ui.kIncome_previous->setMaximum(max);
- ui.kExpense->setMaximum(max);
- ui.kExpense_previous->setMaximum(max);
- ui.kSaving->setMaximum(max);
- ui.kSaving_previous->setMaximum(max);
-
- // Set texts and tool tips
- ui.kIncome->setFormat(doc->formatMoney(income_month, primary, false));
- ui.kIncome_previous->setFormat(doc->formatMoney(income_previous_month, primary, false));
- ui.kExpense->setFormat(doc->formatMoney(expense_month, primary, false));
- ui.kExpense_previous->setFormat(doc->formatMoney(expense_previous_month, primary, false));
- ui.kSaving->setFormat(doc->formatMoney(income_month - expense_month, primary, false));
- ui.kSaving_previous->setFormat(doc->formatMoney(income_previous_month - expense_previous_month, primary, false));
- if (!secondary.Symbol.isEmpty() && (secondary.Value != 0.0)) {
- ui.kIncome->setToolTip(doc->formatMoney(income_month, secondary, false));
- ui.kIncome_previous->setToolTip(doc->formatMoney(income_previous_month, secondary, false));
- ui.kExpense->setToolTip(doc->formatMoney(expense_month, secondary, false));
- ui.kExpense_previous->setToolTip(doc->formatMoney(expense_previous_month, secondary, false));
- ui.kSaving->setToolTip(doc->formatMoney(income_month - expense_month, secondary, false));
- ui.kSaving_previous->setToolTip(doc->formatMoney(income_previous_month - expense_previous_month, secondary, false));
- }
-
- // Change colors
- ui.kIncome->setLimits(0, 0, max);
- ui.kIncome_previous->setLimits(0, 0, max);
- ui.kExpense->setLimits(max, -1, -1);
- ui.kExpense_previous->setLimits(max, -1, -1);
- ui.kSaving->setLimits(income_month - expense_month < 0 ? max : 0, 0.1 * income_month, max);
- ui.kSaving_previous->setLimits(income_previous_month - expense_previous_month < 0 ? max : 0, 0.1 * income_previous_month, max);
-
- // Set values
- if (m_anim != nullptr) {
- m_anim->clear();
- }
- SKGOperationBoardWidget::setValue(ui.kIncome, income_month);
- SKGOperationBoardWidget::setValue(ui.kIncome_previous, income_previous_month);
- SKGOperationBoardWidget::setValue(ui.kExpense, expense_month);
- SKGOperationBoardWidget::setValue(ui.kExpense_previous, expense_previous_month);
- SKGOperationBoardWidget::setValue(ui.kSaving, qAbs(income_month - expense_month));
- SKGOperationBoardWidget::setValue(ui.kSaving_previous, qAbs(income_previous_month - expense_previous_month));
- if (m_anim != nullptr) {
- QTimer::singleShot(1000, Qt::CoarseTimer, m_anim, [ = ]() {
- m_anim->start();
- });
- }
- }
-
- // No widget if no account
- bool exist = false;
- doc->existObjects(QStringLiteral("account"), QLatin1String(""), exist);
- if (parentWidget() != nullptr) {
- setVisible(exist);
- }
- }
- }
-}
-
-void SKGOperationBoardWidget::setValue(SKGProgressBar* iWidget, double iValue)
-{
- if (m_anim != nullptr) {
- auto panim = new QPropertyAnimation(iWidget, "value");
- panim->setDuration(1000);
- panim->setStartValue(0);
- panim->setEndValue(static_cast<int>(iValue));
- m_anim->addAnimation(panim);
- } else {
- iWidget->setValue(iValue);
- }
-}
-
diff --git a/plugins/skrooge/skrooge_operation/skgoperationboardwidget.h b/plugins/skrooge/skrooge_operation/skgoperationboardwidget.h
deleted file mode 100644
index 63cbca979..000000000
--- a/plugins/skrooge/skrooge_operation/skgoperationboardwidget.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/***************************************************************************
- * SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane at mankowski.fr
- * SPDX-FileCopyrightText: 2022 G. DE BURE support at mankowski.fr
- * SPDX-License-Identifier: GPL-3.0-or-later
- ***************************************************************************/
-#ifndef SKGOPERATIONBOARDWIDGET_H
-#define SKGOPERATIONBOARDWIDGET_H
-/** @file
-* This file is Skrooge plugin for operation management.
-*
-* @author Stephane MANKOWSKI / Guillaume DE BURE
-*/
-#include <qtimer.h>
-
-#include "skgboardwidget.h"
-#include "ui_skgoperationpluginwidget_board.h"
-
-class QAction;
-class SKGPeriodEdit;
-class QParallelAnimationGroup;
-
-/**
- * This file is Skrooge plugin for operation management
- */
-class SKGOperationBoardWidget : public SKGBoardWidget
-{
- Q_OBJECT
-
-public:
- /**
- * Default Constructor
- * @param iParent the parent widget
- * @param iDocument the document
- */
- explicit SKGOperationBoardWidget(QWidget* iParent, SKGDocument* iDocument);
-
- /**
- * Default Destructor
- */
- ~SKGOperationBoardWidget() override;
-
- /**
- * Get the current state
- * MUST BE OVERWRITTEN
- * @return a string containing all information needed to set the same state.
- * Could be an XML stream
- */
- QString getState() override;
-
- /**
- * Set the current state
- * MUST BE OVERWRITTEN
- * @param iState must be interpreted to set the state of the widget
- */
- void setState(const QString& iState) override;
-
-private Q_SLOTS:
- void refreshDelayed();
- void dataModified(const QString& iTableName = QString(), int iIdTransaction = 0);
- void onOpen(const QString& iLink);
-
-private:
- Q_DISABLE_COPY(SKGOperationBoardWidget)
-
- void setValue(SKGProgressBar* iWidget, double iValue);
-
- Ui::skgoperationplugin_board ui{};
-
- QAction* m_menuOpen;
- QAction* m_menuGroup;
- QAction* m_menuTransfer;
- QAction* m_menuTracked;
- QAction* m_menuSuboperation;
-
- SKGPeriodEdit* m_periodEdit1;
- SKGPeriodEdit* m_periodEdit2;
-
- QParallelAnimationGroup* m_anim;
-
- QTimer m_timer;
-};
-
-#endif // SKGOPERATIONBOARDWIDGET_H
diff --git a/plugins/skrooge/skrooge_operation/skgoperationplugin.cpp b/plugins/skrooge/skrooge_operation/skgoperationplugin.cpp
index b8c31bff5..d745a9414 100644
--- a/plugins/skrooge/skrooge_operation/skgoperationplugin.cpp
+++ b/plugins/skrooge/skrooge_operation/skgoperationplugin.cpp
@@ -28,7 +28,6 @@
#include "skghtmlboardwidget.h"
#include "skgmainpanel.h"
#include "skgoperation_settings.h"
-#include "skgoperationboardwidget.h"
#include "skgoperationboardwidgetqml.h"
#include "skgoperationobject.h"
#include "skgoperationpluginwidget.h"
@@ -454,16 +453,8 @@ QString SKGOperationPlugin::getDashboardWidgetTitle(int iIndex)
SKGBoardWidget* SKGOperationPlugin::getDashboardWidget(int iIndex)
{
- // Get QML mode for dashboard
- KConfigSkeleton* skl = SKGMainPanel::getMainPanel()->getPluginByName(QStringLiteral("Dashboard plugin"))->getPreferenceSkeleton();
- KConfigSkeletonItem* sklItem = skl->findItem(QStringLiteral("qmlmode"));
- bool qml = sklItem->property().toBool();
-
if (iIndex == 0) {
- if (qml) {
- return new SKGOperationBoardWidgetQml(SKGMainPanel::getMainPanel(), m_currentBankDocument);
- }
- return new SKGOperationBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument);
+ return new SKGOperationBoardWidgetQml(SKGMainPanel::getMainPanel(), m_currentBankDocument);
}
return new SKGHtmlBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument,
getDashboardWidgetTitle(iIndex),
diff --git a/plugins/skrooge/skrooge_operation/skgoperationpluginwidget_board.ui b/plugins/skrooge/skrooge_operation/skgoperationpluginwidget_board.ui
deleted file mode 100644
index 9fb7a77fc..000000000
--- a/plugins/skrooge/skrooge_operation/skgoperationpluginwidget_board.ui
+++ /dev/null
@@ -1,248 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <author>
-SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane at mankowski.fr
-SPDX-FileCopyrightText: 2022 G. DE BURE support at mankowski.fr
-SPDX-License-Identifier: GPL-3.0-or-later
- </author>
- <class>skgoperationplugin_board</class>
- <widget class="QWidget" name="skgoperationplugin_board">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>217</width>
- <height>208</height>
- </rect>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_2">
- <property name="margin">
- <number>0</number>
- </property>
- <item>
- <widget class="QFrame" name="kGroup">
- <layout class="QGridLayout" name="gridLayout">
- <property name="margin">
- <number>0</number>
- </property>
- <property name="spacing">
- <number>2</number>
- </property>
- <item row="0" column="0" colspan="2">
- <widget class="QLabel" name="kLabel">
- <property name="font">
- <font>
- <weight>75</weight>
- <bold>true</bold>
- <underline>true</underline>
- </font>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="SKGProgressBar" name="kIncome">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- <property name="format">
- <string>%p</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="kExpenseLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Expenditure:</string>
- </property>
- </widget>
- </item>
- <item row="2" column="1">
- <widget class="SKGProgressBar" name="kExpense">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- <property name="format">
- <string>%p</string>
- </property>
- </widget>
- </item>
- <item row="4" column="0" colspan="2">
- <widget class="QLabel" name="kLabel_previous">
- <property name="font">
- <font>
- <weight>75</weight>
- <bold>true</bold>
- <underline>true</underline>
- </font>
- </property>
- <property name="text">
- <string notr="true"/>
- </property>
- </widget>
- </item>
- <item row="5" column="0">
- <widget class="QLabel" name="kIncome_previousLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Income:</string>
- </property>
- </widget>
- </item>
- <item row="5" column="1">
- <widget class="SKGProgressBar" name="kIncome_previous">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- <property name="format">
- <string>%p</string>
- </property>
- </widget>
- </item>
- <item row="6" column="0">
- <widget class="QLabel" name="kExpense_previousLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Expenditure:</string>
- </property>
- </widget>
- </item>
- <item row="6" column="1">
- <widget class="SKGProgressBar" name="kExpense_previous">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- <property name="format">
- <string>%p</string>
- </property>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="kIncomeLabel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Income:</string>
- </property>
- </widget>
- </item>
- <item row="3" column="0">
- <widget class="QLabel" name="kSavingLabel">
- <property name="text">
- <string>Saving:</string>
- </property>
- </widget>
- </item>
- <item row="3" column="1">
- <widget class="SKGProgressBar" name="kSaving">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- <property name="format">
- <string>%p</string>
- </property>
- </widget>
- </item>
- <item row="8" column="1">
- <widget class="SKGProgressBar" name="kSaving_previous">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="value">
- <number>0</number>
- </property>
- <property name="format">
- <string>%p</string>
- </property>
- </widget>
- </item>
- <item row="8" column="0">
- <widget class="QLabel" name="kSaving_previousLabel">
- <property name="text">
- <string>Saving:</string>
- </property>
- </widget>
- </item>
- <item row="9" column="1">
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
- </widget>
- <customwidgets>
- <customwidget>
- <class>SKGProgressBar</class>
- <extends>QProgressBar</extends>
- <header>skgprogressbar.h</header>
- </customwidget>
- </customwidgets>
- <resources/>
- <connections/>
- <slots>
- <slot>onOpen(QString)</slot>
- </slots>
-</ui>
diff --git a/plugins/skrooge/skrooge_report/skgreportplugin.cpp b/plugins/skrooge/skrooge_report/skgreportplugin.cpp
index ba3eab6e0..99c80b178 100644
--- a/plugins/skrooge/skrooge_report/skgreportplugin.cpp
+++ b/plugins/skrooge/skrooge_report/skgreportplugin.cpp
@@ -132,14 +132,9 @@ SKGBoardWidget* SKGReportPlugin::getDashboardWidget(int iIndex)
return new SKGReportBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument);
}
if (iIndex == 1) {
- // Get QML mode for dashboard
- KConfigSkeleton* skl = SKGMainPanel::getMainPanel()->getPluginByName(QStringLiteral("Dashboard plugin"))->getPreferenceSkeleton();
- KConfigSkeletonItem* sklItem = skl->findItem(QStringLiteral("qmlmode"));
- bool qml = sklItem->property().toBool();
-
return new SKGHtmlBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument,
getDashboardWidgetTitle(iIndex) % " - %1",
- QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/personal_finance_score.") % (qml ? QStringLiteral("qml") : QStringLiteral("html"))),
+ QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/personal_finance_score.qml")),
QStringList() << QStringLiteral("v_suboperation_consolidated"), SKGSimplePeriodEdit::PREVIOUS_MONTHS);
}
SKGObjectBase::SKGListSKGObjectBase objs;
diff --git a/plugins/skrooge/skrooge_scheduled/skgscheduledboardwidget.cpp b/plugins/skrooge/skrooge_scheduled/skgscheduledboardwidget.cpp
index 54e1d9b3d..ebea59318 100644
--- a/plugins/skrooge/skrooge_scheduled/skgscheduledboardwidget.cpp
+++ b/plugins/skrooge/skrooge_scheduled/skgscheduledboardwidget.cpp
@@ -27,8 +27,7 @@
SKGScheduledBoardWidget::SKGScheduledBoardWidget(QWidget* iParent, SKGDocument* iDocument)
: SKGHtmlBoardWidget(iParent, iDocument, i18nc("Noun, the title of a section", "Scheduled operations"),
- QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/scheduled_operations.") %
- (SKGMainPanel::getMainPanel()->getPluginByName(QStringLiteral("Dashboard plugin"))->getPreferenceSkeleton()->findItem(QStringLiteral("qmlmode"))->property().toBool() ? QStringLiteral("qml") : QStringLiteral("html"))),
+ QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/scheduled_operations.qml")),
QStringList() << QStringLiteral("v_recurrentoperation_display"))
{
SKGTRACEINFUNC(10)
diff --git a/plugins/skrooge/skrooge_search/CMakeLists.txt b/plugins/skrooge/skrooge_search/CMakeLists.txt
index e3d4c74f5..de85893f9 100644
--- a/plugins/skrooge/skrooge_search/CMakeLists.txt
+++ b/plugins/skrooge/skrooge_search/CMakeLists.txt
@@ -11,8 +11,7 @@ LINK_DIRECTORIES (${LIBRARY_OUTPUT_PATH})
SET(skrooge_search_SRCS
skgsearchplugin.cpp
- skgsearchpluginwidget.cpp
- skgalarmboardwidget.cpp)
+ skgsearchpluginwidget.cpp)
ki18n_wrap_ui(skrooge_search_SRCS skgsearchpluginwidget_base.ui skgsearchpluginwidget_pref.ui)
kconfig_add_kcfg_files(skrooge_search_SRCS skgsearch_settings.kcfgc )
diff --git a/plugins/skrooge/skrooge_search/skgalarmboardwidget.cpp b/plugins/skrooge/skrooge_search/skgalarmboardwidget.cpp
deleted file mode 100644
index 59615191e..000000000
--- a/plugins/skrooge/skrooge_search/skgalarmboardwidget.cpp
+++ /dev/null
@@ -1,186 +0,0 @@
-/***************************************************************************
- * SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane at mankowski.fr
- * SPDX-FileCopyrightText: 2022 G. DE BURE support at mankowski.fr
- * SPDX-License-Identifier: GPL-3.0-or-later
- ***************************************************************************/
-/** @file
- * This file is Skrooge plugin for bank management.
- *
- * @author Stephane MANKOWSKI / Guillaume DE BURE
- */
-#include "skgalarmboardwidget.h"
-
-#include <qaction.h>
-
-#include <qdom.h>
-
-#include "skgaccountobject.h"
-#include "skgdocumentbank.h"
-#include "skgmainpanel.h"
-#include "skgprogressbar.h"
-#include "skgruleobject.h"
-#include "skgservices.h"
-#include "skgtraces.h"
-#include "skgunitobject.h"
-
-SKGAlarmBoardWidget::SKGAlarmBoardWidget(QWidget* iParent, SKGDocument* iDocument)
- : SKGBoardWidget(iParent, iDocument, i18nc("Dashboard widget title", "Alarms"))
-{
- SKGTRACEINFUNC(10)
-
- // Create widget
- m_frame = new QFrame();
- m_layout = new QVBoxLayout(m_frame);
- m_layout->setSpacing(2);
- m_layout->setContentsMargins(0, 0, 0, 0);
- setMainWidget(m_frame);
-
- // Create menu
- setContextMenuPolicy(Qt::ActionsContextMenu);
-
- auto open = new QAction(SKGServices::fromTheme(QStringLiteral("quickopen")), i18nc("Verb, open a page", "Open..."), this);
- open->setData(QStringLiteral("skg://skrooge_search_plugin"));
- connect(open, &QAction::triggered, SKGMainPanel::getMainPanel(), [ = ]() {
- SKGMainPanel::getMainPanel()->SKGMainPanel::openPage();
- });
- addAction(open);
-
- m_menuFavorite = new QAction(SKGServices::fromTheme(QStringLiteral("bookmarks")), i18nc("Noun, an option in contextual menu", "Highlighted only"), this);
- m_menuFavorite->setCheckable(true);
- m_menuFavorite->setChecked(false);
- connect(m_menuFavorite, &QAction::triggered, this, [ = ]() {
- this->dataModified();
- });
- addAction(m_menuFavorite);
-
- // Refresh
- connect(getDocument(), &SKGDocument::tableModified, this, &SKGAlarmBoardWidget::dataModified, Qt::QueuedConnection);
-}
-
-SKGAlarmBoardWidget::~SKGAlarmBoardWidget()
-{
- SKGTRACEINFUNC(10)
-
- m_menuFavorite = nullptr;
-}
-
-QString SKGAlarmBoardWidget::getState()
-{
- QDomDocument doc(QStringLiteral("SKGML"));
- doc.setContent(SKGBoardWidget::getState());
- QDomElement root = doc.documentElement();
-
- root.setAttribute(QStringLiteral("menuFavorite"), (m_menuFavorite != nullptr) && m_menuFavorite->isChecked() ? QStringLiteral("Y") : QStringLiteral("N"));
- return doc.toString();
-}
-
-void SKGAlarmBoardWidget::setState(const QString& iState)
-{
- SKGBoardWidget::setState(iState);
-
- QDomDocument doc(QStringLiteral("SKGML"));
- doc.setContent(iState);
- QDomElement root = doc.documentElement();
-
- if (m_menuFavorite != nullptr) {
- m_menuFavorite->setChecked(root.attribute(QStringLiteral("menuFavorite")) == QStringLiteral("Y"));
- }
-
- dataModified(QLatin1String(""), 0);
-}
-
-void SKGAlarmBoardWidget::dataModified(const QString& iTableName, int iIdTransaction)
-{
- SKGTRACEINFUNC(10)
- Q_UNUSED(iIdTransaction)
-
- if (iTableName == QStringLiteral("operation") || iTableName == QStringLiteral("rule") || iTableName.isEmpty()) {
- // Remove all item of the layout
- while (m_layout->count() != 0) {
- QLayoutItem* child = m_layout->takeAt(0);
- if (child != nullptr) {
- QWidget* w = child->widget();
- delete w;
- delete child;
- }
- }
-
- // Fill layout
- auto* doc = qobject_cast<SKGDocumentBank*>(getDocument());
- if (doc != nullptr) {
- SKGServices::SKGUnitInfo primary = doc->getPrimaryUnit();
- SKGServices::SKGUnitInfo secondary = doc->getSecondaryUnit();
-
- // Build where clause
- QString wc = QStringLiteral("t_action_type='A'");
- if ((m_menuFavorite != nullptr) && m_menuFavorite->isChecked()) {
- wc = "t_bookmarked='Y' AND (" % wc % ')';
- }
-
- SKGObjectBase::SKGListSKGObjectBase rules;
- SKGError err = doc->getObjects(QStringLiteral("v_rule"), wc % " ORDER BY i_ORDER", rules);
- int nb = rules.count();
- if (nb != 0) {
- for (int i = 0; !err && i < nb; ++i) {
- SKGRuleObject rule(rules.at(i));
- SKGRuleObject::SKGAlarmInfo alarm = rule.getAlarmInfo();
-
- // Create progress bar
- auto progressBar = new SKGProgressBar(m_frame);
- progressBar->setObjectName(QStringLiteral("progressBar"));
- progressBar->setMaximum(qMax(alarm.Amount, alarm.Limit));
- progressBar->setValue(alarm.Amount);
-
- QSizePolicy newSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
- newSizePolicy.setHorizontalStretch(0);
- newSizePolicy.setVerticalStretch(0);
- newSizePolicy.setHeightForWidth(progressBar->sizePolicy().hasHeightForWidth());
- progressBar->setSizePolicy(newSizePolicy);
-
- // Set tooltip
- QString msg = alarm.Message;
- // Build the message
- if (alarm.Message.contains(QLatin1String("%3"))) {
- msg = alarm.Message.arg(doc->formatMoney(alarm.Amount, primary, false), doc->formatMoney(alarm.Limit, primary, false), doc->formatMoney(alarm.Amount - alarm.Limit, primary, false));
- } else if (alarm.Message.contains(QLatin1String("%2"))) {
- msg = alarm.Message.arg(doc->formatMoney(alarm.Amount, primary, false), doc->formatMoney(alarm.Limit, primary, false));
- } else if (alarm.Message.contains(QLatin1String("%1"))) {
- msg = alarm.Message.arg(doc->formatMoney(alarm.Amount, primary, false));
- }
-
- QString txt = msg % "<br>";
- txt += doc->formatMoney(alarm.Amount, primary, false) % " / " % doc->formatMoney(alarm.Limit, primary, false);
- if (!secondary.Symbol.isEmpty() && (secondary.Value != 0.0)) {
- txt += "<br>" % doc->formatMoney(alarm.Amount, secondary, false) % " / " % doc->formatMoney(alarm.Limit, secondary, false);
- }
- progressBar->setToolTip(txt);
-
- // Change color
- progressBar->setLimits(qMax(alarm.Amount, alarm.Limit), 0.9 * alarm.Limit, 0.7 * alarm.Limit);
-
- // Add progress bar
- m_layout->addWidget(progressBar);
- }
- } else {
- auto lab = new QLabel(m_frame);
- lab->setTextInteractionFlags(Qt::LinksAccessibleByMouse | Qt::TextSelectableByMouse);
- lab->setText(i18nc("Message", R"(No alarm defined<br>on the <a href="%1">"Search and process"</a> page.)", "skg://Skrooge_search_plugin"));
- connect(lab, &QLabel::linkActivated, this, [ = ](const QString & val) {
- SKGMainPanel::getMainPanel()->openPage(val);
- });
-
- // Add progress bar
- m_layout->addWidget(lab);
- }
-
- // No widget if no account
- bool exist = false;
- getDocument()->existObjects(QStringLiteral("account"), QLatin1String(""), exist);
- if (parentWidget() != nullptr) {
- setVisible(exist);
- }
- }
- }
-}
-
-
diff --git a/plugins/skrooge/skrooge_search/skgalarmboardwidget.h b/plugins/skrooge/skrooge_search/skgalarmboardwidget.h
deleted file mode 100644
index 432a519e6..000000000
--- a/plugins/skrooge/skrooge_search/skgalarmboardwidget.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/***************************************************************************
- * SPDX-FileCopyrightText: 2022 S. MANKOWSKI stephane at mankowski.fr
- * SPDX-FileCopyrightText: 2022 G. DE BURE support at mankowski.fr
- * SPDX-License-Identifier: GPL-3.0-or-later
- ***************************************************************************/
-#ifndef SKGALARMBOARDWIDGET_H
-#define SKGALARMBOARDWIDGET_H
-/** @file
-* This file is Skrooge dashbord plugin for alarms.
-*
-* @author Stephane MANKOWSKI / Guillaume DE BURE
-*/
-#include "skgboardwidget.h"
-
-class QVBoxLayout;
-class QFrame;
-class QAction;
-
-/**
- * This file is Skrooge dashbord plugin for alarms
- */
-class SKGAlarmBoardWidget : public SKGBoardWidget
-{
- Q_OBJECT
-
-public:
- /**
- * Default Constructor
- * @param iParent the parent widget
- * @param iDocument the document
- */
- explicit SKGAlarmBoardWidget(QWidget* iParent, SKGDocument* iDocument);
-
- /**
- * Default Destructor
- */
- ~SKGAlarmBoardWidget() override;
-
- /**
- * Get the current state
- * MUST BE OVERWRITTEN
- * @return a string containing all information needed to set the same state.
- * Could be an XML stream
- */
- QString getState() override;
-
- /**
- * Set the current state
- * MUST BE OVERWRITTEN
- * @param iState must be interpreted to set the state of the widget
- */
- void setState(const QString& iState) override;
-
-private Q_SLOTS:
- void dataModified(const QString& iTableName = QString(), int iIdTransaction = 0);
-
-private:
- Q_DISABLE_COPY(SKGAlarmBoardWidget)
- QAction* m_menuFavorite;
- QFrame* m_frame;
- QVBoxLayout* m_layout;
-};
-
-#endif // SKGALARMBOARDWIDGET_H
diff --git a/plugins/skrooge/skrooge_search/skgsearchplugin.cpp b/plugins/skrooge/skrooge_search/skgsearchplugin.cpp
index 3e0c820a3..e8cb94620 100644
--- a/plugins/skrooge/skrooge_search/skgsearchplugin.cpp
+++ b/plugins/skrooge/skrooge_search/skgsearchplugin.cpp
@@ -17,7 +17,6 @@
#include <qdom.h>
-#include "skgalarmboardwidget.h"
#include "skgcategoryobject.h"
#include "skgdocumentbank.h"
#include "skgerror.h"
@@ -63,17 +62,10 @@ QString SKGSearchPlugin::getDashboardWidgetTitle(int iIndex)
SKGBoardWidget* SKGSearchPlugin::getDashboardWidget(int iIndex)
{
Q_UNUSED(iIndex)
- // Get QML mode for dashboard
- KConfigSkeleton* skl = SKGMainPanel::getMainPanel()->getPluginByName(QStringLiteral("Dashboard plugin"))->getPreferenceSkeleton();
- KConfigSkeletonItem* sklItem = skl->findItem(QStringLiteral("qmlmode"));
- bool qml = sklItem->property().toBool();
- if (qml) {
- return new SKGHtmlBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument,
- getDashboardWidgetTitle(iIndex),
- QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/alarm.qml")),
- QStringList() << QStringLiteral("operation") << QStringLiteral("rule"));
- }
- return new SKGAlarmBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument);
+ return new SKGHtmlBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument,
+ getDashboardWidgetTitle(iIndex),
+ QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/alarm.qml")),
+ QStringList() << QStringLiteral("operation") << QStringLiteral("rule"));
}
bool SKGSearchPlugin::setupActions(SKGDocument* iDocument)
diff --git a/plugins/skrooge/skrooge_unit/skgunitplugin.cpp b/plugins/skrooge/skrooge_unit/skgunitplugin.cpp
index cee935b90..2f78bd19d 100644
--- a/plugins/skrooge/skrooge_unit/skgunitplugin.cpp
+++ b/plugins/skrooge/skrooge_unit/skgunitplugin.cpp
@@ -105,7 +105,7 @@ SKGBoardWidget* SKGUnitPlugin::getDashboardWidget(int iIndex)
return new SKGHtmlBoardWidget(SKGMainPanel::getMainPanel(), m_currentBankDocument,
getDashboardWidgetTitle(iIndex),
- QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/portfolio.") % (qml ? QStringLiteral("qml") : QStringLiteral("html"))),
+ QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("skrooge/html/default/portfolio.qml")),
QStringList() << QStringLiteral("v_operation_display"),
SKGSimplePeriodEdit::NONE,
listForFilter);
More information about the kde-doc-english
mailing list