2 * Copyright 2012 Samsung Electronics Co., Ltd
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
8 * http://floralicense.org/license
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.
17 #ifndef __MSG_UI_COMPOSER_BUBBLE_H__
18 #define __MSG_UI_COMPOSER_BUBBLE_H__
25 #include <msg_storage.h>
26 #include <msg_transport.h>
31 #include <Elementary.h>
32 #include <ui-gadget-module.h>
35 #include "msg-ui-util.h"
36 #include "msg-ui-common-utility.h"
40 #define MSG_BUBBLE_EXPORT_DIR "/opt/usr/media/message"
41 #define MSG_BUBBLE_EXPORT_TEMPDIR "/tmp/message"
42 #define MSG_BUBBLE_DOWNLOAD_DIR "/opt/usr/media/Downloads"
44 #define MSG_BUBBLE_SIM_MSG_ICON IMGDIR"/07_message_sim.png"
45 #define MSG_BUBBLE_ATTACH_ICON IMGDIR"/attach_icon.png"
46 #define MSG_BUBBLE_AUDIOFILE_ICON IMGDIR"/M01_icon_voice.png"
47 #define MSG_BUBBLE_PROTECTED_ICON IMGDIR"/M01_icon_locked.png"
49 /* STYLE for genlist and entry */
50 #define MSG_BUBBLE_STYLE_SENT "sentmessage/custom"
51 #define MSG_BUBBLE_STYLE_RECV "readmessage/custom"
53 #define MSG_BUBBLE_CONTENT_H (653)
54 #define MSG_BUBBLE_IMG_MAX_W (320)
55 #define MSG_BUBBLE_IMG_MAX_H (320)
57 #define MSG_BUBBLE_CONTROLBAR_ITEM_NUM (4)
58 #define MSG_BUBBLE_DELETE_NOTI_TIME (1.5)
60 #define MSG_BUBBLE_POPUP_LIST_MAX_MENU 4
61 #define MSG_BUBBLE_POPUP_LIST_1LINE_HEIGHT 114
65 BUBBLE_NORMAL_VIEW = 0,
85 WORD_TYPE_NONE = 0x00,
87 WORD_TYPE_URL_WITH_PROTC,
93 MSG_BOX_PACK_START = 0,
100 BUBBLE_BACKUP_TYPE_NONE = 0,
101 BUBBLE_BACKUP_TYPE_SD,
102 BUBBLE_BACKUP_TYPE_EMAIL,
106 BUBBLE_THUMBNAIL_NONE = 0,
107 BUBBLE_THUMBNAIL_IMAGE,
108 BUBBLE_THUMBNAIL_VIDEO,
109 BUBBLE_THUMBNAIL_AUDIO,
110 } BubbleThumbnailType;
113 msg_message_id_t msgId;
115 msg_storage_id_t storageId;
117 char displayDate[DEF_BUF_LEN_S];
118 char subject[DEF_BUF_LEN_S];
119 msg_network_status_t networkStatus;
125 char thumbNailPath[DEF_IMG_PATH_LEN + 1];
126 char attachment_filename[DEF_IMG_PATH_LEN + 1];
127 char audio_filename[DEF_IMG_PATH_LEN + 1];
128 char msgText[DEF_MAX_MSG_TEXT_LEN+1];
132 Evas_Object *progressbar;
133 Evas_Object *failed_button;
137 } MSG_APP_CONV_DATA_S, *PMSG_APP_CONV_DATA_S;
140 PMSG_APP_CONV_DATA_S add_item;
141 Evas_Object *rel_obj;
142 MsgBoxPackType pack_type;
147 char address[DEF_THREAD_ADDR_LEN+1];
148 char name[DEF_THREAD_NAME_LEN+1];
149 }BUBBLE_ADDRESS_INFO;
155 char filepath[DEF_IMG_PATH_LEN+1];
156 char filename[DEF_IMG_PATH_LEN+1];
160 }BUBBLE_MEDIA_INFO, *PBUBBLE_MEDIA_INFO;
164 BUBBLE_ADDRESS_INFO addr_info[MAX_TO_ADDRESS_CNT];
165 }BUBBLE_ADDRESS_LIST;
167 typedef struct _MSG_BUBBLE_DATA {
168 Evas_Object *layout_main;
172 BubbleViewMode viewmode;
173 BubbleUGState ug_state;
176 Evas_Object *parent_layout;
177 Evas_Object *bubble_layout;
178 Evas_Object *title_button;
179 Evas_Object *title_genlist;
180 Evas_Object *sel_all_ly;
181 Evas_Object *sel_all_box;
185 Evas_Object *progressbar;
186 Evas_Object *progresslabel;
187 Evas_Object *popup_genlist;
188 Evas_Object *save_button;
190 Evas_Object *select_info;
191 Evas_Object *selectioninfo_layout;
193 Eina_List *bubble_list;
194 Eina_List *realized_list;
196 Eina_List *added_list;
197 Eina_List *media_list;
199 Eina_Bool sel_all_checked;
201 #ifdef _BUBBLE_FLICK_EVENT
205 Elm_Genlist_Item_Class itc_title;
206 Elm_Genlist_Item_Class itc_title_single;
207 Elm_Genlist_Item_Class itc_popup;
208 Elm_Genlist_Item_Class itc_popup_selall;
212 char *date_ptn_default;
214 msg_time_format time_fmt;
215 char locale[DEF_BUF_LEN];
217 Ecore_Animator *load_animator;
218 Ecore_Animator *add_animator;
219 Ecore_Idler *resend_idler;
220 Ecore_Idler *retrieve_idler;
221 Ecore_Thread *del_thread;
222 Ecore_Thread *backup_thread;
224 msg_handle_t msgHandle;
225 msg_thread_id_t threadId;
226 BUBBLE_ADDRESS_LIST addr_list;
227 char threadName[DEF_THREAD_NAME_LEN+1];
228 char backupPath[DEF_BUF_LEN+1];
233 int msg_type; /* type of the latest message in the selected converstaion list*/
235 bool title_menu_opened;
248 } MSG_BUBBLE_DATA, *PMSG_BUBBLE_DATA;
252 PMSG_BUBBLE_DATA msg_ui_bubble_init_bubble_data(msg_handle_t msgHandle, void *callback_data);
253 void msg_ui_bubble_deinit_bubble_data(void *data);
255 void msg_ui_bubble_parse_bubble_data(PMSG_BUBBLE_DATA bubble_data, service_h svc_handle);
256 void msg_ui_bubble_start_bubble_list(PMSG_BUBBLE_DATA bubble_data);
257 void msg_ui_bubble_init_bubble_list(PMSG_BUBBLE_DATA bubble_data);
259 Evas_Object *msg_ui_bubble_create_view(Evas_Object *parent, void *user_data);
260 void msg_ui_bubble_start_view(PMSG_BUBBLE_DATA bubble_data);
262 void msg_ui_bubble_reg_bubble_cb_func(PMSG_BUBBLE_DATA pData);
264 void msg_ui_bubble_fill_bubble_contents(PMSG_BUBBLE_DATA bubble_data, PMSG_APP_CONV_DATA_S item_data);
265 Eina_Bool msg_ui_bubble_item_load_cb(void *data);
266 void msg_ui_bubble_resend_msg(PMSG_BUBBLE_DATA bubble_data, int msg_id);
267 void msg_ui_bubble_delete_msg(PMSG_BUBBLE_DATA bubble_data, int msg_id);
268 void msg_ui_bubble_refresh_msg_lock_status(PMSG_BUBBLE_DATA bubble_data, int msg_id);
269 void msg_ui_bubble_list_load(PMSG_BUBBLE_DATA bubble_data);
270 void msg_ui_bubble_list_data_update(PMSG_BUBBLE_DATA bubble_data);
271 void msg_ui_bubble_list_update_read_status(PMSG_BUBBLE_DATA bubble_data);
272 void msg_ui_bubble_item_data_update(PMSG_BUBBLE_DATA bubble_data, msg_struct_t msg);
273 Eina_Bool msg_ui_bubble_item_add_cb(void *data);
274 void msg_ui_bubble_list_append(PMSG_BUBBLE_DATA bubble_data, msg_struct_t msg);
275 void msg_ui_bubble_list_item_move(PMSG_BUBBLE_DATA bubble_data, msg_struct_t msg);
277 void msg_ui_bubble_change_normal_navi_control(PMSG_BUBBLE_DATA pData);
278 void msg_ui_bubble_title_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
279 void msg_ui_bubble_open_title_menu_genlist(PMSG_BUBBLE_DATA bubble_data);
280 void msg_ui_bubble_close_title_menu_genlist(PMSG_BUBBLE_DATA bubble_data);
281 Evas_Object *msg_ui_bubble_create_toolbar(void *user_data);
283 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);
284 Evas_Object *msg_ui_bubble_toolbar_btn_create(Evas_Object *parent, char *icon_path, char *button_text);
285 void msg_ui_bubble_more_delete_clicked_cb(void *data, Evas_Object *obj, void *event_info);
286 void msg_ui_bubble_backup_clicked_cb(void *data, Evas_Object *obj, void *event_info);
288 void msg_ui_bubble_ctlbar_call_cb(void *data, Evas_Object *obj, void *event_info);
289 void msg_ui_bubble_ctlbar_vcall_cb(void *data, Evas_Object *obj, void *event_info);
290 void msg_ui_bubble_ctlbar_email_cb(void *data, Evas_Object *obj, void *event_info);
291 void msg_ui_bubble_ctlbar_add_to_contact_cb(void *data, Evas_Object *obj, void *event_info);
292 void msg_ui_bubble_ctlbar_view_ct_detail_cb(void *data, Evas_Object *obj, void *event_info);
293 void msg_ui_bubble_ctlbar_block_cb(void *data, Evas_Object *obj, void *event_info);
294 void msg_ui_bubble_ctlbar_unblock_cb(void *data, Evas_Object *obj, void *event_info);
295 void msg_ui_bubble_ctlbar_delete_cb(void *data, Evas_Object *obj, void *event_info);
296 void msg_ui_bubble_ctlbar_forward_cb(void *data, Evas_Object *obj, void *event_info);
297 void msg_ui_bubble_ctlbar_move_cb(void *data, Evas_Object *obj, void *event_info);
298 void msg_ui_bubble_ctlbar_cancel_cb(void *data, Evas_Object *obj, void *event_info);
299 void msg_ui_bubble_sel_all_clicked_cb(void *data, Evas_Object *obj, void *event_info);
300 void msg_ui_bubble_item_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
301 void msg_ui_bubble_item_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
302 #ifdef _BUBBLE_FLICK_EVENT
303 void msg_ui_bubble_layout_mouse_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
304 void msg_ui_bubble_layout_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
306 void msg_ui_bubble_list_checked_cb(void *data, Evas_Object *obj, void *event_info);
307 void msg_ui_bubble_timezone_change_cb(keynode_t *key, void *data);
308 void msg_ui_bubble_scroll_edge_top_cb(void *data, Evas_Object *obj, void *event_info);
309 void msg_ui_bubble_scroll_drag_start_cb(void *data, Evas_Object *obj, void *event_info);
310 void msg_ui_bubble_anchor_menu_click_cb(void *data, Evas_Object *obj, void *event_info);
311 void msg_ui_bubble_main_layout_clicked_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
313 void msg_ui_bubble_launch_voice_call(const char *call_num);
314 void msg_ui_bubble_launch_video_call(const char *call_num);
315 char *msg_ui_bubble_get_trimmed_number(const char *org_num);
316 void msg_ui_bubble_launch_add_to_contact_ug(PMSG_BUBBLE_DATA pData);
317 void msg_ui_bubble_launch_contact_list_ug(PMSG_BUBBLE_DATA pData, int type, const char *str);
318 void msg_ui_bubble_launch_contact_detail_ug(PMSG_BUBBLE_DATA pData, int ct_id);
319 void msg_ui_bubble_show_notify(PMSG_BUBBLE_DATA bubbleData, char *msg);
320 void msg_ui_popup_close_clicked_cb(void *data, Evas_Object *obj, void *event_info);
321 Evas_Object* msg_ui_bubble_show_notify_with_progressbar(PMSG_BUBBLE_DATA pData, int count);
323 void msg_ui_bubble_show_select_info(PMSG_BUBBLE_DATA pData);
324 void msg_ui_bubble_show_deleted_info(PMSG_BUBBLE_DATA pData);
325 void msg_ui_bubble_status_message_post(PMSG_BUBBLE_DATA pData, char *msg);
326 void msg_ui_bubble_contact_info_update(PMSG_BUBBLE_DATA pData);
327 unsigned char msg_ui_bubble_check_word_type(char *txt);
328 void msg_ui_bubble_get_time_format(PMSG_BUBBLE_DATA pData);
329 void msg_ui_bubble_get_locale(PMSG_BUBBLE_DATA pData);
331 char *msg_ui_bubble_create_export_folder_name(void);
332 char *msg_ui_bubble_create_export_file_name(void);
333 char *msg_ui_bubble_create_export_folder(PMSG_BUBBLE_DATA pData, const char* folder_name);
334 char *msg_ui_bubble_create_export_string(PMSG_BUBBLE_DATA pData, msg_struct_t msg);
336 bool msg_is_sms(int msg_type);
337 bool msg_is_mms(int msg_type);