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://www.tizenopensource.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.
18 #include <appcore-efl.h>
20 #include <ui-gadget-module.h>
25 #include <glib/gstdio.h>
28 #include <email-api.h>
31 #include "email-debug.h"
32 #include "email-utils.h"
33 #include "email-common-types.h"
34 #include "email-engine.h"
36 #define URI_SCHEME_MAILTO "mailto:"
37 #define URI_SCHEME_FILE "file://"
38 #define URI_SCHEME_HTTP "http://"
40 typedef struct appdata appdata;
48 Evas_Object *win_main;
53 ui_gadget_h mailbox_ug;
54 ui_gadget_h setting_ug;
55 ui_gadget_h composer_ug;
56 ui_gadget_h viewer_ug;
59 gboolean _b_setting_opened = false;
60 extern ui_gadget_h _g_mailbox_ug;
62 static bool app_create(void *data);
63 static int app_terminate(void *data);
64 static int app_pause(void *data);
65 static int app_resume(void *data);
66 static int app_reset(service_h b, void *data);
67 static int app_low_memory(void *data);
68 static int app_low_battery(void *data);
69 static int app_lang_changed(void *data);
70 static int app_region_changed(void *data);
72 static Evas_Object *create_win(const char *name);
73 static void win_del(void *data, Evas_Object *obj, void *event);
74 static void launch_email_ug(service_h b, struct appdata *ad);
75 static int check_app_svc_operation(service_h b, struct appdata *ad, gint account_id);
76 static int check_aul_mime_operation(service_h b, struct appdata *ad);
77 static int check_aul_launch_operation(service_h b, struct appdata *ad);
78 static void block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
79 static void popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info);
80 static void popup_response_cb(void *data, Evas_Object *obj, void *event_info);
81 static void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv);
82 static void result_cb(ui_gadget_h ug, service_h result, void *priv);
83 static void destroy_cb(ui_gadget_h ug, void *priv);
84 static void aul_destroy_cb(ui_gadget_h ug, void *priv);
85 ui_gadget_h create_ug(char *ug_name, service_h bd, void *data);
86 static int _email_main_rotation_cb(app_device_orientation_e m, void *data);
89 static void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
92 Evas_Object *base, *win;
97 base = ug_get_layout(ug);
99 debug_log("ug_get_layout returns NULL");
103 win = ug_get_window();
106 case UG_MODE_FULLVIEW:
107 evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
108 elm_win_resize_object_add(win, base);
109 ug_disable_effect(ug);
110 evas_object_show(base);
117 static void result_cb(ui_gadget_h ug, service_h result, void *priv)
127 static void destroy_cb(ui_gadget_h ug, void *priv)
134 struct appdata *ad = (struct appdata *)priv;
136 if (_b_setting_opened == true && ug == ad->setting_ug) {
137 _b_setting_opened = false;
140 ug_destroy(ad->setting_ug);
141 ad->setting_ug = NULL;
143 /*relaunch setting when account deleted immediately*/
144 if (!email_engine_get_default_account(&ad->account_id)) {
145 service_h service = NULL;
147 ret = service_create(&service);
148 debug_log("service_create: %d", ret);
150 debug_log("service create failed");
154 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_VIEW_TYPE, EMAIL_BUNDLE_VAL_VIEW_FIRST_SETUP);
155 debug_log("service_add_extra_data: %d", ret);
157 if (NULL != (ad->setting_ug = create_ug(UG_NAME_EMAIL_SETTING, service, ad))) {
158 _b_setting_opened = true;
161 ret = service_destroy(service);
162 debug_log("service_destroy: %d", ret);
166 if (ad->mailbox_ug) {
167 debug_log("Mailbox is already running");
171 service_h service = NULL;
173 ret = service_create(&service);
174 debug_log("service_create: %d", ret);
176 debug_log("service create failed");
180 char initial[4] = { 0, };
181 snprintf(initial, sizeof(initial), "%d", 0);
183 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_INITIAL_RUN, initial);
184 debug_log("service_add_extra_data: %d", ret);
186 ad->mailbox_ug = create_ug(UG_NAME_EMAIL_MAILBOX, service, ad);
187 _g_mailbox_ug = ad->mailbox_ug;
189 ret = service_destroy(service);
190 debug_log("service_destroy: %d", ret);
195 if (ug == ad->mailbox_ug) {
196 if (!email_engine_get_default_account(&ad->account_id)) {
197 ug_destroy(ad->mailbox_ug);
198 ad->mailbox_ug = NULL;
200 if (ad->setting_ug) {
201 debug_log("Setting is already running");
206 service_h service = NULL;
208 ret = service_create(&service);
209 debug_log("service_create: %d", ret);
211 debug_log("service create failed");
215 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_VIEW_TYPE, EMAIL_BUNDLE_VAL_VIEW_FIRST_SETUP);
216 debug_log("service_add_extra_data: %d", ret);
218 if (NULL != (ad->setting_ug = create_ug(UG_NAME_EMAIL_SETTING, service, ad))) {
219 _b_setting_opened = true;
222 ret = service_destroy(service);
223 debug_log("service_destroy: %d", ret);
229 if (ug == ad->composer_ug) {
230 debug_log("destroy composer_ug");
231 ug_destroy(ad->composer_ug);
232 ad->composer_ug = NULL;
235 if (ug == ad->viewer_ug) {
236 debug_log("destroy viewer_ug");
237 ug_destroy(ad->viewer_ug);
238 ad->viewer_ug = NULL;
245 static void aul_destroy_cb(ui_gadget_h ug, void *priv)
255 ui_gadget_h create_ug(char *ug_name, service_h bd, void *data)
259 struct ug_cbs cbs = { 0, };
261 cbs.layout_cb = layout_cb;
262 cbs.result_cb = result_cb;
263 cbs.destroy_cb = destroy_cb;
266 ug = ug_create(NULL, ug_name, UG_MODE_FULLVIEW, bd, &cbs);
271 static int _email_main_rotation_cb(app_device_orientation_e m, void *data)
274 struct appdata *ad = data;
276 if (ad == NULL || ad->win_main == NULL) {
279 debug_log("app_device_orientation: %d", m);
282 case APP_DEVICE_ORIENTATION_0:
283 ug_send_event(UG_EVENT_ROTATE_PORTRAIT);
286 case APP_DEVICE_ORIENTATION_180:
287 ug_send_event(UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN);
290 case APP_DEVICE_ORIENTATION_270:
291 ug_send_event(UG_EVENT_ROTATE_LANDSCAPE);
294 case APP_DEVICE_ORIENTATION_90:
295 ug_send_event(UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN);
305 static bool app_create(void *data)
309 struct appdata *ad = data;
312 elm_config_preferred_engine_set("opengl_x11"); //"software_x11"
315 win = create_win(PACKAGE);
317 debug_log("create_win returns NULL");
322 UG_INIT_EFL(ad->win_main, UG_OPT_INDICATOR_ENABLE);
325 email_open_icu_pattern_generator();
330 static int app_terminate(void *data)
334 set_app_terminated();
336 email_engine_finalize_force();
338 int ret = e_dbus_shutdown();
339 debug_log("ret: %d", ret);
344 static int app_pause(void *data)
354 static int app_resume(void *data)
361 email_clear_all_notification_bar();
366 static int app_reset(service_h b, void *data)
369 struct appdata *ad = data;
372 elm_win_activate(ad->win_main);
374 /* init email common module */
375 if (email_engine_initialize() == FALSE) {
376 debug_log("Failed to initialize email engine");
377 evas_object_show(ad->win_main);
379 Evas_Object *popup = elm_popup_add(ad->win_main);
380 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
381 elm_popup_timeout_set(popup, 2.0);
382 elm_object_part_text_set(popup, "title,text", dgettext("sys_string", "IDS_COM_POP_INITIALIZING"));
384 Evas_Object *progress = elm_progressbar_add(popup);
385 elm_object_style_set(progress, "list_process");
386 elm_progressbar_pulse_set(progress, EINA_TRUE);
387 elm_progressbar_pulse(progress, EINA_TRUE);
388 evas_object_show(progress);
390 elm_object_content_set(popup, progress);
392 /*Evas_Object *btn1 = elm_button_add(popup);
393 elm_object_style_set(btn1, "popup_button/default");
394 elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_OK"));
395 elm_object_part_content_set(popup, "button1", btn1);
396 evas_object_smart_callback_add(btn1, "clicked", popup_block_clicked_cb, NULL);*/
398 evas_object_smart_callback_add(popup, "block,clicked", popup_block_clicked_cb, NULL);
399 evas_object_smart_callback_add(popup, "timeout", popup_response_cb, NULL);
400 evas_object_show(popup);
404 if (ad->setting_ug) {
405 debug_log("destroy setting_ug");
406 ug_destroy(ad->setting_ug);
407 ad->setting_ug = NULL;
410 email_clear_all_notification_bar();
412 launch_email_ug(b, ad);
414 evas_object_show(ad->win_main);
419 static int app_low_memory(void *data)
422 ug_send_event(UG_EVENT_LOW_MEMORY);
426 static int app_low_battery(void *data)
429 ug_send_event(UG_EVENT_LOW_BATTERY);
433 static int app_lang_changed(void *data)
436 ug_send_event(UG_EVENT_LANG_CHANGE);
440 static int app_region_changed(void *data)
443 ug_send_event(UG_EVENT_REGION_CHANGE);
447 int main(int argc, char *argv[])
451 if (!g_thread_supported()) {
456 app_event_callback_s ops;
457 memset(&ops, 0x0, sizeof(app_event_callback_s));
459 ops.create = (app_create_cb)app_create;
460 ops.terminate = (app_terminate_cb)app_terminate;
461 ops.pause = (app_pause_cb)app_pause;
462 ops.resume = (app_resume_cb)app_resume;
463 ops.service = (app_service_cb)app_reset;
464 ops.low_memory = (app_low_memory_cb)app_low_memory;
465 ops.low_battery = (app_low_battery_cb)app_low_battery;
466 ops.device_orientation = (app_device_orientation_cb)_email_main_rotation_cb;
467 ops.language_changed = (app_language_changed_cb)app_lang_changed;
468 ops.region_format_changed = (app_region_format_changed_cb)app_region_changed;
471 ecore_thread_max_set(1); /* spawn 1 thread for getting mail list in mailbox */
474 memset(&ad, 0x0, sizeof(struct appdata));
476 return app_efl_main(&argc, &argv, &ops, &ad);
479 static Evas_Object *create_win(const char *name)
485 eo = elm_win_add(NULL, name, ELM_WIN_BASIC);
487 elm_win_title_set(eo, name);
488 evas_object_smart_callback_add(eo, "delete,request", win_del, NULL);
489 ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h);
490 evas_object_resize(eo, w, h);
496 static void win_del(void *data, Evas_Object *obj, void *event)
502 static void launch_email_ug(service_h b, struct appdata *ad)
506 if (b == NULL || ad == NULL) {
507 debug_log("bundle data is NULL");
513 /* 0. run email in no default account */
514 if (!email_engine_get_default_account(&acct_id)) {
515 debug_log("Initial Access");
517 if (ad->setting_ug) {
518 debug_log("Setting is already running");
523 service_h service = NULL;
525 ret = service_create(&service);
526 debug_log("service_create: %d", ret);
528 debug_log("service create failed");
532 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_VIEW_TYPE, EMAIL_BUNDLE_VAL_VIEW_FIRST_SETUP);
533 debug_log("service_add_extra_data: %d", ret);
535 ad->setting_ug = create_ug(UG_NAME_EMAIL_SETTING, service, ad);
537 if (NULL != ad->setting_ug) {
538 _b_setting_opened = true;
541 ret = service_destroy(service);
542 debug_log("service_destroy: %d", ret);
545 /* 1. run email ug from app service */
546 if (check_app_svc_operation(b, ad, acct_id)) {
550 /* 2. run email ug from mime type parsing */
551 if (check_aul_mime_operation(b, ad)) {
555 /* 3. run email ug from run type */
556 if (check_aul_launch_operation(b, ad)) {
560 /* 4. run email in normal case (from menuscreen) */
561 if (email_engine_get_default_account(&acct_id)) {
562 debug_log("run email in normal case");
563 if (ad->mailbox_ug) {
564 debug_log("Mailbox is already running");
569 service_h service = NULL;
571 ret = service_create(&service);
572 debug_log("service_create: %d", ret);
574 debug_log("service create failed");
578 char initial[4] = { 0, };
579 snprintf(initial, sizeof(initial), "%d", 1);
581 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_INITIAL_RUN, initial);
582 debug_log("service_add_extra_data: %d", ret);
584 ad->mailbox_ug = create_ug(UG_NAME_EMAIL_MAILBOX, service, ad);
585 _g_mailbox_ug = ad->mailbox_ug;
587 ret = service_destroy(service);
588 debug_log("service_destroy: %d", ret);
592 static int check_app_svc_operation(service_h b, struct appdata *ad, gint account_id)
601 char *subject = NULL;
603 char *operation = NULL;
604 char rtype[10] = { 0, };
606 service_get_operation(b, &operation);
607 debug_log("operation = %s", operation);
612 if (g_strcmp0(operation, SERVICE_OPERATION_SEND) != 0 &&
613 g_strcmp0(operation, SERVICE_OPERATION_SEND_TEXT) != 0) {
617 if (email_engine_get_default_account(&account_id) == FALSE) {
618 Evas_Object *popup = elm_popup_add(ad->win_main);
619 evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
620 elm_popup_timeout_set(popup, 2.0);
621 elm_object_part_text_set(popup, "title,text", dgettext("sys_string", "IDS_COM_POP_WARNING"));
622 elm_object_text_set(popup, _("IDS_EMAIL_POP_THERE_IS_NO_ACCOUNT_CREATE_A_NEW_ACCOUNT_FIRST"));
623 evas_object_smart_callback_add(popup, "block,clicked", block_clicked_cb, NULL);
624 evas_object_show(popup);
629 service_h service = NULL;
631 ret = service_create(&service);
632 debug_log("service_create: %d", ret);
634 debug_log("service create failed");
638 snprintf(rtype, sizeof(rtype), "%d", RUN_COMPOSER_EXTERNAL);
640 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, rtype);
641 debug_log("service_add_extra_data: %d", ret);
643 if (g_strcmp0(operation, SERVICE_OPERATION_SEND) == 0) {
644 service_get_uri(b, &uri);
646 debug_log("uri: %s", uri);
648 if (g_str_has_prefix(uri, URI_SCHEME_MAILTO)) {
650 vector = g_strsplit_set(uri, "?", -1);
651 if (vector != NULL) {
652 char *mailto_uri = g_strdup(vector[0]);
655 if (mailto_uri && (strlen(mailto_uri) - strlen(URI_SCHEME_MAILTO)) > 0) {
656 to = g_strndup(mailto_uri + strlen(URI_SCHEME_MAILTO),
657 strlen(mailto_uri) - strlen(URI_SCHEME_MAILTO));
662 } else if (g_str_has_prefix(uri, URI_SCHEME_FILE)) {
663 char *file_uri = g_strndup(uri + strlen(URI_SCHEME_FILE),
664 strlen(uri) - strlen(URI_SCHEME_FILE));
665 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ATTACHMENT, file_uri);
666 debug_log("service_add_extra_data: %d", ret);
667 } else if (g_str_has_prefix(uri, URI_SCHEME_HTTP)) {
668 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_BODY, uri);
669 debug_log("service_add_extra_data: %d", ret);
670 } else if (g_str_has_prefix(uri, "/")) {
671 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ATTACHMENT, uri);
672 debug_log("service_add_extra_data: %d", ret);
676 service_get_mime(b, &mime);
678 debug_log("mime: %s", mime);
682 service_get_extra_data(b, SERVICE_DATA_TO, &to);
684 debug_log("to address = %s", to);
685 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_TO, to);
686 debug_log("service_add_extra_data: %d", ret);
689 service_get_extra_data(b, SERVICE_DATA_CC, &cc);
692 debug_log("cc address = %s", cc);
693 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CC, cc);
694 debug_log("service_add_extra_data: %d", ret);
697 service_get_extra_data(b, SERVICE_DATA_BCC, &bcc);
700 debug_log("bcc address = %s", bcc);
701 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_BCC, bcc);
702 debug_log("service_add_extra_data: %d", ret);
705 service_get_extra_data(b, SERVICE_DATA_SUBJECT, &subject);
708 debug_log("subject = %s", subject);
709 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_SUBJECT, subject);
710 debug_log("service_add_extra_data: %d", ret);
713 service_get_extra_data(b, SERVICE_DATA_TEXT, &body);
716 debug_log("body = %s", body);
717 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_BODY, body);
718 debug_log("service_add_extra_data: %d", ret);
721 ad->composer_ug = create_ug(UG_NAME_EMAIL_COMPOSER, service, ad);
723 ret = service_destroy(service);
724 debug_log("service_destroy: %d", ret);
741 static int check_aul_mime_operation(service_h b, struct appdata *ad)
744 char *aul_content = NULL;
745 char *aul_mime_type = NULL;
746 char rtype[10] = { 0, };
748 int ret = service_get_extra_data(b, AUL_K_MIME_TYPE, &aul_mime_type); //"__AUL_MIME_TYPE__"
749 debug_log("service_get_extra_data: %d", ret);
750 ret = service_get_extra_data(b, AUL_K_MIME_CONTENT, &aul_content); //"__AUL_MIME_CONTENT__"
751 debug_log("service_get_extra_data: %d", ret);
753 debug_log("mime_type:%s, content:%s", aul_mime_type, aul_content);
754 if (aul_mime_type != NULL && aul_content != NULL) {
755 if (strcmp(aul_mime_type, "email.uri") == 0) {
756 debug_log("AUL CONTENT OPEN, launch composer");
757 struct ug_cbs cbs = { 0, };
759 cbs.layout_cb = layout_cb;
760 cbs.result_cb = result_cb;
761 cbs.destroy_cb = aul_destroy_cb;
764 service_h service = NULL;
766 ret = service_create(&service);
767 debug_log("service_create: %d", ret);
769 debug_log("service create failed");
770 goto FINISH_MIME_LAUNCH;
773 snprintf(rtype, sizeof(rtype), "%d", RUN_COMPOSER_EXTERNAL);
775 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, rtype);
776 debug_log("service_add_extra_data: %d", ret);
777 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_TO, aul_content);
778 debug_log("service_add_extra_data: %d", ret);
780 ad->composer_ug = ug_create(NULL, UG_NAME_EMAIL_COMPOSER, UG_MODE_FULLVIEW, service, &cbs);
782 ret = service_destroy(service);
783 debug_log("service_destroy: %d", ret);
785 debug_log("Not supported mime type : %s", aul_mime_type);
790 g_free(aul_mime_type);
796 g_free(aul_mime_type);
801 static int check_aul_launch_operation(service_h b, struct appdata *ad)
805 char *runtype = NULL;
806 char *account_id = NULL;
807 char *mail_id = NULL;
808 char *mailbox_id = NULL;
809 char *thread_id = NULL;
813 char *subject = NULL;
815 char *attachment = NULL;
817 int ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_RUN_TYPE, &runtype);
818 debug_log("service_get_extra_data: %d", ret);
820 debug_log("runtype:%s", runtype);
821 if (runtype != NULL) {
822 if (atoi(runtype) == RUN_COMPOSER_EDIT) {
823 debug_log("RUN_COMPOSER_EDIT");
824 if (ad->composer_ug) {
825 debug_log("Composer is already running");
826 goto FINISH_AUL_LAUNCH;
829 ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_MAILBOX, &mailbox_id);
830 debug_log("service_get_extra_data: %d", ret);
831 ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_MAIL_ID, &mail_id);
832 debug_log("service_get_extra_data: %d", ret);
834 service_h service = NULL;
836 ret = service_create(&service);
837 debug_log("service_create: %d", ret);
839 debug_log("service create failed");
840 goto ERROR_AUL_LAUNCH;
843 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, runtype);
844 debug_log("service_add_extra_data: %d", ret);
845 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, mailbox_id);
846 debug_log("service_add_extra_data: %d", ret);
847 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAIL_ID, mail_id);
848 debug_log("service_add_extra_data: %d", ret);
850 ad->composer_ug = create_ug(UG_NAME_EMAIL_COMPOSER, service, ad);
852 ret = service_destroy(service);
853 debug_log("service_destroy: %d", ret);
855 goto FINISH_AUL_LAUNCH;
858 else if (atoi(runtype) == RUN_COMPOSER_NEW) {
859 debug_log("RUN_COMPOSER_NEW");
860 if (ad->composer_ug) {
861 debug_log("Composer is already running");
862 goto FINISH_AUL_LAUNCH;
866 email_engine_get_default_account(&acc_id);
868 service_h service = NULL;
870 ret = service_create(&service);
871 debug_log("service_create: %d", ret);
873 debug_log("service create failed");
874 goto ERROR_AUL_LAUNCH;
877 char s_composer_type[14] = { 0, };
878 char s_account_id[14] = { 0, };
879 snprintf(s_composer_type, sizeof(s_composer_type), "%d", RUN_COMPOSER_NEW);
880 snprintf(s_account_id, sizeof(s_account_id), "%d", acc_id);
882 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, s_composer_type);
883 debug_log("service_add_extra_data: %d", ret);
884 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, s_account_id);
885 debug_log("service_add_extra_data: %d", ret);
887 ad->composer_ug = create_ug(UG_NAME_EMAIL_COMPOSER, service, ad);
889 ret = service_destroy(service);
890 debug_log("service_destroy: %d", ret);
892 goto FINISH_AUL_LAUNCH;
895 else if (atoi(runtype) == RUN_COMPOSER_EXTERNAL) {
896 debug_log("RUN_COMPOSER_EXTERNAL");
897 if (ad->composer_ug) {
898 debug_log("Composer is already running");
899 goto FINISH_AUL_LAUNCH;
902 ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_TO, &to);
903 debug_log("service_get_extra_data: %d", ret);
904 ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_CC, &cc);
905 debug_log("service_get_extra_data: %d", ret);
906 ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_BCC, &bcc);
907 debug_log("service_get_extra_data: %d", ret);
908 ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_SUBJECT, &subject);
909 debug_log("service_get_extra_data: %d", ret);
910 ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_BODY, &body);
911 debug_log("service_get_extra_data: %d", ret);
912 ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_ATTACHMENT, &attachment);
913 debug_log("service_get_extra_data: %d", ret);
916 email_engine_get_default_account(&acc_id);
918 service_h service = NULL;
920 ret = service_create(&service);
921 debug_log("service_create: %d", ret);
923 debug_log("service create failed");
924 goto ERROR_AUL_LAUNCH;
927 char s_composer_type[14] = { 0, };
928 char s_account_id[14] = { 0, };
930 snprintf(s_composer_type, sizeof(s_composer_type), "%d", RUN_COMPOSER_EXTERNAL);
931 snprintf(s_account_id, sizeof(s_account_id), "%d", acc_id);
933 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, s_composer_type);
934 debug_log("service_add_extra_data: %d", ret);
935 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, s_account_id);
936 debug_log("service_add_extra_data: %d", ret);
937 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_TO, to);
938 debug_log("service_add_extra_data: %d", ret);
939 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CC, cc);
940 debug_log("service_add_extra_data: %d", ret);
941 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_BCC, bcc);
942 debug_log("service_add_extra_data: %d", ret);
943 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_SUBJECT, subject);
944 debug_log("service_add_extra_data: %d", ret);
945 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_BODY, body);
946 debug_log("service_add_extra_data: %d", ret);
947 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ATTACHMENT, attachment);
948 debug_log("service_add_extra_data: %d", ret);
950 ad->composer_ug = create_ug(UG_NAME_EMAIL_COMPOSER, service, ad);
952 ret = service_destroy(service);
953 debug_log("service_destroy: %d", ret);
955 goto FINISH_AUL_LAUNCH;
958 else if (atoi(runtype) == RUN_VIEWER) {
959 debug_log("RUN_VIEWER");
961 debug_log("Viewer is already running");
962 goto FINISH_AUL_LAUNCH;
965 char internal[10] = { 0, };
967 snprintf(internal, sizeof(internal), "%d", 0);
969 ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_ACCOUNT_ID, &account_id);
970 debug_log("service_get_extra_data: %d", ret);
971 ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_MAIL_ID, &mail_id);
972 debug_log("service_get_extra_data: %d", ret);
973 ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_MAILBOX, &mailbox_id);
974 debug_log("service_get_extra_data: %d", ret);
976 service_h service = NULL;
978 ret = service_create(&service);
979 debug_log("service_create: %d", ret);
981 debug_log("service create failed");
982 goto ERROR_AUL_LAUNCH;
985 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, account_id);
986 debug_log("service_add_extra_data: %d", ret);
987 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAIL_ID, mail_id);
988 debug_log("service_add_extra_data: %d", ret);
989 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, mailbox_id);
990 debug_log("service_add_extra_data: %d", ret);
991 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_INTERNAL, internal);
992 debug_log("service_add_extra_data: %d", ret);
994 ad->viewer_ug = create_ug(UG_NAME_EMAIL_VIEWER, service, ad);
996 ret = service_destroy(service);
997 debug_log("service_destroy: %d", ret);
999 goto FINISH_AUL_LAUNCH;
1002 else if (atoi(runtype) == RUN_MAILBOX_THREAD) {
1003 debug_log("RUN_MAILBOX_THREAD");
1004 if (ad->mailbox_ug) {
1005 debug_log("Mailbox is already running");
1006 goto FINISH_AUL_LAUNCH;
1009 ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_THREAD_ID, &thread_id);
1010 debug_log("service_get_extra_data: %d", ret);
1011 debug_log("thread_id: [%d]", atoi(thread_id));
1013 service_h service = NULL;
1015 ret = service_create(&service);
1016 debug_log("service_create: %d", ret);
1018 debug_log("service create failed");
1019 goto ERROR_AUL_LAUNCH;
1022 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_THREAD_ID, thread_id);
1023 debug_log("service_add_extra_data: %d", ret);
1025 ad->mailbox_ug = create_ug(UG_NAME_EMAIL_MAILBOX, service, ad);
1027 ret = service_destroy(service);
1028 debug_log("service_destroy: %d", ret);
1030 goto FINISH_AUL_LAUNCH;
1033 else if (atoi(runtype) == RUN_SETTING_ACCOUNT_ADD) {
1034 debug_log("RUN_SETTING_ACCOUNT_ADD");
1037 if (email_engine_get_default_account(&acct_id)) {
1038 debug_log("Default accont is exist");
1039 goto ERROR_AUL_LAUNCH;
1042 if (ad->setting_ug) {
1043 debug_log("Setting is already running");
1044 goto FINISH_AUL_LAUNCH;
1047 service_h service = NULL;
1049 ret = service_create(&service);
1050 debug_log("service_create: %d", ret);
1052 debug_log("service create failed");
1053 goto ERROR_AUL_LAUNCH;
1056 ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_VIEW_TYPE, EMAIL_BUNDLE_VAL_VIEW_FIRST_SETUP);
1057 debug_log("service_add_extra_data: %d", ret);
1059 ad->setting_ug = create_ug(UG_NAME_EMAIL_SETTING, service, ad);
1061 ret = service_destroy(service);
1062 debug_log("service_destroy: %d", ret);
1064 goto FINISH_AUL_LAUNCH;
1099 static void block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1101 evas_object_del(obj);
1104 static void popup_block_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1109 evas_object_del(obj);
1114 static void popup_response_cb(void *data, Evas_Object *obj, void *event_info)