Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package kf6-knotifications for openSUSE:Factory checked in at 2026-07-15 16:30:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kf6-knotifications (Old) and /work/SRC/openSUSE:Factory/.kf6-knotifications.new.1991 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kf6-knotifications" Wed Jul 15 16:30:50 2026 rev:29 rq:1365120 version:6.28.0 Changes: -------- --- /work/SRC/openSUSE:Factory/kf6-knotifications/kf6-knotifications.changes 2026-06-16 13:56:02.299789512 +0200 +++ /work/SRC/openSUSE:Factory/.kf6-knotifications.new.1991/kf6-knotifications.changes 2026-07-15 16:39:15.429693871 +0200 @@ -1,0 +2,12 @@ +Fri Jul 10 12:15:58 UTC 2026 - Christophe Marin <[email protected]> + +- Update to 6.28.0 + * New feature release + * For more details please see: + * https://kde.org/announcements/frameworks/6/6.28.0 +- Changes since 6.27.0: + * Update dependency version to 6.28.0 + * android: Modernize JNI code + * Update version to 6.28.0 + +------------------------------------------------------------------- Old: ---- knotifications-6.27.0.tar.xz knotifications-6.27.0.tar.xz.sig New: ---- knotifications-6.28.0.tar.xz knotifications-6.28.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kf6-knotifications.spec ++++++ --- /var/tmp/diff_new_pack.wBiMXP/_old 2026-07-15 16:39:18.217788852 +0200 +++ /var/tmp/diff_new_pack.wBiMXP/_new 2026-07-15 16:39:18.217788852 +0200 @@ -28,11 +28,11 @@ %define mypython_sitearch %{expand:%%%{mypython}_sitearch} %endif -# Full KF6 version (e.g. 6.27.0) +# Full KF6 version (e.g. 6.28.0) %{!?_kf6_version: %global _kf6_version %{version}} %bcond_without released Name: kf6-knotifications -Version: 6.27.0 +Version: 6.28.0 Release: 0 Summary: KDE Desktop notifications License: LGPL-2.1-or-later ++++++ knotifications-6.27.0.tar.xz -> knotifications-6.28.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.27.0/CMakeLists.txt new/knotifications-6.28.0/CMakeLists.txt --- old/knotifications-6.27.0/CMakeLists.txt 2026-06-05 17:48:22.000000000 +0200 +++ new/knotifications-6.28.0/CMakeLists.txt 2026-07-03 12:58:08.000000000 +0200 @@ -1,12 +1,12 @@ cmake_minimum_required(VERSION 3.29) -set(KF_VERSION "6.27.0") # handled by release scripts -set(KF_DEP_VERSION "6.27.0") # handled by release scripts +set(KF_VERSION "6.28.0") # handled by release scripts +set(KF_DEP_VERSION "6.28.0") # handled by release scripts project(KNotifications VERSION ${KF_VERSION}) # ECM setup include(FeatureSummary) -find_package(ECM 6.27.0 NO_MODULE) +find_package(ECM 6.28.0 NO_MODULE) set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) @@ -107,7 +107,7 @@ ecm_set_disabled_deprecation_versions( QT 6.11 - KF 6.26 + KF 6.27 ) add_subdirectory(src) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.27.0/poqm/ia/knotifications6_qt.po new/knotifications-6.28.0/poqm/ia/knotifications6_qt.po --- old/knotifications-6.27.0/poqm/ia/knotifications6_qt.po 2026-06-05 17:48:23.000000000 +0200 +++ new/knotifications-6.28.0/poqm/ia/knotifications6_qt.po 2026-07-03 12:58:08.000000000 +0200 @@ -945,7 +945,7 @@ #~ msgstr "Patronos" #~ msgid "Wallpapers" -#~ msgstr "Tapetes de papiro" +#~ msgstr "Fundos de schermo" #~ msgid "XDG Application menu (.desktop files)" #~ msgstr "XDG Menu de applicationes (files .desktop)" @@ -8604,7 +8604,7 @@ #~ msgid "Too many requests to server. Please try again in a few minutes." #~ msgstr "" -#~ "Troppo requestas a le servitor. Pro favor prova de nove inter pauc " +#~ "Troppo requestas a le servitor. Pro favor prova de nove inter pauco " #~ "minutas." #~ msgid "Unknown Open Collaboration Service API error. (%1)" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.27.0/poqm/nb/knotifications6_qt.po new/knotifications-6.28.0/poqm/nb/knotifications6_qt.po --- old/knotifications-6.27.0/poqm/nb/knotifications6_qt.po 2026-06-05 17:48:23.000000000 +0200 +++ new/knotifications-6.28.0/poqm/nb/knotifications6_qt.po 2026-07-03 12:58:08.000000000 +0200 @@ -14,7 +14,7 @@ "POT-Creation-Date: 2014-02-28 03:44+0000\n" "PO-Revision-Date: 2014-04-25 15:53+0200\n" "Last-Translator: Bjørn Steensrud <[email protected]>\n" -"Language-Team: Norwegian Bokmål <[email protected]>\n" +"Language-Team: Norwegian Bokmål <[email protected]>\n" "Language: nb\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.27.0/poqm/nn/knotifications6_qt.po new/knotifications-6.28.0/poqm/nn/knotifications6_qt.po --- old/knotifications-6.27.0/poqm/nn/knotifications6_qt.po 2026-06-05 17:48:23.000000000 +0200 +++ new/knotifications-6.28.0/poqm/nn/knotifications6_qt.po 2026-07-03 12:58:08.000000000 +0200 @@ -13,7 +13,7 @@ "PO-Revision-Date: 2022-01-23 12:48+0100\n" "Last-Translator: Øystein Steffensen-Alværvik <oysteins.omsetting@protonmail." "com>\n" -"Language-Team: Norwegian Nynorsk <[email protected]>\n" +"Language-Team: Norwegian Nynorsk <[email protected]>\n" "Language: nn\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.27.0/poqm/se/knotifications6_qt.po new/knotifications-6.28.0/poqm/se/knotifications6_qt.po --- old/knotifications-6.27.0/poqm/se/knotifications6_qt.po 2026-06-05 17:48:23.000000000 +0200 +++ new/knotifications-6.28.0/poqm/se/knotifications6_qt.po 2026-07-03 12:58:08.000000000 +0200 @@ -8,7 +8,7 @@ "POT-Creation-Date: 2014-02-28 03:44+0000\n" "PO-Revision-Date: 2012-05-30 23:19+0200\n" "Last-Translator: Børre Gaup <[email protected]>\n" -"Language-Team: Northern Sami <[email protected]>\n" +"Language-Team: Northern Sami <[email protected]>\n" "Language: se\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.27.0/src/notifybyandroid.cpp new/knotifications-6.28.0/src/notifybyandroid.cpp --- old/knotifications-6.27.0/src/notifybyandroid.cpp 2026-06-05 17:48:23.000000000 +0200 +++ new/knotifications-6.28.0/src/notifybyandroid.cpp 2026-07-03 12:58:08.000000000 +0200 @@ -17,6 +17,7 @@ #include <QIcon> using namespace Qt::Literals; +using namespace QtJniTypes; static NotifyByAndroid *s_instance = nullptr; @@ -29,61 +30,43 @@ } } -static void notificationActionInvoked(JNIEnv *env, jobject that, jint id, jstring action) +Q_DECLARE_JNI_NATIVE_METHOD(notificationFinished); + +static void notificationActionInvoked(JNIEnv *env, jobject that, jint id, const QString &action) { Q_UNUSED(env); Q_UNUSED(that); if (s_instance) { - const char *str = env->GetStringUTFChars(action, nullptr); - s_instance->notificationActionInvoked(id, QString::fromUtf8(str)); - env->ReleaseStringUTFChars(action, str); + s_instance->notificationActionInvoked(id, action); } } -static void notificationInlineReply(JNIEnv *env, jobject that, jint id, jstring text) +Q_DECLARE_JNI_NATIVE_METHOD(notificationActionInvoked) + +static void notificationInlineReply(JNIEnv *env, jobject that, jint id, const QString &text) { + Q_UNUSED(env); Q_UNUSED(that); if (s_instance) { - const char *str = env->GetStringUTFChars(text, nullptr); - s_instance->notificationInlineReply(id, QString::fromUtf8(str)); - env->ReleaseStringUTFChars(text, str); + s_instance->notificationInlineReply(id, text); } } -static const JNINativeMethod methods[] = { - {"notificationFinished", "(I)V", (void *)notificationFinished}, - {"notificationActionInvoked", "(ILjava/lang/String;)V", (void *)notificationActionInvoked}, - {"notificationInlineReply", "(ILjava/lang/String;)V", (void *)notificationInlineReply}, -}; - -KNOTIFICATIONS_EXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) -{ - static bool initialized = false; - if (initialized) { - return JNI_VERSION_1_4; - } - initialized = true; - - JNIEnv *env = nullptr; - if (vm->GetEnv((void **)&env, JNI_VERSION_1_4) != JNI_OK) { - qCWarning(LOG_KNOTIFICATIONS) << "Failed to get JNI environment."; - return -1; - } - jclass cls = env->FindClass("org/kde/knotifications/NotifyByAndroid"); - if (env->RegisterNatives(cls, methods, sizeof(methods) / sizeof(JNINativeMethod)) < 0) { - qCWarning(LOG_KNOTIFICATIONS) << "Failed to register native functions."; - return -1; - } - - return JNI_VERSION_1_4; -} +Q_DECLARE_JNI_NATIVE_METHOD(notificationInlineReply) NotifyByAndroid::NotifyByAndroid(QObject *parent) : KNotificationPlugin(parent) { + static bool nativeCallBacksInitialized = []() { + return NotifyByAndroidBackend::registerNativeMethods({ + Q_JNI_NATIVE_METHOD(notificationFinished), + Q_JNI_NATIVE_METHOD(notificationActionInvoked), + Q_JNI_NATIVE_METHOD(notificationInlineReply) + }); + }(); + s_instance = this; - QJniObject context = QNativeInterface::QAndroidApplication::context(); - m_backend = QJniObject("org/kde/knotifications/NotifyByAndroid", "(Landroid/content/Context;)V", context.object<jobject>()); + m_backend = NotifyByAndroidBackend(QNativeInterface::QAndroidApplication::context()); } NotifyByAndroid::~NotifyByAndroid() @@ -96,23 +79,23 @@ return QStringLiteral("Popup"); } -QJniObject NotifyByAndroid::createAndroidNotification(KNotification *notification, const KNotifyConfig ¬ifyConfig) const +KNotificationData NotifyByAndroid::createAndroidNotification(KNotification *notification, const KNotifyConfig ¬ifyConfig) const { QJniEnvironment env; - QJniObject n("org/kde/knotifications/KNotification", "()V"); + KNotificationData n; n.setField("id", notification->id()); - n.setField("text", QJniObject::fromString(stripRichText(notification->text())).object<jstring>()); - n.setField("richText", QJniObject::fromString(notification->text()).object<jstring>()); - n.setField("title", QJniObject::fromString(notification->title()).object<jstring>()); + n.setField("text", stripRichText(notification->text())); + n.setField("richText", notification->text()); + n.setField("title", notification->title()); n.setField("urgency", (jint)(notification->urgency() == KNotification::DefaultUrgency ? KNotification::HighUrgency : notification->urgency())); - n.setField("visibility", QJniObject::fromString(notification->hints().value(QLatin1String("x-kde-visibility")).toString().toLower()).object<jstring>()); + n.setField("visibility", notification->hints().value(QLatin1String("x-kde-visibility")).toString().toLower()); - n.setField("channelId", QJniObject::fromString(notification->eventId()).object<jstring>()); - n.setField("channelName", QJniObject::fromString(notifyConfig.readEntry(QLatin1String("Name"))).object<jstring>()); - n.setField("channelDescription", QJniObject::fromString(notifyConfig.readEntry(QLatin1String("Comment"))).object<jstring>()); + n.setField("channelId", notification->eventId()); + n.setField("channelName", notifyConfig.readEntry(QLatin1String("Name"))); + n.setField("channelDescription", notifyConfig.readEntry(QLatin1String("Comment"))); if ((notification->flags() & KNotification::SkipGrouping) == 0) { - n.setField("group", QJniObject::fromString(notification->eventId()).object<jstring>()); + n.setField("group", notification->eventId()); } // icon @@ -156,15 +139,12 @@ // actions const auto actions = notification->actions(); for (const KNotificationAction *action : actions) { - n.callMethod<void>("addAction", - "(Ljava/lang/String;Ljava/lang/String;)V", - QJniObject::fromString(action->id()).object<jstring>(), - QJniObject::fromString(action->label()).object<jstring>()); + n.callMethod<void>("addAction", action->id(), action->label()); } if (notification->replyAction()) { - n.setField("inlineReplyLabel", QJniObject::fromString(notification->replyAction()->label()).object<jstring>()); - n.setField("inlineReplyPlaceholder", QJniObject::fromString(notification->replyAction()->placeholderText()).object<jstring>()); + n.setField("inlineReplyLabel", notification->replyAction()->label()); + n.setField("inlineReplyPlaceholder", notification->replyAction()->placeholderText()); } return n; @@ -175,18 +155,18 @@ const auto n = createAndroidNotification(notification, notifyConfig); m_notifications.insert(notification->id(), notification); - m_backend.callMethod<void>("notify", "(Lorg/kde/knotifications/KNotification;)V", n.object<jobject>()); + m_backend.callMethod<void>("notify", n); } void NotifyByAndroid::update(KNotification *notification, const KNotifyConfig ¬ifyConfig) { const auto n = createAndroidNotification(notification, notifyConfig); - m_backend.callMethod<void>("notify", "(Lorg/kde/knotifications/KNotification;)V", n.object<jobject>()); + m_backend.callMethod<void>("notify", n); } void NotifyByAndroid::close(KNotification *notification) { - m_backend.callMethod<void>("close", "(ILjava/lang/String;)V", notification->id(), QJniObject::fromString(notification->eventId()).object<jstring>()); + m_backend.callMethod<void>("close", notification->id(), notification->eventId()); KNotificationPlugin::close(notification); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/knotifications-6.27.0/src/notifybyandroid.h new/knotifications-6.28.0/src/notifybyandroid.h --- old/knotifications-6.27.0/src/notifybyandroid.h 2026-06-05 17:48:23.000000000 +0200 +++ new/knotifications-6.28.0/src/notifybyandroid.h 2026-07-03 12:58:08.000000000 +0200 @@ -10,8 +10,12 @@ #include "knotificationplugin.h" #include <QJniObject> +#include <QtJniTypes> #include <QPointer> +Q_DECLARE_JNI_CLASS(NotifyByAndroidBackend, "org/kde/knotifications/NotifyByAndroid") +Q_DECLARE_JNI_CLASS(KNotificationData, "org/kde/knotifications/KNotification") + /* Android notification backend. */ class NotifyByAndroid : public KNotificationPlugin { @@ -32,9 +36,9 @@ void notificationInlineReply(int id, const QString &text); private: - QJniObject createAndroidNotification(KNotification *notification, const KNotifyConfig ¬ifyConfig) const; + QtJniTypes::KNotificationData createAndroidNotification(KNotification *notification, const KNotifyConfig ¬ifyConfig) const; - QJniObject m_backend; + QtJniTypes::NotifyByAndroidBackend m_backend; QHash<int, QPointer<KNotification>> m_notifications; };
