- <part>
- <title>Architecture</title>
- <partintro>
- <para><application>modest</application> tries to be quite flexible in its
- design. However, it's always important not to make things too
- generic. Both for reasons of time limitations and keeping the software
- understandable and 'modest', it's important to limit the scope.
- </para>
-
- <para>
- For <application>modest</application>, the following:
- <itemizedlist>
- <listitem><application>modest</application> is a e-mail program
- using the <package>tinymail</package> and <package>camel</package>
- libraries;</listitem>
- <listitem><application>modest</application> targets gtk and
- gconf-based user-interfaces, including the Hildon
- environment;</listitem>
- <listitem><application>modest</application> main use-case is in
- small, mobile device such as the <productname>Nokia 770 Internet
- Tablet</productname>;</listitem>
- <listitem>However, effort is made also to
- make <application>modest</application> usable as a general-purpose
- e-mail client on normal desktop computer.</listitem>
- </itemizedlist>
- </para>
- </partintro>
- </part>
-
- <part>
- <title>Design</title>
- <partintro>
- <para>In this part, we'll discuss the design of various parts of
- <application>modest</application>. We'll not go into the details of
- various APIs in this chapter. Please consul the documentation generated
- from the source code (<systemitem>gtk-doc</systemitem>) for that.</para>
- </partintro>
-
- <chapter>
- <title>Configuration</title>
- <para>Configuration is the part of <application>modest</application>
- that deals with storing all settings. While the design allows for
- alternative implementations, currently
- only <systemitem>GConf</systemitem> is supported as a backend.
- </para>
-
- <para>
- All dealing with configuration is done with
- the <classname>ModestConf</classname>-class. It is declared
- in <filename> modest-conf.h</filename>, and
- the <systemitem>GConf</systemitem>-based implementation in
- <filename>modest-conf-gconf.c</filename>. As said, there could be
- different implementations --
- nothing <systemitem>GConf</systemitem>-specific is visible in the
- <classname>ModestConf</classname>-<abbrev>API</abbrev>.
- </para>
- </chapter>
-
- <chapter>
- <title>Account Management</title>
- <para>
- Account Management is the part of <application>modest</application>
- that deals with the setting related to sending and receiving of
- e-mail. We will follow the libcamel-convention of using the
- term <emphasis> store</emphasis> for an e-mail storage/retrieval
- server, and a <emphasis>transport</emphasis> for a server that
- transports mail to its destination.
- </para>
-
- <para>
- In practice, the following types are available:
- <itemizedlist>
- <listitem><emphasis>stores</emphasis>: <abbrev>POP</abbrev>
- and <abbrev>IMAP</abbrev>; </listitem>
- <listitem> <emphasis>transports</emphasis>: <systemitem>sendmail</systemitem>
- and <abbrev>SMTP</abbrev>.</listitem>
- </itemizedlist>
- </para>
-
- <sect1>
- <title>Definitions</title>
- <itemizedlist>
- <listitem>An <emphasis>account</emphasis> is a named entity
- consisting of a <emphasis>store</emphasis> and
- a <emphasis>transport</emphasis>. Note: For our mobile use-cases,
- the <emphasis>transport</emphasis> cannot be a static entity, but
- may depend on the network connection. That is however not part of
- Account Management, so not discussed here</listitem>
- <listitem>A <emphasis>server account</emphasis> is account
- describing the connection with a specific server. Server accounts
- come in two type:
- <itemizedlist>
- <listitem>A <emphasis>transport</emphasis> describes the connection information
- (servername, username, password etc.) for a transport
- server;</listitem>
- <listitem>A <emphasis>store</emphasis> describes the connection information for
- a store server;</listitem>
- </itemizedlist>
- </listitem>
- </itemizedlist>
- </sect1>
-
- <sect1>
- <title>Code</title>
- <para>The functions to deal with account and server accounts are
- located in <classname>ModestAccountMgr</classname>, ie. in
- <filename>modest-account-mgr.[ch]</filename>. There function to add
- specific values for both, to list the available ones, etc. Please
- refer to the source code documentation for details.
- </para>
- </sect1>
-
- <sect1>
- <title>Location in configuration database</title>
- <para>
- <emphasis>Accounts</emphasis> can be found
- in <systemitem>/apps/modest/accounts</systemitem>,
- while <emphasis>server accounts</emphasis> can be found
- in <systemitem>/app/modest/server_accounts</systemitem>.
- </para>
-
- <para>
- The following image show an
- account <systemitem>accountstest</systemitem> with server accounts
- <systemitem>mystore</systemitem>
- and <systemitem>mytransport</systemitem>.
- <imagedata fileref="modest-account-mgr.png"/>
- </para>