fix build break
[apps/core/preloaded/email.git] / composer / include / email-composer.h
1 /*
2  * Copyright 2012  Samsung Electronics Co., Ltd
3  *
4  * Licensed under the Flora License, Version 1.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *    http://www.tizenopensource.org/license
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef __DEF_email_composer_H_
18 #define __DEF_email_composer_H_
19
20 #include <utilX.h>
21 #include <bundle.h>
22 #include <ui-gadget.h>
23 #include <ui-gadget-module.h>
24 #include <E_DBus.h>
25 #include <EWebKit2.h>
26
27 #include "email-composer-type.h"
28 #include "email-common-types.h"
29 #include "email-locale.h"
30 #include "email-engine.h"
31 #include "email-utils.h"
32
33 #define _EDJ(o) elm_layout_edje_get(o)
34 #define COMPOSER_STRDUP(src) (((src)) ? g_strdup((src)) : NULL)
35
36 #define COMPOSER_ICON_DIR IMGDIR
37
38 #define COMPOSER_NAVI_HEIGHT 108
39
40 #define COMPOSER_SP_H 10
41 #define COMPOSER_EDIT_FIELD_H 80
42 #define COMPOSER_BUTTON_FIELD_H 80
43
44 #define _ENABLE_ENDKEY_ 0
45 #define MAX_RECENT_ITEM 100
46 #define TEMP_BUFFER_SIZE 1024
47
48 #define MAX_WEBVIEW_HEIGHT 88
49 #define IME_WEBVIEW_LANDSCAPE_HEIGHT 20
50
51 #define IME_WEBVIEW_PORTRAIT_HEIGHT 43
52 #define IME_WEBVIEW_PORTRAIT_HEIGHT_WITH_OPTION_HEADER 33
53
54
55 typedef struct ug_data EmailComposerUGD;
56 struct ug_data {
57         ui_gadget_h ug_main;
58         Evas_Object *base;
59
60         Evas_Object *win_main;
61         Evas *evas;
62
63         Evas_Object *bg;
64         Elm_Theme *th;
65
66         /* New notify - TODO: unify the popup usage */
67         Evas_Object *composer_noti;
68         Evas_Object *timeout_noti;
69         Evas_Object *change_addr_noti;
70         Evas_Object *composer_popup;
71
72         Evas_Object *popup_win;
73         Evas_Object *main_layout;
74         Evas_Object *navi_bar;
75         Elm_Object_Item *navi_item;
76         Evas_Object *main_scroller;
77         Evas_Object *c_layout;
78         Evas_Object *conform;
79
80         Evas_Object *to_ly;
81         Evas_Object *cc_ly;
82         Evas_Object *bcc_ly;
83         Evas_Object *from_ly;
84         Evas_Object *subject_ly;
85         Evas_Object *webkit_ly;
86
87         Eina_Bool attachment_list_compressed;
88         Eina_List *attachment_item_obj_list;
89         Evas_Object *attachment_item_box;
90         Evas_Object *attachment_contracted_item;
91
92         bool bSendBtnDisabled;
93         bool cc_added;
94         bool bcc_added;
95         bool me_added;
96
97         int indicator_height;
98         bool is_main_scroller_scrolling;
99         bool is_webview_scrolling;
100
101 #ifdef _TEMPORARY_FIX_FOR_ROTATION_
102         bool temporary_fix_for_rotation;
103 #endif
104
105         Evas_Object *priv_selected_entry;
106         Evas_Object *selected_entry;
107         Elm_Object_Item *selected_item;
108
109         int option_header_opened;
110
111         Evas_Object *dummy_btn;
112         Evas_Object *add_me_btn;
113         Evas_Object *save_as_draft_btn;
114
115         int priority_option;
116         Evas_Object *priority_btn;
117         Evas_Object *priority_rdg;
118         Evas_Object *priority_rd[3];
119
120         Evas_Object *tracking_btn;
121         Eina_Bool tracking_option[2];
122
123         Evas_Object *cbar;
124         Evas_Object *cbar2;
125         Elm_Object_Item *controlbar_item[6];
126
127         Evas_Object *cc_btn;
128         Evas_Object *bcc_btn;
129
130         Evas_Object *send_btn;
131         Evas_Object *cancel_btn;
132
133         bool is_hided;
134
135         Ecore_Idler *idler_save_draft;
136         Ecore_Idler *idler_set_focus;
137         Ecore_Idler *idler_show_progress;
138
139         Ecore_Timer *send_timer;
140         Ecore_Timer *bringin_timer;
141         Ecore_Timer *mbe_unfocus_timer;
142         Ecore_Timer *focus_timer;
143         Ecore_Timer *launch_timer;
144
145         /* Predictive Search */
146         Ecore_Timer *ps_timer;
147         Ecore_Timer *sc_timer;
148
149         Evas_Object *ps_list;
150         Elm_Genlist_Item_Class ps_itc_1;
151         Elm_Genlist_Item_Class ps_itc_2;
152         Eina_List *contacts_list_info;
153
154         char ps_keyword[MAX_RECIPIENT_ADDRESS_LEN];
155         bool b_cc_ps_open;
156         bool b_bcc_ps_open;
157         bool ps_on;
158         bool is_mbe_selected;
159         bool is_recipient_duplicated;
160
161         /* Multibutton Entry */
162         Evas_Object *to_mbe_entry;
163         Evas_Object *cc_mbe_entry;
164         Evas_Object *bcc_mbe_entry;
165         Evas_Object *from_mbe_entry;
166         Evas_Object *subject_editfield;
167         Evas_Object *subject_entry;
168
169         Evas_Object *to_mbe;
170         Evas_Object *cc_mbe;
171         Evas_Object *bcc_mbe;
172         Evas_Object *from_mbe;
173         Eina_List *to_mbe_initial_list;
174         Eina_List *cc_mbe_initial_list;
175         Eina_List *bcc_mbe_initial_list;
176         Eina_List *attach_initial_list;
177         char *saved_subject;
178
179         COMPOSER_FOCUS_STATUS_TYPE focus_status;
180
181         Evas_Object *body_ewkview;
182
183         Eina_Bool has_body_html;
184         char *saved_html_path;
185         char *saved_html_content;
186         char *latest_html_content;
187         char *plain_content;
188
189         int to_recipients_cnt;
190         int cc_recipients_cnt;
191         int bcc_recipients_cnt;
192
193         Evas_Object *dn_noti_popup;
194         Evas_Object *dn_prog_popup;
195         Evas_Object *fw_dn_label;
196         Evas_Object *fw_dn_progress;
197
198         int composer_type;
199         int nExistingMailID;
200
201         EmailComposerAccount *account_info;
202         EmailComposerMailbox *mailbox_info;
203
204         EmailComposerMail *new_mail_info;
205         EmailComposerMail *existing_mail_info;
206
207         GList *from_list;
208         GList *to_list;
209         GList *cc_list;
210         GList *bcc_list;
211         email_address_info_list_t *addrs_info_list;
212
213         GList *fw_attachment_list;
214         int fw_dn_cnt;
215         int fw_dn_total_cnt;
216         int fw_dn_idx;
217         int fw_dn_handle[MAX_ATTACHMENT_ITEM];
218
219         int send_result;
220         int save_drafts;
221         bool b_sending;
222
223         Ecore_IMF_Context *imf_context;
224
225         Evas_Object *account_gen_list;
226
227         bool isRotated;
228
229         bool b_cc_bcc;
230         bool clipboard_on;
231         Eina_List *popup_list;
232
233         COMPOSER_ERROR_TYPE_E eComposerErrorType;
234         int ime_height;
235
236         Eina_List *listOfImageUrls;
237
238         Eina_Bool b_load_finished;
239 };
240
241 typedef struct _EMAIL_CONTACT_LIST_INFO_S {
242         int index;
243         char *first_name;
244         char *last_name;
245         char *email_address;
246         char *image_path;
247         char display_name[MAX_RECIPIENT_ADDRESS_LEN];
248         EmailComposerUGD *ugd;
249 } EMAIL_CONTACT_LIST_INFO_S;
250
251 typedef struct _EMAIL_ATTACHMENT_INFO_S {
252         int mail_id;
253         int attach_id;
254         int index;
255         char *name;
256         char *path;
257         int size;
258         bool downloaded;
259         bool drm;
260         int inline_content;
261 } EMAIL_ATTACHMENT_INFO_S;
262
263 typedef enum {
264         COMPOSER_RECIPIENT_TYPE_NONE = 0,
265         COMPOSER_RECIPIENT_TYPE_TO,
266         COMPOSER_RECIPIENT_TYPE_CC,
267         COMPOSER_RECIPIENT_TYPE_BCC,
268         COMPOSER_RECIPIENT_TYPE_FROM,
269         COMPOSER_RECIPIENT_TYPE_MAX,
270 } COMPOSER_RECIPIENT_TYPE_E;
271
272 enum {
273         EMAIL_COMPOSER_ADD_ME_BTN,
274         EMAIL_COMPOSER_ADD_CC_BCC_BTN,
275         EMAIL_COMPOSER_SAVE_AS_DRAFT_BTN,
276         EMAIL_COMPOSER_PRIORITY_BTN,
277         EMAIL_COMPOSER_TRACKING_BTN,
278         EMAIL_COMPOSER_DUMMY_BTN,
279         EMAIL_COMPOSER_BTN_MAX
280 };
281
282 /****************************************************/
283 /*                      Function Declaration                    */
284 /****************************************************/
285
286 void create_composer_frame(EmailComposerUGD *ugd);
287 void _composer_create_view(Evas_Object *parent, EmailComposerUGD *ugd);
288 #endif                          /* __DEF_email_composer_H__ */