1
<refentry id="TnyFolderMonitor">
3
<refentrytitle role="top_of_page">TnyFolderMonitor</refentrytitle>
4
<manvolnum>3</manvolnum>
5
<refmiscinfo>LIBTINYMAIL Library</refmiscinfo>
9
<refname>TnyFolderMonitor</refname>
10
<refpurpose>A folder observer that updates lists</refpurpose>
11
<!--[<xref linkend="desc" endterm="desc.title"/>]-->
14
<refsynopsisdiv role="synopsis">
15
<title role="synopsis.title">Synopsis</title>
21
<link linkend="TnyFolderMonitor-struct">TnyFolderMonitor</link>;
22
<link linkend="TnyFolderObserver">TnyFolderObserver</link>* <link linkend="tny-folder-monitor-new">tny_folder_monitor_new</link> (<link linkend="TnyFolder">TnyFolder</link> *folder);
23
<link linkend="void">void</link> <link linkend="tny-folder-monitor-poke-status">tny_folder_monitor_poke_status</link> (<link linkend="TnyFolderMonitor">TnyFolderMonitor</link> *self);
24
<link linkend="void">void</link> <link linkend="tny-folder-monitor-add-list">tny_folder_monitor_add_list</link> (<link linkend="TnyFolderMonitor">TnyFolderMonitor</link> *self,
25
<link linkend="TnyList">TnyList</link> *list);
26
<link linkend="void">void</link> <link linkend="tny-folder-monitor-remove-list">tny_folder_monitor_remove_list</link> (<link linkend="TnyFolderMonitor">TnyFolderMonitor</link> *self,
27
<link linkend="TnyList">TnyList</link> *list);
28
<link linkend="void">void</link> <link linkend="tny-folder-monitor-stop">tny_folder_monitor_stop</link> (<link linkend="TnyFolderMonitor">TnyFolderMonitor</link> *self);
29
<link linkend="void">void</link> <link linkend="tny-folder-monitor-start">tny_folder_monitor_start</link> (<link linkend="TnyFolderMonitor">TnyFolderMonitor</link> *self);
34
<refsect1 role="object_hierarchy">
35
<title role="object_hierarchy.title">Object Hierarchy</title>
38
<link linkend="GObject">GObject</link>
46
<refsect1 role="impl_interfaces">
47
<title role="impl_interfaces.title">Implemented Interfaces</title>
49
TnyFolderMonitor implements
50
<link linkend="TnyFolderObserver">TnyFolderObserver</link>.</para>
58
<refsect1 role="desc">
59
<title role="desc.title">Description</title>
61
A <link linkend="TnyFolderObserver"><type>TnyFolderObserver</type></link> implementation that updates <link linkend="TnyList"><type>TnyList</type></link> implementations by adding and removing <link linkend="TnyHeader"><type>TnyHeader</type></link> instances
65
<refsect1 role="details">
66
<title role="details.title">Details</title>
68
<title><anchor id="TnyFolderMonitor-struct" role="struct"/>TnyFolderMonitor</title>
69
<indexterm><primary>TnyFolderMonitor</primary></indexterm><programlisting>typedef struct _TnyFolderMonitor TnyFolderMonitor;</programlisting>
74
<title><anchor id="tny-folder-monitor-new" role="function"/>tny_folder_monitor_new ()</title>
75
<indexterm><primary>tny_folder_monitor_new</primary></indexterm><programlisting><link linkend="TnyFolderObserver">TnyFolderObserver</link>* tny_folder_monitor_new (<link linkend="TnyFolder">TnyFolder</link> *folder);</programlisting>
77
Creates a folder monitor for <parameter>folder</parameter></para>
80
</para><variablelist role="params">
81
<varlistentry><term><parameter>folder</parameter> :</term>
82
<listitem><simpara> a <link linkend="TnyFolder"><type>TnyFolder</type></link> instance
83
</simpara></listitem></varlistentry>
84
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a new <link linkend="TnyFolderMonitor"><type>TnyFolderMonitor</type></link> instance
85
</simpara></listitem></varlistentry>
86
</variablelist></refsect2>
88
<title><anchor id="tny-folder-monitor-poke-status" role="function"/>tny_folder_monitor_poke_status ()</title>
89
<indexterm><primary>tny_folder_monitor_poke_status</primary></indexterm><programlisting><link linkend="void">void</link> tny_folder_monitor_poke_status (<link linkend="TnyFolderMonitor">TnyFolderMonitor</link> *self);</programlisting>
91
Trigger the poke method on the folder instance being monitored.
92
Also take a look at tny_folder_poke_status in <link linkend="TnyFolder"><type>TnyFolder</type></link>.</para>
95
</para><variablelist role="params">
96
<varlistentry><term><parameter>self</parameter> :</term>
97
<listitem><simpara> a <link linkend="TnyFolderMonitor"><type>TnyFolderMonitor</type></link> instance
98
</simpara></listitem></varlistentry>
99
</variablelist></refsect2>
101
<title><anchor id="tny-folder-monitor-add-list" role="function"/>tny_folder_monitor_add_list ()</title>
102
<indexterm><primary>tny_folder_monitor_add_list</primary></indexterm><programlisting><link linkend="void">void</link> tny_folder_monitor_add_list (<link linkend="TnyFolderMonitor">TnyFolderMonitor</link> *self,
103
<link linkend="TnyList">TnyList</link> *list);</programlisting>
105
Add <parameter>list</parameter> to the registered lists that are interested in changes. <parameter>list</parameter> will
106
remain referenced until it's unregisterd using tny_folder_monitor_remove_list
107
or until <parameter>self</parameter> is finalized.</para>
110
</para><variablelist role="params">
111
<varlistentry><term><parameter>self</parameter> :</term>
112
<listitem><simpara> a <link linkend="TnyFolderChange"><type>TnyFolderChange</type></link> instance
113
</simpara></listitem></varlistentry>
114
<varlistentry><term><parameter>list</parameter> :</term>
115
<listitem><simpara> a <link linkend="TnyList"><type>TnyList</type></link> instance
116
</simpara></listitem></varlistentry>
117
</variablelist></refsect2>
119
<title><anchor id="tny-folder-monitor-remove-list" role="function"/>tny_folder_monitor_remove_list ()</title>
120
<indexterm><primary>tny_folder_monitor_remove_list</primary></indexterm><programlisting><link linkend="void">void</link> tny_folder_monitor_remove_list (<link linkend="TnyFolderMonitor">TnyFolderMonitor</link> *self,
121
<link linkend="TnyList">TnyList</link> *list);</programlisting>
123
Remove <parameter>list</parameter> from the lists that are interested in changes. This will remove
124
the reference that got added when you ussed the tny_folder_monitor_add_list.</para>
127
</para><variablelist role="params">
128
<varlistentry><term><parameter>self</parameter> :</term>
129
<listitem><simpara> a <link linkend="TnyFolderChange"><type>TnyFolderChange</type></link> instance
130
</simpara></listitem></varlistentry>
131
<varlistentry><term><parameter>list</parameter> :</term>
132
<listitem><simpara> a <link linkend="TnyList"><type>TnyList</type></link> instance
133
</simpara></listitem></varlistentry>
134
</variablelist></refsect2>
136
<title><anchor id="tny-folder-monitor-stop" role="function"/>tny_folder_monitor_stop ()</title>
137
<indexterm><primary>tny_folder_monitor_stop</primary></indexterm><programlisting><link linkend="void">void</link> tny_folder_monitor_stop (<link linkend="TnyFolderMonitor">TnyFolderMonitor</link> *self);</programlisting>
139
Stop monitoring the folder. At some point in time you must perform method
140
after you used tny_folder_monitor_start (for example before unreferencing
141
<parameter>self</parameter>).
144
The reason for that is that unless you stop <parameter>self</parameter>, it would still have a
145
reference being held by the <link linkend="TnyFolder"><type>TnyFolder</type></link> instance being monitored. By stopping
146
this monitor, you explicitly ask that folder instance to unregister <parameter>self</parameter> as
147
an observer. And by that loosing that reference too.</para>
150
</para><variablelist role="params">
151
<varlistentry><term><parameter>self</parameter> :</term>
152
<listitem><simpara> a <link linkend="TnyFolderMonitor"><type>TnyFolderMonitor</type></link> instance
153
</simpara></listitem></varlistentry>
154
</variablelist></refsect2>
156
<title><anchor id="tny-folder-monitor-start" role="function"/>tny_folder_monitor_start ()</title>
157
<indexterm><primary>tny_folder_monitor_start</primary></indexterm><programlisting><link linkend="void">void</link> tny_folder_monitor_start (<link linkend="TnyFolderMonitor">TnyFolderMonitor</link> *self);</programlisting>
159
Start monitoring the folder. The starting of a monitor implies that <parameter>self</parameter>
160
will become an observer of the folder instance. This adds a reference to <parameter>self</parameter>
161
that at some point in time must be removed using tny_folder_monitor_stop.
164
This means that if you start the monitor, you must also at some point stop it.
167
Keep this in mind: monitoring means that registered lists are kept alive. A
168
list that is alive means that it's consuming memory!</para>
171
</para><variablelist role="params">
172
<varlistentry><term><parameter>self</parameter> :</term>
173
<listitem><simpara> a <link linkend="TnyFolderMonitor"><type>TnyFolderMonitor</type></link> instance
174
</simpara></listitem></varlistentry>
175
</variablelist></refsect2>