aboutsummaryrefslogtreecommitdiff
path: root/libcontextsubscriber/doc/html/class_context_subscriber_1_1_provider.html
diff options
context:
space:
mode:
Diffstat (limited to 'libcontextsubscriber/doc/html/class_context_subscriber_1_1_provider.html')
-rw-r--r--libcontextsubscriber/doc/html/class_context_subscriber_1_1_provider.html657
1 files changed, 657 insertions, 0 deletions
diff --git a/libcontextsubscriber/doc/html/class_context_subscriber_1_1_provider.html b/libcontextsubscriber/doc/html/class_context_subscriber_1_1_provider.html
new file mode 100644
index 00000000..7f2a12f1
--- /dev/null
+++ b/libcontextsubscriber/doc/html/class_context_subscriber_1_1_provider.html
@@ -0,0 +1,657 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<title>libcontextsubscriber: ContextSubscriber::Provider Class Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
+ <li><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
+ <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
+ <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
+ <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
+ </ul>
+ </div>
+ <div class="navpath"><a class="el" href="namespace_context_subscriber.html">ContextSubscriber</a>::<a class="el" href="class_context_subscriber_1_1_provider.html">Provider</a>
+ </div>
+</div>
+<div class="contents">
+<h1>ContextSubscriber::Provider Class Reference</h1><!-- doxytag: class="ContextSubscriber::Provider" --><!-- doxytag: inherits="ContextSubscriber::QueuedInvoker" -->
+<p>Connects to a group of properties via the help of a plugin.
+<a href="#_details">More...</a></p>
+
+<p><code>#include &lt;<a class="el" href="provider_8h_source.html">provider.h</a>&gt;</code></p>
+
+<p><a href="class_context_subscriber_1_1_provider-members.html">List of all members.</a></p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Signals</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#afd4795579900229d0710f2a1a707df16">subscribeFinished</a> (<a class="el" href="class_context_subscriber_1_1_provider.html">Provider</a> *provider, QString key)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a6288252eecf25f879ecb7c1a507a9088">valueChanged</a> (QString key)</td></tr>
+<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a063cf90bfd10f0bca4ed471f2c3a9c1e">subscribe</a> (const QString &amp;key)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Schedules a property to be subscribed to. <a href="#a063cf90bfd10f0bca4ed471f2c3a9c1e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#aa6aa042d4a006eb0930d7805139e801f">unsubscribe</a> (const QString &amp;key)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Schedules a property to be unsubscribed from when the main loop is entered the next time. <a href="#aa6aa042d4a006eb0930d7805139e801f"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_context_subscriber_1_1_timed_value.html">TimedValue</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a34d90db9ddc691d2b687bcbeabb65d7e">get</a> (const QString &amp;key) const </td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#ae2569ebe40afb18160eccc699574e3c7">clearValues</a> ()</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Clears the cached values for this provider. <a href="#ae2569ebe40afb18160eccc699574e3c7"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="class_context_subscriber_1_1_provider.html">Provider</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#acf3f43a824c33ffaf349feeb9c34b5d0">instance</a> (const <a class="el" href="struct_context_provider_info.html">ContextProviderInfo</a> &amp;<a class="el" href="class_context_subscriber_1_1_provider.html#a6e8a91f8a673fb8f2f645212844eb421">providerInfo</a>)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Returns a singleton for the named <code>plugin</code> with the <code>constructionString</code>. <a href="#acf3f43a824c33ffaf349feeb9c34b5d0"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Private Types</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a18f291fc00e50055a02525f70e38a52b">PluginState</a> { <a class="el" href="class_context_subscriber_1_1_provider.html#a18f291fc00e50055a02525f70e38a52ba429fabee9e8f6a76d3903db54c76bd46">INITIALIZING</a>,
+<a class="el" href="class_context_subscriber_1_1_provider.html#a18f291fc00e50055a02525f70e38a52ba142be3c672ac9a6f3fe477b6eeb1acb1">READY</a>,
+<a class="el" href="class_context_subscriber_1_1_provider.html#a18f291fc00e50055a02525f70e38a52ba6c35b4588f19b72888a9fca0b911642f">FAILED</a>
+ }</td></tr>
+<tr><td colspan="2"><h2>Private Slots</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#ac87916df512014e5048eda7ae9daf3b9">onPluginReady</a> ()</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Updates <code>pluginState</code> to <code>READY</code> and requests subscription for the keys that should be subscribed. <a href="#ac87916df512014e5048eda7ae9daf3b9"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a0b9a9637b9bdd8a3989cfccb14c8a24b">onPluginFailed</a> (QString error)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Updates <code>pluginState</code> to <code>FAILED</code> and signals subscribeFinished for keys we are trying to subscribe to. <a href="#a0b9a9637b9bdd8a3989cfccb14c8a24b"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#acbbadf63086f6b37ff9a9e8e64180032">onPluginSubscribeFinished</a> (QString key)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deprecated. <a href="#acbbadf63086f6b37ff9a9e8e64180032"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#aaa59472d6205931482b4ed7461a40221">onPluginSubscribeFinished</a> (QString key, <a class="el" href="struct_context_subscriber_1_1_timed_value.html">TimedValue</a> value)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Forwards the call to <code>signalSubscribeFinished</code>. <a href="#aaa59472d6205931482b4ed7461a40221"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#ad18a07fdfb76dfa71f15f4b3e1200793">onPluginSubscribeFailed</a> (QString failedKey, QString error)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Forwards the call to <code>signalSubscribeFinished</code>, after logging a warning. <a href="#ad18a07fdfb76dfa71f15f4b3e1200793"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#ac04c071faa737c9b7f029ef0125f6a1c">onPluginValueChanged</a> (QString key, QVariant newValue)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Deprecated: plugins should use the variant taking a <a class="el" href="struct_context_subscriber_1_1_timed_value.html">TimedValue</a>. <a href="#ac04c071faa737c9b7f029ef0125f6a1c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a2188eca4feb6c3f5bf585c38d6c56463">onPluginValueChanged</a> (QString key, <a class="el" href="struct_context_subscriber_1_1_timed_value.html">TimedValue</a> newValue)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Forwards the <code>newValue</code> for <code>key</code> received from the plugin to the upper layers via <code><a class="el" href="class_context_subscriber_1_1_handle_signal_router.html" title="Routes the valueChanged() and the subscribeFinished() signals to the correct PropertyHandle...">HandleSignalRouter</a></code>. <a href="#a2188eca4feb6c3f5bf585c38d6c56463"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Private Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#ae4221b5f1438404820abee8de2ed3daa">Provider</a> (const <a class="el" href="struct_context_provider_info.html">ContextProviderInfo</a> &amp;<a class="el" href="class_context_subscriber_1_1_provider.html#a6e8a91f8a673fb8f2f645212844eb421">providerInfo</a>)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Stores the passed plugin name and construction paramater, then moves into the main thread and queues a constructPlugin call. <a href="#ae4221b5f1438404820abee8de2ed3daa"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">Q_INVOKABLE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#ab78d5f8ff72bedb037f1f2b15cbda9b9">handleSubscribes</a> ()</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Executed when the main loop is entered and we have previously scheduled subscriptions / unsubscriptions. <a href="#ab78d5f8ff72bedb037f1f2b15cbda9b9"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">Q_INVOKABLE void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a1e2136dc7c4ad62b020c7ed95914bb67">constructPlugin</a> ()</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Decides which plugin to instantiate based on the <code>plugin</code> passed to the constructor. <a href="#a1e2136dc7c4ad62b020c7ed95914bb67"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a3046efee2679aa33602deb4f27877eba">signalSubscribeFinished</a> (QString key)</td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The plugin has finished subscribing to a key, signals this fact to the upper layer. <a href="#a3046efee2679aa33602deb4f27877eba"></a><br/></td></tr>
+<tr><td colspan="2"><h2>Private Attributes</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_context_subscriber_1_1_i_provider_plugin.html">IProviderPlugin</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a620db59b31c197b98ee64369fd46b30e">plugin</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Plugin instance communicating with the concrete provider. <a href="#a620db59b31c197b98ee64369fd46b30e"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_context_subscriber_1_1_provider.html#a18f291fc00e50055a02525f70e38a52b">PluginState</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a904cca899aba13b6d356fea73737169e">pluginState</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_context_provider_info.html">ContextProviderInfo</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a6e8a91f8a673fb8f2f645212844eb421">providerInfo</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Parameters used to initialize the plugin. <a href="#a6e8a91f8a673fb8f2f645212844eb421"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">QMutex&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a154fa6041cd471ac46c1038f312ffde6">subscribeLock</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">QSet&lt; QString &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#acbf130166861d576d906fc99da9b2d6d">toSubscribe</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Keys pending for subscription. <a href="#acbf130166861d576d906fc99da9b2d6d"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">QSet&lt; QString &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#aee2cca89bff8d2bc65039a42cb32563c">toUnsubscribe</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Keys pending for unsubscription. <a href="#aee2cca89bff8d2bc65039a42cb32563c"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">QSet&lt; QString &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a6b07417f7e024f8dac5b3b327383dbe9">subscribedKeys</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The keys that should be currently subscribed to. <a href="#a6b07417f7e024f8dac5b3b327383dbe9"></a><br/></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">QMap&lt; QString, <a class="el" href="struct_context_subscriber_1_1_timed_value.html">TimedValue</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_context_subscriber_1_1_provider.html#a6e41ed2ec544fc16bd399d8fbcec46ed">values</a></td></tr>
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">A cache of values already received from the plugin. <a href="#a6e41ed2ec544fc16bd399d8fbcec46ed"></a><br/></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>Connects to a group of properties via the help of a plugin. </p>
+<p>Each instance of this class keeps a plugin dependent communication channel (DBus, shared memory, etc.) open and handles subscriptions, value changes of the properties belonging to the provider on the other end of the channel.</p>
+<p>This class is thread safe, the <code>instance</code>, <code>subscribe</code> and <code>unsubscribe</code> methods can be called from any threads. However this class also guarantees that the signal <code>subscribeFinished</code> and <code>valueChanged</code> will be always emitted from inside the main thread's main loop. </p>
+<hr/><h2>Member Enumeration Documentation</h2>
+<a class="anchor" id="a18f291fc00e50055a02525f70e38a52b"></a><!-- doxytag: member="ContextSubscriber::Provider::PluginState" ref="a18f291fc00e50055a02525f70e38a52b" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">enum <a class="el" href="class_context_subscriber_1_1_provider.html#a18f291fc00e50055a02525f70e38a52b">ContextSubscriber::Provider::PluginState</a><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0">
+<tr><td valign="top"><em><a class="anchor" id="a18f291fc00e50055a02525f70e38a52ba429fabee9e8f6a76d3903db54c76bd46"></a><!-- doxytag: member="INITIALIZING" ref="a18f291fc00e50055a02525f70e38a52ba429fabee9e8f6a76d3903db54c76bd46" args="" -->INITIALIZING</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a18f291fc00e50055a02525f70e38a52ba142be3c672ac9a6f3fe477b6eeb1acb1"></a><!-- doxytag: member="READY" ref="a18f291fc00e50055a02525f70e38a52ba142be3c672ac9a6f3fe477b6eeb1acb1" args="" -->READY</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign="top"><em><a class="anchor" id="a18f291fc00e50055a02525f70e38a52ba6c35b4588f19b72888a9fca0b911642f"></a><!-- doxytag: member="FAILED" ref="a18f291fc00e50055a02525f70e38a52ba6c35b4588f19b72888a9fca0b911642f" args="" -->FAILED</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dd>
+</dl>
+
+</div>
+</div>
+<hr/><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" id="ae4221b5f1438404820abee8de2ed3daa"></a><!-- doxytag: member="ContextSubscriber::Provider::Provider" ref="ae4221b5f1438404820abee8de2ed3daa" args="(const ContextProviderInfo &amp;providerInfo)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">ContextSubscriber::Provider::Provider </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="struct_context_provider_info.html">ContextProviderInfo</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>providerInfo</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Stores the passed plugin name and construction paramater, then moves into the main thread and queues a constructPlugin call. </p>
+
+</div>
+</div>
+<hr/><h2>Member Function Documentation</h2>
+<a class="anchor" id="ae2569ebe40afb18160eccc699574e3c7"></a><!-- doxytag: member="ContextSubscriber::Provider::clearValues" ref="ae2569ebe40afb18160eccc699574e3c7" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::clearValues </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Clears the cached values for this provider. </p>
+<p>This is used when the provider instance is (re)connected to the commander. </p>
+
+</div>
+</div>
+<a class="anchor" id="a1e2136dc7c4ad62b020c7ed95914bb67"></a><!-- doxytag: member="ContextSubscriber::Provider::constructPlugin" ref="a1e2136dc7c4ad62b020c7ed95914bb67" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::constructPlugin </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Decides which plugin to instantiate based on the <code>plugin</code> passed to the constructor. </p>
+<p>Always called in the main loop after the constructor is finished. Each plugin library implements a function which can create new instances of that plugin (TODO: come up with the name of the function). </p>
+
+</div>
+</div>
+<a class="anchor" id="a34d90db9ddc691d2b687bcbeabb65d7e"></a><!-- doxytag: member="ContextSubscriber::Provider::get" ref="a34d90db9ddc691d2b687bcbeabb65d7e" args="(const QString &amp;key) const " -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="struct_context_subscriber_1_1_timed_value.html">TimedValue</a> ContextSubscriber::Provider::get </td>
+ <td>(</td>
+ <td class="paramtype">const QString &amp;&nbsp;</td>
+ <td class="paramname"> <em>key</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td> const</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="ab78d5f8ff72bedb037f1f2b15cbda9b9"></a><!-- doxytag: member="ContextSubscriber::Provider::handleSubscribes" ref="ab78d5f8ff72bedb037f1f2b15cbda9b9" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::handleSubscribes </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Executed when the main loop is entered and we have previously scheduled subscriptions / unsubscriptions. </p>
+
+</div>
+</div>
+<a class="anchor" id="acf3f43a824c33ffaf349feeb9c34b5d0"></a><!-- doxytag: member="ContextSubscriber::Provider::instance" ref="acf3f43a824c33ffaf349feeb9c34b5d0" args="(const ContextProviderInfo &amp;providerInfo)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="class_context_subscriber_1_1_provider.html">Provider</a> * ContextSubscriber::Provider::instance </td>
+ <td>(</td>
+ <td class="paramtype">const <a class="el" href="struct_context_provider_info.html">ContextProviderInfo</a> &amp;&nbsp;</td>
+ <td class="paramname"> <em>providerInfo</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Returns a singleton for the named <code>plugin</code> with the <code>constructionString</code>. </p>
+
+</div>
+</div>
+<a class="anchor" id="a0b9a9637b9bdd8a3989cfccb14c8a24b"></a><!-- doxytag: member="ContextSubscriber::Provider::onPluginFailed" ref="a0b9a9637b9bdd8a3989cfccb14c8a24b" args="(QString error)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::onPluginFailed </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>error</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [private, slot]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Updates <code>pluginState</code> to <code>FAILED</code> and signals subscribeFinished for keys we are trying to subscribe to. </p>
+
+</div>
+</div>
+<a class="anchor" id="ac87916df512014e5048eda7ae9daf3b9"></a><!-- doxytag: member="ContextSubscriber::Provider::onPluginReady" ref="ac87916df512014e5048eda7ae9daf3b9" args="()" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::onPluginReady </td>
+ <td>(</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [private, slot]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Updates <code>pluginState</code> to <code>READY</code> and requests subscription for the keys that should be subscribed. </p>
+
+</div>
+</div>
+<a class="anchor" id="ad18a07fdfb76dfa71f15f4b3e1200793"></a><!-- doxytag: member="ContextSubscriber::Provider::onPluginSubscribeFailed" ref="ad18a07fdfb76dfa71f15f4b3e1200793" args="(QString failedKey, QString error)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::onPluginSubscribeFailed </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>error</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [private, slot]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Forwards the call to <code>signalSubscribeFinished</code>, after logging a warning. </p>
+
+</div>
+</div>
+<a class="anchor" id="aaa59472d6205931482b4ed7461a40221"></a><!-- doxytag: member="ContextSubscriber::Provider::onPluginSubscribeFinished" ref="aaa59472d6205931482b4ed7461a40221" args="(QString key, TimedValue value)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::onPluginSubscribeFinished </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="struct_context_subscriber_1_1_timed_value.html">TimedValue</a>&nbsp;</td>
+ <td class="paramname"> <em>value</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [private, slot]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Forwards the call to <code>signalSubscribeFinished</code>. </p>
+
+</div>
+</div>
+<a class="anchor" id="acbbadf63086f6b37ff9a9e8e64180032"></a><!-- doxytag: member="ContextSubscriber::Provider::onPluginSubscribeFinished" ref="acbbadf63086f6b37ff9a9e8e64180032" args="(QString key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::onPluginSubscribeFinished </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>key</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [private, slot]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Deprecated. </p>
+
+</div>
+</div>
+<a class="anchor" id="a2188eca4feb6c3f5bf585c38d6c56463"></a><!-- doxytag: member="ContextSubscriber::Provider::onPluginValueChanged" ref="a2188eca4feb6c3f5bf585c38d6c56463" args="(QString key, TimedValue newValue)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::onPluginValueChanged </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="struct_context_subscriber_1_1_timed_value.html">TimedValue</a>&nbsp;</td>
+ <td class="paramname"> <em>newValue</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [private, slot]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Forwards the <code>newValue</code> for <code>key</code> received from the plugin to the upper layers via <code><a class="el" href="class_context_subscriber_1_1_handle_signal_router.html" title="Routes the valueChanged() and the subscribeFinished() signals to the correct PropertyHandle...">HandleSignalRouter</a></code>. </p>
+
+</div>
+</div>
+<a class="anchor" id="ac04c071faa737c9b7f029ef0125f6a1c"></a><!-- doxytag: member="ContextSubscriber::Provider::onPluginValueChanged" ref="ac04c071faa737c9b7f029ef0125f6a1c" args="(QString key, QVariant newValue)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::onPluginValueChanged </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>key</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">QVariant&nbsp;</td>
+ <td class="paramname"> <em>newValue</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [private, slot]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Deprecated: plugins should use the variant taking a <a class="el" href="struct_context_subscriber_1_1_timed_value.html">TimedValue</a>. </p>
+<p>Forwards the <code>newValue</code> for <code>key</code> received from the plugin to the upper layers via <code><a class="el" href="class_context_subscriber_1_1_handle_signal_router.html" title="Routes the valueChanged() and the subscribeFinished() signals to the correct PropertyHandle...">HandleSignalRouter</a></code>. </p>
+
+</div>
+</div>
+<a class="anchor" id="a3046efee2679aa33602deb4f27877eba"></a><!-- doxytag: member="ContextSubscriber::Provider::signalSubscribeFinished" ref="a3046efee2679aa33602deb4f27877eba" args="(QString key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::signalSubscribeFinished </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>key</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The plugin has finished subscribing to a key, signals this fact to the upper layer. </p>
+<p>The final API for this is the <code>waitForSubscription()</code> method in <code><a class="el" href="class_context_property.html" title="The ContextProperty class allows access to keys and their values.">ContextProperty</a></code>. </p>
+
+</div>
+</div>
+<a class="anchor" id="a063cf90bfd10f0bca4ed471f2c3a9c1e"></a><!-- doxytag: member="ContextSubscriber::Provider::subscribe" ref="a063cf90bfd10f0bca4ed471f2c3a9c1e" args="(const QString &amp;key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">bool ContextSubscriber::Provider::subscribe </td>
+ <td>(</td>
+ <td class="paramtype">const QString &amp;&nbsp;</td>
+ <td class="paramname"> <em>key</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Schedules a property to be subscribed to. </p>
+<p>Returns true if and only if the main loop has to run for the subscription to be finalized. </p>
+
+</div>
+</div>
+<a class="anchor" id="afd4795579900229d0710f2a1a707df16"></a><!-- doxytag: member="ContextSubscriber::Provider::subscribeFinished" ref="afd4795579900229d0710f2a1a707df16" args="(Provider *provider, QString key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::subscribeFinished </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="class_context_subscriber_1_1_provider.html">Provider</a> *&nbsp;</td>
+ <td class="paramname"> <em>provider</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>key</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [signal]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="aa6aa042d4a006eb0930d7805139e801f"></a><!-- doxytag: member="ContextSubscriber::Provider::unsubscribe" ref="aa6aa042d4a006eb0930d7805139e801f" args="(const QString &amp;key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::unsubscribe </td>
+ <td>(</td>
+ <td class="paramtype">const QString &amp;&nbsp;</td>
+ <td class="paramname"> <em>key</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Schedules a property to be unsubscribed from when the main loop is entered the next time. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6288252eecf25f879ecb7c1a507a9088"></a><!-- doxytag: member="ContextSubscriber::Provider::valueChanged" ref="a6288252eecf25f879ecb7c1a507a9088" args="(QString key)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void ContextSubscriber::Provider::valueChanged </td>
+ <td>(</td>
+ <td class="paramtype">QString&nbsp;</td>
+ <td class="paramname"> <em>key</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [signal]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<hr/><h2>Member Data Documentation</h2>
+<a class="anchor" id="a620db59b31c197b98ee64369fd46b30e"></a><!-- doxytag: member="ContextSubscriber::Provider::plugin" ref="a620db59b31c197b98ee64369fd46b30e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="class_context_subscriber_1_1_i_provider_plugin.html">IProviderPlugin</a>* <a class="el" href="class_context_subscriber_1_1_provider.html#a620db59b31c197b98ee64369fd46b30e">ContextSubscriber::Provider::plugin</a><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Plugin instance communicating with the concrete provider. </p>
+
+</div>
+</div>
+<a class="anchor" id="a904cca899aba13b6d356fea73737169e"></a><!-- doxytag: member="ContextSubscriber::Provider::pluginState" ref="a904cca899aba13b6d356fea73737169e" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="class_context_subscriber_1_1_provider.html#a18f291fc00e50055a02525f70e38a52b">PluginState</a> <a class="el" href="class_context_subscriber_1_1_provider.html#a904cca899aba13b6d356fea73737169e">ContextSubscriber::Provider::pluginState</a><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a6e8a91f8a673fb8f2f645212844eb421"></a><!-- doxytag: member="ContextSubscriber::Provider::providerInfo" ref="a6e8a91f8a673fb8f2f645212844eb421" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname"><a class="el" href="struct_context_provider_info.html">ContextProviderInfo</a> <a class="el" href="class_context_subscriber_1_1_provider.html#a6e8a91f8a673fb8f2f645212844eb421">ContextSubscriber::Provider::providerInfo</a><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Parameters used to initialize the plugin. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6b07417f7e024f8dac5b3b327383dbe9"></a><!-- doxytag: member="ContextSubscriber::Provider::subscribedKeys" ref="a6b07417f7e024f8dac5b3b327383dbe9" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">QSet&lt;QString&gt; <a class="el" href="class_context_subscriber_1_1_provider.html#a6b07417f7e024f8dac5b3b327383dbe9">ContextSubscriber::Provider::subscribedKeys</a><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>The keys that should be currently subscribed to. </p>
+
+</div>
+</div>
+<a class="anchor" id="a154fa6041cd471ac46c1038f312ffde6"></a><!-- doxytag: member="ContextSubscriber::Provider::subscribeLock" ref="a154fa6041cd471ac46c1038f312ffde6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">QMutex <a class="el" href="class_context_subscriber_1_1_provider.html#a154fa6041cd471ac46c1038f312ffde6">ContextSubscriber::Provider::subscribeLock</a><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="acbf130166861d576d906fc99da9b2d6d"></a><!-- doxytag: member="ContextSubscriber::Provider::toSubscribe" ref="acbf130166861d576d906fc99da9b2d6d" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">QSet&lt;QString&gt; <a class="el" href="class_context_subscriber_1_1_provider.html#acbf130166861d576d906fc99da9b2d6d">ContextSubscriber::Provider::toSubscribe</a><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Keys pending for subscription. </p>
+
+</div>
+</div>
+<a class="anchor" id="aee2cca89bff8d2bc65039a42cb32563c"></a><!-- doxytag: member="ContextSubscriber::Provider::toUnsubscribe" ref="aee2cca89bff8d2bc65039a42cb32563c" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">QSet&lt;QString&gt; <a class="el" href="class_context_subscriber_1_1_provider.html#aee2cca89bff8d2bc65039a42cb32563c">ContextSubscriber::Provider::toUnsubscribe</a><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Keys pending for unsubscription. </p>
+
+</div>
+</div>
+<a class="anchor" id="a6e41ed2ec544fc16bd399d8fbcec46ed"></a><!-- doxytag: member="ContextSubscriber::Provider::values" ref="a6e41ed2ec544fc16bd399d8fbcec46ed" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">QMap&lt;QString, <a class="el" href="struct_context_subscriber_1_1_timed_value.html">TimedValue</a>&gt; <a class="el" href="class_context_subscriber_1_1_provider.html#a6e41ed2ec544fc16bd399d8fbcec46ed">ContextSubscriber::Provider::values</a><code> [private]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>A cache of values already received from the plugin. </p>
+
+</div>
+</div>
+<hr/>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="provider_8h_source.html">provider.h</a></li>
+<li><a class="el" href="mocs_8cpp.html">mocs.cpp</a></li>
+<li><a class="el" href="provider_8cpp.html">provider.cpp</a></li>
+</ul>
+</div>
+<hr size="1"/><address style="text-align: right;"><small>Generated on Mon Nov 9 15:31:10 2009 for libcontextsubscriber by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
+</body>
+</html>