File indexing completed on 2024-05-19 05:00:42
0001 /* 0002 SPDX-FileCopyrightText: 2004 Jakub Stachowski <qbast@go2.pl> 0003 0004 SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 #include "watcher.h" 0008 0009 // KF 0010 #include <KDirNotify> 0011 #include <KDNSSD/ServiceBrowser> 0012 #include <KDNSSD/ServiceTypeBrowser> 0013 // Qt 0014 #include <QUrl> 0015 0016 Watcher::Watcher() 0017 : refcount(1), updateNeeded(false) 0018 { 0019 } 0020 0021 ServiceWatcher::ServiceWatcher(const QString& type) : Watcher(), m_type(type) 0022 { 0023 browser = new KDNSSD::ServiceBrowser(type); 0024 browser->setParent(this); 0025 connect(browser, &KDNSSD::ServiceBrowser::serviceAdded, 0026 this, &ServiceWatcher::scheduleUpdate); 0027 connect(browser, &KDNSSD::ServiceBrowser::serviceRemoved, 0028 this, &ServiceWatcher::scheduleUpdate); 0029 connect(browser, &KDNSSD::ServiceBrowser::finished, 0030 this, &ServiceWatcher::finished); 0031 browser->startBrowse(); 0032 0033 } 0034 0035 TypeWatcher::TypeWatcher() : Watcher() 0036 { 0037 typebrowser = new KDNSSD::ServiceTypeBrowser(); 0038 typebrowser->setParent(this); 0039 connect(typebrowser, &KDNSSD::ServiceTypeBrowser::serviceTypeAdded, 0040 this, &TypeWatcher::scheduleUpdate); 0041 connect(typebrowser, &KDNSSD::ServiceTypeBrowser::serviceTypeRemoved, 0042 this, &TypeWatcher::scheduleUpdate); 0043 connect(typebrowser, &KDNSSD::ServiceTypeBrowser::finished, this, &TypeWatcher::finished); 0044 typebrowser->startBrowse(); 0045 } 0046 0047 QUrl TypeWatcher::constructUrl() const 0048 { 0049 return QUrl(QStringLiteral("zeroconf:/")); 0050 } 0051 0052 QUrl ServiceWatcher::constructUrl() const 0053 { 0054 QUrl url(QStringLiteral("zeroconf:/")); 0055 url.setPath(m_type + QChar::fromLatin1('/')); 0056 return url; 0057 } 0058 0059 void Watcher::scheduleUpdate() 0060 { 0061 updateNeeded=true; 0062 } 0063 0064 void Watcher::finished() 0065 { 0066 if (updateNeeded) org::kde::KDirNotify::emitFilesAdded( constructUrl() ); 0067 updateNeeded=false; 0068 } 0069 0070 #include "moc_watcher.cpp"