diff --git a/desktop/kde6/applications/akonadi-calendar-tools-kf6/actions.py b/desktop/kde6/applications/akonadi-calendar-tools-kf6/actions.py
new file mode 100755
index 0000000000..dc7d4ed6e8
--- /dev/null
+++ b/desktop/kde6/applications/akonadi-calendar-tools-kf6/actions.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/copyleft/gpl.txt
+
+from pisi.actionsapi import kde6
+from pisi.actionsapi import pisitools
+
+
+def setup():
+ kde6.configure()
+
+def build():
+ kde6.make()
+
+def install():
+ kde6.install()
+
+
+ pisitools.dodoc("LICENSES/*")
+
diff --git a/desktop/kde6/applications/akonadi-calendar-tools-kf6/files/qt5.patch b/desktop/kde6/applications/akonadi-calendar-tools-kf6/files/qt5.patch
new file mode 100755
index 0000000000..ffe62b987d
--- /dev/null
+++ b/desktop/kde6/applications/akonadi-calendar-tools-kf6/files/qt5.patch
@@ -0,0 +1,12 @@
+diff -Nuar a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt 2017-12-08 04:02:08.000000000 +0300
++++ b/CMakeLists.txt 2017-12-17 11:30:46.413624475 +0300
+@@ -46,7 +46,7 @@
+ set(KDEPIM_LIB_VERSION "${KDEPIM_VERSION_NUMBER}")
+ set(KDEPIM_LIB_SOVERSION "5")
+
+-set(QT_REQUIRED_VERSION "5.8.0")
++set(QT_REQUIRED_VERSION "5.7.1")
+ find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED Widgets)
+
+
diff --git a/desktop/kde6/applications/akonadi-calendar-tools-kf6/pspec.xml b/desktop/kde6/applications/akonadi-calendar-tools-kf6/pspec.xml
new file mode 100755
index 0000000000..88425f1223
--- /dev/null
+++ b/desktop/kde6/applications/akonadi-calendar-tools-kf6/pspec.xml
@@ -0,0 +1,80 @@
+
+
+
+
+
+ akonadi-calendar-tools-kf6
+ https://community.kde.org/KDE_PIM
+
+ Stefan Gronewold
+ groni@pisilinux.org
+
+ GPLv2
+ CLI tools to manage akonadi calendars
+ CLI tools to manage akonadi calendars
+ http://download.kde.org/stable/release-service/24.02.0/src/akonadi-calendar-tools-24.02.0.tar.xz
+
+ boost-devel
+ akonadi-kf6-devel
+ akonadi-calendar-kf6-devel
+ extra-cmake-modules-kf6
+
+ kdoctools-kf6-devel
+ qt6-base-devel
+ kcompletion-kf6-devel
+ kxmlgui-kf6-devel
+ kitemmodels-kf6-devel
+ kcontacts-kf6-devel
+ kcalendarcore-kf6-devel
+
+
+
+ kunitconversion-kf6-devel
+ akonadi-contacts-kf6-devel
+ kcalutils-kf6-devel
+ libkdepim-kf6-devel
+ calendarsupport-kf6-devel
+ kmime-kf6-devel
+ kidentitymanagement-kf6-devel
+ akonadi-notes-kf6-devel
+
+
+
+
+
+
+
+ akonadi-calendar-tools-kf6
+ CLI tools to manage akonadi calendars
+
+ ki18n-kf6
+ libgcc
+ akonadi-kf6
+ kconfig-kf6
+ kcalendarcore-kf6
+ qt6-base
+ kcalutils-kf6
+ kcoreaddons-kf6
+ calendarsupport-kf6
+ akonadi-calendar-kf6
+
+ akonadi-notes-kf6
+
+
+ /etc/xdg
+ /usr/bin
+ /usr/share
+ /usr/share/doc
+
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
diff --git a/desktop/kde6/applications/akonadiconsole-kf6/actions.py b/desktop/kde6/applications/akonadiconsole-kf6/actions.py
new file mode 100755
index 0000000000..dc7d4ed6e8
--- /dev/null
+++ b/desktop/kde6/applications/akonadiconsole-kf6/actions.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/copyleft/gpl.txt
+
+from pisi.actionsapi import kde6
+from pisi.actionsapi import pisitools
+
+
+def setup():
+ kde6.configure()
+
+def build():
+ kde6.make()
+
+def install():
+ kde6.install()
+
+
+ pisitools.dodoc("LICENSES/*")
+
diff --git a/desktop/kde6/applications/akonadiconsole-kf6/pspec.xml b/desktop/kde6/applications/akonadiconsole-kf6/pspec.xml
new file mode 100755
index 0000000000..edc3a92d5a
--- /dev/null
+++ b/desktop/kde6/applications/akonadiconsole-kf6/pspec.xml
@@ -0,0 +1,109 @@
+
+
+
+ akonadiconsole-kf6
+ https://community.kde.org/KDE_PIM
+
+ Stefan Gronewold
+ groni@pisilinux.org
+
+ GPLv2
+ Akonadi management and debugging console
+ Akonadi management and debugging console
+ http://download.kde.org/stable/release-service/24.02.0/src/akonadiconsole-24.02.0.tar.xz
+
+ akonadi-contacts-kf6-devel
+ akonadi-kf6-devel
+ akonadi-calendar-kf6-devel
+ pimcommon-kf6-devel
+ akonadi-mime-kf6-devel
+ calendarsupport-kf6-devel
+ extra-cmake-modules-kf6
+ kimap-kf6-devel
+ kcalendarcore-kf6-devel
+ kcompletion-kf6-devel
+ kconfig-kf6-devel
+ kconfigwidgets-kf6-devel
+ kcontacts-kf6-devel
+ kcrash-kf6-devel
+ kdbusaddons-kf6-devel
+ kdoctools-kf6-devel
+ ki18n-kf6-devel
+ kitemmodels-kf6-devel
+ kmime-kf6-devel
+ kpimtextedit-kf6-devel
+ ktextwidgets-kf6-devel
+ kwidgetsaddons-kf6-devel
+ kxmlgui-kf6-devel
+ kio-kf6-devel
+ kitemviews-kf6-devel
+ akonadi-search-kf6-devel
+ libkdepim-kf6-devel
+ libkleo-kf6-devel
+ messagelib-kf6-devel
+ qt6-base-devel
+ qt6-sql-mysql
+ qt6-sql-postgresql
+ qt6-sql-sqlite
+ qt6-sql-odbc
+
+
+ kunitconversion-kf6-devel
+ kidentitymanagement-kf6-devel
+ cyrus-sasl-devel
+ gpgme-devel
+ gpgme-qt6-devel
+ ffmpeg-devel
+ libXScrnSaver-devel
+ qt6-webengine-devel
+
+
+
+
+ akonadiconsole-kf6
+ Akonadi management and debugging console
+
+ akonadi-kf6
+ akonadi-contacts-kf6
+ akonadi-mime-kf6
+ calendarsupport-kf6
+ kcalendarcore-kf6
+ qt6-base
+ ki18n-kf6
+ kmime-kf6
+ kcrash-kf6
+ libgcc
+ kconfig-kf6
+ kxmlgui-kf6
+ kcontacts-kf6
+ libkdepim-kf6
+ kitemviews-kf6
+ messagelib-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kdbusaddons-kf6
+ kitemmodels-kf6
+ kpimtextedit-kf6
+ ktextwidgets-kf6
+ kconfigwidgets-kf6
+ kwidgetsaddons-kf6
+
+
+ /etc/xdg
+ /usr/bin
+ /usr/share
+ /usr/share/doc
+ /usr/lib
+
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
diff --git a/desktop/kde6/applications/akregator-kf6/actions.py b/desktop/kde6/applications/akregator-kf6/actions.py
new file mode 100755
index 0000000000..c1f8c6bea3
--- /dev/null
+++ b/desktop/kde6/applications/akregator-kf6/actions.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/copyleft/gpl.txt
+
+from pisi.actionsapi import kde6
+from pisi.actionsapi import pisitools
+
+
+def setup():
+ kde6.configure()
+
+def build():
+ kde6.make()
+
+def install():
+ kde6.install()
+
+
+ pisitools.dodoc("LICENSES/*", "README*")
+
diff --git a/desktop/kde6/applications/akregator-kf6/pspec.xml b/desktop/kde6/applications/akregator-kf6/pspec.xml
new file mode 100755
index 0000000000..13f8703ec8
--- /dev/null
+++ b/desktop/kde6/applications/akregator-kf6/pspec.xml
@@ -0,0 +1,108 @@
+
+
+
+
+
+ akregator-kf6
+ https://community.kde.org/KDE_PIM
+
+ Stefan Gronewold
+ groni@pisilinux.org
+
+ GPLv2
+ A KDE blogging client
+ akregator-kf6 helps you to keep informed about new stories on websites like KDE Dot News and Planet KDE blogs. The technology used is RSS and many sites support it.
+ http://download.kde.org/stable/release-service/24.02.0/src/akregator-24.02.0.tar.xz
+
+ boost-devel
+ extra-cmake-modules-kf6
+ kblog-kf6-devel
+
+ kdoctools-kf6-devel
+ kio-kf6-devel
+ ktexteditor-kf6-devel
+ python-devel
+ qt6-base-devel
+ qt6-webengine-devel
+ grantlee-qt5-devel
+ kcmutils-kf6-devel
+ knotifyconfig-kf6-devel
+ akonadi-mime-kf6-devel
+ akonadi-kf6-devel
+ kitemmodels-kf6-devel
+ grantleetheme-kf6-devel
+ kcontacts-kf6-devel
+ kontactinterface-kf6-devel
+ libkdepim-kf6-devel
+ akonadi-contacts-kf6-devel
+ libkleo-kf6-devel
+ gpgme-devel
+ gpgme-qt6-devel
+ messagelib-kf6-devel
+ pimcommon-kf6-devel
+ kimap-kf6-devel
+ kmime-kf6-devel
+ cyrus-sasl-devel
+ kpimtextedit-kf6-devel
+ ksyndication-kf6-devel
+ ffmpeg-devel
+ knotifyconfig-kf6-devel
+ knotifications-kf6-devel
+ kuserfeedback-kf6-devel
+ libXScrnSaver-devel
+
+
+
+
+ akregator-kf6
+ A Feed Reader by KDE
+
+ kio-kf6
+ ki18n-kf6
+ kcrash-kf6
+ kparts-kf6
+ libgcc
+ kcodecs-kf6
+ kconfig-kf6
+ kxmlgui-kf6
+ kcmutils-kf6
+ kservice-kf6
+ qt6-base
+ libkdepim-kf6
+ pimcommon-kf6
+ messagelib-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kiconthemes-kf6
+ kjobwidgets-kf6
+ kpimtextedit-kf6
+ ksyndication-kf6
+ ktextwidgets-kf6
+ grantleetheme-kf6
+ knotifyconfig-kf6
+ qt6-webengine
+ kconfigwidgets-kf6
+ knotifications-kf6
+ kwidgetsaddons-kf6
+ kontactinterface-kf6
+
+
+ /etc/xdg
+ /usr/bin
+ /usr/lib
+ /usr/lib/qt6
+ /usr/share
+ /usr/share/doc
+
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
diff --git a/desktop/kde6/applications/calendarsupport-kf6/actions.py b/desktop/kde6/applications/calendarsupport-kf6/actions.py
new file mode 100755
index 0000000000..82e40ee4b1
--- /dev/null
+++ b/desktop/kde6/applications/calendarsupport-kf6/actions.py
@@ -0,0 +1,19 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/copyleft/gpl.txt
+
+from pisi.actionsapi import kde6
+from pisi.actionsapi import pisitools
+
+def setup():
+ kde6.configure()
+
+def build():
+ kde6.make()
+
+def install():
+ kde6.install()
+
+ pisitools.dodoc("LICENSES/*")
diff --git a/desktop/kde6/applications/calendarsupport-kf6/files/qt5.patch b/desktop/kde6/applications/calendarsupport-kf6/files/qt5.patch
new file mode 100755
index 0000000000..f75383e56f
--- /dev/null
+++ b/desktop/kde6/applications/calendarsupport-kf6/files/qt5.patch
@@ -0,0 +1,12 @@
+diff -Nuar a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt 2017-12-08 04:03:49.000000000 +0300
++++ b/CMakeLists.txt 2017-12-17 00:25:23.527037197 +0300
+@@ -28,7 +28,7 @@
+ set(calendarsupport-kf6_LIB_VERSION ${PIM_VERSION})
+ set(AKONADI_MIMELIB_VERSION "5.7.0")
+ set(KDEPIM_LIB_VERSION "5.7.0")
+-set(QT_REQUIRED_VERSION "5.8.0")
++set(QT_REQUIRED_VERSION "5.7.1")
+ set(kmime-kf6_LIB_VERSION "5.7.0")
+ set(CALENDARUTILS_LIB_VERSION "5.7.0")
+ set(kcalendarcore-kf6_LIB_VERSION "5.7.0")
diff --git a/desktop/kde6/applications/calendarsupport-kf6/pspec.xml b/desktop/kde6/applications/calendarsupport-kf6/pspec.xml
new file mode 100755
index 0000000000..6588d0e03e
--- /dev/null
+++ b/desktop/kde6/applications/calendarsupport-kf6/pspec.xml
@@ -0,0 +1,110 @@
+
+
+
+ calendarsupport-kf6
+ https://community.kde.org/KDE_PIM
+
+ Alihan Öztürk
+ alihan@pisilinux.org
+
+ LGPLv2
+ app:console
+ Calendar support library
+ Calendar support library
+ mirrors://kde/stable/release-service/24.02.0/src/calendarsupport-24.02.0.tar.xz
+
+ extra-cmake-modules-kf6
+ qt6-base-devel
+ akonadi-kf6-devel
+ kmime-kf6-devel
+ ki18n-kf6-devel
+ kcodecs-kf6-devel
+ kcompletion-kf6-devel
+ kjobwidgets-kf6-devel
+ kcoreaddons-kf6-devel
+ kservice-kf6-devel
+ solid-kf6-devel
+ kxmlgui-kf6-devel
+ kitemmodels-kf6-devel
+
+ kdoctools-kf6-devel
+
+
+ kunitconversion-kf6-devel
+ boost-devel
+ kcalutils-kf6-devel
+ kcalendarcore-kf6-devel
+ kidentitymanagement-kf6-devel
+ kholidays-kf6-devel
+ akonadi-calendar-kf6-devel
+ kcontacts-kf6-devel
+ pimcommon-kf6-devel
+ kimap-kf6-devel
+ cyrus-sasl-devel
+ akonadi-mime-kf6-devel
+ akonadi-contacts-kf6-devel
+ akonadi-notes-kf6-devel
+ kguiaddons-kf6-devel
+
+
+
+
+
+
+
+ calendarsupport-kf6
+ Calendar support library
+
+ kio-kf6
+ ki18n-kf6
+ kmime-kf6
+ libgcc
+ akonadi-kf6
+ kcodecs-kf6
+ kconfig-kf6
+ kcalendarcore-kf6
+ qt6-base
+ kcalutils-kf6
+ kholidays-kf6
+ pimcommon-kf6
+ kguiaddons-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kiconthemes-kf6
+ kjobwidgets-kf6
+ kwidgetsaddons-kf6
+ akonadi-calendar-kf6
+ kidentitymanagement-kf6
+
+
+ /etc
+ /usr/lib/qt6
+ /usr/lib
+ /usr/share
+ /usr/share/kservice-kf6types5
+ /usr/share/locale
+
+
+
+
+ calendarsupport-kf6-devel
+ Development files for calendarsupport-kf6
+
+ calendarsupport-kf6
+
+
+ /usr/include
+ /usr/lib/cmake
+
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
diff --git a/desktop/kde6/applications/eventviews-kf6/actions.py b/desktop/kde6/applications/eventviews-kf6/actions.py
new file mode 100755
index 0000000000..82e40ee4b1
--- /dev/null
+++ b/desktop/kde6/applications/eventviews-kf6/actions.py
@@ -0,0 +1,19 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/copyleft/gpl.txt
+
+from pisi.actionsapi import kde6
+from pisi.actionsapi import pisitools
+
+def setup():
+ kde6.configure()
+
+def build():
+ kde6.make()
+
+def install():
+ kde6.install()
+
+ pisitools.dodoc("LICENSES/*")
diff --git a/desktop/kde6/applications/eventviews-kf6/files/qt5.patch b/desktop/kde6/applications/eventviews-kf6/files/qt5.patch
new file mode 100755
index 0000000000..4109eacdae
--- /dev/null
+++ b/desktop/kde6/applications/eventviews-kf6/files/qt5.patch
@@ -0,0 +1,12 @@
+diff -Nuar a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt 2017-12-08 04:03:52.000000000 +0300
++++ b/CMakeLists.txt 2017-12-17 22:40:11.652631461 +0300
+@@ -32,7 +32,7 @@
+ set(EVENTVIEW_LIB_VERSION ${PIM_VERSION})
+ set(CALENDARUTILS_LIB_VERSION "5.7.0")
+ set(AKONADI_LIB_VERSION "5.7.0")
+-set(QT_REQUIRED_VERSION "5.8.0")
++set(QT_REQUIRED_VERSION "5.7.1")
+ set(kcalendarcore-kf6_LIB_VERSION "5.7.0")
+ set(AKONADICALENDAR_LIB_VERSION "5.7.0")
+ set(kmime-kf6_LIB_VERSION "5.7.0")
diff --git a/desktop/kde6/applications/eventviews-kf6/pspec.xml b/desktop/kde6/applications/eventviews-kf6/pspec.xml
new file mode 100755
index 0000000000..fb09bddcb1
--- /dev/null
+++ b/desktop/kde6/applications/eventviews-kf6/pspec.xml
@@ -0,0 +1,113 @@
+
+
+
+ eventviews-kf6
+ https://community.kde.org/KDE_PIM
+
+ Alihan Öztürk
+ alihan@pisilinux.org
+
+ LGPLv2
+ app:console
+ Library for creating events.
+ Library for creating events.
+ mirrors://kde/stable/release-service/24.02.0/src/eventviews-24.02.0.tar.xz
+
+ extra-cmake-modules-kf6
+ qt6-base-devel
+ akonadi-kf6-devel
+
+ kcompletion-kf6-devel
+ kjobwidgets-kf6-devel
+ kcoreaddons-kf6-devel
+ kservice-kf6-devel
+ solid-kf6-devel
+ kxmlgui-kf6-devel
+ kitemmodels-kf6-devel
+
+ kdoctools-kf6-devel
+
+
+ kunitconversion-kf6-devel
+ boost-devel
+ libkdepim-kf6-devel
+ kcontacts-kf6-devel
+ kcalendarcore-kf6-devel
+
+ kcalutils-kf6-devel
+ calendarsupport-kf6-devel
+ kmime-kf6-devel
+ kidentitymanagement-kf6-devel
+ akonadi-calendar-kf6-devel
+ akonadi-contacts-kf6-devel
+ kdiagram-kf6-devel
+ kholidays-kf6-devel
+ kguiaddons-kf6-devel
+ kiconthemes-kf6-devel
+
+
+
+
+
+
+
+ eventviews-kf6
+ Library for creating events.
+
+ ki18n-kf6
+ libgcc
+ akonadi-kf6
+ kcodecs-kf6
+ kconfig-kf6
+ kcalendarcore-kf6
+ kdiagram-kf6
+
+ kservice-kf6
+ qt6-base
+ kcalutils-kf6
+ kcontacts-kf6
+ libkdepim-kf6
+ kguiaddons-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kiconthemes-kf6
+ kitemmodels-kf6
+ kconfigwidgets-kf6
+ kwidgetsaddons-kf6
+ calendarsupport-kf6
+ akonadi-calendar-kf6
+
+
+
+ /etc
+ /usr/lib
+ /usr/lib/qt6
+ /usr/share
+ /usr/share/doc
+ /usr/share/kservice-kf6types5
+ /usr/share/locale
+
+
+
+
+ eventviews-kf6-devel
+ Development files for eventviews-kf6.
+
+ eventviews-kf6
+
+
+ /usr/include
+ /usr/lib/cmake
+
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
diff --git a/desktop/kde6/applications/grantlee-editor-kf6/actions.py b/desktop/kde6/applications/grantlee-editor-kf6/actions.py
new file mode 100755
index 0000000000..dc7d4ed6e8
--- /dev/null
+++ b/desktop/kde6/applications/grantlee-editor-kf6/actions.py
@@ -0,0 +1,21 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/copyleft/gpl.txt
+
+from pisi.actionsapi import kde6
+from pisi.actionsapi import pisitools
+
+
+def setup():
+ kde6.configure()
+
+def build():
+ kde6.make()
+
+def install():
+ kde6.install()
+
+
+ pisitools.dodoc("LICENSES/*")
+
diff --git a/desktop/kde6/applications/grantlee-editor-kf6/pspec.xml b/desktop/kde6/applications/grantlee-editor-kf6/pspec.xml
new file mode 100755
index 0000000000..d7f31186c0
--- /dev/null
+++ b/desktop/kde6/applications/grantlee-editor-kf6/pspec.xml
@@ -0,0 +1,97 @@
+
+
+
+
+
+ grantlee-editor-kf6
+ https://community.kde.org/KDE_PIM
+
+ Stefan Gronewold
+ groni@pisilinux.org
+
+ GPLv2
+ Editor for Grantlee themes
+ Editor for Grantlee themes
+ mirrors://kde/stable/release-service/24.02.0/src/grantlee-editor-24.02.0.tar.xz
+
+ qt6-webengine-devel
+ kcrash-kf6-devel
+ extra-cmake-modules-kf6
+ kdbusaddons-kf6-devel
+ kdoctools-kf6-devel
+ kxmlgui-kf6-devel
+ qt6-base-devel
+ ktexteditor-kf6-devel
+ kwallet-kf6-devel
+ knewstuff-kf6-devel
+ karchive-kf6-devel
+ pimcommon-kf6-devel
+ messagelib-kf6-devel
+ grantleetheme-kf6-devel
+ akonadi-mime-kf6-devel
+ kpimtextedit-kf6-devel
+ libkdepim-kf6-devel
+ syntax-highlighting-kf6-devel
+ libkleo-kf6-devel
+ kparts-kf6-devel
+ gpgme-devel
+ gpgme-qt6-devel
+ cyrus-sasl-devel
+ akonadi-kf6-devel
+ kitemmodels-kf6-devel
+ kcontacts-kf6-devel
+ akonadi-contacts-kf6-devel
+ kimap-kf6-devel
+ kmime-kf6-devel
+ grantlee-qt5-devel
+ ffmpeg-devel
+ libXScrnSaver-devel
+
+
+
+
+ grantlee-editor-kf6
+ Editor for Grantlee themes
+
+ kio-kf6
+ ki18n-kf6
+ kmime-kf6
+ kcrash-kf6
+ libgcc
+ kconfig-kf6
+ kxmlgui-kf6
+ karchive-kf6
+ qt6-base
+ kcontacts-kf6
+ knewstuff-kf6
+ pimcommon-kf6
+ messagelib-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kdbusaddons-kf6
+ kpimtextedit-kf6
+ qt6-webengine
+ kconfigwidgets-kf6
+ kwidgetsaddons-kf6
+ akonadi-contacts-kf6
+ syntax-highlighting-kf6
+
+
+ /etc/xdg
+ /usr/bin
+ /usr/lib
+ /usr/share
+ /usr/share/doc
+
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
diff --git a/desktop/kde6/applications/incidenceeditor-kf6/actions.py b/desktop/kde6/applications/incidenceeditor-kf6/actions.py
new file mode 100755
index 0000000000..82e40ee4b1
--- /dev/null
+++ b/desktop/kde6/applications/incidenceeditor-kf6/actions.py
@@ -0,0 +1,19 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/copyleft/gpl.txt
+
+from pisi.actionsapi import kde6
+from pisi.actionsapi import pisitools
+
+def setup():
+ kde6.configure()
+
+def build():
+ kde6.make()
+
+def install():
+ kde6.install()
+
+ pisitools.dodoc("LICENSES/*")
diff --git a/desktop/kde6/applications/incidenceeditor-kf6/files/qt5.patch b/desktop/kde6/applications/incidenceeditor-kf6/files/qt5.patch
new file mode 100755
index 0000000000..4ff644d481
--- /dev/null
+++ b/desktop/kde6/applications/incidenceeditor-kf6/files/qt5.patch
@@ -0,0 +1,12 @@
+diff -Nuar a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt 2017-12-08 04:03:56.000000000 +0300
++++ b/CMakeLists.txt 2017-12-17 23:22:46.040447149 +0300
+@@ -30,7 +30,7 @@
+ set(incidenceeditor-kf6_LIB_VERSION ${PIM_VERSION})
+ set(AKONADI_MIMELIB_VERSION "5.7.0")
+ set(KDEPIM_LIB_VERSION "5.7.0")
+-set(QT_REQUIRED_VERSION "5.8.0")
++set(QT_REQUIRED_VERSION "5.7.1")
+ set(kmime-kf6_LIB_VERSION "5.7.0")
+ set(kmailtransport-kf6_LIB_VERSION "5.7.0")
+ set(kldap-kf6_LIB_VERSION "5.7.0")
diff --git a/desktop/kde6/applications/incidenceeditor-kf6/pspec.xml b/desktop/kde6/applications/incidenceeditor-kf6/pspec.xml
new file mode 100755
index 0000000000..e4ae8ecd38
--- /dev/null
+++ b/desktop/kde6/applications/incidenceeditor-kf6/pspec.xml
@@ -0,0 +1,128 @@
+
+
+
+
+
+ incidenceeditor-kf6
+ https://community.kde.org/KDE_PIM
+
+ Alihan Öztürk
+ alihan@pisilinux.org
+
+ LGPLv2
+ app:console
+ KDE PIM incidence editor.
+ KDE PIM incidence editor.
+ http://download.kde.org/stable/release-service/24.02.0/src/incidenceeditor-24.02.0.tar.xz
+
+ extra-cmake-modules-kf6
+ qt6-base-devel
+ akonadi-kf6-devel
+ kcompletion-kf6-devel
+ kjobwidgets-kf6-devel
+ kcoreaddons-kf6-devel
+ kservice-kf6-devel
+ solid-kf6-devel
+ kxmlgui-kf6-devel
+ kitemmodels-kf6-devel
+ kdoctools-kf6-devel
+
+
+ kunitconversion-kf6-devel
+ boost-devel
+ kmime-kf6-devel
+ kldap-kf6-devel
+ cyrus-sasl-devel
+ calendarsupport-kf6-devel
+ kidentitymanagement-kf6-devel
+ akonadi-calendar-kf6-devel
+ kcalendarcore-kf6-devel
+ kcontacts-kf6-devel
+ eventviews-kf6-devel
+ kcalutils-kf6-devel
+ kdiagram-kf6-devel
+ kmailtransport-kf6-devel
+ libkdepim-kf6-devel
+ akonadi-mime-kf6-devel
+ akonadi-contacts-kf6-devel
+ pimcommon-kf6-devel
+ kimap-kf6-devel
+ kiconthemes-kf6-devel
+
+
+
+
+
+
+
+ incidenceeditor-kf6
+ KDE PIM incidence editor.
+
+ kio-kf6
+ ki18n-kf6
+ kldap-kf6
+ kmime-kf6
+ kimap-kf6
+ libgcc
+ akonadi-kf6
+ kcodecs-kf6
+ kconfig-kf6
+ kxmlgui-kf6
+ kdiagram-kf6
+ kservice-kf6
+ kcalutils-kf6
+ kcontacts-kf6
+ libkdepim-kf6
+ pimcommon-kf6
+ eventviews-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kiconthemes-kf6
+ kitemmodels-kf6
+ kjobwidgets-kf6
+ kpimtextedit-kf6
+ ktextwidgets-kf6
+ akonadi-mime-kf6
+ kcalendarcore-kf6
+ kconfigwidgets-kf6
+ kmailtransport-kf6
+ kwidgetsaddons-kf6
+ calendarsupport-kf6
+ akonadi-contacts-kf6
+ akonadi-calendar-kf6
+ kidentitymanagement-kf6
+ qt6-base
+
+
+ /etc/xdg
+ /usr/lib
+ /usr/lib/qt6
+ /usr/share
+ /usr/share/doc
+ /usr/share/locale
+
+
+
+
+ incidenceeditor-kf6-devel
+ Development files for incidenceeditor-kf6.
+
+ incidenceeditor-kf6
+
+
+ /usr/include
+ /usr/lib/pkgconfig
+ /usr/lib/cmake
+
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
diff --git a/desktop/kde6/applications/kdepim-runtime-kf6/actions.py b/desktop/kde6/applications/kdepim-runtime-kf6/actions.py
new file mode 100755
index 0000000000..23b2227864
--- /dev/null
+++ b/desktop/kde6/applications/kdepim-runtime-kf6/actions.py
@@ -0,0 +1,19 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import kde6
+from pisi.actionsapi import pisitools
+
+def setup():
+ kde6.configure()
+
+def build():
+ kde6.make()
+
+def install():
+ kde6.install()
+
+ pisitools.dodoc("LICENSES/*")
diff --git a/desktop/kde6/applications/kdepim-runtime-kf6/files/2fd3604a.patch b/desktop/kde6/applications/kdepim-runtime-kf6/files/2fd3604a.patch
new file mode 100644
index 0000000000..4bc3bfba37
--- /dev/null
+++ b/desktop/kde6/applications/kdepim-runtime-kf6/files/2fd3604a.patch
@@ -0,0 +1,60 @@
+From 2fd3604ad6a9594b9dd8b0f1529f4f4589fe831f Mon Sep 17 00:00:00 2001
+From: Carl Schwan
+Date: Tue, 19 Sep 2023 17:04:36 +0200
+Subject: [PATCH] Revert "Revert "Fix race condition when building""
+
+This reverts commit d3f20b3dab530065f9cff9d73e4ca1076af55a29.
+
+(cherry picked from commit f9f262b9289f7b1c34e55205fa0c5cde915bc652)
+---
+ resources/google-groupware/CMakeLists.txt | 7 ++++---
+ resources/google-groupware/googleresource.cpp | 1 -
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/resources/google-groupware/CMakeLists.txt b/resources/google-groupware/CMakeLists.txt
+index 2f2b46aded..0ac6f2db8e 100644
+--- a/resources/google-groupware/CMakeLists.txt
++++ b/resources/google-groupware/CMakeLists.txt
+@@ -67,9 +67,6 @@ set(googleresource_SRCS
+ ${googleresource_common_SRCS}
+ )
+
+-ki18n-kf6_wrap_ui(googleresource_SRCS googlesettingswidget.ui)
+-
+-
+ add_executable(akonadi_google_resource ${googleresource_SRCS})
+ if (COMPILE_WITH_UNITY_CMAKE_SUPPORT)
+ set_target_properties(akonadi_google_resource PROPERTIES UNITY_BUILD ON)
+@@ -126,6 +123,7 @@ install(
+ kcoreaddons-kf6_add_plugin(googleconfig
+ INSTALL_NAMESPACE "pim${QT_MAJOR_VERSION}/akonadi/config"
+ )
++
+ target_sources(googleconfig
+ PRIVATE
+ googleconfig.cpp
+@@ -133,6 +131,9 @@ PRIVATE
+ googlesettingswidget.h
+ ${googleresource_common_SRCS}
+ )
++
++ki18n-kf6_wrap_ui(googleconfig googlesettingswidget.ui)
++
+ target_link_libraries(googleconfig
+ KPim${KF_MAJOR_VERSION}::AkonadiCore
+ KPim${KF_MAJOR_VERSION}::AkonadiCalendar
+diff --git a/resources/google-groupware/googleresource.cpp b/resources/google-groupware/googleresource.cpp
+index 47a7e0c8d5..d51c1e4a7c 100644
+--- a/resources/google-groupware/googleresource.cpp
++++ b/resources/google-groupware/googleresource.cpp
+@@ -11,7 +11,6 @@
+ #include "googleresourcestate.h"
+ #include "googlescopes.h"
+ #include "googlesettings.h"
+-#include "googlesettingswidget.h"
+ #include "settingsadaptor.h"
+
+ #include "personhandler.h"
+--
+GitLab
+
diff --git a/desktop/kde6/applications/kdepim-runtime-kf6/files/c99afc75.patch b/desktop/kde6/applications/kdepim-runtime-kf6/files/c99afc75.patch
new file mode 100644
index 0000000000..6ebb69222c
--- /dev/null
+++ b/desktop/kde6/applications/kdepim-runtime-kf6/files/c99afc75.patch
@@ -0,0 +1,120 @@
+From c99afc75a503fff6ca83df2f47a5d5d951579524 Mon Sep 17 00:00:00 2001
+From: Carl Schwan
+Date: Tue, 19 Sep 2023 18:58:54 +0200
+Subject: [PATCH] Actually start job to read secret key
+
+BUG: 470820
+(cherry picked from commit 8393e92d56ecb31b2dd65d15d046f8e02565f5e3)
+---
+ resources/google-groupware/googleconfig.cpp | 8 +++++++-
+ resources/google-groupware/googlesettings.cpp | 15 +++++++++------
+ .../google-groupware/googlesettingswidget.cpp | 3 +--
+ 3 files changed, 17 insertions(+), 9 deletions(-)
+
+diff --git a/resources/google-groupware/googleconfig.cpp b/resources/google-groupware/googleconfig.cpp
+index 2eb6ab2efa..1af177c81f 100644
+--- a/resources/google-groupware/googleconfig.cpp
++++ b/resources/google-groupware/googleconfig.cpp
+@@ -6,6 +6,7 @@
+
+ #include
+
++#include "googleresource_debug.h"
+ #include "googlesettings.h"
+ #include "googlesettingswidget.h"
+
+@@ -25,7 +26,12 @@ public:
+ void load() override
+ {
+ Akonadi::AgentConfigurationBase::load();
+- mWidget.loadSettings();
++ mSettings.init();
++ connect(&mSettings, &GoogleSettings::accountReady, this, [this](bool ready) {
++ if (ready) {
++ mWidget.loadSettings();
++ }
++ });
+ }
+
+ Q_REQUIRED_RESULT bool save() const override
+diff --git a/resources/google-groupware/googlesettings.cpp b/resources/google-groupware/googlesettings.cpp
+index aa94cad1ab..23a9979895 100644
+--- a/resources/google-groupware/googlesettings.cpp
++++ b/resources/google-groupware/googlesettings.cpp
+@@ -32,7 +32,6 @@ static const QString googleWalletFolder = QStringLiteral("Akonadi Google");
+ GoogleSettings::GoogleSettings(const KSharedConfigPtr &config, Options options)
+ : SettingsBase(config)
+ {
+- qDebug() << config;
+ if (options & Option::ExportToDBus) {
+ new SettingsAdaptor(this);
+ QDBusConnection::sessionBus().registerObject(QStringLiteral("/Settings"),
+@@ -44,9 +43,11 @@ GoogleSettings::GoogleSettings(const KSharedConfigPtr &config, Options options)
+ void GoogleSettings::init()
+ {
+ // First read from QtKeyChain
+- auto job = new QKeychain::ReadPasswordJob(googleWalletFolder);
++ auto job = new QKeychain::ReadPasswordJob(googleWalletFolder, this);
++ job->setKey(account());
+ connect(job, &QKeychain::Job::finished, this, [this, job]() {
+ if (job->error() != QKeychain::Error::NoError) {
++ qCWarning(GOOGLE_LOG) << "Unable to read password" << job->error();
+ Q_EMIT accountReady(false);
+ return;
+ }
+@@ -54,18 +55,19 @@ void GoogleSettings::init()
+ // Found something with QtKeyChain
+ if (!account().isEmpty()) {
+ m_account = fetchAccountFromKeychain(account(), job);
++ m_isReady = true;
++ Q_EMIT accountReady(true);
+ }
+- m_isReady = true;
+- Q_EMIT accountReady(true);
+ });
++ job->start();
+ }
+
+ KGAPI2::AccountPtr GoogleSettings::fetchAccountFromKeychain(const QString &accountName, QKeychain::ReadPasswordJob *job)
+ {
+ QMap map;
+ auto value = job->binaryData();
+- if (!value.isEmpty()) {
+- qCDebug(GOOGLE_LOG) << "Account" << accountName << "not found in kwallet-kf6";
++ if (value.isEmpty()) {
++ qCWarning(GOOGLE_LOG) << "Account" << accountName << "not found in kwallet-kf6";
+ return {};
+ }
+
+@@ -116,6 +118,7 @@ WritePasswordJob *GoogleSettings::storeAccount(AccountPtr account)
+
+ connect(writeJob, &WritePasswordJob::finished, this, [this, writeJob]() {
+ if (writeJob->error()) {
++ qCWarning(GOOGLE_LOG) << "Unable to write password" << writeJob->error();
+ return;
+ }
+ SettingsBase::setAccount(m_account->accountName());
+diff --git a/resources/google-groupware/googlesettingswidget.cpp b/resources/google-groupware/googlesettingswidget.cpp
+index 2543c4c6b8..8e84cfbabd 100644
+--- a/resources/google-groupware/googlesettingswidget.cpp
++++ b/resources/google-groupware/googlesettingswidget.cpp
+@@ -36,7 +36,6 @@ GoogleSettingsWidget::GoogleSettingsWidget(GoogleSettings &settings, const QStri
+ , m_settings(settings)
+ , m_identifier(identifier)
+ {
+- qDebug() << m_settings.account();
+ auto mainLayout = new QVBoxLayout(this);
+
+ auto mainWidget = new QWidget(this);
+@@ -83,7 +82,7 @@ bool GoogleSettingsWidget::handleError(KGAPI2::Job *job)
+ }
+
+ if (job->error() == KGAPI2::Unauthorized) {
+- qCDebug(GOOGLE_LOG) << job << job->errorString();
++ qWarning() << job << job->errorString();
+ const QList resourceScopes = googleScopes();
+ for (const QUrl &scope : resourceScopes) {
+ if (!m_account->scopes().contains(scope)) {
+--
+GitLab
+
diff --git a/desktop/kde6/applications/kdepim-runtime-kf6/files/fb0d78fb.patch b/desktop/kde6/applications/kdepim-runtime-kf6/files/fb0d78fb.patch
new file mode 100644
index 0000000000..c2b0f54fe1
--- /dev/null
+++ b/desktop/kde6/applications/kdepim-runtime-kf6/files/fb0d78fb.patch
@@ -0,0 +1,1302 @@
+From fb0d78fb3bcfce5bd4ff7f51e4cd1405693e0275 Mon Sep 17 00:00:00 2001
+From: Carl Schwan
+Date: Tue, 19 Sep 2023 17:04:13 +0200
+Subject: [PATCH] Revert "Revert "Use config plugin instead of out of process
+ config dialog""
+
+This reverts commit f33496a346f49e95caaf7f664ef2f91e4b7f3ddb.
+
+(cherry picked from commit a17ef55dbe31e2020e96f66cd7021578ed8b5444)
+---
+ resources/google-groupware/CMakeLists.txt | 93 ++++--
+ resources/google-groupware/googleconfig.cpp | 43 +++
+ resources/google-groupware/googleconfig.json | 5 +
+ resources/google-groupware/googleresource.cpp | 95 ++----
+ resources/google-groupware/googleresource.h | 4 +-
+ resources/google-groupware/googlescopes.cpp | 19 ++
+ resources/google-groupware/googlescopes.h | 10 +
+ resources/google-groupware/googlesettings.cpp | 22 +-
+ resources/google-groupware/googlesettings.h | 11 +-
+ .../google-groupware/googlesettingsdialog.cpp | 305 ------------------
+ .../google-groupware/googlesettingswidget.cpp | 288 +++++++++++++++++
+ ...ettingsdialog.h => googlesettingswidget.h} | 29 +-
+ ...tingsdialog.ui => googlesettingswidget.ui} | 2 +-
+ resources/google-groupware/settingsbase.kcfg | 2 +-
+ 14 files changed, 505 insertions(+), 423 deletions(-)
+ create mode 100644 resources/google-groupware/googleconfig.cpp
+ create mode 100644 resources/google-groupware/googleconfig.json
+ create mode 100644 resources/google-groupware/googlescopes.cpp
+ create mode 100644 resources/google-groupware/googlescopes.h
+ delete mode 100644 resources/google-groupware/googlesettingsdialog.cpp
+ create mode 100644 resources/google-groupware/googlesettingswidget.cpp
+ rename resources/google-groupware/{googlesettingsdialog.h => googlesettingswidget.h} (53%)
+ rename resources/google-groupware/{googlesettingsdialog.ui => googlesettingswidget.ui} (99%)
+
+diff --git a/resources/google-groupware/CMakeLists.txt b/resources/google-groupware/CMakeLists.txt
+index babf58a953..2f2b46aded 100644
+--- a/resources/google-groupware/CMakeLists.txt
++++ b/resources/google-groupware/CMakeLists.txt
+@@ -1,67 +1,75 @@
+ add_definitions(-DTRANSLATION_DOMAIN=\"akonadi_google_resource\")
+
+-set(googleresource_SRCS
+- googleresource.cpp
++set(googleresource_common_SRCS
+ googlesettings.cpp
+- googlesettingsdialog.cpp
+- defaultreminderattribute.cpp
+- googleresourcestate.cpp
+- generichandler.cpp
+- calendarhandler.cpp
+- taskhandler.cpp
+- peopleconversionjob.cpp
+- personhandler.cpp
+- googleresource.h
+ googlesettings.h
+- googlesettingsdialog.h
+- defaultreminderattribute.h
+- googleresourcestate.h
+- generichandler.h
+- calendarhandler.h
+- taskhandler.h
+- peopleconversionjob.h
+- personhandler.h
+- )
++ googlescopes.h
++ googlescopes.cpp
++)
+
+-ecm_qt_declare_logging_category(googleresource_SRCS
++ecm_qt_declare_logging_category(googleresource_common_SRCS
+ HEADER googleresource_debug.h
+ IDENTIFIER GOOGLE_LOG
+ CATEGORY_NAME org.kde.pim.google
+ DESCRIPTION "resource google (kdepim-runtime-kf6)"
+ EXPORT KDEPIMRUNTIME)
+-ecm_qt_declare_logging_category(googleresource_SRCS
++ecm_qt_declare_logging_category(googleresource_common_SRCS
+ HEADER googlecalendar_debug.h
+ IDENTIFIER GOOGLE_CALENDAR_LOG
+ CATEGORY_NAME org.kde.pim.google.calendar
+ DESCRIPTION "resource google calendar (kdepim-runtime-kf6)"
+ EXPORT KDEPIMRUNTIME)
+-ecm_qt_declare_logging_category(googleresource_SRCS
++ecm_qt_declare_logging_category(googleresource_common_SRCS
+ HEADER googletasks_debug.h
+ IDENTIFIER GOOGLE_TASKS_LOG
+ CATEGORY_NAME org.kde.pim.google.tasks
+ DESCRIPTION "resource google tasks (kdepim-runtime-kf6)"
+ EXPORT KDEPIMRUNTIME)
+-ecm_qt_declare_logging_category(googleresource_SRCS
++ecm_qt_declare_logging_category(googleresource_common_SRCS
+ HEADER googlepeople_debug.h
+ IDENTIFIER GOOGLE_PEOPLE_LOG
+ CATEGORY_NAME org.kde.pim.google.people
+ DESCRIPTION "resource google people (kdepim-runtime-kf6)"
+ EXPORT KDEPIMRUNTIME)
+
+-ki18n-kf6_wrap_ui(googleresource_SRCS googlesettingsdialog.ui)
+
+-kconfig-kf6_add_kcfg_files(googleresource_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/settingsbase.kcfgc)
++kconfig-kf6_add_kcfg_files(googleresource_common_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/settingsbase.kcfgc)
+
+ kcfg_generate_dbus_interface(
+ ${CMAKE_CURRENT_SOURCE_DIR}/settingsbase.kcfg
+ org.kde.Akonadi.Google.Settings
+ )
+
+-qt_add_dbus_adaptor(googleresource_SRCS
++qt_add_dbus_adaptor(googleresource_common_SRCS
+ ${CMAKE_CURRENT_BINARY_DIR}/org.kde.Akonadi.Google.Settings.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/googlesettings.h GoogleSettings
+ )
+
++############################# Resource #################################
++set(googleresource_SRCS
++ googleresource.cpp
++ defaultreminderattribute.cpp
++ googleresourcestate.cpp
++ generichandler.cpp
++ calendarhandler.cpp
++ taskhandler.cpp
++ peopleconversionjob.cpp
++ personhandler.cpp
++ googleresource.h
++ googlesettings.h
++ defaultreminderattribute.h
++ googleresourcestate.h
++ generichandler.h
++ calendarhandler.h
++ taskhandler.h
++ peopleconversionjob.h
++ personhandler.h
++ ${googleresource_common_SRCS}
++)
++
++ki18n-kf6_wrap_ui(googleresource_SRCS googlesettingswidget.ui)
++
++
+ add_executable(akonadi_google_resource ${googleresource_SRCS})
+ if (COMPILE_WITH_UNITY_CMAKE_SUPPORT)
+ set_target_properties(akonadi_google_resource PROPERTIES UNITY_BUILD ON)
+@@ -112,3 +120,34 @@ install(
+ FILES akonadi_google_resource.notifyrc
+ DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR}
+ )
++
++################################ Config plugin ###############################
++
++kcoreaddons-kf6_add_plugin(googleconfig
++ INSTALL_NAMESPACE "pim${QT_MAJOR_VERSION}/akonadi/config"
++)
++target_sources(googleconfig
++PRIVATE
++ googleconfig.cpp
++ googlesettingswidget.cpp
++ googlesettingswidget.h
++ ${googleresource_common_SRCS}
++)
++target_link_libraries(googleconfig
++ KPim${KF_MAJOR_VERSION}::AkonadiCore
++ KPim${KF_MAJOR_VERSION}::AkonadiCalendar
++ KPim${KF_MAJOR_VERSION}::AkonadiCore
++ KPim${KF_MAJOR_VERSION}::AkonadiAgentBase
++ KF${KF_MAJOR_VERSION}::CalendarCore
++ KF${KF_MAJOR_VERSION}::Contacts
++ KF${KF_MAJOR_VERSION}::Wallet
++ KF${KF_MAJOR_VERSION}::I18n
++ KF${KF_MAJOR_VERSION}::WindowSystem
++ KF${KF_MAJOR_VERSION}::TextWidgets
++ KF${KF_MAJOR_VERSION}::Notifications
++ KPim${KF_MAJOR_VERSION}::GAPICalendar
++ KPim${KF_MAJOR_VERSION}::GAPIPeople
++ KPim${KF_MAJOR_VERSION}::GAPICore
++ KPim${KF_MAJOR_VERSION}::GAPITasks
++ qt${KF_MAJOR_VERSION}keychain
++)
+diff --git a/resources/google-groupware/googleconfig.cpp b/resources/google-groupware/googleconfig.cpp
+new file mode 100644
+index 0000000000..2eb6ab2efa
+--- /dev/null
++++ b/resources/google-groupware/googleconfig.cpp
+@@ -0,0 +1,43 @@
++/*
++ SPDX-FileCopyrightText: 2018 Daniel Vrátil
++
++ SPDX-License-Identifier: LGPL-2.0-or-later
++*/
++
++#include
++
++#include "googlesettings.h"
++#include "googlesettingswidget.h"
++
++class GoogleConfig : public Akonadi::AgentConfigurationBase
++{
++ Q_OBJECT
++
++public:
++ explicit GoogleConfig(const KSharedConfigPtr &config, QWidget *parent, const QVariantList &list)
++ : Akonadi::AgentConfigurationBase(config, parent, list)
++ , mSettings(config, GoogleSettings::Option::NoOption)
++ , mWidget(mSettings, identifier(), parent)
++ {
++ connect(&mWidget, &GoogleSettingsWidget::okEnabled, this, &Akonadi::AgentConfigurationBase::enableOkButton);
++ }
++
++ void load() override
++ {
++ Akonadi::AgentConfigurationBase::load();
++ mWidget.loadSettings();
++ }
++
++ Q_REQUIRED_RESULT bool save() const override
++ {
++ const_cast(this)->mWidget.saveSettings();
++ return Akonadi::AgentConfigurationBase::save();
++ }
++
++ GoogleSettings mSettings;
++ GoogleSettingsWidget mWidget;
++};
++
++AKONADI_AGENTCONFIG_FACTORY(GoogleConfigFactory, "googleconfig.json", GoogleConfig)
++
++#include "googleconfig.moc"
+diff --git a/resources/google-groupware/googleconfig.json b/resources/google-groupware/googleconfig.json
+new file mode 100644
+index 0000000000..69c76f583f
+--- /dev/null
++++ b/resources/google-groupware/googleconfig.json
+@@ -0,0 +1,5 @@
++{
++ "X-Akonadi-PluginType": "AgentConfig",
++ "X-Akonadi-Library": "googleconfig",
++ "X-Akonadi-AgentConfig-Type": "akonadi_google_resource"
++}
+\ No newline at end of file
+diff --git a/resources/google-groupware/googleresource.cpp b/resources/google-groupware/googleresource.cpp
+index b40f093dde..47a7e0c8d5 100644
+--- a/resources/google-groupware/googleresource.cpp
++++ b/resources/google-groupware/googleresource.cpp
+@@ -9,8 +9,9 @@
+ #include "googleresource.h"
+ #include "googleresource_debug.h"
+ #include "googleresourcestate.h"
++#include "googlescopes.h"
+ #include "googlesettings.h"
+-#include "googlesettingsdialog.h"
++#include "googlesettingswidget.h"
+ #include "settingsadaptor.h"
+
+ #include "personhandler.h"
+@@ -67,8 +68,11 @@ bool accountIsValid(const KGAPI2::AccountPtr &account)
+ GoogleResource::GoogleResource(const QString &id)
+ : ResourceBase(id)
+ , AgentBase::ObserverV3()
++ , m_settings(KSharedConfig::openConfig())
+ , m_iface(new GoogleResourceState(this))
+ {
++ m_settings.setResourceId(identifier());
++
+ AttributeFactory::registerAttribute();
+
+ connect(this, &GoogleResource::reloadConfiguration, this, &GoogleResource::reloadConfig);
+@@ -83,9 +87,7 @@ GoogleResource::GoogleResource(const QString &id)
+
+ Q_EMIT status(NotConfigured, i18n("Fetching password..."));
+
+- m_settings = new GoogleSettings();
+- m_settings->setWindowId(winIdForDialogs());
+- connect(m_settings, &GoogleSettings::accountReady, this, [this](bool ready) {
++ connect(&m_settings, &GoogleSettings::accountReady, this, [this](bool ready) {
+ if (accountId() > 0) {
+ return;
+ }
+@@ -94,7 +96,7 @@ GoogleResource::GoogleResource(const QString &id)
+ return;
+ }
+
+- const auto account = m_settings->accountPtr();
++ const auto account = m_settings.accountPtr();
+ if (account.isNull()) {
+ Q_EMIT status(NotConfigured);
+ return;
+@@ -107,18 +109,15 @@ GoogleResource::GoogleResource(const QString &id)
+ synchronize();
+ }
+ });
+- m_settings->init();
++ m_settings.init();
+
+ updateResourceName();
+
+- m_freeBusyHandler = std::make_unique(m_iface, m_settings);
++ m_freeBusyHandler = std::make_unique(m_iface, &m_settings);
+ m_handlers.clear();
+- m_handlers.push_back(GenericHandler::Ptr(new CalendarHandler(m_iface, m_settings)));
+- m_handlers.push_back(GenericHandler::Ptr(new PersonHandler(m_iface, m_settings)));
+- m_handlers.push_back(GenericHandler::Ptr(new TaskHandler(m_iface, m_settings)));
+-
+- new SettingsAdaptor(m_settings);
+- QDBusConnection::sessionBus().registerObject(QStringLiteral("/Settings"), m_settings, QDBusConnection::ExportAdaptors);
++ m_handlers.push_back(GenericHandler::Ptr(new CalendarHandler(m_iface, &m_settings)));
++ m_handlers.push_back(GenericHandler::Ptr(new PersonHandler(m_iface, &m_settings)));
++ m_handlers.push_back(GenericHandler::Ptr(new TaskHandler(m_iface, &m_settings)));
+ }
+
+ GoogleResource::~GoogleResource()
+@@ -128,7 +127,7 @@ GoogleResource::~GoogleResource()
+
+ void GoogleResource::cleanup()
+ {
+- m_settings->cleanup();
++ m_settings.cleanup();
+ ResourceBase::cleanup();
+ }
+
+@@ -137,65 +136,30 @@ void GoogleResource::emitReadyStatus()
+ Q_EMIT status(Idle, i18nc("@info:status", "Ready"));
+ }
+
+-void GoogleResource::configure(WId windowId)
+-{
+- if (!m_settings->isReady() || m_isConfiguring) {
+- Q_EMIT configurationDialogAccepted();
+- return;
+- }
+-
+- m_isConfiguring = true;
+-
+- QScopedPointer settingsDialog(new GoogleSettingsDialog(this, m_settings, windowId));
+- settingsDialog->setWindowIcon(QIcon::fromTheme(QStringLiteral("im-google")));
+- if (settingsDialog->exec() == QDialog::Accepted) {
+- updateResourceName();
+-
+- Q_EMIT configurationDialogAccepted();
+-
+- if (m_settings->accountPtr().isNull()) {
+- Q_EMIT status(NotConfigured, i18n("Configured account does not exist"));
+- m_isConfiguring = false;
+- return;
+- }
+-
+- emitReadyStatus();
+- synchronize();
+- } else {
+- updateResourceName();
+-
+- Q_EMIT configurationDialogRejected();
+- }
+-
+- m_isConfiguring = false;
+-}
+-
+ QList GoogleResource::scopes() const
+ {
+ // TODO: determine it based on what user wants?
+- const QList scopes = {
+- Account::accountInfoScopeUrl(),
+- Account::calendarScopeUrl(),
+- Account::peopleScopeUrl(),
+- Account::tasksScopeUrl(),
+- };
+- return scopes;
++ return googleScopes();
+ }
+
+ void GoogleResource::updateResourceName()
+ {
+- const QString accountName = m_settings->account();
++ const QString accountName = m_settings.account();
+ setName(i18nc("%1 is account name (user@gmail.com)", "Google Groupware (%1)", accountName.isEmpty() ? i18n("not configured") : accountName));
+ }
+
+ void GoogleResource::reloadConfig()
+ {
+- const AccountPtr account = m_settings->accountPtr();
++ updateResourceName();
++
++ const AccountPtr account = m_settings.accountPtr();
+ if (account.isNull() || account->accountName().isEmpty()) {
+ Q_EMIT status(NotConfigured, i18n("Configured account does not exist"));
+- } else {
+- emitReadyStatus();
++ return;
+ }
++
++ emitReadyStatus();
++ synchronize();
+ }
+
+ bool GoogleResource::handleError(KGAPI2::Job *job, bool _cancelTask)
+@@ -231,7 +195,7 @@ bool GoogleResource::handleError(KGAPI2::Job *job, bool _cancelTask)
+
+ void GoogleResource::runAuthJob(const KGAPI2::AccountPtr &account, const QVariant &args)
+ {
+- auto authJob = new AuthJob(account, m_settings->clientId(), m_settings->clientSecret(), this);
++ auto authJob = new AuthJob(account, m_settings.clientId(), m_settings.clientSecret(), this);
+ authJob->setProperty(JOB_PROPERTY, args);
+ connect(authJob, &AuthJob::finished, this, &GoogleResource::slotAuthJobFinished);
+ }
+@@ -264,7 +228,7 @@ void GoogleResource::requestAuthenticationFromUser(const KGAPI2::AccountPtr &acc
+
+ bool GoogleResource::canPerformTask()
+ {
+- if (!m_settings->accountPtr() && accountId() == 0) {
++ if (!m_settings.accountPtr() && accountId() == 0) {
+ cancelTask(i18nc("@info:status", "Resource is not configured"));
+ Q_EMIT status(NotConfigured, i18nc("@info:status", "Resource is not configured"));
+ return false;
+@@ -289,10 +253,11 @@ void GoogleResource::slotAuthJobFinished(KGAPI2::Job *job)
+
+ auto authJob = qobject_cast(job);
+ AccountPtr account = authJob->account();
+- auto writeJob = m_settings->storeAccount(account);
++ auto writeJob = m_settings.storeAccount(account);
+ connect(writeJob, &WritePasswordJob::finished, this, [job, account, writeJob]() {
+ if (writeJob->error()) {
+ qCWarning(GOOGLE_LOG) << "Failed to store account's password in secret storage" << writeJob->errorString();
++ return;
+ }
+
+ auto otherJob = job->property(JOB_PROPERTY).value();
+@@ -375,22 +340,22 @@ void GoogleResource::retrieveCollections()
+
+ setCollectionStreamingEnabled(true);
+ CachePolicy cachePolicy;
+- if (m_settings->enableIntervalCheck()) {
++ if (m_settings.enableIntervalCheck()) {
+ cachePolicy.setInheritFromParent(false);
+- cachePolicy.setIntervalCheckTime(m_settings->intervalCheckTime());
++ cachePolicy.setIntervalCheckTime(m_settings.intervalCheckTime());
+ }
+
+ // Setting up root collection
+ m_rootCollection = Collection();
+ m_rootCollection.setContentMimeTypes({Collection::mimeType(), Collection::virtualMimeType()});
+ m_rootCollection.setRemoteId(ROOT_COLLECTION_REMOTEID);
+- m_rootCollection.setName(m_settings->accountPtr()->accountName());
++ m_rootCollection.setName(m_settings.accountPtr()->accountName());
+ m_rootCollection.setParentCollection(Collection::root());
+ m_rootCollection.setRights(Collection::CanCreateCollection);
+ m_rootCollection.setCachePolicy(cachePolicy);
+
+ auto attr = m_rootCollection.attribute(Collection::AddIfMissing);
+- attr->setDisplayName(m_settings->accountPtr()->accountName());
++ attr->setDisplayName(m_settings.accountPtr()->accountName());
+ attr->setIconName(QStringLiteral("im-google"));
+
+ collectionsRetrieved({m_rootCollection});
+diff --git a/resources/google-groupware/googleresource.h b/resources/google-groupware/googleresource.h
+index 4609572756..75708afca4 100644
+--- a/resources/google-groupware/googleresource.h
++++ b/resources/google-groupware/googleresource.h
+@@ -14,6 +14,7 @@
+
+ #include "calendarhandler.h"
+ #include "generichandler.h"
++#include "googlesettings.h"
+
+ #define JOB_PROPERTY "_KGAPI2Job"
+
+@@ -37,7 +38,6 @@ public:
+
+ void cleanup() override;
+ public Q_SLOTS:
+- void configure(WId windowId) override;
+ void reloadConfig();
+
+ protected:
+@@ -83,7 +83,7 @@ protected Q_SLOTS:
+
+ private:
+ bool m_isConfiguring = false;
+- GoogleSettings *m_settings = nullptr;
++ GoogleSettings m_settings;
+ Akonadi::Collection m_rootCollection;
+
+ GoogleResourceState *const m_iface;
+diff --git a/resources/google-groupware/googlescopes.cpp b/resources/google-groupware/googlescopes.cpp
+new file mode 100644
+index 0000000000..9e565f7e33
+--- /dev/null
++++ b/resources/google-groupware/googlescopes.cpp
+@@ -0,0 +1,19 @@
++// SPDX-FileCopyrightText: 2011 Daniel Vrátil
++// SPDX-FileCopyrightText: 2023 Carl Schwan
++// SPDX-License-Identifier: GPL-3.0-or-later
++
++#include "googlescopes.h"
++#include
++
++using namespace KGAPI2;
++
++QList googleScopes()
++{
++ // TODO: determine it based on what user wants?
++ return {
++ Account::accountInfoScopeUrl(),
++ Account::calendarScopeUrl(),
++ Account::peopleScopeUrl(),
++ Account::tasksScopeUrl(),
++ };
++}
+diff --git a/resources/google-groupware/googlescopes.h b/resources/google-groupware/googlescopes.h
+new file mode 100644
+index 0000000000..33bf579a89
+--- /dev/null
++++ b/resources/google-groupware/googlescopes.h
+@@ -0,0 +1,10 @@
++/*
++ SPDX-FileCopyrightText: 2011 Daniel Vrátil
++ SPDX-FileCopyrightText: 2023 Carl Schwan
++ SPDX-License-Identifier: GPL-3.0-or-later
++*/
++
++#include
++#include
++
++QList googleScopes();
+diff --git a/resources/google-groupware/googlesettings.cpp b/resources/google-groupware/googlesettings.cpp
+index 6a1785fcf9..aa94cad1ab 100644
+--- a/resources/google-groupware/googlesettings.cpp
++++ b/resources/google-groupware/googlesettings.cpp
+@@ -8,6 +8,8 @@
+
+ #include "googlesettings.h"
+ #include "googleresource_debug.h"
++#include "googlescopes.h"
++#include "settingsadaptor.h"
+
+ #include
+ #include
+@@ -27,8 +29,16 @@ using namespace KGAPI2;
+
+ static const QString googleWalletFolder = QStringLiteral("Akonadi Google");
+
+-GoogleSettings::GoogleSettings()
++GoogleSettings::GoogleSettings(const KSharedConfigPtr &config, Options options)
++ : SettingsBase(config)
+ {
++ qDebug() << config;
++ if (options & Option::ExportToDBus) {
++ new SettingsAdaptor(this);
++ QDBusConnection::sessionBus().registerObject(QStringLiteral("/Settings"),
++ this,
++ QDBusConnection::ExportAdaptors | QDBusConnection::ExportScriptableContents);
++ }
+ }
+
+ void GoogleSettings::init()
+@@ -82,15 +92,17 @@ WritePasswordJob *GoogleSettings::storeAccount(AccountPtr account)
+ m_account = account;
+
+ QStringList scopes;
+- const QList urlScopes = m_account->scopes();
++ const QList urlScopes = googleScopes();
+ scopes.reserve(urlScopes.count());
+ for (const QUrl &url : urlScopes) {
+ scopes << url.toString();
+ }
+
+- const QMap map = {{QStringLiteral("accessToken"), m_account->accessToken()},
+- {QStringLiteral("refreshToken"), m_account->refreshToken()},
+- {QStringLiteral("scopes"), scopes.join(QLatin1Char(','))}};
++ const QMap map = {
++ {QStringLiteral("accessToken"), m_account->accessToken()},
++ {QStringLiteral("refreshToken"), m_account->refreshToken()},
++ {QStringLiteral("scopes"), scopes.join(QLatin1Char(','))},
++ };
+
+ // Legacy: store the map exactly like kwallet-kf6 is doing it
+ QByteArray mapData;
+diff --git a/resources/google-groupware/googlesettings.h b/resources/google-groupware/googlesettings.h
+index f689dc7748..0ec4c3c34e 100644
+--- a/resources/google-groupware/googlesettings.h
++++ b/resources/google-groupware/googlesettings.h
+@@ -33,7 +33,14 @@ class GoogleSettings : public SettingsBase
+ Q_CLASSINFO("D-Bus Interface", "org.kde.Akonadi.Google.ExtendedSettings")
+
+ public:
+- GoogleSettings();
++ enum class Option {
++ NoOption = 0,
++ ExportToDBus = 1,
++ };
++ Q_DECLARE_FLAGS(Options, Option)
++
++ explicit GoogleSettings(const KSharedConfigPtr &config, Options options = Option::ExportToDBus);
++
+ void init();
+ void setWindowId(WId id);
+ void setResourceId(const QString &resourceIdentifier);
+@@ -50,9 +57,11 @@ public:
+ bool isReady() const;
+ QKeychain::WritePasswordJob *storeAccount(KGAPI2::AccountPtr account);
+ void cleanup();
++
+ Q_SIGNALS:
+ void accountReady(bool ready);
+ void accountChanged();
++ void okEnabled(bool enabled);
+
+ private:
+ void slotWalletOpened(bool success);
+diff --git a/resources/google-groupware/googlesettingsdialog.cpp b/resources/google-groupware/googlesettingsdialog.cpp
+deleted file mode 100644
+index d418652d6f..0000000000
+--- a/resources/google-groupware/googlesettingsdialog.cpp
++++ /dev/null
+@@ -1,305 +0,0 @@
+-/*
+- SPDX-FileCopyrightText: 2013 Daniel Vrátil
+- SPDX-FileCopyrightText: 2020 Igor Poboiko
+-
+- SPDX-License-Identifier: GPL-3.0-or-later
+-*/
+-
+-#include "googlesettingsdialog.h"
+-#include "googleresource.h"
+-#include "googleresource_debug.h"
+-#include "googlesettings.h"
+-#include "ui_googlesettingsdialog.h"
+-
+-#include
+-
+-#include
+-#include
+-#include
+-#include
+-#include
+-#include
+-#include
+-#include
+-
+-#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+-#include
+-#else
+-#include
+-#endif
+-
+-using namespace QKeychain;
+-using namespace KGAPI2;
+-
+-GoogleSettingsDialog::GoogleSettingsDialog(GoogleResource *resource, GoogleSettings *settings, WId wId)
+- : QDialog()
+- , m_resource(resource)
+- , m_settings(settings)
+- , m_ui(new Ui::GoogleSettingsDialog)
+-{
+- if (wId) {
+- setAttribute(Qt::WA_NativeWindow, true);
+- kwindowsystem-kf6::setMainWindow(windowHandle(), wId);
+- }
+- auto mainLayout = new QVBoxLayout(this);
+-
+- auto mainWidget = new QWidget(this);
+- mainLayout->addWidget(mainWidget);
+-
+- auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
+- QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok);
+- okButton->setDefault(true);
+- okButton->setShortcut(Qt::CTRL | Qt::Key_Return);
+- mainLayout->addWidget(buttonBox);
+-
+- m_ui->setupUi(mainWidget);
+-
+- m_ui->refreshSpinBox->setSuffix(ki18n-kf6p(" minute", " minutes"));
+- m_ui->enableRefresh->setChecked(m_settings->enableIntervalCheck());
+- m_ui->refreshSpinBox->setEnabled(m_settings->enableIntervalCheck());
+- m_ui->refreshSpinBox->setValue(m_settings->intervalCheckTime());
+-
+- m_ui->eventsLimitCombo->setMaximumDate(QDate::currentDate());
+- m_ui->eventsLimitCombo->setMinimumDate(QDate::fromString(QStringLiteral("2000-01-01"), Qt::ISODate));
+- m_ui->eventsLimitCombo->setOptions(KDateComboBox::EditDate | KDateComboBox::SelectDate | KDateComboBox::DatePicker | KDateComboBox::WarnOnInvalid);
+- if (m_settings->eventsSince().isEmpty()) {
+- const QString ds = QStringLiteral("%1-01-01").arg(QString::number(QDate::currentDate().year() - 3));
+- m_ui->eventsLimitCombo->setDate(QDate::fromString(ds, Qt::ISODate));
+- } else {
+- m_ui->eventsLimitCombo->setDate(QDate::fromString(m_settings->eventsSince(), Qt::ISODate));
+- }
+-
+- connect(buttonBox, &QDialogButtonBox::accepted, this, &GoogleSettingsDialog::slotSaveSettings);
+- connect(buttonBox, &QDialogButtonBox::rejected, this, &GoogleSettingsDialog::reject);
+- connect(m_ui->reloadCalendarsBtn, &QPushButton::clicked, this, &GoogleSettingsDialog::slotReloadCalendars);
+- connect(m_ui->reloadTaskListsBtn, &QPushButton::clicked, this, &GoogleSettingsDialog::slotReloadTaskLists);
+- connect(m_ui->configureBtn, &QPushButton::clicked, this, &GoogleSettingsDialog::slotConfigure);
+- if (m_settings->isReady()) {
+- m_account = m_settings->accountPtr();
+- }
+- connect(m_settings, &GoogleSettings::accountReady, this, [this](bool ready) {
+- if (ready) {
+- m_account = m_settings->accountPtr();
+- accountChanged();
+- }
+- });
+- QMetaObject::invokeMethod(this, &GoogleSettingsDialog::accountChanged, Qt::QueuedConnection);
+-}
+-
+-GoogleSettingsDialog::~GoogleSettingsDialog()
+-{
+- delete m_ui;
+-}
+-
+-bool GoogleSettingsDialog::handleError(KGAPI2::Job *job)
+-{
+- if ((job->error() == KGAPI2::NoError) || (job->error() == KGAPI2::OK)) {
+- return true;
+- }
+-
+- if (job->error() == KGAPI2::Unauthorized) {
+- qCDebug(GOOGLE_LOG) << job << job->errorString();
+- const QList resourceScopes = m_resource->scopes();
+- for (const QUrl &scope : resourceScopes) {
+- if (!m_account->scopes().contains(scope)) {
+- m_account->addScope(scope);
+- }
+- }
+-
+- auto authJob = new AuthJob(m_account, m_settings->clientId(), m_settings->clientSecret(), this);
+- authJob->setProperty(JOB_PROPERTY, QVariant::fromValue(job));
+- connect(authJob, &AuthJob::finished, this, &GoogleSettingsDialog::slotAuthJobFinished);
+-
+- return false;
+- }
+-
+- KMessageBox::error(this, job->errorString());
+- return false;
+-}
+-
+-void GoogleSettingsDialog::accountChanged()
+-{
+- if (!m_account) {
+- m_ui->accountLabel->setText(i18n("not configured"));
+- m_ui->calendarsList->setDisabled(true);
+- m_ui->reloadCalendarsBtn->setDisabled(true);
+- m_ui->calendarsList->clear();
+- m_ui->taskListsList->setDisabled(true);
+- m_ui->reloadTaskListsBtn->setDisabled(true);
+- m_ui->taskListsList->clear();
+- return;
+- }
+- m_ui->accountLabel->setText(QStringLiteral("%1").arg(m_account->accountName()));
+- slotReloadCalendars();
+- slotReloadTaskLists();
+-}
+-
+-void GoogleSettingsDialog::slotConfigure()
+-{
+- const QString username = m_account && !m_account->accountName().isEmpty() ? m_account->accountName() : QString();
+- m_account = AccountPtr(new Account());
+- const QList resourceScopes = m_resource->scopes();
+- for (const QUrl &scope : resourceScopes) {
+- if (!m_account->scopes().contains(scope)) {
+- m_account->addScope(scope);
+- }
+- }
+- auto authJob = new AuthJob(m_account, m_settings->clientId(), m_settings->clientSecret());
+- authJob->setUsername(username);
+- connect(authJob, &AuthJob::finished, this, &GoogleSettingsDialog::slotAuthJobFinished);
+-}
+-
+-void GoogleSettingsDialog::slotAuthJobFinished(KGAPI2::Job *job)
+-{
+- auto authJob = qobject_cast(job);
+- m_account = authJob->account();
+- if (authJob->error() != KGAPI2::NoError) {
+- KMessageBox::error(this, authJob->errorString());
+- return;
+- }
+- accountChanged();
+-
+- auto otherJob = job->property(JOB_PROPERTY).value();
+- if (otherJob) {
+- otherJob->setAccount(m_account);
+- otherJob->restart();
+- }
+-}
+-
+-void GoogleSettingsDialog::slotSaveSettings()
+-{
+- auto reset = [this] {
+- m_settings->setAccount({});
+- m_settings->setEnableIntervalCheck(m_ui->enableRefresh->isChecked());
+- m_settings->setIntervalCheckTime(m_ui->refreshSpinBox->value());
+- m_settings->setCalendars({});
+- m_settings->setTaskLists({});
+- m_settings->setEventsSince({});
+- m_settings->save();
+- };
+-
+- if (!m_account) {
+- reset();
+- return;
+- }
+-
+- auto writeJob = m_settings->storeAccount(m_account);
+- connect(writeJob, &WritePasswordJob::finished, this, [this, reset, writeJob]() {
+- if (writeJob->error()) {
+- qCWarning(GOOGLE_LOG) << "Failed to store account's password in secret storage" << writeJob->errorString();
+- reset();
+- return;
+- }
+-
+- m_settings->setAccount(m_account->accountName());
+- m_settings->setEnableIntervalCheck(m_ui->enableRefresh->isChecked());
+- m_settings->setIntervalCheckTime(m_ui->refreshSpinBox->value());
+-
+- QStringList calendars;
+- for (int i = 0; i < m_ui->calendarsList->count(); i++) {
+- QListWidgetItem *item = m_ui->calendarsList->item(i);
+-
+- if (item->checkState() == Qt::Checked) {
+- calendars.append(item->data(Qt::UserRole).toString());
+- }
+- }
+- m_settings->setCalendars(calendars);
+-
+- if (m_ui->eventsLimitCombo->isValid()) {
+- m_settings->setEventsSince(m_ui->eventsLimitCombo->date().toString(Qt::ISODate));
+- }
+-
+- QStringList taskLists;
+- for (int i = 0; i < m_ui->taskListsList->count(); i++) {
+- QListWidgetItem *item = m_ui->taskListsList->item(i);
+-
+- if (item->checkState() == Qt::Checked) {
+- taskLists.append(item->data(Qt::UserRole).toString());
+- }
+- }
+- m_settings->setTaskLists(taskLists);
+- m_settings->save();
+-
+- accept();
+- });
+-}
+-
+-void GoogleSettingsDialog::slotReloadCalendars()
+-{
+- m_ui->calendarsList->setDisabled(true);
+- m_ui->reloadCalendarsBtn->setDisabled(true);
+- m_ui->calendarsList->clear();
+-
+- if (!m_account) {
+- return;
+- }
+-
+- auto fetchJob = new CalendarFetchJob(m_account, this);
+- connect(fetchJob, &CalendarFetchJob::finished, this, [this](KGAPI2::Job *job) {
+- if (!handleError(job) || !m_account) {
+- m_ui->calendarsList->setEnabled(false);
+- m_ui->reloadCalendarsBtn->setEnabled(false);
+- return;
+- }
+-
+- const ObjectsList objects = qobject_cast(job)->items();
+-
+- QStringList activeCalendars;
+- if (m_account->accountName() == m_settings->account()) {
+- activeCalendars = m_settings->calendars();
+- }
+- m_ui->calendarsList->clear();
+- for (const ObjectPtr &object : objects) {
+- const CalendarPtr calendar = object.dynamicCast();
+-
+- auto item = new QListWidgetItem(calendar->title());
+- item->setData(Qt::UserRole, calendar->uid());
+- item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable);
+- item->setCheckState((activeCalendars.isEmpty() || activeCalendars.contains(calendar->uid())) ? Qt::Checked : Qt::Unchecked);
+- m_ui->calendarsList->addItem(item);
+- }
+-
+- m_ui->calendarsList->setEnabled(true);
+- m_ui->reloadCalendarsBtn->setEnabled(true);
+- });
+-}
+-
+-void GoogleSettingsDialog::slotReloadTaskLists()
+-{
+- if (!m_account) {
+- return;
+- }
+-
+- m_ui->taskListsList->setDisabled(true);
+- m_ui->reloadTaskListsBtn->setDisabled(true);
+- m_ui->taskListsList->clear();
+-
+- auto job = new TaskListFetchJob(m_account, this);
+- connect(job, &TaskListFetchJob::finished, this, [this](KGAPI2::Job *job) {
+- if (!handleError(job) || !m_account) {
+- m_ui->taskListsList->setDisabled(true);
+- m_ui->reloadTaskListsBtn->setDisabled(true);
+- return;
+- }
+-
+- const ObjectsList objects = qobject_cast(job)->items();
+-
+- QStringList activeTaskLists;
+- if (m_account->accountName() == m_settings->account()) {
+- activeTaskLists = m_settings->taskLists();
+- }
+- m_ui->taskListsList->clear();
+- for (const ObjectPtr &object : objects) {
+- const TaskListPtr taskList = object.dynamicCast();
+-
+- auto item = new QListWidgetItem(taskList->title());
+- item->setData(Qt::UserRole, taskList->uid());
+- item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable);
+- item->setCheckState((activeTaskLists.isEmpty() || activeTaskLists.contains(taskList->uid())) ? Qt::Checked : Qt::Unchecked);
+- m_ui->taskListsList->addItem(item);
+- }
+-
+- m_ui->taskListsList->setEnabled(true);
+- m_ui->reloadTaskListsBtn->setEnabled(true);
+- });
+-}
+diff --git a/resources/google-groupware/googlesettingswidget.cpp b/resources/google-groupware/googlesettingswidget.cpp
+new file mode 100644
+index 0000000000..2543c4c6b8
+--- /dev/null
++++ b/resources/google-groupware/googlesettingswidget.cpp
+@@ -0,0 +1,288 @@
++/*
++ SPDX-FileCopyrightText: 2013 Daniel Vrátil
++ SPDX-FileCopyrightText: 2020 Igor Poboiko
++
++ SPDX-License-Identifier: GPL-3.0-or-later
++*/
++
++#include "googlesettingswidget.h"
++#include "googleresource.h"
++#include "googleresource_debug.h"
++#include "googlescopes.h"
++#include "googlesettings.h"
++
++#include
++
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++#include
++
++#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
++#include
++#else
++#include
++#endif
++
++using namespace QKeychain;
++using namespace KGAPI2;
++
++GoogleSettingsWidget::GoogleSettingsWidget(GoogleSettings &settings, const QString &identifier, QWidget *parent)
++ : QWidget(parent)
++ , m_settings(settings)
++ , m_identifier(identifier)
++{
++ qDebug() << m_settings.account();
++ auto mainLayout = new QVBoxLayout(this);
++
++ auto mainWidget = new QWidget(this);
++ mainLayout->addWidget(mainWidget);
++ setupUi(mainWidget);
++
++ refreshSpinBox->setSuffix(ki18n-kf6p(" minute", " minutes"));
++ enableRefresh->setChecked(m_settings.enableIntervalCheck());
++ refreshSpinBox->setEnabled(m_settings.enableIntervalCheck());
++ refreshSpinBox->setValue(m_settings.intervalCheckTime());
++
++ eventsLimitCombo->setMaximumDate(QDate::currentDate());
++ eventsLimitCombo->setMinimumDate(QDate::fromString(QStringLiteral("2000-01-01"), Qt::ISODate));
++ eventsLimitCombo->setOptions(KDateComboBox::EditDate | KDateComboBox::SelectDate | KDateComboBox::DatePicker | KDateComboBox::WarnOnInvalid);
++ if (m_settings.eventsSince().isEmpty()) {
++ const QString ds = QStringLiteral("%1-01-01").arg(QString::number(QDate::currentDate().year() - 3));
++ eventsLimitCombo->setDate(QDate::fromString(ds, Qt::ISODate));
++ } else {
++ eventsLimitCombo->setDate(QDate::fromString(m_settings.eventsSince(), Qt::ISODate));
++ }
++ connect(reloadCalendarsBtn, &QPushButton::clicked, this, &GoogleSettingsWidget::slotReloadCalendars);
++ connect(reloadTaskListsBtn, &QPushButton::clicked, this, &GoogleSettingsWidget::slotReloadTaskLists);
++ connect(configureBtn, &QPushButton::clicked, this, &GoogleSettingsWidget::loadSettings);
++ if (m_settings.isReady()) {
++ m_account = m_settings.accountPtr();
++ }
++ connect(&m_settings, &GoogleSettings::accountReady, this, [this](bool ready) {
++ if (ready) {
++ m_account = m_settings.accountPtr();
++ accountChanged();
++ }
++ });
++ QMetaObject::invokeMethod(this, &GoogleSettingsWidget::accountChanged, Qt::QueuedConnection);
++}
++
++GoogleSettingsWidget::~GoogleSettingsWidget()
++{
++}
++
++bool GoogleSettingsWidget::handleError(KGAPI2::Job *job)
++{
++ if ((job->error() == KGAPI2::NoError) || (job->error() == KGAPI2::OK)) {
++ return true;
++ }
++
++ if (job->error() == KGAPI2::Unauthorized) {
++ qCDebug(GOOGLE_LOG) << job << job->errorString();
++ const QList resourceScopes = googleScopes();
++ for (const QUrl &scope : resourceScopes) {
++ if (!m_account->scopes().contains(scope)) {
++ m_account->addScope(scope);
++ }
++ }
++
++ auto authJob = new AuthJob(m_account, m_settings.clientId(), m_settings.clientSecret(), this);
++ authJob->setProperty(JOB_PROPERTY, QVariant::fromValue(job));
++ connect(authJob, &AuthJob::finished, this, &GoogleSettingsWidget::slotAuthJobFinished);
++
++ return false;
++ }
++
++ KMessageBox::error(this, job->errorString());
++ return false;
++}
++
++void GoogleSettingsWidget::accountChanged()
++{
++ if (!m_account) {
++ accountLabel->setText(i18n("not configured"));
++ calendarsList->setDisabled(true);
++ reloadCalendarsBtn->setDisabled(true);
++ calendarsList->clear();
++ taskListsList->setDisabled(true);
++ reloadTaskListsBtn->setDisabled(true);
++ taskListsList->clear();
++ return;
++ }
++ accountLabel->setText(QStringLiteral("%1").arg(m_account->accountName()));
++ slotReloadCalendars();
++ slotReloadTaskLists();
++}
++
++void GoogleSettingsWidget::loadSettings()
++{
++ const QString username = m_account && !m_account->accountName().isEmpty() ? m_account->accountName() : QString();
++ m_account = AccountPtr(new Account());
++ const QList resourceScopes = googleScopes();
++ for (const QUrl &scope : resourceScopes) {
++ if (!m_account->scopes().contains(scope)) {
++ m_account->addScope(scope);
++ }
++ }
++ auto authJob = new AuthJob(m_account, m_settings.clientId(), m_settings.clientSecret());
++ authJob->setUsername(username);
++ connect(authJob, &AuthJob::finished, this, &GoogleSettingsWidget::slotAuthJobFinished);
++}
++
++void GoogleSettingsWidget::slotAuthJobFinished(KGAPI2::Job *job)
++{
++ auto authJob = qobject_cast(job);
++ m_account = authJob->account();
++ if (authJob->error() != KGAPI2::NoError) {
++ KMessageBox::error(this, authJob->errorString());
++ return;
++ }
++ accountChanged();
++
++ auto otherJob = job->property(JOB_PROPERTY).value();
++ if (otherJob) {
++ otherJob->setAccount(m_account);
++ otherJob->restart();
++ }
++}
++
++void GoogleSettingsWidget::saveSettings()
++{
++ auto reset = [this] {
++ m_settings.setAccount({});
++ m_settings.setEnableIntervalCheck(enableRefresh->isChecked());
++ m_settings.setIntervalCheckTime(refreshSpinBox->value());
++ m_settings.setCalendars({});
++ m_settings.setTaskLists({});
++ m_settings.setEventsSince({});
++ m_settings.save();
++ };
++
++ if (!m_account) {
++ reset();
++ return;
++ }
++
++ auto writeJob = m_settings.storeAccount(m_account);
++ connect(writeJob, &WritePasswordJob::finished, this, [this, reset, writeJob]() {
++ if (writeJob->error()) {
++ qCWarning(GOOGLE_LOG) << "Failed to store account's password in secret storage" << writeJob->errorString();
++ reset();
++ return;
++ }
++
++ m_settings.setAccount(m_account->accountName());
++ m_settings.setEnableIntervalCheck(enableRefresh->isChecked());
++ m_settings.setIntervalCheckTime(refreshSpinBox->value());
++
++ QStringList calendars;
++ for (int i = 0; i < calendarsList->count(); i++) {
++ QListWidgetItem *item = calendarsList->item(i);
++
++ if (item->checkState() == Qt::Checked) {
++ calendars.append(item->data(Qt::UserRole).toString());
++ }
++ }
++ m_settings.setCalendars(calendars);
++
++ if (eventsLimitCombo->isValid()) {
++ m_settings.setEventsSince(eventsLimitCombo->date().toString(Qt::ISODate));
++ }
++
++ QStringList taskLists;
++ for (int i = 0; i < taskListsList->count(); i++) {
++ QListWidgetItem *item = taskListsList->item(i);
++
++ if (item->checkState() == Qt::Checked) {
++ taskLists.append(item->data(Qt::UserRole).toString());
++ }
++ }
++ m_settings.setTaskLists(taskLists);
++ m_settings.save();
++ });
++}
++
++void GoogleSettingsWidget::slotReloadCalendars()
++{
++ calendarsList->setDisabled(true);
++ reloadCalendarsBtn->setDisabled(true);
++ calendarsList->clear();
++
++ if (!m_account) {
++ return;
++ }
++
++ auto fetchJob = new CalendarFetchJob(m_account, this);
++ connect(fetchJob, &CalendarFetchJob::finished, this, [this](KGAPI2::Job *job) {
++ if (!handleError(job) || !m_account) {
++ calendarsList->setEnabled(false);
++ reloadCalendarsBtn->setEnabled(false);
++ return;
++ }
++
++ const ObjectsList objects = qobject_cast(job)->items();
++
++ QStringList activeCalendars;
++ if (m_account->accountName() == m_settings.account()) {
++ activeCalendars = m_settings.calendars();
++ }
++ calendarsList->clear();
++ for (const ObjectPtr &object : objects) {
++ const CalendarPtr calendar = object.dynamicCast();
++
++ auto item = new QListWidgetItem(calendar->title());
++ item->setData(Qt::UserRole, calendar->uid());
++ item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable);
++ item->setCheckState((activeCalendars.isEmpty() || activeCalendars.contains(calendar->uid())) ? Qt::Checked : Qt::Unchecked);
++ calendarsList->addItem(item);
++ }
++
++ calendarsList->setEnabled(true);
++ reloadCalendarsBtn->setEnabled(true);
++ });
++}
++
++void GoogleSettingsWidget::slotReloadTaskLists()
++{
++ if (!m_account) {
++ return;
++ }
++
++ taskListsList->setDisabled(true);
++ reloadTaskListsBtn->setDisabled(true);
++ taskListsList->clear();
++
++ auto job = new TaskListFetchJob(m_account, this);
++ connect(job, &TaskListFetchJob::finished, this, [this](KGAPI2::Job *job) {
++ if (!handleError(job) || !m_account) {
++ taskListsList->setDisabled(true);
++ reloadTaskListsBtn->setDisabled(true);
++ return;
++ }
++
++ const ObjectsList objects = qobject_cast(job)->items();
++
++ QStringList activeTaskLists;
++ if (m_account->accountName() == m_settings.account()) {
++ activeTaskLists = m_settings.taskLists();
++ }
++ taskListsList->clear();
++ for (const ObjectPtr &object : objects) {
++ const TaskListPtr taskList = object.dynamicCast();
++
++ auto item = new QListWidgetItem(taskList->title());
++ item->setData(Qt::UserRole, taskList->uid());
++ item->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable);
++ item->setCheckState((activeTaskLists.isEmpty() || activeTaskLists.contains(taskList->uid())) ? Qt::Checked : Qt::Unchecked);
++ taskListsList->addItem(item);
++ }
++
++ taskListsList->setEnabled(true);
++ reloadTaskListsBtn->setEnabled(true);
++ });
++}
+diff --git a/resources/google-groupware/googlesettingsdialog.h b/resources/google-groupware/googlesettingswidget.h
+similarity index 53%
+rename from resources/google-groupware/googlesettingsdialog.h
+rename to resources/google-groupware/googlesettingswidget.h
+index a7d6ca0c92..4226a39d2d 100644
+--- a/resources/google-groupware/googlesettingsdialog.h
++++ b/resources/google-groupware/googlesettingswidget.h
+@@ -7,40 +7,37 @@
+
+ #pragma once
+
++#include "googlesettings.h"
++#include "ui_googlesettingswidget.h"
+ #include
+-#include
+
+-namespace Ui
+-{
+-class GoogleSettingsDialog;
+-}
+ namespace KGAPI2
+ {
+ class Job;
+ }
+-class GoogleResource;
+-class GoogleSettings;
+-
+-class GoogleSettingsDialog : public QDialog
++class GoogleSettingsWidget : public QWidget, private Ui::GoogleSettingsWidget
+ {
+ Q_OBJECT
+ public:
+- explicit GoogleSettingsDialog(GoogleResource *resource, GoogleSettings *settings, WId wId);
+- ~GoogleSettingsDialog() override;
++ explicit GoogleSettingsWidget(GoogleSettings &settings, const QString &identifier, QWidget *parent);
++ ~GoogleSettingsWidget() override;
++
++ void loadSettings();
++ void saveSettings();
++
++Q_SIGNALS:
++ void okEnabled(bool enabled);
+
+ protected:
+ bool handleError(KGAPI2::Job *job);
+ void accountChanged();
+
+ private:
+- void slotConfigure();
+ void slotAuthJobFinished(KGAPI2::Job *job);
+- void slotSaveSettings();
+ void slotReloadCalendars();
+ void slotReloadTaskLists();
+
+- GoogleResource *const m_resource;
+- GoogleSettings *const m_settings;
+- Ui::GoogleSettingsDialog *const m_ui;
++ GoogleSettings &m_settings;
+ KGAPI2::AccountPtr m_account;
++ const QString m_identifier;
+ };
+diff --git a/resources/google-groupware/googlesettingsdialog.ui b/resources/google-groupware/googlesettingswidget.ui
+similarity index 99%
+rename from resources/google-groupware/googlesettingsdialog.ui
+rename to resources/google-groupware/googlesettingswidget.ui
+index 9ff9bc93b4..75fdfd24f1 100644
+--- a/resources/google-groupware/googlesettingsdialog.ui
++++ b/resources/google-groupware/googlesettingswidget.ui
+@@ -1,6 +1,6 @@
+
+
+- GoogleSettingsDialog
++ GoogleSettingsWidget
+
+
+
+diff --git a/resources/google-groupware/settingsbase.kcfg b/resources/google-groupware/settingsbase.kcfg
+index ac58395d71..7dfe8dfe92 100644
+--- a/resources/google-groupware/settingsbase.kcfg
++++ b/resources/google-groupware/settingsbase.kcfg
+@@ -4,7 +4,7 @@
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
+ http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
+-
++
+
+
+
+--
+GitLab
+
diff --git a/desktop/kde6/applications/kdepim-runtime-kf6/pspec.xml b/desktop/kde6/applications/kdepim-runtime-kf6/pspec.xml
new file mode 100755
index 0000000000..998b2d5d5b
--- /dev/null
+++ b/desktop/kde6/applications/kdepim-runtime-kf6/pspec.xml
@@ -0,0 +1,154 @@
+
+
+
+
+
+ kdepim-runtime-kf6
+ https://community.kde.org/KDE_PIM
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ LGPLv2
+ kontact-kf6
+ library
+ app:gui
+ kde6 PIM Runtime Environment
+ kdepim-runtime-kf6 contains kde6 PIM (Personal Information Management) runtime environment like akonadi agents.
+ mirrors://kde/stable/release-service/24.02.0/src/kdepim-runtime-24.02.0.tar.xz
+
+ kdoctools-kf6-devel
+ boost-devel
+ shared-mime-info
+ akonadi-kf6-devel
+ akonadi-calendar-kf6-devel
+ akonadi-search-kf6-devel
+ kcmutils-kf6-devel
+
+
+
+ kitemmodels-kf6-devel
+
+ kunitconversion-kf6-devel
+ knotifyconfig-kf6-devel
+
+ kmailtransport-kf6-devel
+ kidentitymanagement-kf6-devel
+ kalarm-kf6
+ kcalutils-kf6-devel
+ kmbox-kf6-devel
+ kimap-kf6-devel
+ libkgapi-kf6-devel
+ kholidays-kf6-devel
+ ksyndication-kf6-devel
+ pimcommon-kf6-devel
+ cyrus-sasl-devel
+ qt6-declarative-devel
+
+
+
+ qt6-webengine-devel
+ extra-cmake-modules-kf6
+ qt6-location-devel
+ qt6-networkauth-kf6-devel
+ akonadi-mime-kf6-devel
+ akonadi-notes-kf6-devel
+ akonadi-contacts-kf6-devel
+ qt6-speech-devel
+ kdav-kf6-devel
+ ffmpeg-devel
+ kldap-kf6-devel
+ libkdepim-kf6-devel
+ libXScrnSaver-devel
+ qca2-qt6-devel
+ qt6-keychain-devel
+
+
+
+
+
+ kdepim-runtime-kf6
+
+ akonadi-kf6
+ libkgapi-kf6
+ kio-kf6
+ ki18n-kf6
+ kimap-kf6
+ kmbox-kf6
+ kmime-kf6
+ libgcc
+ kcodecs-kf6
+ kconfig-kf6
+ kwallet-kf6
+ kxmlgui-kf6
+ kcalendarcore-kf6
+ kcmutils-kf6
+ kservice-kf6
+ qt6-base
+ kalarm-kf6
+ kcalutils-kf6
+ kitemviews-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kdbusaddons-kf6
+ kitemmodels-kf6
+ pimcommon-kf6
+ kcontacts-kf6
+ kjobwidgets-kf6
+ knotifyconfig-kf6
+ kwindowsystem-kf6
+ kconfigwidgets-kf6
+ kmailtransport-kf6
+ ktextwidgets-kf6
+ knotifications-kf6
+ kwidgetsaddons-kf6
+ qt6-speech
+
+ akonadi-calendar-kf6
+
+ cyrus-sasl
+ akonadi-mime-kf6
+ akonadi-notes-kf6
+ qt6-webengine
+ qt6-networkauth-kf6
+ akonadi-contacts-kf6
+ kidentitymanagement-kf6
+ kdav-kf6
+ kldap-kf6
+ libkdepim-kf6
+ qt6-keychain
+
+
+ /etc/xdg
+ /usr/lib
+ /usr/bin
+ /usr/share
+ /usr/share/mime
+ /usr/share/kservice-kf6types5
+ /usr/share/kservice-kf6s5
+ /usr/share/knotifications-kf65
+ /usr/share/icons
+ /usr/share/dbus-1
+ /usr/share/akonadi
+ /usr/share/ontology
+ /usr/share/autostart
+ /usr/share/applications
+ /usr/share/doc
+ /usr/share/locale
+
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
diff --git a/desktop/kde6/applications/kdepim-runtime-kf6/translations.xml b/desktop/kde6/applications/kdepim-runtime-kf6/translations.xml
new file mode 100755
index 0000000000..7eede31d12
--- /dev/null
+++ b/desktop/kde6/applications/kdepim-runtime-kf6/translations.xml
@@ -0,0 +1,8 @@
+
+
+
+ kdepim-runtime-kf6
+ kde6 PIM (Kişisel Bilgi Yönetimi) çalışma zamanı ortamı
+ kdepim-runtime-kf6, kdelibs kullanarak yazılmış olan Akonadi ajanları da dahil olmak üzere kde6 PIM (Personal Information Management - Kişisel Bilgi Yönetimi) çalışma zamanı ortamını içerir.
+
+
diff --git a/desktop/kde6/applications/mailcommon-kf6/actions.py b/desktop/kde6/applications/mailcommon-kf6/actions.py
new file mode 100755
index 0000000000..6ef5f51338
--- /dev/null
+++ b/desktop/kde6/applications/mailcommon-kf6/actions.py
@@ -0,0 +1,20 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# Licensed under the GNU General Public License, version 3.
+# See the file http://www.gnu.org/licenses/gpl.txt
+
+from pisi.actionsapi import pisitools
+from pisi.actionsapi import kde6
+
+def setup():
+ kde6.configure()
+
+def build():
+ kde6.make()
+
+def install():
+ kde6.install()
+
+ pisitools.dodoc("LICENSES/*")
+
diff --git a/desktop/kde6/applications/mailcommon-kf6/pspec.xml b/desktop/kde6/applications/mailcommon-kf6/pspec.xml
new file mode 100755
index 0000000000..3cbbefd117
--- /dev/null
+++ b/desktop/kde6/applications/mailcommon-kf6/pspec.xml
@@ -0,0 +1,135 @@
+
+
+
+
+
+ mailcommon-kf6
+ https://www.kde.org
+
+ Pisi Linux Admins
+ admin@pisilinux.org
+
+ LGPLv2
+ library
+ app:library
+ KDE PIM library providing support for mail applications
+ KDE PIM library providing support for mail applications
+ mirrors://kde/stable/release-service/24.02.0/src/mailcommon-24.02.0.tar.xz
+
+ qt6-base-devel
+ qt6-phonon-devel
+ extra-cmake-modules-kf6
+ boost-devel
+ glibc-devel
+ libical-devel
+ gettext-devel
+ qt6-designer-devel
+ kdoctools-kf6-devel
+ mailimporter-kf6-devel
+ messagelib-kf6-devel
+ libgravatar-kf6-devel
+ kidentitymanagement-kf6-devel
+ kmailtransport-kf6-devel
+ kmbox-kf6-devel
+ akonadi-kf6-devel
+ kjobwidgets-kf6-devel
+ solid-kf6-devel
+ kitemmodels-kf6-devel
+
+
+
+ kunitconversion-kf6-devel
+ kmime-kf6-devel
+ kcontacts-kf6-devel
+ kcalendarcore-kf6-devel
+
+ kpimtextedit-kf6-devel
+ kimap-kf6-devel
+ kldap-kf6-devel
+ grantleetheme-kf6-devel
+ pimcommon-kf6-devel
+ libkleo-kf6-devel
+ libkdepim-kf6-devel
+ gpgme-devel
+ gpgme-qt6-devel
+ akonadi-mime-kf6-devel
+ akonadi-contacts-kf6-devel
+ grantlee-qt5-devel
+ openldap-client
+ cyrus-sasl-devel
+ syntax-highlighting-kf6-devel
+ karchive-kf6-devel
+ kguiaddons-kf6-devel
+ qt6-webengine-devel
+
+
+
+
+ mailcommon-kf6
+
+ qt6-base
+ qt6-webengine
+ akonadi-contacts-kf6
+ libgcc
+ libkdepim-kf6
+ akonadi-mime-kf6
+ mailimporter-kf6
+ kio-kf6
+ ki18n-kf6
+ kmime-kf6
+ akonadi-kf6
+ kcodecs-kf6
+ kconfig-kf6
+ kxmlgui-kf6
+ karchive-kf6
+ kcontacts-kf6
+ pimcommon-kf6
+ kitemviews-kf6
+ messagelib-kf6
+ qt6-phonon
+ kguiaddons-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kiconthemes-kf6
+ kitemmodels-kf6
+ kpimtextedit-kf6
+ ktextwidgets-kf6
+ kwindowsystem-kf6
+ kconfigwidgets-kf6
+ kmailtransport-kf6
+ kwidgetsaddons-kf6
+ kidentitymanagement-kf6
+
+
+ /etc
+ /usr/share
+ /usr/lib/qt6
+ /usr/lib
+ /usr/share/doc
+
+
+
+
+ mailcommon-kf6-devel
+ Development files for mailcommon-kf6
+
+ qt6-webengine-devel
+ mailcommon-kf6
+
+
+ /usr/include
+ /usr/lib/cmake
+ /usr/lib/pkgconfig
+
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
diff --git a/pisi-index.xml b/pisi-index.xml
index 9764fe6862..1e5ed6ed8c 100644
--- a/pisi-index.xml
+++ b/pisi-index.xml
@@ -50234,7 +50234,7 @@ Gnome session.
Development files for gpgme
gpgme için geliştirme dosyaları
- gpgme
+ gpgme
libgpg-error-devel
libassuan-devel
glib2-devel
@@ -50243,27 +50243,28 @@ Gnome session.
/usr/include
/usr/share/aclocal
/usr/lib/pkgconfig
+ /usr/include/qgpgme/*
+ /usr/include/QGpgME/*
gpgme-qt5
Qt5 bindings for gpgme
- gpgme
+ gpgme
libgcc
qt5-base
libgpg-error
/usr/lib/libqgpgme.so*
- /usr/lib/cmake/Qgpgme
gpgme-python
Python bindings for gpgme
- gpgme
+ gpgme
python
@@ -50275,7 +50276,7 @@ Gnome session.
Python3 bindings for gpgme
python3
- gpgme
+ gpgme
/usr/lib/python3*/site-packages/
@@ -50286,21 +50287,20 @@ Gnome session.
Development files for gpgme-qt5
qt5-base-devel
- gpgme
- gpgme-qt5
- gpgme-devel
+ gpgme
+ gpgme-qt5
+ gpgme-devel
- /usr/lib/cmake/QGpgme
- /usr/include/qgpgme/*
- /usr/include/QGpgME/*
+ /usr/lib/cmake/QGpgme/QGpgmeConfig.cmake
+ /usr/lib/cmake/QGpgme/QGpgmeConfigVersion.cmake
gpgme-qt6
Qt6 bindings for gpgme
- gpgme
+ gpgme
libgcc
qt6-base
libgpg-error
@@ -50314,15 +50314,22 @@ Gnome session.
Development files for gpgme-qt6
qt6-base-devel
- gpgme
- gpgme-qt6
- gpgme-devel
+ gpgme
+ gpgme-qt6
+ gpgme-devel
/usr/lib/cmake/QGpgmeQt6
+
+ 2024-03-06
+ 1.23.2
+ Rebuild.
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
2023-11-29
1.23.2
@@ -128637,6 +128644,75 @@ Bu Skype SILK codec ve Xiph.Org 's Celt codec teknolojisi dahil RFC 6716 ol
+
+
+ akonadi-calendar-tools-kf6
+ https://community.kde.org/KDE_PIM
+
+ Stefan Gronewold
+ groni@pisilinux.org
+
+ GPLv2
+ desktop.kde6.applications
+ CLI tools to manage akonadi calendars
+ CLI tools to manage akonadi calendars
+ http://download.kde.org/stable/release-service/24.02.0/src/akonadi-calendar-tools-24.02.0.tar.xz
+
+ boost-devel
+ akonadi-kf6-devel
+ akonadi-calendar-kf6-devel
+ extra-cmake-modules-kf6
+ kdoctools-kf6-devel
+ qt6-base-devel
+ kcompletion-kf6-devel
+ kxmlgui-kf6-devel
+ kitemmodels-kf6-devel
+ kcontacts-kf6-devel
+ kcalendarcore-kf6-devel
+ kunitconversion-kf6-devel
+ akonadi-contacts-kf6-devel
+ kcalutils-kf6-devel
+ libkdepim-kf6-devel
+ calendarsupport-kf6-devel
+ kmime-kf6-devel
+ kidentitymanagement-kf6-devel
+ akonadi-notes-kf6-devel
+
+ desktop/kde6/applications/akonadi-calendar-tools-kf6/pspec.xml
+
+
+ akonadi-calendar-tools-kf6
+ CLI tools to manage akonadi calendars
+
+ ki18n-kf6
+ libgcc
+ akonadi-kf6
+ kconfig-kf6
+ kcalendarcore-kf6
+ qt6-base
+ kcalutils-kf6
+ kcoreaddons-kf6
+ calendarsupport-kf6
+ akonadi-calendar-kf6
+ akonadi-notes-kf6
+
+
+ /etc/xdg
+ /usr/bin
+ /usr/share
+ /usr/share/doc
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
kpat-kf6
@@ -128875,6 +128951,125 @@ Bu Skype SILK codec ve Xiph.Org 's Celt codec teknolojisi dahil RFC 6716 ol
+
+
+ incidenceeditor-kf6
+ https://community.kde.org/KDE_PIM
+
+ Alihan Öztürk
+ alihan@pisilinux.org
+
+ LGPLv2
+ app:console
+ desktop.kde6.applications
+ KDE PIM incidence editor.
+ KDE PIM incidence editor.
+ http://download.kde.org/stable/release-service/24.02.0/src/incidenceeditor-24.02.0.tar.xz
+
+ extra-cmake-modules-kf6
+ qt6-base-devel
+ akonadi-kf6-devel
+ kcompletion-kf6-devel
+ kjobwidgets-kf6-devel
+ kcoreaddons-kf6-devel
+ kservice-kf6-devel
+ solid-kf6-devel
+ kxmlgui-kf6-devel
+ kitemmodels-kf6-devel
+ kdoctools-kf6-devel
+ kunitconversion-kf6-devel
+ boost-devel
+ kmime-kf6-devel
+ kldap-kf6-devel
+ cyrus-sasl-devel
+ calendarsupport-kf6-devel
+ kidentitymanagement-kf6-devel
+ akonadi-calendar-kf6-devel
+ kcalendarcore-kf6-devel
+ kcontacts-kf6-devel
+ eventviews-kf6-devel
+ kcalutils-kf6-devel
+ kdiagram-kf6-devel
+ kmailtransport-kf6-devel
+ libkdepim-kf6-devel
+ akonadi-mime-kf6-devel
+ akonadi-contacts-kf6-devel
+ pimcommon-kf6-devel
+ kimap-kf6-devel
+ kiconthemes-kf6-devel
+
+ desktop/kde6/applications/incidenceeditor-kf6/pspec.xml
+
+
+ incidenceeditor-kf6
+ KDE PIM incidence editor.
+
+ kio-kf6
+ ki18n-kf6
+ kldap-kf6
+ kmime-kf6
+ kimap-kf6
+ libgcc
+ akonadi-kf6
+ kcodecs-kf6
+ kconfig-kf6
+ kxmlgui-kf6
+ kdiagram-kf6
+ kservice-kf6
+ kcalutils-kf6
+ kcontacts-kf6
+ libkdepim-kf6
+ pimcommon-kf6
+ eventviews-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kiconthemes-kf6
+ kitemmodels-kf6
+ kjobwidgets-kf6
+ kpimtextedit-kf6
+ ktextwidgets-kf6
+ akonadi-mime-kf6
+ kcalendarcore-kf6
+ kconfigwidgets-kf6
+ kmailtransport-kf6
+ kwidgetsaddons-kf6
+ calendarsupport-kf6
+ akonadi-contacts-kf6
+ akonadi-calendar-kf6
+ kidentitymanagement-kf6
+ qt6-base
+
+
+ /etc/xdg
+ /usr/lib
+ /usr/lib/qt6
+ /usr/share
+ /usr/share/doc
+ /usr/share/locale
+
+
+
+ incidenceeditor-kf6-devel
+ Development files for incidenceeditor-kf6.
+
+ incidenceeditor-kf6
+
+
+ /usr/include
+ /usr/lib/pkgconfig
+ /usr/lib/cmake
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
khelpcenter-kf6
@@ -129996,6 +130191,108 @@ Bu Skype SILK codec ve Xiph.Org 's Celt codec teknolojisi dahil RFC 6716 ol
+
+
+ calendarsupport-kf6
+ https://community.kde.org/KDE_PIM
+
+ Alihan Öztürk
+ alihan@pisilinux.org
+
+ LGPLv2
+ app:console
+ desktop.kde6.applications
+ Calendar support library
+ Calendar support library
+ mirrors://kde/stable/release-service/24.02.0/src/calendarsupport-24.02.0.tar.xz
+
+ extra-cmake-modules-kf6
+ qt6-base-devel
+ akonadi-kf6-devel
+ kmime-kf6-devel
+ ki18n-kf6-devel
+ kcodecs-kf6-devel
+ kcompletion-kf6-devel
+ kjobwidgets-kf6-devel
+ kcoreaddons-kf6-devel
+ kservice-kf6-devel
+ solid-kf6-devel
+ kxmlgui-kf6-devel
+ kitemmodels-kf6-devel
+ kdoctools-kf6-devel
+ kunitconversion-kf6-devel
+ boost-devel
+ kcalutils-kf6-devel
+ kcalendarcore-kf6-devel
+ kidentitymanagement-kf6-devel
+ kholidays-kf6-devel
+ akonadi-calendar-kf6-devel
+ kcontacts-kf6-devel
+ pimcommon-kf6-devel
+ kimap-kf6-devel
+ cyrus-sasl-devel
+ akonadi-mime-kf6-devel
+ akonadi-contacts-kf6-devel
+ akonadi-notes-kf6-devel
+ kguiaddons-kf6-devel
+
+ desktop/kde6/applications/calendarsupport-kf6/pspec.xml
+
+
+ calendarsupport-kf6
+ Calendar support library
+
+ kio-kf6
+ ki18n-kf6
+ kmime-kf6
+ libgcc
+ akonadi-kf6
+ kcodecs-kf6
+ kconfig-kf6
+ kcalendarcore-kf6
+ qt6-base
+ kcalutils-kf6
+ kholidays-kf6
+ pimcommon-kf6
+ kguiaddons-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kiconthemes-kf6
+ kjobwidgets-kf6
+ kwidgetsaddons-kf6
+ akonadi-calendar-kf6
+ kidentitymanagement-kf6
+
+
+ /etc
+ /usr/lib/qt6
+ /usr/lib
+ /usr/share
+ /usr/share/kservice-kf6types5
+ /usr/share/locale
+
+
+
+ calendarsupport-kf6-devel
+ Development files for calendarsupport-kf6
+
+ calendarsupport-kf6
+
+
+ /usr/include
+ /usr/lib/cmake
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
kdegraphics-thumbnailers-kf6
@@ -131472,6 +131769,7 @@ Bu Skype SILK codec ve Xiph.Org 's Celt codec teknolojisi dahil RFC 6716 ol
kcodecs-kf6-devel
kdoctools-kf6-devel
boost-devel
+ kio-kf6-devel
kitemmodels-kf6-devel
kunitconversion-kf6-devel
kmailtransport-kf6-devel
@@ -135119,6 +135417,107 @@ Bu Skype SILK codec ve Xiph.Org 's Celt codec teknolojisi dahil RFC 6716 ol
+
+
+ eventviews-kf6
+ https://community.kde.org/KDE_PIM
+
+ Alihan Öztürk
+ alihan@pisilinux.org
+
+ LGPLv2
+ app:console
+ desktop.kde6.applications
+ Library for creating events.
+ Library for creating events.
+ mirrors://kde/stable/release-service/24.02.0/src/eventviews-24.02.0.tar.xz
+
+ extra-cmake-modules-kf6
+ qt6-base-devel
+ akonadi-kf6-devel
+ kcompletion-kf6-devel
+ kjobwidgets-kf6-devel
+ kcoreaddons-kf6-devel
+ kservice-kf6-devel
+ solid-kf6-devel
+ kxmlgui-kf6-devel
+ kitemmodels-kf6-devel
+ kdoctools-kf6-devel
+ kunitconversion-kf6-devel
+ boost-devel
+ libkdepim-kf6-devel
+ kcontacts-kf6-devel
+ kcalendarcore-kf6-devel
+ kcalutils-kf6-devel
+ calendarsupport-kf6-devel
+ kmime-kf6-devel
+ kidentitymanagement-kf6-devel
+ akonadi-calendar-kf6-devel
+ akonadi-contacts-kf6-devel
+ kdiagram-kf6-devel
+ kholidays-kf6-devel
+ kguiaddons-kf6-devel
+ kiconthemes-kf6-devel
+
+ desktop/kde6/applications/eventviews-kf6/pspec.xml
+
+
+ eventviews-kf6
+ Library for creating events.
+
+ ki18n-kf6
+ libgcc
+ akonadi-kf6
+ kcodecs-kf6
+ kconfig-kf6
+ kcalendarcore-kf6
+ kdiagram-kf6
+ kservice-kf6
+ qt6-base
+ kcalutils-kf6
+ kcontacts-kf6
+ libkdepim-kf6
+ kguiaddons-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kiconthemes-kf6
+ kitemmodels-kf6
+ kconfigwidgets-kf6
+ kwidgetsaddons-kf6
+ calendarsupport-kf6
+ akonadi-calendar-kf6
+
+
+ /etc
+ /usr/lib
+ /usr/lib/qt6
+ /usr/share
+ /usr/share/doc
+ /usr/share/kservice-kf6types5
+ /usr/share/locale
+
+
+
+ eventviews-kf6-devel
+ Development files for eventviews-kf6.
+
+ eventviews-kf6
+
+
+ /usr/include
+ /usr/lib/cmake
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
lokalize-kf6
@@ -136653,6 +137052,7 @@ Bu Skype SILK codec ve Xiph.Org 's Celt codec teknolojisi dahil RFC 6716 ol
libkdepim-kf6-devel
gpgme-devel
gpgme-qt6-devel
+ gpgme-qt5-devel
grantlee-qt5-devel
qt6-declarative-devel
qt6-webengine-devel
@@ -137727,6 +138127,110 @@ Bu Skype SILK codec ve Xiph.Org 's Celt codec teknolojisi dahil RFC 6716 ol
+
+
+ akregator-kf6
+ https://community.kde.org/KDE_PIM
+
+ Stefan Gronewold
+ groni@pisilinux.org
+
+ GPLv2
+ desktop.kde6.applications
+ A KDE blogging client
+ akregator-kf6 helps you to keep informed about new stories on websites like KDE Dot News and Planet KDE blogs. The technology used is RSS and many sites support it.
+ http://download.kde.org/stable/release-service/24.02.0/src/akregator-24.02.0.tar.xz
+
+ boost-devel
+ extra-cmake-modules-kf6
+ kblog-kf6-devel
+ kdoctools-kf6-devel
+ kio-kf6-devel
+ ktexteditor-kf6-devel
+ python-devel
+ qt6-base-devel
+ qt6-webengine-devel
+ grantlee-qt5-devel
+ kcmutils-kf6-devel
+ knotifyconfig-kf6-devel
+ akonadi-mime-kf6-devel
+ akonadi-kf6-devel
+ kitemmodels-kf6-devel
+ grantleetheme-kf6-devel
+ kcontacts-kf6-devel
+ kontactinterface-kf6-devel
+ libkdepim-kf6-devel
+ akonadi-contacts-kf6-devel
+ libkleo-kf6-devel
+ gpgme-devel
+ gpgme-qt6-devel
+ messagelib-kf6-devel
+ pimcommon-kf6-devel
+ kimap-kf6-devel
+ kmime-kf6-devel
+ cyrus-sasl-devel
+ kpimtextedit-kf6-devel
+ ksyndication-kf6-devel
+ ffmpeg-devel
+ knotifyconfig-kf6-devel
+ knotifications-kf6-devel
+ kuserfeedback-kf6-devel
+ libXScrnSaver-devel
+
+ desktop/kde6/applications/akregator-kf6/pspec.xml
+
+
+ akregator-kf6
+ A Feed Reader by KDE
+
+ kio-kf6
+ ki18n-kf6
+ kcrash-kf6
+ kparts-kf6
+ libgcc
+ kcodecs-kf6
+ kconfig-kf6
+ kxmlgui-kf6
+ kcmutils-kf6
+ kservice-kf6
+ qt6-base
+ libkdepim-kf6
+ pimcommon-kf6
+ messagelib-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kiconthemes-kf6
+ kjobwidgets-kf6
+ kpimtextedit-kf6
+ ksyndication-kf6
+ ktextwidgets-kf6
+ grantleetheme-kf6
+ knotifyconfig-kf6
+ qt6-webengine
+ kconfigwidgets-kf6
+ knotifications-kf6
+ kwidgetsaddons-kf6
+ kontactinterface-kf6
+
+
+ /etc/xdg
+ /usr/bin
+ /usr/lib
+ /usr/lib/qt6
+ /usr/share
+ /usr/share/doc
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
granatier-kf6
@@ -137800,6 +138304,112 @@ Bu Skype SILK codec ve Xiph.Org 's Celt codec teknolojisi dahil RFC 6716 ol
+
+
+ akonadiconsole-kf6
+ https://community.kde.org/KDE_PIM
+
+ Stefan Gronewold
+ groni@pisilinux.org
+
+ GPLv2
+ desktop.kde6.applications
+ Akonadi management and debugging console
+ Akonadi management and debugging console
+ http://download.kde.org/stable/release-service/24.02.0/src/akonadiconsole-24.02.0.tar.xz
+
+ akonadi-contacts-kf6-devel
+ akonadi-kf6-devel
+ akonadi-calendar-kf6-devel
+ pimcommon-kf6-devel
+ akonadi-mime-kf6-devel
+ calendarsupport-kf6-devel
+ extra-cmake-modules-kf6
+ kimap-kf6-devel
+ kcalendarcore-kf6-devel
+ kcompletion-kf6-devel
+ kconfig-kf6-devel
+ kconfigwidgets-kf6-devel
+ kcontacts-kf6-devel
+ kcrash-kf6-devel
+ kdbusaddons-kf6-devel
+ kdoctools-kf6-devel
+ ki18n-kf6-devel
+ kitemmodels-kf6-devel
+ kmime-kf6-devel
+ kpimtextedit-kf6-devel
+ ktextwidgets-kf6-devel
+ kwidgetsaddons-kf6-devel
+ kxmlgui-kf6-devel
+ kio-kf6-devel
+ kitemviews-kf6-devel
+ akonadi-search-kf6-devel
+ libkdepim-kf6-devel
+ libkleo-kf6-devel
+ messagelib-kf6-devel
+ qt6-base-devel
+ qt6-sql-mysql
+ qt6-sql-postgresql
+ qt6-sql-sqlite
+ qt6-sql-odbc
+ kunitconversion-kf6-devel
+ kidentitymanagement-kf6-devel
+ cyrus-sasl-devel
+ gpgme-devel
+ gpgme-qt6-devel
+ ffmpeg-devel
+ libXScrnSaver-devel
+ qt6-webengine-devel
+
+ desktop/kde6/applications/akonadiconsole-kf6/pspec.xml
+
+
+ akonadiconsole-kf6
+ Akonadi management and debugging console
+
+ akonadi-kf6
+ akonadi-contacts-kf6
+ akonadi-mime-kf6
+ calendarsupport-kf6
+ kcalendarcore-kf6
+ qt6-base
+ ki18n-kf6
+ kmime-kf6
+ kcrash-kf6
+ libgcc
+ kconfig-kf6
+ kxmlgui-kf6
+ kcontacts-kf6
+ libkdepim-kf6
+ kitemviews-kf6
+ messagelib-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kdbusaddons-kf6
+ kitemmodels-kf6
+ kpimtextedit-kf6
+ ktextwidgets-kf6
+ kconfigwidgets-kf6
+ kwidgetsaddons-kf6
+
+
+ /etc/xdg
+ /usr/bin
+ /usr/share
+ /usr/share/doc
+ /usr/lib
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
kio-extras-kf6
@@ -137943,6 +138553,133 @@ Bu Skype SILK codec ve Xiph.Org 's Celt codec teknolojisi dahil RFC 6716 ol
+
+
+ mailcommon-kf6
+ https://www.kde.org
+
+ Pisi Linux Admins
+ admin@pisilinux.org
+
+ LGPLv2
+ library
+ app:library
+ desktop.kde6.applications
+ KDE PIM library providing support for mail applications
+ KDE PIM library providing support for mail applications
+ mirrors://kde/stable/release-service/24.02.0/src/mailcommon-24.02.0.tar.xz
+
+ qt6-base-devel
+ qt6-phonon-devel
+ extra-cmake-modules-kf6
+ boost-devel
+ glibc-devel
+ libical-devel
+ gettext-devel
+ qt6-designer-devel
+ kdoctools-kf6-devel
+ mailimporter-kf6-devel
+ messagelib-kf6-devel
+ libgravatar-kf6-devel
+ kidentitymanagement-kf6-devel
+ kmailtransport-kf6-devel
+ kmbox-kf6-devel
+ akonadi-kf6-devel
+ kjobwidgets-kf6-devel
+ solid-kf6-devel
+ kitemmodels-kf6-devel
+ kunitconversion-kf6-devel
+ kmime-kf6-devel
+ kcontacts-kf6-devel
+ kcalendarcore-kf6-devel
+ kpimtextedit-kf6-devel
+ kimap-kf6-devel
+ kldap-kf6-devel
+ grantleetheme-kf6-devel
+ pimcommon-kf6-devel
+ libkleo-kf6-devel
+ libkdepim-kf6-devel
+ gpgme-devel
+ gpgme-qt6-devel
+ akonadi-mime-kf6-devel
+ akonadi-contacts-kf6-devel
+ grantlee-qt5-devel
+ openldap-client
+ cyrus-sasl-devel
+ syntax-highlighting-kf6-devel
+ karchive-kf6-devel
+ kguiaddons-kf6-devel
+ qt6-webengine-devel
+
+ desktop/kde6/applications/mailcommon-kf6/pspec.xml
+
+
+ mailcommon-kf6
+
+ qt6-base
+ qt6-webengine
+ akonadi-contacts-kf6
+ libgcc
+ libkdepim-kf6
+ akonadi-mime-kf6
+ mailimporter-kf6
+ kio-kf6
+ ki18n-kf6
+ kmime-kf6
+ akonadi-kf6
+ kcodecs-kf6
+ kconfig-kf6
+ kxmlgui-kf6
+ karchive-kf6
+ kcontacts-kf6
+ pimcommon-kf6
+ kitemviews-kf6
+ messagelib-kf6
+ qt6-phonon
+ kguiaddons-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kiconthemes-kf6
+ kitemmodels-kf6
+ kpimtextedit-kf6
+ ktextwidgets-kf6
+ kwindowsystem-kf6
+ kconfigwidgets-kf6
+ kmailtransport-kf6
+ kwidgetsaddons-kf6
+ kidentitymanagement-kf6
+
+
+ /etc
+ /usr/share
+ /usr/lib/qt6
+ /usr/lib
+ /usr/share/doc
+
+
+
+ mailcommon-kf6-devel
+ Development files for mailcommon-kf6
+
+ qt6-webengine-devel
+ mailcommon-kf6
+
+
+ /usr/include
+ /usr/lib/cmake
+ /usr/lib/pkgconfig
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
mailimporter-kf6
@@ -138383,6 +139120,144 @@ Bu Skype SILK codec ve Xiph.Org 's Celt codec teknolojisi dahil RFC 6716 ol
+
+
+ kdepim-runtime-kf6
+ https://community.kde.org/KDE_PIM
+
+ PisiLinux Community
+ admins@pisilinux.org
+
+ LGPLv2
+ library
+ app:gui
+ desktop.kde6.applications
+ kde6 PIM Runtime Environment
+ kde6 PIM (Kişisel Bilgi Yönetimi) çalışma zamanı ortamı
+ kdepim-runtime-kf6 contains kde6 PIM (Personal Information Management) runtime environment like akonadi agents.
+ kdepim-runtime-kf6, kdelibs kullanarak yazılmış olan Akonadi ajanları da dahil olmak üzere kde6 PIM (Personal Information Management - Kişisel Bilgi Yönetimi) çalışma zamanı ortamını içerir.
+ kontact-kf6
+ mirrors://kde/stable/release-service/24.02.0/src/kdepim-runtime-24.02.0.tar.xz
+
+ kdoctools-kf6-devel
+ boost-devel
+ shared-mime-info
+ akonadi-kf6-devel
+ akonadi-calendar-kf6-devel
+ akonadi-search-kf6-devel
+ kcmutils-kf6-devel
+ kitemmodels-kf6-devel
+ kunitconversion-kf6-devel
+ knotifyconfig-kf6-devel
+ kmailtransport-kf6-devel
+ kidentitymanagement-kf6-devel
+ kalarm-kf6
+ kcalutils-kf6-devel
+ kmbox-kf6-devel
+ kimap-kf6-devel
+ libkgapi-kf6-devel
+ kholidays-kf6-devel
+ ksyndication-kf6-devel
+ pimcommon-kf6-devel
+ cyrus-sasl-devel
+ qt6-declarative-devel
+ qt6-webengine-devel
+ extra-cmake-modules-kf6
+ qt6-location-devel
+ qt6-networkauth-kf6-devel
+ akonadi-mime-kf6-devel
+ akonadi-notes-kf6-devel
+ akonadi-contacts-kf6-devel
+ qt6-speech-devel
+ kdav-kf6-devel
+ ffmpeg-devel
+ kldap-kf6-devel
+ libkdepim-kf6-devel
+ libXScrnSaver-devel
+ qca2-qt6-devel
+ qt6-keychain-devel
+
+ desktop/kde6/applications/kdepim-runtime-kf6/pspec.xml
+
+
+ kdepim-runtime-kf6
+
+ akonadi-kf6
+ libkgapi-kf6
+ kio-kf6
+ ki18n-kf6
+ kimap-kf6
+ kmbox-kf6
+ kmime-kf6
+ libgcc
+ kcodecs-kf6
+ kconfig-kf6
+ kwallet-kf6
+ kxmlgui-kf6
+ kcalendarcore-kf6
+ kcmutils-kf6
+ kservice-kf6
+ qt6-base
+ kalarm-kf6
+ kcalutils-kf6
+ kitemviews-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kdbusaddons-kf6
+ kitemmodels-kf6
+ pimcommon-kf6
+ kcontacts-kf6
+ kjobwidgets-kf6
+ knotifyconfig-kf6
+ kwindowsystem-kf6
+ kconfigwidgets-kf6
+ kmailtransport-kf6
+ ktextwidgets-kf6
+ knotifications-kf6
+ kwidgetsaddons-kf6
+ qt6-speech
+ akonadi-calendar-kf6
+ cyrus-sasl
+ akonadi-mime-kf6
+ akonadi-notes-kf6
+ qt6-webengine
+ qt6-networkauth-kf6
+ akonadi-contacts-kf6
+ kidentitymanagement-kf6
+ kdav-kf6
+ kldap-kf6
+ libkdepim-kf6
+ qt6-keychain
+
+
+ /etc/xdg
+ /usr/lib
+ /usr/bin
+ /usr/share
+ /usr/share/mime
+ /usr/share/kservice-kf6types5
+ /usr/share/kservice-kf6s5
+ /usr/share/knotifications-kf65
+ /usr/share/icons
+ /usr/share/dbus-1
+ /usr/share/akonadi
+ /usr/share/ontology
+ /usr/share/autostart
+ /usr/share/applications
+ /usr/share/doc
+ /usr/share/locale
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
libkcompactdisc-kf6
@@ -138794,6 +139669,100 @@ Bu Skype SILK codec ve Xiph.Org 's Celt codec teknolojisi dahil RFC 6716 ol
+
+
+ grantlee-editor-kf6
+ https://community.kde.org/KDE_PIM
+
+ Stefan Gronewold
+ groni@pisilinux.org
+
+ GPLv2
+ desktop.kde6.applications
+ Editor for Grantlee themes
+ Editor for Grantlee themes
+ mirrors://kde/stable/release-service/24.02.0/src/grantlee-editor-24.02.0.tar.xz
+
+ qt6-webengine-devel
+ kcrash-kf6-devel
+ extra-cmake-modules-kf6
+ kdbusaddons-kf6-devel
+ kdoctools-kf6-devel
+ kxmlgui-kf6-devel
+ qt6-base-devel
+ ktexteditor-kf6-devel
+ kwallet-kf6-devel
+ knewstuff-kf6-devel
+ karchive-kf6-devel
+ pimcommon-kf6-devel
+ messagelib-kf6-devel
+ grantleetheme-kf6-devel
+ akonadi-mime-kf6-devel
+ kpimtextedit-kf6-devel
+ libkdepim-kf6-devel
+ syntax-highlighting-kf6-devel
+ libkleo-kf6-devel
+ kparts-kf6-devel
+ gpgme-devel
+ gpgme-qt6-devel
+ cyrus-sasl-devel
+ akonadi-kf6-devel
+ kitemmodels-kf6-devel
+ kcontacts-kf6-devel
+ akonadi-contacts-kf6-devel
+ kimap-kf6-devel
+ kmime-kf6-devel
+ grantlee-qt5-devel
+ ffmpeg-devel
+ libXScrnSaver-devel
+
+ desktop/kde6/applications/grantlee-editor-kf6/pspec.xml
+
+
+ grantlee-editor-kf6
+ Editor for Grantlee themes
+
+ kio-kf6
+ ki18n-kf6
+ kmime-kf6
+ kcrash-kf6
+ libgcc
+ kconfig-kf6
+ kxmlgui-kf6
+ karchive-kf6
+ qt6-base
+ kcontacts-kf6
+ knewstuff-kf6
+ pimcommon-kf6
+ messagelib-kf6
+ kcompletion-kf6
+ kcoreaddons-kf6
+ kdbusaddons-kf6
+ kpimtextedit-kf6
+ qt6-webengine
+ kconfigwidgets-kf6
+ kwidgetsaddons-kf6
+ akonadi-contacts-kf6
+ syntax-highlighting-kf6
+
+
+ /etc/xdg
+ /usr/bin
+ /usr/lib
+ /usr/share
+ /usr/share/doc
+
+
+
+
+ 2024-03-03
+ 24.02.0
+ First release
+ Mustafa Cinasal
+ muscnsl@gmail.com
+
+
+
kqtquickcharts-kf6
diff --git a/pisi-index.xml.sha1sum b/pisi-index.xml.sha1sum
index 4072fd8a08..740e0d7c70 100644
--- a/pisi-index.xml.sha1sum
+++ b/pisi-index.xml.sha1sum
@@ -1 +1 @@
-05574e9557b0f60ff40a21e009e246d7adfecd7a
\ No newline at end of file
+69fbdc64a265d21e8df0dec3c028f79657b4c5aa
\ No newline at end of file
diff --git a/pisi-index.xml.xz b/pisi-index.xml.xz
index 6db45cc453..2b656d53da 100644
Binary files a/pisi-index.xml.xz and b/pisi-index.xml.xz differ
diff --git a/pisi-index.xml.xz.sha1sum b/pisi-index.xml.xz.sha1sum
index 6065ce0e94..e86e170d85 100644
--- a/pisi-index.xml.xz.sha1sum
+++ b/pisi-index.xml.xz.sha1sum
@@ -1 +1 @@
-007817af35698384e5a0c2fe7b696c463943b805
\ No newline at end of file
+d7b8e4bc22f6858d410c6644747460da9b87fcb0
\ No newline at end of file