The first patch (strigi_icon.diff) simply adds the *Strigi* icon as the
window icon in the Strigi Status Widget. Prior to this patch it showed a
Xorg icon.
The second and third patches* *implement the QDBusServiceWatcher class* *in
*nepomuk/services/queryservice/** *& nepomuk/kioslaves/search/kdedmodule/
and* have not been tested. *That's cause I have no idea how to test them.
So, please, *DO NOT* commit them. (Feel free to commit the Strigi patch :-)
If somebody knows, I would like to know how I can test them. Both the
patches have a fairly similar design, and if one works so should the other.
Thanks
- Vishesh Handa
Index: statuswidget.cpp
===================================================================
--- statuswidget.cpp (revision 1111694)
+++ statuswidget.cpp (working copy)
@@ -52,8 +52,10 @@
setDefaultButton( Ok );
setButtonGuiItem( User1, KGuiItem( i18n( "Configure" ), KIcon( "configure" ) ) );
- m_title->setPixmap( KIcon( "nepomuk" ).pixmap( 32, 32 ) );
-
+ KIcon icon( "nepomuk" );
+ m_title->setPixmap( icon.pixmap( 32, 32 ) );
+ setWindowIcon( icon );
+
m_updateTimer.setSingleShot( true );
m_updateTimer.setInterval( 10*1000 ); // do not update multiple times in 10 seconds
connect( &m_updateTimer, SIGNAL( timeout() ),
Index: queryservice.cpp
===================================================================
--- queryservice.cpp (revision 1111072)
+++ queryservice.cpp (working copy)
@@ -26,6 +26,7 @@
#include <QtDBus/QDBusConnectionInterface>
#include <QtDBus/QDBusObjectPath>
#include <QtDBus/QDBusMessage>
+#include <QtDBus/QDBusServiceWatcher>
#include <KPluginFactory>
#include <KUrl>
@@ -50,10 +51,12 @@
s_instance = this;
- connect( QDBusConnection::sessionBus().interface(),
- SIGNAL( serviceOwnerChanged( const QString&, const QString&, const QString& ) ),
- this,
- SLOT( slotServiceOwnerChanged( const QString&, const QString&, const QString& ) ) );
+ m_serviceWatcher = new QDBusServiceWatcher( QLatin1String(""),
+ QDBusConnection::sessionBus(),
+ QDBusServiceWatcher::WatchForUnregistration, this);
+
+ connect( m_serviceWatcher, SIGNAL( serviceUnregistered(const QString& ) ),
+ this, SLOT( slotServiceUnregistered( const QString& ) ) );
}
@@ -102,6 +105,7 @@
QString dbusClient = msg.service();
m_openConnections.insert( dbusClient, conn );
m_connectionDBusServiceHash.insert( conn, dbusClient );
+ m_serviceWatcher->addWatchedService( msg.service() );
return QDBusObjectPath( dbusObjectPath );
}
@@ -155,18 +159,15 @@
}
-void Nepomuk::Query::QueryService::slotServiceOwnerChanged( const QString& serviceName,
- const QString&,
- const QString& newOwner )
+void Nepomuk::Query::QueryService::slotServiceUnregistered( const QString& serviceName )
{
- if ( newOwner.isEmpty() ) {
- QList<FolderConnection*> conns = m_openConnections.values( serviceName );
- if ( !conns.isEmpty() ) {
- kDebug() << "Service" << serviceName << "went down. Removing connections";
- // hash cleanup will be triggered automatically
- qDeleteAll( conns );
- }
+ QList<FolderConnection*> conns = m_openConnections.values( serviceName );
+ if ( !conns.isEmpty() ) {
+ kDebug() << "Service" << serviceName << "went down. Removing connections";
+ // hash cleanup will be triggered automatically
+ qDeleteAll( conns );
}
+ m_serviceWatcher->removeWatchedService(serviceName);
}
#include "queryservice.moc"
Index: queryservice.h
===================================================================
--- queryservice.h (revision 1111072)
+++ queryservice.h (working copy)
@@ -30,6 +30,7 @@
class QDBusObjectPath;
class QDBusMessage;
+class QDBusServiceWatcher;
namespace Nepomuk {
namespace Query {
@@ -62,9 +63,7 @@
Q_SCRIPTABLE QDBusObjectPath sparqlQuery( const QString& query, const RequestPropertyMapDBus& requestProps, const QDBusMessage& msg );
private Q_SLOTS:
- void slotServiceOwnerChanged( const QString& serviceName,
- const QString&,
- const QString& newOwner );
+ void slotServiceUnregistered( const QString& serviceName );
void slotFolderDestroyed( QObject* folder );
void slotFolderConnectionDestroyed( QObject* conn );
@@ -82,6 +81,7 @@
QHash<FolderConnection*, QString> m_connectionDBusServiceHash; // maps connections to their using dbus service
int m_folderConnectionCnt; // only used for unique dbus object path generation
+ QDBusServiceWatcher *m_serviceWatcher;
};
}
}
Index: nepomuksearchmodule.h
===================================================================
--- nepomuksearchmodule.h (revision 1111072)
+++ nepomuksearchmodule.h (working copy)
@@ -26,6 +26,8 @@
#include <QtDBus/QDBusContext>
#include <QtCore/QMultiHash>
+class QDBusServiceWatcher;
+
namespace Nepomuk {
class SearchUrlListener;
@@ -45,15 +47,15 @@
Q_SCRIPTABLE QStringList watchedSearchUrls();
private Q_SLOTS:
- void slotServiceOwnerChanged( const QString& serviceName,
- const QString&,
- const QString& newOwner );
+ void slotServiceUnregistered( const QString& serviceName );
private:
void unrefUrl( const KUrl& url );
QHash<KUrl, SearchUrlListener*> m_queryHash;
QMultiHash<QString, KUrl> m_dbusServiceUrlHash;
+
+ QDBusServiceWatcher *m_watcher;
};
}
Index: nepomuksearchmodule.cpp
===================================================================
--- nepomuksearchmodule.cpp (revision 1111072)
+++ nepomuksearchmodule.cpp (working copy)
@@ -23,6 +23,7 @@
#include "dbusoperators_p.h"
#include <QtDBus/QDBusConnection>
+#include <QtDBus/QDBusServiceWatcher>
#include <kdebug.h>
#include <kdirnotify.h>
@@ -47,10 +48,12 @@
// connect to serviceOwnerChanged to catch crashed clients that never unregistered
// themselves
//
- connect( QDBusConnection::sessionBus().interface(),
- SIGNAL( serviceOwnerChanged( const QString&, const QString&, const QString& ) ),
- this,
- SLOT( slotServiceOwnerChanged( const QString&, const QString&, const QString& ) ) );
+ m_watcher = new QDBusServiceWatcher( QLatin1String(""),
+ QDBusConnection::sessionBus(),
+ QDBusServiceWatcher::WatchForUnregistration,
+ this );
+ connect( m_watcher, SIGNAL( serviceUnregistered( const QString& ) ),
+ this, SLOT( slotServiceUnregistered( const QString& ) ) );
//
// connect to KDirLister telling us that it entered a dir
@@ -93,8 +96,10 @@
it.value()->ref();
}
- if ( calledFromDBus() )
+ if ( calledFromDBus() ) {
m_dbusServiceUrlHash.insert( message().service(), url );
+ m_watcher->addWatchedService( message().service() );
+ }
}
}
@@ -105,8 +110,10 @@
if ( isNepomukSearchUrl( url ) ) {
kDebug() << "UNREGISTER UNREGISTER UNREGISTER UNREGISTER UNREGISTER" << url;
unrefUrl( url );
- if ( calledFromDBus() )
+ if ( calledFromDBus() ) {
m_dbusServiceUrlHash.remove( message().service(), url );
+ m_watcher->removeWatchedService( message().service() );
+ }
}
}
@@ -117,17 +124,13 @@
}
-void Nepomuk::SearchModule::slotServiceOwnerChanged( const QString& serviceName,
- const QString&,
- const QString& newOwner )
+void Nepomuk::SearchModule::slotServiceUnregistered( const QString& serviceName )
{
- if ( newOwner.isEmpty() ) {
- QHash<QString, KUrl>::iterator it = m_dbusServiceUrlHash.find( serviceName );
- while ( it != m_dbusServiceUrlHash.end() ) {
- unrefUrl( it.value() );
- m_dbusServiceUrlHash.erase( it );
- it = m_dbusServiceUrlHash.find( serviceName );
- }
+ QHash<QString, KUrl>::iterator it = m_dbusServiceUrlHash.find( serviceName );
+ while ( it != m_dbusServiceUrlHash.end() ) {
+ unrefUrl( it.value() );
+ m_dbusServiceUrlHash.erase( it );
+ it = m_dbusServiceUrlHash.find( serviceName );
}
}
_______________________________________________
Nepomuk mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/nepomuk