change sound path of mms media
[apps/home/message-app.git] / composer / include / msg-ui-composer-bubble.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 __MSG_UI_COMPOSER_BUBBLE_H__
18 #define __MSG_UI_COMPOSER_BUBBLE_H__
19
20 #include <stdio.h>
21 #include <stdlib.h>
22 #include <glib.h>
23
24 #include <msg.h>
25 #include <msg_storage.h>
26 #include <msg_transport.h>
27
28 #include <libintl.h>
29 #include <bundle.h>
30 #include <Ecore.h>
31 #include <Elementary.h>
32 #include <ui-gadget-module.h>
33 #include <aul.h>
34 #include <time.h>
35
36 #include "msg-ui-util.h"
37 #include "msg-ui-common-utility.h"
38
39 #include <contacts-svc.h>
40 #include <contacts-ug.h>
41
42 #define MSG_BUBBLE_SIM_MSG_ICON         IMGDIR"/07_message_sim.png"
43 #define MSG_BUBBLE_ATTACH_ICON          IMGDIR"/Seven_IM_clip_nor.png"
44
45 /* STYLE for genlist and entry */
46 #define MSG_BUBBLE_STYLE_SENT   "sentmessage"
47 #define MSG_BUBBLE_STYLE_RECV   "readmessage"
48
49 #define MSG_BUBBLE_CONTENT_H (653)
50 #define MSG_BUBBLE_IMG_MAX_W (320)
51 #define MSG_BUBBLE_IMG_MAX_H (320)
52
53 #define MSG_BUBBLE_CONTROLBAR_ITEM_NUM  (4)
54
55 #define MSG_BUBBLE_DELETE_NOTI_TIME (1.5)
56
57 typedef enum {
58         BUBBLE_NORMAL_VIEW = 0,
59         BUBBLE_EDIT_VIEW,
60         BUBBLE_UNLOAD_VIEW,
61 } BubbleViewMode;
62
63 typedef enum {
64         BUBBLE_UG_START = 0,
65         BUBBLE_UG_PAUSE,
66         BUBBLE_UG_RESUME,
67         BUBBLE_UG_DESTROY,
68 } BubbleUGState;
69
70 typedef enum {
71         SCROLL_DEFAULT = 0,
72         SCROLL_FOCUS_IN,
73         SCROLL_FOCUS_OUT,
74         SCROLL_FOCUS_OTHER,
75 } BubbleScrollFocus;
76
77 typedef enum {
78         WORD_TYPE_NONE = 0x00,
79         WORD_TYPE_URL,
80         WORD_TYPE_URL_WITH_PROTC,
81         WORD_TYPE_NUM,
82         WORD_TYPE_EMAIL
83 } BubbleTextType;
84
85 typedef enum {
86         MSG_BOX_PACK_START = 0,
87         MSG_BOX_PACK_END,
88         MSG_BOX_PACK_BEFORE,
89         MSG_BOX_PACK_AFTER,
90 } MsgBoxPackType;
91
92 typedef struct {
93         msg_message_id_t msgId;
94         int msgType;
95         msg_storage_id_t storageId;
96         time_t *msgTime;
97         char displayDate[DEF_BUF_LEN_S];
98         char subject[DEF_BUF_LEN_S];
99         msg_network_status_t networkStatus;
100         bool bRead;
101         bool bProtected;
102         int direction;
103         int attachment_cnt;
104         char thumbNailPath[DEF_IMG_PATH_LEN + 1];
105         char msgText[DEF_MAX_MSG_TEXT_LEN+1];
106
107         Evas_Object *ly;
108         Evas_Object *entry;
109         Evas_Object *resend_button;
110         Evas_Object *del_button;
111         Evas_Object *progressbar;
112         Evas_Object *chk;
113         Eina_Bool isCheck;
114
115 } MSG_APP_CONV_DATA_S, *PMSG_APP_CONV_DATA_S;
116
117 typedef struct {
118         PMSG_APP_CONV_DATA_S add_item;
119         Evas_Object *rel_obj;
120         MsgBoxPackType pack_type;
121 }BUBBLE_PACK_INFO;
122
123 typedef struct {
124         int contact_id;
125         char address[DEF_THREAD_ADDR_LEN+1];
126         char name[DEF_THREAD_NAME_LEN+1];
127 }BUBBLE_ADDRESS_INFO;
128
129 typedef struct {
130         int addr_cnt;
131         BUBBLE_ADDRESS_INFO addr_info[MAX_TO_ADDRESS_CNT];
132 }BUBBLE_ADDRESS_LIST;
133
134 typedef struct _MSG_BUBBLE_DATA {
135         Evas_Object *layout_main;
136         Evas_Object *scrl;
137         Evas_Object *toolbar;
138         Evas_Object *box;
139
140         Elm_Object_Item *toolbar_item[MSG_BUBBLE_CONTROLBAR_ITEM_NUM];
141
142         BubbleViewMode viewmode;
143         BubbleUGState ug_state;
144         bool isRotate;
145
146         Evas_Object *parent_layout;
147         Evas_Object *bubble_layout;
148         Evas_Object *title_button;
149         Evas_Object *title_genlist;
150         Evas_Object *sel_all_ly;
151         Evas_Object *sel_all_box;
152         Evas_Object *noc_ly;
153
154         Evas_Object *popup;
155         Evas_Object *progressbar;
156         Evas_Object *progresslabel;
157
158         Evas_Object *select_info;
159         Evas_Object *selectioninfo_layout;
160         Evas_Object *deleted_info;
161
162         Eina_List *bubble_list;
163         Eina_List *realized_list;
164         Eina_List *chk_list;
165         Eina_List *added_list;
166
167         Eina_Bool sel_all_checked;
168
169 #ifdef _BUBBLE_FLICK_EVENT
170         Evas_Coord m_x;
171         Evas_Coord m_y;
172 #endif
173         Elm_Genlist_Item_Class itc_title;
174
175         char *time_12h_ptn;
176         char *time_24h_ptn;
177         char *date_ptn;
178         msg_time_format time_fmt;
179         char locale[DEF_BUF_LEN];
180         int noti_fd;
181
182         Ecore_Animator *load_animator;
183         Ecore_Animator *add_animator;
184         Ecore_Idler *scroll_idler;
185         Ecore_Idler *add_idler;
186         Ecore_Idler *resend_idler;
187         Ecore_Idler *retrieve_idler;
188         Ecore_Idler *conformant_idler;
189         Ecore_Thread *del_thread;
190
191         msg_handle_t msgHandle;
192         msg_thread_id_t threadId;
193         BUBBLE_ADDRESS_LIST addr_list;
194         char threadName[DEF_THREAD_NAME_LEN+1];
195
196         int bubble_count;
197         int bubble_index;
198         int added_count;
199         int msg_type;                   /* type of the latest message in the selected converstaion list*/
200         bool isDraft;
201         bool title_optionheader_opened;
202         bool del_cancel;
203
204         int check_cnt;
205         int del_index;
206         void *callback_data;
207 } MSG_BUBBLE_DATA, *PMSG_BUBBLE_DATA;
208
209
210 /* FUNCTIONS */
211 PMSG_BUBBLE_DATA msg_ui_bubble_init_bubble_data(msg_handle_t msgHandle, void *callback_data);
212 void msg_ui_bubble_deinit_bubble_data(void *data);
213
214 void msg_ui_bubble_parse_bubble_data(PMSG_BUBBLE_DATA bubble_data, service_h svc_handle);
215 void msg_ui_bubble_start_bubble_list(PMSG_BUBBLE_DATA bubble_data);
216 void msg_ui_bubble_init_bubble_list(PMSG_BUBBLE_DATA bubble_data);
217
218 Evas_Object *msg_ui_bubble_create_view(Evas_Object *parent, void *user_data);
219 void msg_ui_bubble_start_view(PMSG_BUBBLE_DATA bubble_data);
220
221 void msg_ui_bubble_reg_bubble_cb_func(PMSG_BUBBLE_DATA pData);
222 PMSG_BUBBLE_DATA msg_ui_bubble_get_bubble_data(void);
223
224 void msg_ui_bubble_fill_bubble_contents(PMSG_BUBBLE_DATA bubble_data, PMSG_APP_CONV_DATA_S item_data);
225 Eina_Bool msg_ui_bubble_item_load_cb(void *data);
226 void msg_ui_bubble_resend_msg(PMSG_BUBBLE_DATA bubble_data, int msg_id);
227 void msg_ui_bubble_delete_msg(PMSG_BUBBLE_DATA bubble_data, int msg_id);
228 void msg_ui_bubble_list_load(PMSG_BUBBLE_DATA bubble_data);
229 void msg_ui_bubble_list_data_update(PMSG_BUBBLE_DATA bubble_data);
230 void msg_ui_bubble_item_data_update(PMSG_BUBBLE_DATA bubble_data, msg_struct_t msg);
231 Eina_Bool msg_ui_bubble_item_add_cb(void *data);
232 void msg_ui_bubble_list_append(PMSG_BUBBLE_DATA bubble_data, msg_struct_t msg);
233 void msg_ui_bubble_list_item_move(PMSG_BUBBLE_DATA bubble_data, msg_struct_t msg);
234
235 void msg_ui_bubble_change_normal_navi_control(PMSG_BUBBLE_DATA pData);
236 void msg_ui_bubble_title_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
237 void msg_ui_bubble_open_title_menu_genlist(PMSG_BUBBLE_DATA bubble_data);
238 void msg_ui_bubble_close_title_menu_genlist(PMSG_BUBBLE_DATA bubble_data);
239 Evas_Object *msg_ui_bubble_create_toolbar(void *user_data);
240 void msg_ui_bubble_add_normal_toolbar_item(Evas_Object *toolbar, void *user_data);
241
242 void msg_ui_bubble_msg_storage_change_cb(msg_handle_t handle, msg_storage_change_type_t type, msg_id_list_s *pMsgIdList, void *user_param);
243 void msg_ui_bubble_ctlbar_multi_del_cb(void *data, Evas_Object *obj, void *event_info);
244 Evas_Object *msg_ui_bubble_toolbar_btn_create(Evas_Object *parent, char *icon_path, char *button_text);
245 void msg_ui_bubble_option_header_delete_clicked_cb(void *data, Evas_Object *obj, void *event_info);
246
247 void msg_ui_bubble_ctlbar_call_cb(void *data, Evas_Object *obj, void *event_info);
248 void msg_ui_bubble_ctlbar_vcall_cb(void *data, Evas_Object *obj, void *event_info);
249 void msg_ui_bubble_ctlbar_email_cb(void *data, Evas_Object *obj, void *event_info);
250 void msg_ui_bubble_ctlbar_add_to_contact_cb(void *data, Evas_Object *obj, void *event_info);
251 void msg_ui_bubble_ctlbar_view_ct_detail_cb(void *data, Evas_Object *obj, void *event_info);
252 void msg_ui_bubble_ctlbar_delete_cb(void *data, Evas_Object *obj, void *event_info);
253 void msg_ui_bubble_ctlbar_forward_cb(void *data, Evas_Object *obj, void *event_info);
254 void msg_ui_bubble_ctlbar_move_cb(void *data, Evas_Object *obj, void *event_info);
255 void msg_ui_bubble_ctlbar_cancel_cb(void *data, Evas_Object *obj, void *event_info);
256 void msg_ui_bubble_sel_all_clicked_cb(void *data, Evas_Object *obj, void *event_info);
257 void msg_ui_bubble_item_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
258 void msg_ui_bubble_item_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
259 #ifdef _BUBBLE_FLICK_EVENT
260 void msg_ui_bubble_layout_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
261 void msg_ui_bubble_layout_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
262 #endif
263 void msg_ui_bubble_list_checked_cb(void *data, Evas_Object *obj, void *event_info);
264 void msg_ui_bubble_timezone_change_cb(void *data);
265 void msg_ui_bubble_scroll_edge_top_cb(void *data, Evas_Object *obj, void *event_info);
266 void msg_ui_bubble_scroll_drag_start_cb(void *data, Evas_Object *obj, void *event_info);
267 void msg_ui_bubble_anchor_menu_click_cb(void *data, Evas_Object *obj, void *event_info);
268
269 void msg_ui_bubble_launch_voice_call(const char *call_num);
270 void msg_ui_bubble_launch_video_call(const char *call_num);
271 char *msg_ui_bubble_get_trimmed_number(const char *org_num);
272 void msg_ui_bubble_launch_add_to_contact_ug(PMSG_BUBBLE_DATA pData);
273 void msg_ui_bubble_launch_contact_list_ug(PMSG_BUBBLE_DATA pData, int type, const char *str);
274 void msg_ui_bubble_launch_contact_detail_ug(PMSG_BUBBLE_DATA pData, int ct_id);
275 void msg_ui_bubble_show_notify(PMSG_BUBBLE_DATA bubbleData, char *msg);
276 Evas_Object* msg_ui_bubble_show_notify_with_progressbar(PMSG_BUBBLE_DATA pData, int count);
277
278 void msg_ui_bubble_show_select_info(PMSG_BUBBLE_DATA pData);
279 void msg_ui_bubble_show_deleted_info(PMSG_BUBBLE_DATA pData);
280 void msg_ui_bubble_contact_info_update(PMSG_BUBBLE_DATA pData);
281 unsigned char msg_ui_bubble_check_word_type(char *txt);
282 void msg_ui_bubble_get_time_format(PMSG_BUBBLE_DATA pData);
283 void msg_ui_bubble_get_locale(PMSG_BUBBLE_DATA pData);
284
285 bool msg_is_sms(int msg_type);
286 bool msg_is_mms(int msg_type);
287
288
289 #endif