summaryrefslogtreecommitdiff
path: root/docs/reference/xml/evolution-data-server-cursor-example.sgml.in
diff options
context:
space:
mode:
Diffstat (limited to 'docs/reference/xml/evolution-data-server-cursor-example.sgml.in')
-rw-r--r--docs/reference/xml/evolution-data-server-cursor-example.sgml.in147
1 files changed, 147 insertions, 0 deletions
diff --git a/docs/reference/xml/evolution-data-server-cursor-example.sgml.in b/docs/reference/xml/evolution-data-server-cursor-example.sgml.in
new file mode 100644
index 000000000..be999ae2d
--- /dev/null
+++ b/docs/reference/xml/evolution-data-server-cursor-example.sgml.in
@@ -0,0 +1,147 @@
+<refentry id="eds-cursor-example" revision="30 Nov 2013">
+ <refmeta>
+ <refentrytitle>Contacts Browser Example</refentrytitle>
+ <refmiscinfo>Contacts Browser Example</refmiscinfo>
+ </refmeta>
+ <refnamediv>
+ <refname>Contacts Browser Example</refname>
+ <refpurpose>
+ Explanation of how to create a scrolling window listing contacts in
+ alphabetical order.
+ </refpurpose>
+ </refnamediv>
+
+ <refsect1>
+ <title>Introduction</title>
+ <para>
+ This is a fully functional reference application for implementing scrolling contact
+ browsers using the #EBookClientCursor. With the cursor, the following features are
+ possible.
+ </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Display contacts in a configurable sort order</para>
+ <para>
+ Sort by any #EContactField which conforms to #G_TYPE_STRING, this can be checked
+ with e_contact_field_type()
+ </para>
+ </listitem>
+ <listitem>
+ <para>Minimal memory constraints</para>
+ <para>
+ Only load into memory the contacts which are currently visible in the list
+ </para>
+ </listitem>
+ <listitem>
+ <para>Filter search results on the fly</para>
+ <para>
+ Set new search expressions generated with #EBookQuery on the fly. Refresh
+ the contact list at the current position without losing the current cursor
+ position.
+ </para>
+ </listitem>
+ <listitem>
+ <para>Display the the user's alphabet</para>
+ <para>
+ Using interesting features from ICU libraries allow us to display
+ the user's alphabet, and implement features such as jumping to
+ a given letter in the user's alphabet.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ The actual example code is built into the 'example' subdirectory of the Evolution Data Server
+ sources. In order to run the example, just launch the program and give it a path to a directory
+ full of vcards, bearing the .vcf filename extention.
+ </para>
+
+ </refsect1>
+
+ <refsect1>
+ <title>Contact Browser</title>
+ <para>
+ Below is an example of the contact browser code itself, the example program is
+ broken down into a couple of object classes which are also listed below.
+ </para>
+
+ <informalexample>
+ <programlisting>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ parse="text"
+ href="@CMAKE_SOURCE_DIR@/src/examples/cursor/cursor-example.c"/>
+ </programlisting>
+ </informalexample>
+ </refsect1>
+
+ <refsect1>
+ <title>The alphabetic navigator</title>
+ <para>
+ This is a simple class which implements a vertical scroller and displays
+ various letters according to the currently active alphabet. The actual
+ interaction with #EBookClientCursor is done in the main contact browser
+ and this class is simply configured with the active alphabet.
+ </para>
+
+ <informalexample>
+ <programlisting>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ parse="text"
+ href="@CMAKE_SOURCE_DIR@/src/examples/cursor/cursor-navigator.c"/>
+ </programlisting>
+ </informalexample>
+ </refsect1>
+
+ <refsect1>
+ <title>The search entry</title>
+ <para>
+ The search entry is placed at the top of the contacts browser,
+ this class simply implements a drop down box choosing the appropriate
+ search expression which should be used to filter the contacts
+ in the browser display window.
+ </para>
+
+ <informalexample>
+ <programlisting>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ parse="text"
+ href="@CMAKE_SOURCE_DIR@/src/examples/cursor/cursor-search.c"/>
+ </programlisting>
+ </informalexample>
+ </refsect1>
+
+ <refsect1>
+ <title>The contact slot</title>
+ <para>
+ This is a very simple class who's only purpose is to display
+ contact related data, each entry in the list is a 'slot'
+ </para>
+
+ <informalexample>
+ <programlisting>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ parse="text"
+ href="@CMAKE_SOURCE_DIR@/src/examples/cursor/cursor-slot.c"/>
+ </programlisting>
+ </informalexample>
+ </refsect1>
+
+ <refsect1>
+ <title>Creating addressbooks and loading vcards</title>
+ <para>
+ This is the messy part of the example, here we take care
+ of creating a custom addressbook and populating it with
+ the contacts found in the directory given to the example.
+ </para>
+
+ <informalexample>
+ <programlisting>
+ <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+ parse="text"
+ href="@CMAKE_SOURCE_DIR@/src/examples/cursor/cursor-data.c"/>
+ </programlisting>
+ </informalexample>
+ </refsect1>
+
+</refentry>