diff options
author | Sungbok Park <parksb@samsung.com> | 2012-08-21 17:42:03 +0900 |
---|---|---|
committer | Sungbok Park <parksb@samsung.com> | 2012-08-21 17:42:03 +0900 |
commit | cf8473c54430527c7a8ab89cf84e05e7d711477b (patch) | |
tree | b29503ce00c1ab948b6cdc96819a2946a6688ca0 /composer/include | |
parent | 6f9c7098724e12e1ab06a428efbc21bda28875b0 (diff) | |
download | email-cf8473c54430527c7a8ab89cf84e05e7d711477b.tar.gz email-cf8473c54430527c7a8ab89cf84e05e7d711477b.tar.bz2 email-cf8473c54430527c7a8ab89cf84e05e7d711477b.zip |
org.tizen.email-0.0.1 release
Diffstat (limited to 'composer/include')
-rwxr-xr-x | composer/include/email-composer-attachment.h | 38 | ||||
-rwxr-xr-x | composer/include/email-composer-callback.h | 67 | ||||
-rwxr-xr-x | composer/include/email-composer-contents.h | 29 | ||||
-rwxr-xr-x | composer/include/email-composer-filetype.h | 65 | ||||
-rwxr-xr-x | composer/include/email-composer-js.h | 49 | ||||
-rwxr-xr-x | composer/include/email-composer-predictive-search.h | 50 | ||||
-rwxr-xr-x | composer/include/email-composer-recipient.h | 28 | ||||
-rwxr-xr-x | composer/include/email-composer-type.h | 242 | ||||
-rwxr-xr-x | composer/include/email-composer-util.h | 116 | ||||
-rwxr-xr-x | composer/include/email-composer.h | 265 |
10 files changed, 949 insertions, 0 deletions
diff --git a/composer/include/email-composer-attachment.h b/composer/include/email-composer-attachment.h new file mode 100755 index 0000000..1de0005 --- /dev/null +++ b/composer/include/email-composer-attachment.h @@ -0,0 +1,38 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __DEF_email_composer_attachment_H_ +#define __DEF_email_composer_attachment_H_ + +int _composer_get_attachments_total_size(EmailComposerUGD *ugd); +int _composer_get_files_size(Eina_List *files_list); +void _composer_attachment_create_list(EmailComposerUGD *ugd, Eina_List *list, Eina_Bool is_inline); +void _composer_attachment_reset(EmailComposerUGD *ugd); +int _composer_get_inline_images_size(EmailComposerUGD *ugd); +void _composer_attachment_create_list_box(EmailComposerUGD *ugd, email_attachment_data_t *attachment_data); +void _composer_attachment_add_thumbnail(EmailComposerUGD *ugd, Evas_Object *parent, char *filePath); +Evas_Object *_composer_attachment_add_delete_icon(EmailComposerUGD *ugd, Evas_Object *parent); +void _composer_attachment_add_filename(EmailComposerUGD *ugd, email_attachment_data_t * attachment_data, Evas_Object *parent); +void _composer_attachment_set_attach_data(EmailComposerUGD *ugd, Evas_Object *parent, email_attachment_data_t *attachment_data); +void _composer_attachment_create_contracted_box(EmailComposerUGD *ugd); +Evas_Object *_composer_attachment_make_thumbnail(EmailComposerUGD *ugd, char *filePath, Evas_Object *parent); +bool _composer_attachment_duplicate_check(EmailComposerUGD *ugd, char *pszAttachedFilePath); +void _composer_attachment_expand_items(EmailComposerUGD *ugd); +void _composer_attachment_contract_items(EmailComposerUGD *ugd); +int _composer_attachment_make_ethumb(const char *source, char *target); +void _composer_ethumb_generate_cb(void *data, Ethumb *e, Eina_Bool success); + +#endif /* __DEF_email_composer_attachment_H__ */ diff --git a/composer/include/email-composer-callback.h b/composer/include/email-composer-callback.h new file mode 100755 index 0000000..43d6a76 --- /dev/null +++ b/composer/include/email-composer-callback.h @@ -0,0 +1,67 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __EMAIL_COMPOSER_CALLBACK_H__ +#define __EMAIL_COMPOSER_CALLBACK_H__ + +void _composer_mbe_changed_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_mbe_longpressed_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_edit_field_changed_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_more_button_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_back_button_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_mbe_added_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_mbe_deleted_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_mbe_selected_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_mbe_focused_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_mbe_unfocused_cb(void *data, Evas_Object *obj, void *event_info); +Eina_Bool _composer_mbe_verified_item_cb(Evas_Object *obj, const char *item_label, void *item_data, void *data); +void _composer_mbe_popup_delete_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_mbe_popup_edit_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_mbe_popup_move_to_to_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_mbe_popup_move_to_cc_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_mbe_popup_move_to_bcc_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_mbe_popup_change_addr_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_mbe_change_addr_response_cb(void *data, Evas_Object *obj, void *event_info); + +Eina_Bool _composer_send_mail_cb(void *data); +Eina_Bool _composer_region_show_cb(void *data); +Eina_Bool _composer_bringin_cb(void *data); +Eina_Bool _composer_mbe_popup_del(void *data); +Eina_Bool _composer_mbe_create_change_addr_list(void *data); + +char *_composer_change_addr_gl_text_get(void *data, Evas_Object *obj, const char *part); +Evas_Object *_composer_change_addr_gl_content_get(void *data, Evas_Object *obj, const char *part); +void _composer_email_radio_cb(void *data, Evas_Object *obj, void *event_info); +Eina_Bool _composer_send_popup_finish_cb(void *data); +void _composer_fail_to_send_popup_cb(void *data, Evas_Object *obj, void *event_info); + +void _composer_check_email_address(EmailComposerUGD *ugd, Evas_Object *entry); +void _composer_check_entry_max(EmailComposerUGD *ugd, Evas_Object *entry, int max_len); +void _composer_from_show_popup(EmailComposerUGD *ugd); +char *_composer_from_gl_text_get(void *data, Evas_Object *obj, const char *part); +Evas_Object *_composer_from_gl_content_get(void *data, Evas_Object *obj, const char *part); + +void _composer_cbar_cc_clicked(void *data, Evas_Object *obj, void *event_info); +#ifndef _CC_BCC +void _composer_cbar_bcc_clicked(void *data, Evas_Object *obj, void *event_info); +#endif +void _composer_cbar_send_clicked(void *data, Evas_Object *obj, void *event_info); + +void _composer_script_executed_cb(Evas_Object *o, const char *result, void *data); +void _composer_focus_script_executed_cb(Evas_Object *o, const char *result, void *data); +void _composer_get_latest_html_content_cb(Evas_Object *o, const char *result, void *data); +void _composer_get_image_list_cb(Evas_Object *o, const char *result, void *data); +#endif /* __EMAIL_COMPOSER_CALLBACK_H__ */ diff --git a/composer/include/email-composer-contents.h b/composer/include/email-composer-contents.h new file mode 100755 index 0000000..d04414f --- /dev/null +++ b/composer/include/email-composer-contents.h @@ -0,0 +1,29 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __EMAIL_COMPOSER_CONTENTS_H__ +#define __EMAIL_COMPOSER_CONTENTS_H__ + +#include "email-composer.h" + +void _composer_content_create_content_field(Evas_Object *parent, EmailComposerUGD *ugd); +void _composer_create_subject_field(Evas_Object *parent, EmailComposerUGD *ugd); +void _composer_create_body_field(Evas_Object *parent, EmailComposerUGD *ugd); +Evas_Object *_composer_create_subject_editfield(Evas_Object *parent, char *title, EmailComposerUGD *ugd); +Evas_Object *_composer_create_body_webview(Evas_Object *parent, char *title, EmailComposerUGD *ugd); +void _composer_register_editfield_entry_callback(Evas_Object *obj, EmailComposerUGD *ugd); + +#endif /* __EMAIL_COMPOSER_CONTENTS_H__ */ diff --git a/composer/include/email-composer-filetype.h b/composer/include/email-composer-filetype.h new file mode 100755 index 0000000..32bb450 --- /dev/null +++ b/composer/include/email-composer-filetype.h @@ -0,0 +1,65 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __DEF_email_composer_filetype_H_ +#define __DEF_email_composer_filetype_H_ + +#include "email-composer-type.h" + +struct _mtd { + char *category; /* Not used at present */ + char *key; + char *icon_path; + char *exe_path; /* Not used at present */ + char *param; /* Not used at present */ + int is_direct_launch; /* Not used at present */ + int need_sort_param; /* Not used at present */ + int having_a_thumbnail; /* Not used at present */ +}; + +struct _mtd mtd_main[] = { + {"ETC", "etc", MYFILE_IMGE_PATH "/myfile_icon_etc.png", NULL, NULL, TRUE, FALSE, FALSE}, + {"Music", "audio/mpeg", IMGDIR "/U01_icon_music.png", "music", NULL, TRUE, TRUE, TRUE}, + {"Music", "audio/x-wav", IMGDIR "/U01_icon_music.png", "music", NULL, TRUE, TRUE, TRUE}, + {"Music", "audio/x-ms-wma", IMGDIR "/U01_icon_music.png", "music", NULL, TRUE, TRUE, TRUE}, + {"Voice", "audio/AMR", IMGDIR "/U01_icon_music.png", "voicerecorder", NULL, TRUE, FALSE, FALSE}, + {"Video", "video/x-msvideo", IMGDIR "/U01_icon_video.png", "video-player", NULL, TRUE, FALSE, TRUE}, + {"Video", "video/mp4", IMGDIR "/U01_icon_video.png", "video-player", NULL, TRUE, FALSE, TRUE}, + {"Video", "video/3gpp", IMGDIR "/U01_icon_video.png", "video-player", NULL, TRUE, FALSE, TRUE}, + {"Video", "video/x-ms-asf", IMGDIR "/U01_icon_video.png", "video-player", NULL, TRUE, FALSE, TRUE}, + {"Video", "video/x-ms-wmv", IMGDIR "/U01_icon_video.png", "video-player", NULL, TRUE, FALSE, TRUE}, + {"Image", "image/svg+xml", MYFILE_IMGE_PATH "/myfile_icon_svg.png", "svg-viewer", NULL, TRUE, FALSE, FALSE}, + {"PDF", "application/pdf", IMGDIR "/U01_icon_pdf.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"Doc", "application/msword", IMGDIR "/U01_icon_word.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"Doc", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", IMGDIR "/U01_icon_word.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"PPT", "application/vnd.ms-powerpoint", IMGDIR "/U01_icon_ppt.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"PPT", "application/vnd.openxmlformats-officedocument.presentationml.presentation", IMGDIR "/U01_icon_ppt.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"Text", "text/plain", IMGDIR "/U01_icon_text.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"Text", "text/html", IMGDIR "/U01_icon_html.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"Excel", "application/vnd.ms-excel", IMGDIR "/U01_icon_excel.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"Excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", IMGDIR "/U01_icon_excel.png", "documents", NULL, TRUE, FALSE, FALSE}, + {"Flash", "application/x-shockwave-flash", IMGDIR "/U01_icon_swf.png", "flash-player", NULL, TRUE, FALSE, TRUE}, + {"None", "video/x-flv", IMGDIR "/U01_icon_video.png", NULL, NULL, FALSE, FALSE, FALSE}, + {"Java", "text/vnd.sun.j2me.app-descriptor", MYFILE_IMGE_PATH "/myfile_icon_java.png", NULL, NULL, FALSE, FALSE, FALSE}, + {"Java", "application/x-java-archive", MYFILE_IMGE_PATH "/myfile_icon_java.png", NULL, NULL, FALSE, FALSE, FALSE}, + {"SVG", "image/svg+xml", MYFILE_IMGE_PATH "/myfile_icon_svg.png", "svg-viewer", NULL, TRUE, FALSE, FALSE}, + {"ETC", "etc", MYFILE_IMGE_PATH "/myfile_icon_etc.png", NULL, NULL, TRUE, FALSE, FALSE}, + {"VCARD", "text/directory", MYFILE_IMGE_PATH "/myfile_icon_etc.png", NULL, NULL, FALSE, FALSE, FALSE}, + {"VCALENDAR", "text/calendar", MYFILE_IMGE_PATH "/myfile_icon_etc.png", NULL, NULL, FALSE, FALSE, FALSE}, + {NULL, NULL, NULL, NULL} +}; + +#endif /* __DEF_email_composer_filetype_H__ */ diff --git a/composer/include/email-composer-js.h b/composer/include/email-composer-js.h new file mode 100755 index 0000000..769d929 --- /dev/null +++ b/composer/include/email-composer-js.h @@ -0,0 +1,49 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef EMAIL_COMPOSER_JS_H_ +#define EMAIL_COMPOSER_JS_H_ + +#include "email-composer.h" + +#define COMPOSER_JS_ENABLE_EDITABLE "document.body.contentEditable='true'; void 0" +#define COMPOSER_JS_DISABLE_EDITABLE "document.body.contentEditable='false'; void 0" +#define COMPOSER_JS_SET_FOCUS "document.body.focus(); void 0" +#define COMPOSER_JS_SET_UNFOCUS "document.body.blur(); void 0" + +#define COMPOSER_JS_GET_HTML_CONTENT \ + "function getHtmlContent() { " \ + "console.log(\"Here\");" \ + "var elements = document.getElementsByTagName(\"body\");" \ + "console.log(\"elements[0].outerHTML : \" + elements[0].outerHTML);" \ + "return elements[0].outerHTML;" \ + "};" \ + "getHtmlContent();" + +#define COMPOSER_JS_GET_IMAGE_LIST \ + "function getImgs() { " \ + "var imgs = document.getElementsByTagName(\"img\");" \ + "var srcs = \"\";" \ + "for (var i = 0; i < imgs.length; i++) {" \ + "srcs += imgs[i].src + \",\" ;" \ + "console.log(\"imgs[\" + i + \"].src : \" + imgs[i].src);" \ + "console.log(\"srcs : \" + srcs);" \ + "}" \ + "return srcs;" \ + "};" \ + "getImgs();" + +#endif /* EMAIL_COMPOSER_JS_H_ */ diff --git a/composer/include/email-composer-predictive-search.h b/composer/include/email-composer-predictive-search.h new file mode 100755 index 0000000..fbefe40 --- /dev/null +++ b/composer/include/email-composer-predictive-search.h @@ -0,0 +1,50 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __email_composer_predictive_search__ +#define __email_composer_predictive_search__ + +#define COMPOSER_TEXT_PREFIX "<match>" +#define COMPOSER_TEXT_POSTFIX "</match>" + +void composer_ps_request_search(EmailComposerUGD *ugd); + +void _composer_ps_stop(EmailComposerUGD *ugd); + +void _composer_ps_del_timer(EmailComposerUGD *ugd); + +void _composer_ps_add_timer(EmailComposerUGD *ugd); + +Evas_Object *_composer_recipient_create_ps_field(Evas_Object *parent, EmailComposerUGD *ugd); + +Eina_List *composer_ps_search_contact(EmailComposerUGD *ugd, const char *search_word); + +void composer_ps_delete_contacts_list(Eina_List *predict_list); + +char *composer_ps_text_get(void *data, Evas_Object *obj, const char *part); + +Evas_Object *composer_ps_icon_get(void *data, Evas_Object *obj, const char *part); + +void _composer_ps_create_sublist(void *data); + +void _composer_ps_delete_list(void *data); + +void _composer_ps_show_field(void *data); + +void _composer_ps_hide_field(void *data); + +Eina_Bool _composer_ps_scroll_pop(void *data); +#endif /* __email_composer_predictive_search__ */ diff --git a/composer/include/email-composer-recipient.h b/composer/include/email-composer-recipient.h new file mode 100755 index 0000000..76b7a58 --- /dev/null +++ b/composer/include/email-composer-recipient.h @@ -0,0 +1,28 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __EMAIL_COMPOSER_RECIPIENT_H__ +#define __EMAIL_COMPOSER_RECIPIENT_H__ + +void email_composer_create_to_field(EmailComposerUGD *ugd); +void email_composer_create_cc_field(EmailComposerUGD *ugd); +void email_composer_delete_cc_field(EmailComposerUGD *ugd); +void email_composer_create_bcc_field(EmailComposerUGD *ugd); +void email_composer_delete_bcc_field(EmailComposerUGD *ugd); +void email_composer_create_from_field(EmailComposerUGD *ugd); +void email_composer_delete_from_field(EmailComposerUGD *ugd); + +#endif /* __EMAIL_COMPOSER_RECIPIENT_H__ */ diff --git a/composer/include/email-composer-type.h b/composer/include/email-composer-type.h new file mode 100755 index 0000000..457c72d --- /dev/null +++ b/composer/include/email-composer-type.h @@ -0,0 +1,242 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __DEF_email_composer_type_H_ +#define __DEF_email_composer_type_H_ + +#include <stdio.h> +#include <string.h> +#include <stdbool.h> +#include <glib-object.h> +#include <Elementary.h> +#include <Evas.h> +#include <Edje.h> +#include <Eina.h> +#include <E_DBus.h> +#include <Efreet_Mime.h> +#include <Ecore_IMF.h> +#include <Ecore_File.h> +#include <vconf.h> +#include <email-api.h> +#include <contacts-svc.h> +#include "email-debug.h" + +#define MYFILE_IMGE_PATH "/opt/apps/org.tizen.myfile/res/images" +#define UG_MYFILE_PATH "/opt/media/" +#define COMPOSER_EDJ_NAME EDJDIR"/email-composer-view.edj" + +#define EMAIL_TMP_FOLDER "/tmp/email/" +#define EMAIL_TMP_FOLDER_PERMISSION 0755 +#define SAVE_HTML_FILE_NAME "mail.html" +#define SAVE_URI EMAIL_TMP_FOLDER"mail.txt" +#define THUMBNAIL_SIZE 80 + +#define COMPOSER_ORINGIN_HTML_STR N_("Original mail.htm") + +#define MAX_STR_LEN 1024 + +#define MAX_ACCOUNT 10 +#define MAX_ACCOUNT_NAME_LEN 64 + +#define MAX_RECIPIENT_ADDRESS_LEN 234 +#define MAX_RECIPIENT_COUNT 100 +#define MAX_RECIPIENT_ADDRESSES_LEN (MAX_RECIPIENT_ADDRESS_LEN*MAX_RECIPIENT_COUNT) +#define MAX_SUBJECT_LEN 1024 + +#define MAX_BODY_SIZE 32763 +#define MAX_ATTACHMENT_ITEM 100 +#define MAX_ATTACHMENT_SIZE 10*1024*1024 +#define MAX_ATTACHMENT_FILE_LEN 1024 + +#define CONV_THUMB_WIDTH 250 +#define CONV_THUMB_HEIGHT 170 + +#define ATTACHMENT_MEDIA_FOLDER_NAME "media" +#define ATTACHMENT_MMC_FOLDER_NAME "storage" + +#define ATTACHMENT_MEDIA_IMAGE "image" +#define ATTACHMENT_MEDIA_VIDEO "video" +#define ATTACHMENT_MEDIA_AUDIO "audio" +#define ATTACHMENT_MEDIA_VCARD "vcf" +#define ATTACHMENT_MEDIA_VCALENDAR "vcs" + +#define ATTACHMENT_IMAGE_FILE_PATH IMGDIR"/composer_attachment_image.png" +#define ATTACHMENT_AUDIO_FILE_PATH IMGDIR"/composer_attachment_sound.png" +#define ATTACHMENT_VIDEO_FILE_PATH IMGDIR"/composer_attachment_video.png" +#define ATTACHMENT_ETC_FILE_PATH IMGDIR"/composer_attachment_etc.png" +#define ATTACHMENT_VCARD_FILE_PATH IMGDIR"/composer_attachment_vcard.png" +#define ATTACHMENT_VCALENDAR_FILE_PATH IMGDIR"/composer_attachment_vcalender.png" + +#define EMAIL_THEME_TIZEN_BLACK "tizen-black" +#define EMAIL_THEME_TIZEN_BLACK_HD "tizen-black-hd" +#define EMAIL_THEME_TIZEN_WHITE "tizen" +#define EMAIL_THEME_TIZEN_WHITE_HD "tizen-hd" + +typedef struct { + gchar email_addr[MAX_RECIPIENT_ADDRESS_LEN]; /* Specific email address of recipient */ + int email_type; +} EmailList; + +typedef struct { + int selected_email_idx; + int email_cnt; + bool is_contact_info; + bool is_always_bcc; + bool is_from_addr; + gchar *display_name; /* Specific display name of recipient */ + EmailList email_list[MAX_RECIPIENT_COUNT]; +} EmailRecpInfo; + +typedef enum { + EMAIL_THEME_BLACK, + EMAIL_THEME_WHITE, + EMAIL_THEME_MAX +} EmailThemeType; + +typedef enum { + EMAIL_COMPOSER_LAUNCH_INLINE_IMAGE, + EMAIL_COMPOSER_LAUNCH_GALLERY, + EMAIL_COMPOSER_LAUNCH_TAKE_PHOTO, + EMAIL_COMPOSER_LAUNCH_RECORD_VIDEO, + EMAIL_COMPOSER_LAUNCH_VOICE_RECORDER, + EMAIL_COMPOSER_LAUNCH_FILE, + EMAIL_COMPOSER_LAUNCH_NAMECARD, + EMAIL_COMPOSER_LAUNCH_CALENDAR, + EMAIL_COMPOSER_LAUNCH_MEMO, + EMAIL_COMPOSER_LAUNCH_MESSAGE_COMPOSER, + EMAIL_COMPOSER_LAUNCH_MAX, +} EmailComposerLaunchType; + +typedef enum { + COMPOSER_ATTACHMENT_ITEM_IMAGE, + COMPOSER_ATTACHMENT_ITEM_SOUND, + COMPOSER_ATTACHMENT_ITEM_VIDEO, + COMPOSER_ATTACHMENT_ITEM_ETC, +} EmailComposerAttachmentType; + +typedef enum { + COMPOSER_ERROR_NONE = 0, + + COMPOSER_ERROR_FAIL = -1, + COMPOSER_ERROR_SEND_FAIL = -2, + COMPOSER_ERROR_NULL_POINTER = -3, + COMPOSER_ERROR_INVALID_ARG = -4, + COMPOSER_ERROR_SERVICE_INIT_FAIL = -5, + + COMPOSER_ERROR_NO_DEFAULT_ACCOUNT = -6, + COMPOSER_ERROR_NO_ACCOUNT = -7, + COMPOSER_ERROR_NO_ACCOUNT_LIST = -8, + COMPOSER_ERROR_INVALID_FILE = -9, + COMPOSER_ERROR_INVALID_FILE_SIZE = -10, + COMPOSER_ERROR_ETHUMB_FAIL = -11, + + COMPOSER_ERROR_GET_DATA_FAIL = -12, + COMPOSER_ERROR_MAKE_MAIL_FAIL= -13, + COMPOSER_ERROR_UNKOWN_TYPE = -14, + COMPOSER_ERROR_DBUS_FAIL = -15, + COMPOSER_ERROR_RECIPIENT_DUPLICATED = -16, + COMPOSER_ERROR_ENGINE_INIT_FAILED = -17, +} COMPOSER_ERROR_TYPE_E; + +typedef enum { + COMPOSER_FOCUS_STATUS_NONE = 1 << 0, + COMPOSER_FOCUS_STATUS_ATTACHMENT_REMOVED = 1 << 1, + COMPOSER_FOCUS_STATUS_ON_PAUSE = 1 << 2, + COMPOSER_FOCUS_STATUS_MAX = 1 << 3, +} COMPOSER_FOCUS_STATUS_TYPE; + +typedef struct _EmailComposerAccount EmailComposerAccount; +typedef struct _EmailComposerMailbox EmailComposerMailbox; +typedef struct _EmailComposerMail EmailComposerMail; + +struct _EmailComposerAccount { + int account_id; + int account_count; + int account_type; + char *account_name; + Evas_Object *account_rdg; + Evas_Object *account_rd[MAX_ACCOUNT]; + email_account_t *account_list; + email_account_t *account; +}; + +struct _EmailComposerMailbox { + int mailbox_id; + email_mailbox_t *mail_box; +}; + +struct _EmailComposerMail { + email_mail_data_t *mail_data; + email_attachment_data_t *attachment_list; +}; + +typedef struct { + int storage_type; /* the storage_type */ + int contact_index; /* the contact_index */ + int phone_index; /* the phone_index */ + char name[256]; /* the name */ + char phone_number[41]; /* the phone_number */ + char email[129]; /* the default_email */ +} contactui_info_t; + +#undef STR_VALID +#define STR_VALID(str) \ + ((str != NULL && strlen(str) > 0) ? TRUE : FALSE) + +#undef STR_INVALID +#define STR_INVALID(str) \ + ((str == NULL || strlen(str) == 0) ? TRUE : FALSE) + +#undef STR_LEN +#define STR_LEN(str) ({ char *s = str; (s) ? strlen(s) : 0; }) + +#undef STR_CMP +#define STR_CMP(s1, s2) \ + (((s1) == NULL || (s2) == NULL) ? FALSE : (g_ascii_strcasecmp(s1, s2) == 0 ? TRUE : FALSE)) + +#undef STR_CMP0 +#define STR_CMP0(s1, s2) \ + (g_strcmp0(s1, s2) == 0 ? TRUE : FALSE) + +#undef STR_NCMP +#define STR_NCMP(s1, s2, n) \ + (g_ascii_strncasecmp(s1, s2, (gsize)n) == 0 ? TRUE : FALSE) + +#undef STR_CPY +#define STR_CPY(dest, src) \ + g_stpcpy(dest, src) + +#undef STR_NCPY +#define STR_NCPY(dest, src, n) \ + strncpy(dest, src, n) + +#undef STR_LCPY +#define STR_LCPY(dest, src, n) \ + g_strlcpy(dest, src, n) + +#undef STR_CAT +#define STR_CAT(dest, src) \ + strcat(dest, src) + +#undef STR_NCAT +#define STR_NCAT(dest, src, n) \ + strncat(dest, src, n) + +#undef STR_LCAT +#define STR_LCAT(dest, src, n) \ + g_strlcat(dest, src, n) + +#endif /* __DEF_email_composer_type_H__ */ diff --git a/composer/include/email-composer-util.h b/composer/include/email-composer-util.h new file mode 100755 index 0000000..5f3661a --- /dev/null +++ b/composer/include/email-composer-util.h @@ -0,0 +1,116 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __DEF_email_composer_util_H_ +#define __DEF_email_composer_util_H_ + +#define GET_VALUE_WITH_RATE(total, rate) ((int)((float)(total) * rate / 100)) + +Eina_Bool email_composer_change_image_paths_to_relative(char *src_html_content, char **dest_buffer); +Eina_List *email_composer_change_str_to_EinaList(EmailComposerUGD *ugd, const char *str, char *token); +Eina_List *email_composer_change_GList_to_EinaList(GList * l); + +void RgbIntToString(char *pszBuffer, int r, int g, int b); + +void _composer_convert_ps_to_br(char *input); +void _composer_popup_add(EmailComposerUGD *ugd, int type, char *text); +void _composer_popup_end(EmailComposerUGD *ugd, int close_sg); +void _composer_set_mail_info(EmailComposerUGD *ugd); + +int _composer_add_mailbox_folder(EmailComposerUGD *ugd, email_mailbox_type_e mailbox_type); +int _composer_move_mailbox_folder(EmailComposerUGD *ugd, email_mailbox_type_e mailbox_type); +int _composer_make_mail(EmailComposerUGD *ugd); +int _composer_send_mail(EmailComposerUGD *ugd); +int _composer_make_recipient_char_to_list(EmailComposerUGD *ugd, Evas_Object *obj, char **dest); + +Eina_Bool _composer_popup_end_cb(void *data); +Eina_Bool _composer_show_fail_to_save(void *data); +Eina_Bool _composer_show_success_to_save(void *data); + +EmailRecpInfo *_composer_separate_save_recipient_char(EmailComposerUGD *ugd, char *recipient); +email_attachment_data_t *_composer_attach_mail_body(EmailComposerUGD *ugd); + +void _composer_make_default_thumbnail(Evas_Object *eo, char *pszImgPath, int nItemType); +Evas_Object *_composer_load_edj(Evas_Object *parent, const char *file, const char *group); +Evas_Object *_composer_create_navigation_layout(Evas_Object *parent); +Evas_Object *_composer_create_composer_layout(Evas_Object *parent); +Evas_Object *_composer_create_outer_layout(Evas_Object *parent); +Evas_Object *_composer_create_main_scroller(Evas_Object *parent); +Evas_Object *_composer_create_box(Evas_Object *parent); + +const char *_composer_get_sent_time(EmailComposerMail *mail_info); +char *_composer_get_wday(int tm_wday); +char *_composer_get_month(int tm_mon); +bool _composer_is_valid_email(const char *addr); +void _composer_show_notify(EmailComposerUGD *ugd, const char *str); +void _composer_show_cancel_popup(EmailComposerUGD *ugd, const char *str); +Eina_Bool _composer_idler_destroy(void *data); +Eina_Bool _composer_idler_return(void *data); +bool _composer_check_recipient_is_duplicated(EmailComposerUGD *ugd, Evas_Object *obj, EmailRecpInfo * ri); + +void _composer_entry_filter_remove_markup(void *data, Evas_Object *entry, char **text); +void _composer_add_to_address(EmailComposerUGD *ugd); +void _composer_add_cc_address(EmailComposerUGD *ugd); +void _composer_add_bcc_address(EmailComposerUGD *ugd); +void _composer_add_from_address(EmailComposerUGD *ugd); +void _composer_add_subject(EmailComposerUGD *ugd); +void _composer_add_body(EmailComposerUGD *ugd); +void _composer_add_origin_msg(EmailComposerUGD *ugd); +void _composer_make_body_text(EmailComposerUGD *ugd); +void _composer_add_attachment(EmailComposerUGD *ugd); +void _composer_add_softlink_to_inline_images(EmailComposerUGD *ugd); +Evas_Object *_composer_popup_create(Evas_Object *parent, EmailComposerUGD *ugd); +void _composer_popup_delete(Evas_Object *popup); +Evas_Object *_composer_create_sub_window(Evas_Object *parent); +bool _composer_check_recipients_modified(Evas_Object *mbe, Eina_List **initial_recipients_list); +bool _composer_check_mail_is_modified(void *data); +bool _composer_check_recipient_is_empty(void *data); +void _composer_unfocus_and_save(void *data); +void _composer_change_text_to_textblock(char *input, char **output, char *matched_word, char *prefix, char *postfix); +int _composer_get_account_list(EmailComposerUGD *ugd); +char *_composer_get_email_addr_from_account_id(EmailComposerUGD *ugd, int account_id); + +void _composer_show_download_attachment_popup(EmailComposerUGD *ugd); +Eina_Bool _composer_show_progress_popup(void *data); +void _composer_download_attachment(EmailComposerUGD *ugd); +void _composer_update_attachment_info(EmailComposerUGD *ugd, int index); +void _composer_attachment_cancel_download(EmailComposerUGD *ugd); +void _composer_cancel_download_attachment(EmailComposerUGD *ugd); + +Evas_Object *_composer_create_noti(EmailComposerUGD *ugd, bool use_win, char *title, char *content, + int btn_num, char *btn1_lb, + char *btn2_lb, + double timeout, void (*response_cb)(void *data, Evas_Object *obj, void *event_info)); +void _composer_noti_response_cb(void *data, Evas_Object *obj, void *event_info); +Evas_Object *_composer_create_popup(EmailComposerUGD *ugd, bool use_win, char *title, char *content, + int btn_num, char *btn1_lb, char *btn2_lb, char *btn3_lb, + double timeout, void (*response_cb) (void *data, Evas_Object *obj, void *event_info)); +void _composer_save_popup_response_cb(void *data, Evas_Object *obj, void *event_info); +void _composer_popup_response_cb(void *data, Evas_Object *obj, void *event_info); +char *_composer_get_service_fail_type(int type); +Eina_Bool _composer_mbe_set_focus(void *data); +Eina_Bool _composer_check_popup_exist(EmailComposerUGD *ugd); + +void _composer_resize_body_webview(EmailComposerUGD *ugd, int resize_height); + +void _composer_input_panel_state_changed_cb(void *data, Ecore_IMF_Context *ctx, int value); +void _composer_display_position(void *data); + +void _composer_print_hit_test_result(Ewk_Hit_Test *hit_test); +void _composer_coords_ewk_to_evas(Evas_Object *view, int ewkX, int ewkY, int *evasX, int *evasY); +void _composer_coords_evas_to_ewk(Evas_Object *view, int evasX, int evasY, int *ewkX, int *ewkY); + +#endif /* __DEF_email_composer_util_H__ */ diff --git a/composer/include/email-composer.h b/composer/include/email-composer.h new file mode 100755 index 0000000..28e9b93 --- /dev/null +++ b/composer/include/email-composer.h @@ -0,0 +1,265 @@ +/* + * Copyright 2012 Samsung Electronics Co., Ltd + * + * Licensed under the Flora License, Version 1.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.tizenopensource.org/license + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef __DEF_email_composer_H_ +#define __DEF_email_composer_H_ + +#include <utilX.h> +#include <bundle.h> +#include <ui-gadget.h> +#include <ui-gadget-module.h> +#include <E_DBus.h> +#include <EWebKit2.h> + +#include "email-composer-type.h" +#include "email-common-types.h" +#include "email-locale.h" +#include "email-engine.h" +#include "email-utils.h" + +#define _EDJ(o) elm_layout_edje_get(o) +#define COMPOSER_STRDUP(src) (((src)) ? g_strdup((src)) : NULL) + +#define COMPOSER_ICON_DIR IMGDIR + +#define COMPOSER_NAVI_HEIGHT 108 + +#define COMPOSER_SP_H 10 +#define COMPOSER_EDIT_FIELD_H 80 +#define COMPOSER_BUTTON_FIELD_H 80 + +#define _ENABLE_ENDKEY_ 0 +#define MAX_RECENT_ITEM 100 +#define MB_SVC_FILE_PATH_LEN_MAX 255 +#define TEMP_BUFFER_SIZE 1024 + +#define MAX_WEBVIEW_HEIGHT 88 +#define IME_WEBVIEW_LANDSCAPE_HEIGHT 20 + +#define IME_WEBVIEW_PORTRAIT_HEIGHT 43 +#define IME_WEBVIEW_PORTRAIT_HEIGHT_WITH_OPTION_HEADER 33 + + +typedef struct ug_data EmailComposerUGD; +struct ug_data { + ui_gadget_h ug_main; + Evas_Object *base; + + Evas_Object *win_main; + Evas *evas; + + Evas_Object *bg; + /*Elm_Theme *th;*/ + + /* New notify - TODO: unify the popup usage */ + Evas_Object *composer_noti; + Evas_Object *timeout_noti; + Evas_Object *change_addr_noti; + Evas_Object *composer_popup; + + Evas_Object *popup_win; + Evas_Object *main_layout; + Evas_Object *navi_bar; + Elm_Object_Item *navi_item; + Evas_Object *main_scroller; + Evas_Object *c_layout; + Evas_Object *conform; + + Evas_Object *to_ly; + Evas_Object *cc_ly; + Evas_Object *bcc_ly; + Evas_Object *from_ly; + Evas_Object *subject_ly; + Evas_Object *webkit_ly; + + Eina_Bool attachment_list_compressed; + Eina_List *attachment_item_obj_list; + Evas_Object *attachment_item_box; + Evas_Object *attachment_contracted_item; + + bool bSendBtnDisabled; + bool cc_added; + bool bcc_added; + + int indicator_height; + bool is_main_scroller_scrolling; + bool is_webview_scrolling; + +#ifdef _TEMPORARY_FIX_FOR_ROTATION_ + bool temporary_fix_for_rotation; +#endif + + Evas_Object *priv_selected_entry; + Evas_Object *selected_entry; + Elm_Object_Item *selected_item; + + int option_header_opened; + +#ifndef _CC_BCC + Elm_Object_Item *controlbar_item[2]; +#else + Elm_Object_Item *controlbar_item[1]; +#endif + Evas_Object *cc_btn; + Evas_Object *bcc_btn; + + Evas_Object *send_btn; + Evas_Object *cancel_btn; + + bool is_hided; + + Ecore_Idler *idler_save_draft; + Ecore_Idler *idler_set_focus; + Ecore_Idler *idler_show_progress; + + Ecore_Timer *send_timer; + Ecore_Timer *bringin_timer; + Ecore_Timer *mbe_unfocus_timer; + Ecore_Timer *focus_timer; + + /* Predictive Search */ + Ecore_Timer *ps_timer; + Ecore_Timer *sc_timer; + + Evas_Object *ps_list; + Elm_Genlist_Item_Class ps_itc_1; + Elm_Genlist_Item_Class ps_itc_2; + Eina_List *contacts_list_info; + + char ps_keyword[MAX_RECIPIENT_ADDRESS_LEN]; + bool b_cc_ps_open; + bool b_bcc_ps_open; + bool ps_on; + bool is_mbe_selected; + + /* Multibutton Entry */ + Evas_Object *to_mbe_entry; + Evas_Object *cc_mbe_entry; + Evas_Object *bcc_mbe_entry; + Evas_Object *from_mbe_entry; + Evas_Object *subject_editfield; + Evas_Object *subject_entry; + + Evas_Object *to_mbe; + Evas_Object *cc_mbe; + Evas_Object *bcc_mbe; + Evas_Object *from_mbe; + Eina_List *to_mbe_initial_list; + Eina_List *cc_mbe_initial_list; + Eina_List *bcc_mbe_initial_list; + Eina_List *attach_initial_list; + char *saved_subject; + + COMPOSER_FOCUS_STATUS_TYPE focus_status; + + Evas_Object *body_ewkview; + + Eina_Bool has_body_html; + char *saved_html_path; + char *saved_html_content; + char *latest_html_content; + char *plain_content; + + int to_recipients_cnt; + int cc_recipients_cnt; + int bcc_recipients_cnt; + + Evas_Object *dn_noti_popup; + Evas_Object *dn_prog_popup; + Evas_Object *fw_dn_label; + Evas_Object *fw_dn_progress; + + int composer_type; + int nExistingMailID; + + EmailComposerAccount *account_info; + EmailComposerMailbox *mailbox_info; + + EmailComposerMail *new_mail_info; + EmailComposerMail *existing_mail_info; + + GList *from_list; + GList *to_list; + GList *cc_list; + GList *bcc_list; + email_address_info_list_t *addrs_info_list; + + GList *fw_attachment_list; + int fw_dn_cnt; + int fw_dn_total_cnt; + int fw_dn_idx; + unsigned int fw_dn_handle[MAX_ATTACHMENT_ITEM]; + + int send_result; + int save_drafts; + bool b_sending; + + Ecore_IMF_Context *imf_context; + + Evas_Object *account_gen_list; + + bool isRotated; + + bool b_cc_bcc; + bool clipboard_on; + Eina_List *popup_list; + + COMPOSER_ERROR_TYPE_E eComposerErrorType; + int ime_height; + + Eina_List *listOfImageUrls; + + Eina_Bool b_load_finished; +}; + +typedef struct _EMAIL_CONTACT_LIST_INFO_S { + int index; + char *first_name; + char *last_name; + char *email_address; + char *image_path; + char display_name[MAX_RECIPIENT_ADDRESS_LEN]; + EmailComposerUGD *ugd; +} EMAIL_CONTACT_LIST_INFO_S; + +typedef struct _EMAIL_ATTACHMENT_INFO_S { + int mail_id; + int attach_id; + int index; + char *name; + char *path; + int size; + bool downloaded; + bool drm; + int inline_content; +} EMAIL_ATTACHMENT_INFO_S; + +typedef enum { + COMPOSER_RECIPIENT_TYPE_NONE = 0, + COMPOSER_RECIPIENT_TYPE_TO, + COMPOSER_RECIPIENT_TYPE_CC, + COMPOSER_RECIPIENT_TYPE_BCC, + COMPOSER_RECIPIENT_TYPE_FROM, + COMPOSER_RECIPIENT_TYPE_MAX, +} COMPOSER_RECIPIENT_TYPE_E; + +/****************************************************/ +/* Function Declaration */ +/****************************************************/ + +void create_composer_frame(EmailComposerUGD *ugd); +void _composer_create_view(Evas_Object *parent, EmailComposerUGD *ugd); +#endif /* __DEF_email_composer_H__ */ |