Now GetUnreadMessages dbus method tells also the number of unread messages
[modest] / libmodest-dbus-client / src / libmodest-dbus-client.h
1 /* Copyright (c) 2007, Nokia Corporation
2  * All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  *   notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  *   notice, this list of conditions and the following disclaimer in the
12  *   documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Nokia Corporation nor the names of its
14  *   contributors may be used to endorse or promote products derived from
15  *   this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
18  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
20  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
21  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29
30 #ifndef __LIBMODEST_DBUS_CLIENT_H__
31 #define __LIBMODEST_DBUS_CLIENT_H__
32
33 #include <libosso.h>
34 #include <glib.h>
35 #include <stdio.h>
36
37
38 /**
39  * libmodest_dbus_client_compose_mail:
40  * @osso_context: a valid osso_context instance
41  * @to: the To:-field of the message
42  * @cc: the Cc:-field of the message
43  * @bcc: the Bcc:-field of the message
44  * @subject: the Subject:-field of the message
45  * @body: the body (text) of the message
46  * @attachments: a list of (file://) URIs with the files to attach
47  *
48  * opens a new mail composer with the provided details filled in
49  *  
50  * Returns: TRUE upon success, FALSE otherwise
51  */
52 gboolean libmodest_dbus_client_compose_mail (osso_context_t *osso_context, const gchar *to, 
53                                              const gchar *cc, const gchar *bcc, const gchar* subject,
54                                              const gchar* body, 
55                                              GSList *attachments);
56
57 /**
58  * libmodest_dbus_client_mail_to:
59  * @osso_context: a valid osso_context instance
60  * @mailto_uri: a 'mailto:foo@bar.cuux' URI
61  *
62  * opens a new mail composer with the provided details filled in,
63  * based on a mailto: string. apart from the To:-field (the first arg),
64  * also, cc, bcc, subject and body are supported, ie. "mailto:foo@bar.cuu?subject=test"
65  *
66  * Returns: TRUE upon success, FALSE otherwise
67  */
68 gboolean libmodest_dbus_client_mail_to (osso_context_t *osso_context, 
69                                         const gchar *mailto_uri);
70
71
72 /**
73  * libmodest_dbus_client_open_message:
74  * @osso_context: a valid osso_context instance
75  * @mail_uri: the unique URI referring to some message
76  *
77  * opens an existing message based on its URI; these URIs are unique pointers
78  * to some message, and are retrieved from modest.
79  *
80  * Returns: TRUE upon success, FALSE otherwise
81  */
82 gboolean  libmodest_dbus_client_open_message (osso_context_t *osso_context, 
83                                               const gchar *mail_uri);
84
85
86 /**
87  * libmodest_dbus_client_send_and_receive:
88  * @osso_context: a valid osso_context instance
89  *
90  * send/receive messages automatically for all accounts. This is equivalent 
91  * to the call
92  * libmodest_dbus_client_send_and_receive_full (@osso_context, %NULL, %TRUE)
93  *
94  * Returns: %TRUE upon success, %FALSE otherwise
95  */
96 gboolean libmodest_dbus_client_send_and_receive (osso_context_t *osso_context);
97
98
99
100 /**
101  * libmodest_dbus_client_send_and_receive_full:
102  * @osso_context: a valid osso_context instance
103  * @account: the account name, or %NULL to do a send receive on all accounts.
104  * @manual: a #gboolean
105  *
106  * send/receive messages. If @manual is %TRUE, the send receive request
107  * will start immediately. If @manual if %FALSE, it may wait for IP heartbeat
108  * if enabled.
109  *
110  * If Modest is built without heartbeat support, then the result of the call
111  * will be the same independently of @manual value (always immediate start).
112  *
113  * The call will apply to @account only, unless @account is %NULL, that means
114  * send receive will be performed on all accounts.
115  *
116  * Returns: %TRUE upon success, %FALSE otherwise
117  */
118 gboolean libmodest_dbus_client_send_and_receive_full (osso_context_t *osso_context,
119                                                       const gchar *account,
120                                                       gboolean manual);
121
122 /**
123  * libmodest_dbus_client_update_folder_counts:
124  * @osso_context: a valid osso_context instance
125  * @account: the account name
126  *
127  * updates folder counts of @account.
128  *
129  * Returns: %TRUE upon success, %FALSE otherwise
130  */
131 gboolean libmodest_dbus_client_update_folder_counts (osso_context_t *osso_context,
132                                                      const gchar *account);
133
134
135
136 /**
137  * libmodest_dbus_client_open_default_inbox:
138  * @osso_context: a valid osso_context instance
139  *
140  * start modest, and open the inbox for the default account
141  *
142  * Returns: TRUE upon success, FALSE otherwise
143  */
144 gboolean libmodest_dbus_client_open_default_inbox (osso_context_t *osso_context);
145
146 /**
147  * libmodest_dbus_client_open_edit_accounts_dialog
148  * @osso_context: a valid osso_context instance
149  *
150  * Starts Modest showing the edit accounts dialog on top of the
151  * initial window. If there is no account then the new account dialog
152  * is automatically launched
153  *
154  * Returns: TRUE upon success, FALSE otherwise
155  */
156 gboolean  libmodest_dbus_client_open_edit_accounts_dialog (osso_context_t *osso_context);
157
158 /**
159  * libmodest_dbus_client_open_default_inbox:
160  * @osso_context: a valid osso_context instance
161  *
162  * start modest, and open the inbox for the default account
163  *
164  * Returns: TRUE upon success, FALSE otherwise
165  */
166 gboolean libmodest_dbus_client_open_default_inbox (osso_context_t *osso_context);
167
168 /**
169  * libmodest_dbus_client_open_account:
170  * @osso_context: a valid osso_context instance
171  * @account_id: the id of the account to open
172  *
173  * Shows the folders of a given account
174  *
175  * Returns:  TRUE upon success, FALSE otherwise
176  **/
177 gboolean libmodest_dbus_client_open_account (osso_context_t *osso_context,
178                                              const gchar *account_id);
179
180 /*
181  * below: functions specific to osso-global-search; not useful for other clients.
182  *
183  */
184
185 typedef enum {
186
187         MODEST_DBUS_SEARCH_SUBJECT   = (1 << 0),
188         MODEST_DBUS_SEARCH_SENDER    = (1 << 1),
189         MODEST_DBUS_SEARCH_RECIPIENT = (1 << 2),
190         MODEST_DBUS_SEARCH_SIZE      = (1 << 3),
191         MODEST_DBUS_SEARCH_BODY      = (1 << 6)
192
193 } ModestDBusSearchFlags;
194
195 typedef struct {
196         gchar     *msgid; /* E.g. the URI of the message. */
197         gchar     *subject;
198         gchar     *folder; /* The name, not the URI. */
199         gchar     *sender;
200         guint64    msize;
201         gboolean   has_attachment;
202         gboolean   is_unread;
203         gint64     timestamp;            
204 } ModestSearchHit;
205
206
207 void modest_account_hits_list_free (GList *account_hits);
208 void modest_search_hit_list_free (GList *hits);
209
210
211 gboolean libmodest_dbus_client_search            (osso_context_t          *osso_ctx,
212                                                   const gchar             *query,
213                                                   const gchar             *folder,
214                                                   time_t                   start_date,
215                                                   time_t                   end_date,
216                                                   guint32                  min_size,
217                                                   ModestDBusSearchFlags    flags,
218                                                   GList                  **hits);
219
220 typedef struct {
221         gchar *subject;
222         time_t timestamp;
223 } ModestGetUnreadMessagesHit;
224
225 typedef struct {
226         gchar *account_id;
227         gchar *account_name;
228         gchar *store_protocol;
229         gint unread_count;
230         GList *hits;
231 } ModestAccountHits;
232
233 /**
234  * this method returns in account_hit_list a list of #ModestAccountHits.
235  */
236 gboolean libmodest_dbus_client_get_unread_messages (osso_context_t *osso_ctx,
237                                                     gint msgs_per_account,
238                                                     GList **account_hits_list);
239
240 gboolean libmodest_dbus_client_delete_message   (osso_context_t   *osso_ctx,
241                                                  const char       *msg_uri);
242
243
244 typedef struct {
245         gchar     *folder_uri;
246         gchar     *folder_name;  
247 } ModestFolderResult;
248
249 gboolean libmodest_dbus_client_get_folders (osso_context_t *osso_ctx, GList **folders); 
250
251 void modest_folder_result_list_free (GList *folders);
252
253                                                 
254                                                         
255 #endif /* __LIBMODEST_DBUS_CLIENT_H__ */