diff options
Diffstat (limited to 'composer/src/email-composer.c')
-rwxr-xr-x | composer/src/email-composer.c | 116 |
1 files changed, 93 insertions, 23 deletions
diff --git a/composer/src/email-composer.c b/composer/src/email-composer.c index f00ddcd..ba8ae0a 100755 --- a/composer/src/email-composer.c +++ b/composer/src/email-composer.c @@ -175,13 +175,12 @@ static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h data, void * debug_log("def account_id = %d", ugd->account_info->account_id); -#ifdef _NO_ACCOUNT ugd->eComposerErrorType = _composer_get_account_list(ugd); if (ugd->eComposerErrorType == COMPOSER_ERROR_NO_ACCOUNT_LIST) { return ugd->main_layout; } -#endif + ugd->has_body_html = EINA_TRUE; ugd->saved_html_path = g_strconcat(EMAIL_TMP_FOLDER, SAVE_HTML_FILE_NAME, NULL); @@ -961,6 +960,7 @@ static void _composer_init_data(void *data) ugd->cc_added = false; ugd->bcc_added = false; ugd->isRotated = false; + ugd->is_recipient_duplicated = false; ugd->temporary_fix_for_rotation = false; ugd->is_main_scroller_scrolling = false; @@ -1386,10 +1386,16 @@ static int _composer_pre_parse_bundle(EmailComposerUGD *ugd, service_h data) debug_log("service_get_extra_data: %d", ret); debug_log("argv[0]:%s", argv[0]); } -#ifdef _NO_ACCOUNT + + int ret; + char *operation = NULL; + ret = service_get_operation(data, &operation); + debug_log("service_get_operation: %d", ret); + debug_log("operation = %s", operation); + if (email_engine_get_default_account(&ugd->account_info->account_id) == false) return COMPOSER_ERROR_NO_DEFAULT_ACCOUNT; -#endif + if (argv[0]) { debug_log("argv[0] = %s", argv[0]); @@ -1397,22 +1403,39 @@ static int _composer_pre_parse_bundle(EmailComposerUGD *ugd, service_h data) debug_log("composer type = %d", ugd->composer_type); if (ugd->composer_type == RUN_COMPOSER_EXTERNAL) { - int ret; - ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_TO, (char **)&argv[1]); - debug_log("service_get_extra_data: %d", ret); - debug_log("to:%s", argv[1]); - ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_CC, (char **)&argv[2]); - debug_log("service_get_extra_data: %d", ret); - debug_log("cc:%s", argv[2]); - ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_BCC, (char **)&argv[3]); - debug_log("service_get_extra_data: %d", ret); - debug_log("bcc:%s", argv[3]); - ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_SUBJECT, (char **)&argv[4]); - debug_log("service_get_extra_data: %d", ret); - debug_log("subject:%s", argv[4]); - ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_BODY, (char **)&argv[5]); - debug_log("service_get_extra_data: %d", ret); - debug_log("body:%s", argv[5]); + if (operation == NULL) { /* ug called by ug_create */ + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_TO, (char **)&argv[1]); + debug_log("service_get_extra_data: %d", ret); + debug_log("to:%s", argv[1]); + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_CC, (char **)&argv[2]); + debug_log("service_get_extra_data: %d", ret); + debug_log("cc:%s", argv[2]); + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_BCC, (char **)&argv[3]); + debug_log("service_get_extra_data: %d", ret); + debug_log("bcc:%s", argv[3]); + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_SUBJECT, (char **)&argv[4]); + debug_log("service_get_extra_data: %d", ret); + debug_log("subject:%s", argv[4]); + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_BODY, (char **)&argv[5]); + debug_log("service_get_extra_data: %d", ret); + debug_log("body:%s", argv[5]); + } else { /* ug called by appcontrol request */ + ret = service_get_extra_data(data, SERVICE_DATA_TO, (char **)&argv[1]); + debug_log("service_get_extra_data: %d", ret); + debug_log("to:%s", argv[1]); + ret = service_get_extra_data(data, SERVICE_DATA_CC, (char **)&argv[2]); + debug_log("service_get_extra_data: %d", ret); + debug_log("cc:%s", argv[2]); + ret = service_get_extra_data(data, SERVICE_DATA_BCC, (char **)&argv[3]); + debug_log("service_get_extra_data: %d", ret); + debug_log("bcc:%s", argv[3]); + ret = service_get_extra_data(data, SERVICE_DATA_SUBJECT, (char **)&argv[4]); + debug_log("service_get_extra_data: %d", ret); + debug_log("subject:%s", argv[4]); + ret = service_get_extra_data(data, SERVICE_DATA_TEXT, (char **)&argv[5]); + debug_log("service_get_extra_data: %d", ret); + debug_log("body:%s", argv[5]); + } } else { int ret; ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_ACCOUNT_ID, (char **)&argv[1]); @@ -1464,7 +1487,6 @@ static int _composer_pre_parse_bundle(EmailComposerUGD *ugd, service_h data) } if (argv[4] != NULL && strlen(argv[4]) != 0) ugd->new_mail_info->mail_data->subject = g_strdup(argv[4]); - if (argv[5] != NULL && strlen(argv[5]) != 0) { ugd->new_mail_info->mail_data->file_path_plain = g_strdup(argv[5]); ugd->new_mail_info->mail_data->body_download_status = 1; @@ -1494,9 +1516,57 @@ static int _composer_pre_parse_bundle(EmailComposerUGD *ugd, service_h data) return COMPOSER_ERROR_NONE; } else { - debug_log("Invaild argument!!"); + if (operation == NULL) { /* ug called by ug_create */ + debug_log("Invaild argument!!"); + return COMPOSER_ERROR_INVALID_ARG; + } else { /* ug called by appcontrol request */ + + /* default run type: RUN_COMPOSER_EXTERNAL */ + ugd->composer_type = RUN_COMPOSER_EXTERNAL; - return COMPOSER_ERROR_INVALID_ARG; + int ret; + ret = service_get_extra_data(data, SERVICE_DATA_TO, (char **)&argv[1]); + debug_log("service_get_extra_data: %d", ret); + debug_log("to:%s", argv[1]); + ret = service_get_extra_data(data, SERVICE_DATA_CC, (char **)&argv[2]); + debug_log("service_get_extra_data: %d", ret); + debug_log("cc:%s", argv[2]); + ret = service_get_extra_data(data, SERVICE_DATA_BCC, (char **)&argv[3]); + debug_log("service_get_extra_data: %d", ret); + debug_log("bcc:%s", argv[3]); + ret = service_get_extra_data(data, SERVICE_DATA_SUBJECT, (char **)&argv[4]); + debug_log("service_get_extra_data: %d", ret); + debug_log("subject:%s", argv[4]); + ret = service_get_extra_data(data, SERVICE_DATA_TEXT, (char **)&argv[5]); + debug_log("service_get_extra_data: %d", ret); + debug_log("body:%s", argv[5]); + + if (argv[1] != NULL && strlen(argv[1]) != 0) { + ugd->new_mail_info->mail_data->full_address_to = _composer_parse_recipients_arg(ugd, argv[1]); + } + if (argv[2] != NULL && strlen(argv[2]) != 0) { + ugd->new_mail_info->mail_data->full_address_cc = _composer_parse_recipients_arg(ugd, argv[2]); + } + if (argv[3] != NULL && strlen(argv[3]) != 0) { + ugd->new_mail_info->mail_data->full_address_bcc = _composer_parse_recipients_arg(ugd, argv[3]); + } + if (argv[4] != NULL && strlen(argv[4]) != 0) + ugd->new_mail_info->mail_data->subject = g_strdup(argv[4]); + if (argv[5] != NULL && strlen(argv[5]) != 0) { + ugd->new_mail_info->mail_data->file_path_plain = g_strdup(argv[5]); + ugd->new_mail_info->mail_data->body_download_status = 1; + } + + ugd->save_drafts = 1; + + int i; + for (i = 0; i < 7;i++) { + if (argv[i]) + g_free(argv[i]); + } + + return COMPOSER_ERROR_NONE; + } } } |