Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kf6-kdnssd for openSUSE:Factory 
checked in at 2026-07-15 16:28:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kf6-kdnssd (Old)
 and      /work/SRC/openSUSE:Factory/.kf6-kdnssd.new.1991 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kf6-kdnssd"

Wed Jul 15 16:28:43 2026 rev:29 rq:1365103 version:6.28.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/kf6-kdnssd/kf6-kdnssd.changes    2026-06-16 
13:54:37.376240153 +0200
+++ /work/SRC/openSUSE:Factory/.kf6-kdnssd.new.1991/kf6-kdnssd.changes  
2026-07-15 16:35:50.366708055 +0200
@@ -1,0 +2,13 @@
+Fri Jul 10 12:15:49 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
+  * Correctly track Avahi service types
+  * Add basic service browser example
+  * Update version to 6.28.0
+
+-------------------------------------------------------------------

Old:
----
  kdnssd-6.27.0.tar.xz
  kdnssd-6.27.0.tar.xz.sig

New:
----
  kdnssd-6.28.0.tar.xz
  kdnssd-6.28.0.tar.xz.sig

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kf6-kdnssd.spec ++++++
--- /var/tmp/diff_new_pack.wRsz32/_old  2026-07-15 16:35:51.970762699 +0200
+++ /var/tmp/diff_new_pack.wRsz32/_new  2026-07-15 16:35:51.970762699 +0200
@@ -19,11 +19,11 @@
 %define qt6_version 6.9.0
 
 %define rname kdnssd
-# 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-kdnssd
-Version:        6.27.0
+Version:        6.28.0
 Release:        0
 Summary:        Network service discovery using Zeroconf
 License:        LGPL-2.1-or-later


++++++ kdnssd-6.27.0.tar.xz -> kdnssd-6.28.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdnssd-6.27.0/CMakeLists.txt 
new/kdnssd-6.28.0/CMakeLists.txt
--- old/kdnssd-6.27.0/CMakeLists.txt    2026-06-05 17:46:29.000000000 +0200
+++ new/kdnssd-6.28.0/CMakeLists.txt    2026-07-03 12:54:26.000000000 +0200
@@ -1,10 +1,10 @@
 cmake_minimum_required(VERSION 3.29)
 
-set(KF_VERSION "6.27.0") # handled by release scripts
+set(KF_VERSION "6.28.0") # handled by release scripts
 project(KDNSSD VERSION ${KF_VERSION})
 
 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)
 
@@ -27,6 +27,7 @@
 
 set(REQUIRED_QT_VERSION 6.9.0)
 find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Network)
+find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG OPTIONAL_COMPONENTS Widgets)
 
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
 
@@ -72,6 +73,7 @@
 )
 
 add_subdirectory(src)
