aboutsummaryrefslogtreecommitdiff
path: root/mservicemapper/mservicemapper.h
diff options
context:
space:
mode:
authorTomas Junnonen <tomas.junnonen@nokia.com>2010-04-12 13:50:25 +0300
committerTomas Junnonen <tomas.junnonen@nokia.com>2010-04-12 13:52:31 +0300
commitda73676c8a5af66b55523a9cdfbfbea2baa88a2a (patch)
tree0a3b8933a1817c152116da5fa8a7b5cdd8102e60 /mservicemapper/mservicemapper.h
parent8832674482d3b9a7fcf77b0cfdcb8e6fe4960b4d (diff)
Changes: Renamed dui to meegotouch
By: Holger, Daniel, Janne RevBy: Tomas, Holger
Diffstat (limited to 'mservicemapper/mservicemapper.h')
-rw-r--r--mservicemapper/mservicemapper.h115
1 files changed, 115 insertions, 0 deletions
diff --git a/mservicemapper/mservicemapper.h b/mservicemapper/mservicemapper.h
new file mode 100644
index 00000000..7f43c05c
--- /dev/null
+++ b/mservicemapper/mservicemapper.h
@@ -0,0 +1,115 @@
+/***************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (directui@nokia.com)
+**
+** This file is part of libmeegotouch.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at directui@nokia.com.
+**
+** This library is free software; you can redistribute it and/or
+** modify it under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation
+** and appearing in the file LICENSE.LGPL included in the packaging
+** of this file.
+**
+****************************************************************************/
+
+// Make doxygen skip this internal class
+//! \cond
+#ifndef SERVICEMAPPER_H
+#define SERVICEMAPPER_H
+
+#include <QObject>
+#include <QStringList>
+#include <QMap>
+#include <QFileSystemWatcher>
+
+class MServiceMapperPrivate;
+
+class MServiceMapper : public QObject
+{
+ Q_OBJECT
+public:
+ /*
+ * \brief Constructs a service mapper
+ */
+ MServiceMapper(const QString &serviceFileDir);
+
+ /*
+ * \brief Destructor
+ */
+ virtual ~MServiceMapper();
+
+public Q_SLOTS:
+ /*
+ * \brief Returns a list of service names for services that implement the given interface.
+ * \param interfaceName Name of the interface; default="" lists all services
+ * \return List of service names
+ */
+ QStringList serviceNames(const QString &interfaceName = "");
+
+ /*
+ * \brief List the preferred service for the given interface
+ * \param interfaceName Name of the interface
+ * \return Name of the service
+ */
+ QString serviceName(const QString &interfaceName);
+
+ /*
+ * \brief Get the path for the given interface
+ * \param interfaceName Name of the interface
+ * \return Name of the service path
+ */
+ QString servicePath(const QString &interfaceName) const;
+
+ /*
+ * \brief Get the interface for the given service
+ * \param serviceName Name of the interface
+ * \return Name of the service
+ */
+ QString interfaceName(const QString &serviceName) const;
+
+Q_SIGNALS:
+ /*
+ * \brief A signal that is emitted when a service becomes available
+ * \param service The name of the service that has become available
+ * \param interface The name of the interface
+ */
+ void serviceAvailable(const QString &service, const QString &interface);
+
+ /*
+ * \brief A signal that is emitted when the last service implementing
+ * the interface becomes unavailable.
+ * \param service The name of the service that has become unavailable
+ */
+ void serviceUnavailable(const QString &service);
+
+private Q_SLOTS:
+ /*
+ * \brief Handle the situation when a service has changed by a dbus
+ * .service file being created or deleted.
+ * \param path The directory that has been changed.
+ */
+ void handleServiceChanged(const QString &path);
+
+private:
+ QString preferredService(const QStringList &serviceList) const;
+ QStringList serviceFileList() const;
+ QMap<QString, QString> serviceInterfacePair(const QString &filePath) const;
+ void fillServiceFileInfo();
+
+private:
+
+ enum { LAST_LIST, CURR_LIST };
+
+ MServiceMapperPrivate *d_ptr;
+
+#ifdef UNIT_TEST
+ friend class Ut_MServiceMapper;
+#endif // UNIT_TEST
+};
+#endif
+//! \endcond