+add_subdirectory(examples)
 
 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6DNSSD")
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdnssd-6.27.0/examples/CMakeLists.txt 
new/kdnssd-6.28.0/examples/CMakeLists.txt
--- old/kdnssd-6.27.0/examples/CMakeLists.txt   1970-01-01 01:00:00.000000000 
+0100
+++ new/kdnssd-6.28.0/examples/CMakeLists.txt   2026-07-03 12:54:26.000000000 
+0200
@@ -0,0 +1,8 @@
+# SPDX-FileCopyrightText: 2026 Volker Krause <[email protected]>
+# SPDX-License-Identifier: BSD-3-Clause
+
+if(TARGET Qt6::Widgets)
+    add_executable(zeroconf-browser)
+    target_sources(zeroconf-browser PRIVATE browser.cpp)
+    target_link_libraries(zeroconf-browser PRIVATE KF6DNSSD Qt6::Widgets)
+endif()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdnssd-6.27.0/examples/browser.cpp 
new/kdnssd-6.28.0/examples/browser.cpp
--- old/kdnssd-6.27.0/examples/browser.cpp      1970-01-01 01:00:00.000000000 
+0100
+++ new/kdnssd-6.28.0/examples/browser.cpp      2026-07-03 12:54:26.000000000 
+0200
@@ -0,0 +1,63 @@
+/*
+    SPDX-FileCopyrightText: 2026 Volker Krause <[email protected]>
+    SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+#include <KDNSSD/DomainBrowser>
+#include <KDNSSD/DomainModel>
+#include <KDNSSD/RemoteService>
+#include <KDNSSD/ServiceBrowser>
+#include <KDNSSD/ServiceModel>
+#include <KDNSSD/ServiceTypeBrowser>
+
+#include <QApplication>
+#include <QComboBox>
+#include <QListView>
+#include <QTreeView>
+#include <QVBoxLayout>
+
+using namespace Qt::Literals;
+
+int main(int argc, char **argv)
+{
+    QApplication app(argc, argv);
+
+    QWidget mainWidget;
+    auto topLayout = new QVBoxLayout(&mainWidget);
+
+    auto typeBox = new QComboBox;
+    topLayout->addWidget(typeBox);
+
+    auto serviceTypeBrowser = new KDNSSD::ServiceTypeBrowser({}, &app);
+    serviceTypeBrowser->startBrowse();
+    QObject::connect(serviceTypeBrowser, 
&KDNSSD::ServiceTypeBrowser::serviceTypeAdded, typeBox, [&]() {
+        typeBox->clear();
+        typeBox->addItems(serviceTypeBrowser->serviceTypes());
+    });
+    QObject::connect(serviceTypeBrowser, 
&KDNSSD::ServiceTypeBrowser::serviceTypeRemoved, typeBox, [&]() {
+        typeBox->clear();
+        typeBox->addItems(serviceTypeBrowser->serviceTypes());
+    });
+    typeBox->addItems(serviceTypeBrowser->serviceTypes());
+
+    auto serviceView = new QTreeView;
+    serviceView->setRootIsDecorated(false);
+    serviceView->setSelectionBehavior(QTreeView::SelectRows);
+    topLayout->addWidget(serviceView);
+
+    KDNSSD::ServiceModel *serviceModel = nullptr;
+    QObject::connect(typeBox, &QComboBox::currentTextChanged, &app, [&](const 
QString &type) {
+        delete serviceModel;
+        auto serviceModel = new KDNSSD::ServiceModel(new 
KDNSSD::ServiceBrowser(type, true));
+        serviceView->setModel(serviceModel);
+        QObject::connect(serviceView->selectionModel(), 
&QItemSelectionModel::currentRowChanged, &app, [](const auto &idx) {
+            if (idx.isValid()) {
+                auto service = 
idx.data(KDNSSD::ServiceModel::ServicePtrRole).template 
value<KDNSSD::RemoteService::Ptr>();
+                qDebug() << service->textData();
+            }
+        });
+    });
+
+    mainWidget.show();
+    return app.exec();
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdnssd-6.27.0/poqm/ia/kdnssd6_qt.po 
new/kdnssd-6.28.0/poqm/ia/kdnssd6_qt.po
--- old/kdnssd-6.27.0/poqm/ia/kdnssd6_qt.po     2026-06-05 17:46:29.000000000 
+0200
+++ new/kdnssd-6.28.0/poqm/ia/kdnssd6_qt.po     2026-07-03 12:54:26.000000000 
+0200
@@ -919,7 +919,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)"
@@ -8599,7 +8599,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/kdnssd-6.27.0/poqm/nb/kdnssd6_qt.po 
new/kdnssd-6.28.0/poqm/nb/kdnssd6_qt.po
--- old/kdnssd-6.27.0/poqm/nb/kdnssd6_qt.po     2026-06-05 17:46:29.000000000 
+0200
+++ new/kdnssd-6.28.0/poqm/nb/kdnssd6_qt.po     2026-07-03 12:54:26.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/kdnssd-6.27.0/poqm/nn/kdnssd6_qt.po 
new/kdnssd-6.28.0/poqm/nn/kdnssd6_qt.po
--- old/kdnssd-6.27.0/poqm/nn/kdnssd6_qt.po     2026-06-05 17:46:29.000000000 
+0200
+++ new/kdnssd-6.28.0/poqm/nn/kdnssd6_qt.po     2026-07-03 12:54:26.000000000 
+0200
@@ -11,7 +11,7 @@
 "POT-Creation-Date: 2014-02-28 03:44+0000\n"
 "PO-Revision-Date: 2015-06-02 19:28+0100\n"
 "Last-Translator: Karl Ove Hufthammer <[email protected]>\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/kdnssd-6.27.0/poqm/se/kdnssd6_qt.po 
new/kdnssd-6.28.0/poqm/se/kdnssd6_qt.po
--- old/kdnssd-6.27.0/poqm/se/kdnssd6_qt.po     2026-06-05 17:46:29.000000000 
+0200
+++ new/kdnssd-6.28.0/poqm/se/kdnssd6_qt.po     2026-07-03 12:54:26.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/kdnssd-6.27.0/src/avahi-servicetypebrowser.cpp 
new/kdnssd-6.28.0/src/avahi-servicetypebrowser.cpp
--- old/kdnssd-6.27.0/src/avahi-servicetypebrowser.cpp  2026-06-05 
17:46:29.000000000 +0200
+++ new/kdnssd-6.28.0/src/avahi-servicetypebrowser.cpp  2026-07-03 
12:54:26.000000000 +0200
@@ -110,24 +110,49 @@
     finished();
 }
 
-void ServiceTypeBrowserPrivate::gotNewServiceType(int, int, const QString 
&type, const QString &, uint)
+void ServiceTypeBrowserPrivate::gotNewServiceType(int interface, int protocol, 
const QString &type, const QString &domain, [[maybe_unused]] uint flags)
 {
     m_timer.start(TIMEOUT_LAST_SERVICE);
-    m_servicetypes += type;
-    Q_EMIT m_parent->serviceTypeAdded(type);
+    // we can get the same type for e.g. different protocols, so track all of 
those and only report
+    // the first time a new type is added and likewise below, the last time a 
type is removed
+    const auto newType = std::ranges::find_if(m_servicetypes,
+                                              [type](const auto &s) {
+                                                  return s.type == type;
+                                              })
+        == m_servicetypes.end();
+    m_servicetypes.emplace_back(interface, protocol, type, domain);
+    if (newType) {
+        Q_EMIT m_parent->serviceTypeAdded(type);
+    }
 }
 
-void ServiceTypeBrowserPrivate::gotRemoveServiceType(int, int, const QString 
&type, const QString &, uint)
+void ServiceTypeBrowserPrivate::gotRemoveServiceType(int interface, int 
protocol, const QString &type, const QString &domain, [[maybe_unused]] uint 
flags)
 {
     m_timer.start(TIMEOUT_LAST_SERVICE);
-    m_servicetypes.removeAll(type);
-    Q_EMIT m_parent->serviceTypeRemoved(type);
+    auto it = std::ranges::find(m_servicetypes, AvahiServiceType{interface, 
protocol, type, domain});
+    if (it == m_servicetypes.end()) {
+        return;
+    }
+    m_servicetypes.erase(it);
+    if (std::ranges::find_if(m_servicetypes,
+                             [type](const auto &s) {
+                                 return s.type == type;
+                             })
+        == m_servicetypes.end()) {
+        Q_EMIT m_parent->serviceTypeRemoved(type);
+    }
 }
 
 QStringList ServiceTypeBrowser::serviceTypes() const
 {
     Q_D(const ServiceTypeBrowser);
-    return d->m_servicetypes;
+    QStringList types;
+    for (const auto &s : d->m_servicetypes) {
+        if (!types.contains(s.type)) {
+            types.push_back(s.type);
+        }
+    }
+    return types;
 }
 
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kdnssd-6.27.0/src/avahi-servicetypebrowser_p.h 
new/kdnssd-6.28.0/src/avahi-servicetypebrowser_p.h
--- old/kdnssd-6.27.0/src/avahi-servicetypebrowser_p.h  2026-06-05 
17:46:29.000000000 +0200
+++ new/kdnssd-6.28.0/src/avahi-servicetypebrowser_p.h  2026-07-03 
12:54:26.000000000 +0200
@@ -37,7 +37,16 @@
     org::freedesktop::Avahi::ServiceTypeBrowser *m_browser = nullptr;
     ServiceTypeBrowser *m_parent = nullptr;
     bool m_started = false;
-    QStringList m_servicetypes;
+
+    struct AvahiServiceType {
+        int interface;
+        int protocol;
+        QString type;
+        QString domain;
+        bool operator==(const AvahiServiceType &) const = default;
+    };
+    std::vector<AvahiServiceType> m_servicetypes;
+
     QString m_domain;
     QTimer m_timer;
 

Reply via email to