From 3e334ca1f7ae5fe0dbd336cb6183e52d33af3f85 Mon Sep 17 00:00:00 2001 From: "david8.kim" Date: Thu, 27 Sep 2012 17:20:46 +0900 Subject: [PATCH] add viewer and merge changes --- CMakeLists.txt | 7 +- account/CMakeLists.txt | 3 - account/include/email-account.h | 1 - account/src/email-account-folder.c | 45 +- account/src/email-account.c | 6 +- block/CMakeLists.txt | 3 - common/CMakeLists.txt | 1 + common/include/email-common-types.h | 23 +- common/include/email-engine.h | 7 +- common/include/email-html-converter.h | 28 + common/include/email-utils.h | 7 +- common/src/email-engine.c | 226 +- common/src/email-html-converter.c | 214 + common/src/email-utils.c | 292 +- composer/CMakeLists.txt | 10 +- composer/include/email-composer-callback.h | 9 +- composer/include/email-composer-type.h | 4 +- composer/include/email-composer-util.h | 3 + composer/include/email-composer.h | 35 +- composer/src/email-composer-callback.c | 661 ++- composer/src/email-composer-contents.c | 12 +- composer/src/email-composer-predictive-search.c | 34 +- composer/src/email-composer-util.c | 227 +- composer/src/email-composer.c | 103 +- composer/theme/email-composer-genlist.edc | 786 +++ composer/theme/email-composer-view.edc | 1 + composer/ug-email-composer-efl.xml | 5 - images/B15_double_tap_02.png | Bin 0 -> 28446 bytes images/M02_button_download_press.png | Bin 0 -> 4653 bytes images/M02_button_expand.png | Bin 0 -> 3845 bytes images/M02_button_expand_opened_press.png | Bin 3070 -> 3866 bytes images/M02_button_expand_press.png | Bin 0 -> 3833 bytes images/M02_email_Flag_Clear.png | Bin 3751 -> 4052 bytes images/M02_email_icon_favorite_off.png | Bin 3321 -> 3515 bytes images/M02_email_icon_favorite_on.png | Bin 3961 -> 3501 bytes images/M02_email_icon_index_close.png | Bin 0 -> 2995 bytes images/M02_email_icon_popup_advanced_press.png | Bin 0 -> 3313 bytes images/M02_email_icon_popup_all_press.png | Bin 0 -> 3205 bytes images/M02_email_icon_popup_date_press.png | Bin 0 -> 3595 bytes images/M02_email_icon_popup_sender_press.png | Bin 0 -> 3717 bytes images/M02_email_icon_popup_title_press.png | Bin 0 -> 3007 bytes images/M02_rich_text_bar_Aleadsymbol_press.png | Bin 0 -> 2966 bytes images/M02_rich_text_bar_Indent_press.png | Bin 0 -> 3165 bytes images/M02_rich_text_bar_Outdent_press.png | Bin 0 -> 3159 bytes images/M02_rich_text_bar_align_all_center.png | Bin 0 -> 2918 bytes .../M02_rich_text_bar_align_all_center_press.png | Bin 0 -> 2913 bytes images/M02_rich_text_bar_align_center.png | Bin 0 -> 2937 bytes images/M02_rich_text_bar_align_center_press.png | Bin 0 -> 2942 bytes images/M02_rich_text_bar_align_left.png | Bin 0 -> 2929 bytes images/M02_rich_text_bar_align_left_press.png | Bin 0 -> 2930 bytes images/M02_rich_text_bar_align_right.png | Bin 0 -> 2937 bytes images/M02_rich_text_bar_align_right_press.png | Bin 0 -> 2941 bytes images/M02_rich_text_bar_bold_press.png | Bin 0 -> 3173 bytes images/M02_rich_text_bar_btn_01_press.png | Bin 4870 -> 5215 bytes images/M02_rich_text_bar_btn_02_press.png | Bin 3145 -> 3272 bytes images/M02_rich_text_bar_fontbgcolor_text.png | Bin 0 -> 4417 bytes .../M02_rich_text_bar_fontbgcolor_text_press.png | Bin 0 -> 3224 bytes images/M02_rich_text_bar_fontcolor.png | Bin 3261 -> 3247 bytes images/M02_rich_text_bar_fontcolor_press.png | Bin 0 -> 3226 bytes images/M02_rich_text_bar_fontsize.png | Bin 0 -> 3408 bytes images/M02_rich_text_bar_fontsize_press.png | Bin 0 -> 3398 bytes images/M02_rich_text_bar_insert.png | Bin 0 -> 3237 bytes images/M02_rich_text_bar_insert_press.png | Bin 0 -> 3223 bytes images/M02_rich_text_bar_italic_press.png | Bin 0 -> 3013 bytes images/M02_rich_text_bar_numbering_press.png | Bin 0 -> 3148 bytes images/M02_rich_text_bar_que_left.png | Bin 0 -> 3315 bytes images/M02_rich_text_bar_que_right.png | Bin 0 -> 3277 bytes images/M02_rich_text_bar_redo_press.png | Bin 0 -> 3463 bytes images/M02_rich_text_bar_underline_press.png | Bin 0 -> 3120 bytes images/M02_rich_text_bar_undo_press.png | Bin 0 -> 3482 bytes mailbox/CMakeLists.txt | 10 +- mailbox/include/email-mailbox-list.h | 1 - mailbox/include/email-mailbox.h | 11 - mailbox/src/email-mailbox-controlbar.c | 57 +- mailbox/src/email-mailbox-item.c | 14 +- mailbox/src/email-mailbox-list.c | 75 +- mailbox/src/email-mailbox-noti-mgr.c | 63 +- mailbox/src/email-mailbox-search.c | 3 +- mailbox/src/email-mailbox-sweep.c | 8 - mailbox/src/email-mailbox.c | 29 +- main/CMakeLists.txt | 6 +- main/email.c | 67 - main/org.tizen.email.xml | 9 +- packaging/org.tizen.email.spec | 104 +- po/CMakeLists.txt | 5 +- po/ar.po | 57 + po/az.po | 57 + po/bg.po | 57 + po/ca.po | 57 + po/cs.po | 57 + po/da.po | 63 +- po/de_DE.po | 57 + po/el_GR.po | 57 + po/en.po | 57 + po/en_PH.po | 57 + po/en_US.po | 59 +- po/es_ES.po | 57 + po/es_US.po | 63 +- po/et.po | 57 + po/eu.po | 57 + po/fi.po | 57 + po/fr_CA.po | 57 + po/fr_FR.po | 57 + po/ga.po | 57 + po/gl.po | 57 + po/hi.po | 59 +- po/hr.po | 57 + po/hu.po | 59 +- po/hy.po | 57 + po/is.po | 57 + po/it_IT.po | 59 +- po/ja_JP.po | 63 +- po/ka.po | 61 +- po/kk.po | 57 + po/ko_KR.po | 65 +- po/lt.po | 57 + po/lv.po | 57 + po/mk.po | 57 + po/nb.po | 1449 +++++ po/nl_NL.po | 57 + po/pl.po | 57 + po/pt_BR.po | 57 + po/pt_PT.po | 57 + po/ro.po | 57 + po/ru_RU.po | 57 + po/sk.po | 57 + po/sl.po | 57 + po/sr.po | 57 + po/sv.po | 57 + po/tr_TR.po | 57 + po/uk.po | 57 + po/uz.po | 1449 +++++ po/zh_CN.po | 57 + po/zh_HK.po | 59 +- po/zh_SG.po | 57 + po/zh_TW.po | 57 + setting/CMakeLists.txt | 3 - setting/include/email-setting.h | 1 - setting/src/email-setting-account-set.c | 58 +- viewer/CMakeLists.txt | 63 + viewer/include/email-viewer-js.h | 44 + viewer/include/email-viewer-logic.h | 118 + viewer/include/email-viewer-utils.h | 69 + viewer/include/email-viewer-webview.h | 33 + viewer/include/email-viewer.h | 342 ++ viewer/src/email-viewer-logic.c | 492 ++ viewer/src/email-viewer-utils.c | 486 ++ viewer/src/email-viewer-webview.c | 384 ++ viewer/src/email-viewer.c | 5801 ++++++++++++++++++++ viewer/theme/_email_default.html | 1 + viewer/theme/email-viewer-theme-macro.edc | 673 +++ viewer/theme/email-viewer-theme.edc | 1760 ++++++ 152 files changed, 18480 insertions(+), 794 deletions(-) create mode 100755 common/include/email-html-converter.h create mode 100755 common/src/email-html-converter.c create mode 100755 composer/theme/email-composer-genlist.edc create mode 100755 images/B15_double_tap_02.png create mode 100755 images/M02_button_download_press.png create mode 100755 images/M02_button_expand.png mode change 100644 => 100755 images/M02_button_expand_opened_press.png create mode 100755 images/M02_button_expand_press.png mode change 100644 => 100755 images/M02_email_Flag_Clear.png mode change 100644 => 100755 images/M02_email_icon_favorite_off.png mode change 100644 => 100755 images/M02_email_icon_favorite_on.png create mode 100755 images/M02_email_icon_index_close.png create mode 100755 images/M02_email_icon_popup_advanced_press.png create mode 100755 images/M02_email_icon_popup_all_press.png create mode 100755 images/M02_email_icon_popup_date_press.png create mode 100755 images/M02_email_icon_popup_sender_press.png create mode 100755 images/M02_email_icon_popup_title_press.png create mode 100755 images/M02_rich_text_bar_Aleadsymbol_press.png create mode 100755 images/M02_rich_text_bar_Indent_press.png create mode 100755 images/M02_rich_text_bar_Outdent_press.png create mode 100755 images/M02_rich_text_bar_align_all_center.png create mode 100755 images/M02_rich_text_bar_align_all_center_press.png create mode 100755 images/M02_rich_text_bar_align_center.png create mode 100755 images/M02_rich_text_bar_align_center_press.png create mode 100755 images/M02_rich_text_bar_align_left.png create mode 100755 images/M02_rich_text_bar_align_left_press.png create mode 100755 images/M02_rich_text_bar_align_right.png create mode 100755 images/M02_rich_text_bar_align_right_press.png create mode 100755 images/M02_rich_text_bar_bold_press.png mode change 100644 => 100755 images/M02_rich_text_bar_btn_01_press.png mode change 100644 => 100755 images/M02_rich_text_bar_btn_02_press.png create mode 100755 images/M02_rich_text_bar_fontbgcolor_text.png create mode 100755 images/M02_rich_text_bar_fontbgcolor_text_press.png mode change 100644 => 100755 images/M02_rich_text_bar_fontcolor.png create mode 100755 images/M02_rich_text_bar_fontcolor_press.png create mode 100755 images/M02_rich_text_bar_fontsize.png create mode 100755 images/M02_rich_text_bar_fontsize_press.png create mode 100755 images/M02_rich_text_bar_insert.png create mode 100755 images/M02_rich_text_bar_insert_press.png create mode 100755 images/M02_rich_text_bar_italic_press.png create mode 100755 images/M02_rich_text_bar_numbering_press.png create mode 100755 images/M02_rich_text_bar_que_left.png create mode 100755 images/M02_rich_text_bar_que_right.png create mode 100755 images/M02_rich_text_bar_redo_press.png create mode 100755 images/M02_rich_text_bar_underline_press.png create mode 100755 images/M02_rich_text_bar_undo_press.png create mode 100755 po/nb.po create mode 100755 po/uz.po create mode 100755 viewer/CMakeLists.txt create mode 100755 viewer/include/email-viewer-js.h create mode 100755 viewer/include/email-viewer-logic.h create mode 100755 viewer/include/email-viewer-utils.h create mode 100755 viewer/include/email-viewer-webview.h create mode 100755 viewer/include/email-viewer.h create mode 100755 viewer/src/email-viewer-logic.c create mode 100755 viewer/src/email-viewer-utils.c create mode 100755 viewer/src/email-viewer-webview.c create mode 100755 viewer/src/email-viewer.c create mode 100755 viewer/theme/_email_default.html create mode 100755 viewer/theme/email-viewer-theme-macro.edc create mode 100755 viewer/theme/email-viewer-theme.edc diff --git a/CMakeLists.txt b/CMakeLists.txt index 1de1e4c..d2e0638 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,7 @@ SET(LOCALEDIR "${RESDIR}/locale") SET(ICONDIR "/opt/share/icons/default/small") SET(EDJDIR "${RESDIR}/edje") SET(IMGDIR "${RESDIR}/images") +SET(JSDIR "${RESDIR}/js") SET(UGDIR "/opt/ug/lib") ADD_DEFINITIONS("-DPREFIX=\"${PREFIX}\"") @@ -18,13 +19,15 @@ ADD_DEFINITIONS("-DLOCALEDIR=\"${LOCALEDIR}\"") ADD_DEFINITIONS("-DICONDIR=\"${ICONDIR}\"") ADD_DEFINITIONS("-DEDJDIR=\"${EDJDIR}\"") ADD_DEFINITIONS("-DIMGDIR=\"${IMGDIR}\"") +ADD_DEFINITIONS("-DJSDIR=\"${JSDIR}\"") # Add your submodule directory name -ADD_SUBDIRECTORY(mailbox) -ADD_SUBDIRECTORY(block) ADD_SUBDIRECTORY(common) ADD_SUBDIRECTORY(setting) ADD_SUBDIRECTORY(composer) +ADD_SUBDIRECTORY(viewer) +ADD_SUBDIRECTORY(mailbox) +ADD_SUBDIRECTORY(block) ADD_SUBDIRECTORY(account) ADD_SUBDIRECTORY(main) ADD_SUBDIRECTORY(po) diff --git a/account/CMakeLists.txt b/account/CMakeLists.txt index f2cd169..41a99bc 100755 --- a/account/CMakeLists.txt +++ b/account/CMakeLists.txt @@ -58,7 +58,4 @@ ADD_DEPENDENCIES(${PROJECT_NAME} email-effect-layout.edj) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR}) INSTALL(FILES ${CMAKE_ACCOUNT_BINARY_DIR}/email-account-theme.edj DESTINATION ${EDJDIR}) INSTALL(FILES ${CMAKE_ACCOUNT_BINARY_DIR}/email-effect-layout.edj DESTINATION ${EDJDIR}) -#INSTALL(DIRECTORY ${CMAKE_ACCOUNT_SOURCE_DIR}/images DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.png") -# i18n -#ADD_SUBDIRECTORY(po) diff --git a/account/include/email-account.h b/account/include/email-account.h index 7dcd65d..d9e9227 100755 --- a/account/include/email-account.h +++ b/account/include/email-account.h @@ -56,7 +56,6 @@ #define CONTROLBAR_ICON_MOVE IMGDIR"/M02_controlbar_icon_move.png" #define CONTROLBAR_ICON_DELETE IMGDIR"/M02_controlbar_icon_delete.png" -#define ACCOUNT_ICON_EXCHANGE IMGDIR"/M02_email_list_icon_exchange.png" #define ACCOUNT_ICON_GMAIL IMGDIR"/M02_email_list_icon_gmail.png" #define ACCOUNT_ICON_HOTMAIL IMGDIR"/M02_email_list_icon_hotmail.png" #define ACCOUNT_ICON_YAHOO IMGDIR"/M02_email_list_icon_YahooMail.png" diff --git a/account/src/email-account-folder.c b/account/src/email-account-folder.c index 9d2f1ec..70b6dc9 100755 --- a/account/src/email-account-folder.c +++ b/account/src/email-account-folder.c @@ -899,8 +899,7 @@ static Evas_Object *_gl_icon_get(void *data, Evas_Object *obj, const char *part) // setting/include/email-setting.h typedef enum { - ACTIVESYNC = 1, - HOTMAIL, + HOTMAIL =1, GMAIL, YAHOOMAIL, AOL, @@ -923,9 +922,6 @@ static Evas_Object *_gl_icon_get(void *data, Evas_Object *obj, const char *part) case AOL: elm_icon_file_set(icon, ACCOUNT_ICON_AOL, NULL); break; - case ACTIVESYNC: - elm_icon_file_set(icon, ACCOUNT_ICON_EXCHANGE, NULL); - break; case OTHERS: default: elm_icon_file_set(icon, ACCOUNT_ICON_OTHERS, NULL); @@ -3260,17 +3256,10 @@ static void _edbus_event_account_receive(void *local_data, DBusMessage *message) mailbox_name = data3; debug_log("NOTI_MAILBOX_ADD, account_id [%d]", account_id); - if(EMAIL_SERVER_TYPE_ACTIVE_SYNC != GET_ACCOUNT_SERVER_TYPE(account_id)) + debug_log("Native account folder added: emf_handle[%d]", ug_data->emf_handle); + if(ug_data->emf_handle != EMAIL_HANDLE_INVALID) { - debug_log("Native account folder added: emf_handle[%d]", ug_data->emf_handle); - if(ug_data->emf_handle != EMAIL_HANDLE_INVALID) - { - _popup_success_cb(ug_data, NULL, NULL); - } - } - else - { - debug_log("EAS account folder added."); + _popup_success_cb(ug_data, NULL, NULL); } break; @@ -3279,17 +3268,10 @@ static void _edbus_event_account_receive(void *local_data, DBusMessage *message) mailbox_name = data3; debug_log("NOTI_MAILBOX_DELETE"); - if(EMAIL_SERVER_TYPE_ACTIVE_SYNC != GET_ACCOUNT_SERVER_TYPE(account_id)) + debug_log("Native account folder deleted: emf_handle[%d]", ug_data->emf_handle); + if(ug_data->emf_handle != EMAIL_HANDLE_INVALID) { - debug_log("Native account folder deleted: emf_handle[%d]", ug_data->emf_handle); - if(ug_data->emf_handle != EMAIL_HANDLE_INVALID) - { - _popup_success_cb(ug_data, NULL, NULL); - } - } - else - { - debug_log("EAS account folder deleted"); + _popup_success_cb(ug_data, NULL, NULL); } break; @@ -3298,17 +3280,10 @@ static void _edbus_event_account_receive(void *local_data, DBusMessage *message) mailbox_name = data3; debug_log("NOTI_MAILBOX_UPDATE"); - if(EMAIL_SERVER_TYPE_ACTIVE_SYNC != GET_ACCOUNT_SERVER_TYPE(account_id)) - { - debug_log("Native account folder moved: emf_handle[%d]", ug_data->emf_handle); - if(ug_data->emf_handle != EMAIL_HANDLE_INVALID) - { - _popup_success_cb(ug_data, NULL, NULL); - } - } - else + debug_log("Native account folder moved: emf_handle[%d]", ug_data->emf_handle); + if(ug_data->emf_handle != EMAIL_HANDLE_INVALID) { - debug_log("EAS account folder moved"); + _popup_success_cb(ug_data, NULL, NULL); } break; diff --git a/account/src/email-account.c b/account/src/email-account.c index 6cdeae4..f70751d 100755 --- a/account/src/email-account.c +++ b/account/src/email-account.c @@ -747,8 +747,7 @@ static Evas_Object *_gl_icon_get(void *data, Evas_Object *obj, const char *part) // setting/include/email-setting.h typedef enum { - ACTIVESYNC = 1, - HOTMAIL, + HOTMAIL = 1, GMAIL, YAHOOMAIL, AOL, @@ -771,9 +770,6 @@ static Evas_Object *_gl_icon_get(void *data, Evas_Object *obj, const char *part) case AOL: elm_icon_file_set(icon, ACCOUNT_ICON_AOL, NULL); break; - case ACTIVESYNC: - elm_icon_file_set(icon, ACCOUNT_ICON_EXCHANGE, NULL); - break; case OTHERS: default: elm_icon_file_set(icon, ACCOUNT_ICON_OTHERS, NULL); diff --git a/block/CMakeLists.txt b/block/CMakeLists.txt index 89f3be8..4ceca17 100755 --- a/block/CMakeLists.txt +++ b/block/CMakeLists.txt @@ -53,6 +53,3 @@ ADD_DEPENDENCIES(${PROJECT_NAME} email-block-theme.edj) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR}) INSTALL(FILES ${CMAKE_MAILBLOCK_BINARY_DIR}/email-block-theme.edj DESTINATION ${EDJDIR}) -# i18n -#ADD_SUBDIRECTORY(po) - diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 02dcacd..ca52802 100755 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -5,6 +5,7 @@ SET(PROJECT_NAME "email-common") SET(SRCS-common ./src/email-debug.c ./src/email-engine.c + ./src/email-html-converter.c ./src/email-utils.c ) diff --git a/common/include/email-common-types.h b/common/include/email-common-types.h index 5093cab..5b0e1c7 100755 --- a/common/include/email-common-types.h +++ b/common/include/email-common-types.h @@ -25,6 +25,8 @@ #define MAX_URL_LEN 1024 #define MAX_RECPT_LEN (MAX_STR_LEN * 8 + 1) +#define DIR_DEFAULT_MEDIA_PHONE "/opt/media" + /* define bundle key */ #define EMAIL_BUNDLE_KEY_ACCOUNT_ID "ACCOUNT_ID" #define EMAIL_BUNDLE_KEY_IS_NULL "IS_NULL" @@ -36,7 +38,6 @@ #define EMAIL_BUNDLE_KEY_VIEW_TYPE "VIEW_TYPE" #define EMAIL_BUNDLE_KEY_RUN_TYPE "RUN_TYPE" #define EMAIL_BUNDLE_KEY_MAIL_ID "MAIL_ID" -#define EMAIL_BUNDLE_KEY_LIVEMAGAZINE "bLiveMagazine" #define EMAIL_BUNDLE_KEY_INTERNAL "bInternal" #define EMAIL_BUNDLE_KEY_FIRST_LANDSCAPE "bFirstLandscape" #define EMAIL_BUNDLE_KEY_MSG "MSG" @@ -56,17 +57,27 @@ #define EMAIL_BUNDLE_KEY_MAILBOX_TYPE "MAILBOX_TYPE" #define EMAIL_BUNDLE_KEY_CONTACT_TYPE "type" +#define EMAIL_BUNDLE_KEY_CALENDAR_EDIT_ACCOUNT_ID "account_id" +#define EMAIL_BUNDLE_KEY_CALENDAR_EDIT_MAIL_ID "mail_id" +#define EMAIL_BUNDLE_KEY_CALENDAR_EDIT_SRC_BOX "src_box" +#define EMAIL_BUNDLE_KEY_CALENDAR_EDIT_INDEX "index" +#define EMAIL_BUNDLE_KEY_CALENDAR_EDIT_NOTE "note" +#define EMAIL_BUNDLE_KEY_VIDEO_PLAYER_LAUNCH_APP "launching_application" /* define ug name */ #define UG_NAME_EMAIL_MAILBOX "email-mailbox-efl" #define UG_NAME_EMAIL_VIEWER "email-viewer-efl" +#define UG_NAME_EMAIL_BLOCK "email-block-efl" #define UG_NAME_EMAIL_COMPOSER "email-composer-efl" #define UG_NAME_EMAIL_SETTING "email-setting-efl" #define UG_NAME_EMAIL_ACCOUNT "email-account-efl" #define UG_NAME_EMAIL_DOCUMENT "email-docsearch-efl" -#define UG_NAME_CONTACT "contacts-tabui-efl"/*"phoneui-efl"*/ +#define UG_NAME_CONTACT "contacts-tabui-efl" +#define UG_NAME_CALENDAR_EDIT "calendar-edit-efl" /* define bundle value */ +#define EMAIL_BUNDLE_VAL_CALENDAR_EDIT_INDEX "0" +#define EMAIL_BUNDLE_VAL_END_KEY "END_KEY_EVENT" #define EMAIL_BUNDLE_VAL_NEXT_MSG "NEXT_MSG" #define EMAIL_BUNDLE_VAL_PREV_MSG "PREV_MSG" #define EMAIL_BUNDLE_VAL_UNREAD "UNREAD" @@ -93,6 +104,7 @@ typedef enum { RUN_COMPOSER_REPLY_ALL, /*< Specific reply all type. this type is used to replay email to all */ RUN_COMPOSER_FORWARD, /*< Specific forward type. this type is used to forward email */ RUN_COMPOSER_EXTERNAL, /*< Specific external type. this type is used to create new email from external app except email app */ + RUN_COMPOSER_REPLY_INTERNAL, RUN_VIEWER, RUN_MAILBOX_THREAD, RUN_SETTING_ACCOUNT_ADD, @@ -121,7 +133,6 @@ typedef enum { EMAIL_SORT_UNREAD, EMAIL_SORT_IMPORTANT, EMAIL_SORT_PRIORITY, - EMAIL_SORT_MEETING_REQUEST, EMAIL_SORT_ATTACHMENTS, EMAIL_SORT_MAX, } EmailSortType; @@ -131,6 +142,12 @@ typedef enum { EMAIL_GET_MAIL_NORMAL = 0, } EmailGetMailType; +typedef enum { + EMAIL_EXT_SAVE_ERR_NONE = 0, + EMAIL_EXT_SAVE_ERR_ALREADY_EXIST, + EMAIL_EXT_SAVE_ERR_UNKNOWN +} EmailExtSaveErrType; + typedef struct { gchar *name; gchar *alias; diff --git a/common/include/email-engine.h b/common/include/email-engine.h index 25cfc7f..90f7750 100755 --- a/common/include/email-engine.h +++ b/common/include/email-engine.h @@ -68,9 +68,14 @@ gboolean email_engine_set_default_account(gint account_id); gboolean email_engine_sync_folder(gint account_id, int mailbox_id, unsigned *handle); void email_engine_stop_working(gint account_id, unsigned handle); +gboolean email_engine_check_seen_mail(gint account_id, gint mail_id); int email_engine_check_body_download(int mail_id); +gboolean email_engine_body_download(gint account_id, gint mail_id, unsigned *handle); +gboolean email_engine_attachment_download(gint account_id, gint mail_id, gint index, unsigned *handle); + gboolean email_engine_delete_mail(gint account_id, int mailbox_id, gint mail_id, int sync); gboolean email_engine_delete_all_mail(gint account_id, int mailbox_id, int sync); +gboolean email_engine_move_mail(gint account_id, int mailbox_id, gint mail_id); gboolean email_engine_move_all_mail(gint account_id, int old_mailbox_id, int new_mailbox_id); gchar *email_engine_get_attachment_path(gint attach_id); /* g_free(). */ @@ -78,11 +83,11 @@ gchar *email_engine_get_attachment_path(gint attach_id); /* g_free(). */ gboolean email_engine_get_account_info(gint account_id, EmailAccountInfo **account_info); void email_engine_free_account_info(EmailAccountInfo **account_info); +GList *email_engine_get_ca_mailbox_list_using_glist(int account_id); void email_engine_free_ca_mailbox_list_using_glist(GList **mailbox_list); int email_engine_get_max_account_id(void); int email_engine_get_count_account(void); -gboolean email_engine_get_eas_acc_exist_only(void); G_END_DECLS #endif /* _EMAIL_ENGINE_H_ */ diff --git a/common/include/email-html-converter.h b/common/include/email-html-converter.h new file mode 100755 index 0000000..a0e1035 --- /dev/null +++ b/common/include/email-html-converter.h @@ -0,0 +1,28 @@ +/* + Email Application + +Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd All Rights Reserved +Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0 +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_HTML_CONVERTER_H_ +#define _EMAIL_HTML_CONVERTER_H_ + +#include + +G_BEGIN_DECLS +/* g_free(). */ +gchar *email_html_converter(const gchar *plain_text, const gchar *charset); + +G_END_DECLS +#endif /* _EMAIL_HTML_CONVERTER_H_ */ + +/* EOF */ diff --git a/common/include/email-utils.h b/common/include/email-utils.h index 032352f..5b64ad4 100755 --- a/common/include/email-utils.h +++ b/common/include/email-utils.h @@ -33,6 +33,8 @@ #include #include +#define MAX_DEFAULT_DIR_PATH 256 + G_BEGIN_DECLS /* @@ -135,6 +137,8 @@ char *email_get_date_text(const char *locale, char *skeleton, void *time); char *email_get_date_text_with_formatter(UDateFormat *formatter, void *time); int email_get_group_title_str(const time_t time_val, gchar **group_title, gchar **group_date); +int email_attachments_save_file(const gchar *path, gchar *newpath, gboolean(*copy_file_cb) (float percentage)); + int email_open_icu_pattern_generator(void); int email_close_icu_pattern_generator(void); @@ -145,8 +149,7 @@ void set_app_terminated(); int get_app_terminated(); void set_app_paused(); void reset_app_paused(); -void reset_eas_validation_started(); -int get_eas_validation_started(); +int get_app_paused(); char* email_util_strrtrim(char* s); char* email_util_strltrim(char* s); char* email_util_get_parent_folder(char *s); diff --git a/common/src/email-engine.c b/common/src/email-engine.c index 03fc029..11d1144 100755 --- a/common/src/email-engine.c +++ b/common/src/email-engine.c @@ -49,7 +49,6 @@ gboolean email_engine_initialize(void) debug_log("email_service_begin"); - /*err = ipcEmailProxy_Initialize(0);*/ err = email_service_begin(); if (err != EMAIL_ERROR_NONE) { debug_critical("fail to email_service_begin - err(%d)", err); @@ -125,7 +124,7 @@ gboolean email_engine_add_account(email_account_t *_account, int *account_id) debug_critical("Error code(%d)", err); return FALSE; } - debug_log("Create Succeed"); + debug_log("Succeed in adding account"); *account_id = _account->account_id; debug_log("account id is %d", _account->account_id); @@ -148,7 +147,7 @@ gboolean email_engine_add_account_with_validation(email_account_t *_account, int return FALSE; } - debug_log("Create Succeed"); + debug_log("Succeed in adding account with validation"); *account_id = _account->account_id; debug_log("account id is %d", _account->account_id); @@ -165,7 +164,7 @@ gboolean email_engine_update_account(gint account_id, email_account_t *_account) err = email_update_account(account_id, _account); if (err == EMAIL_ERROR_NONE) { - debug_log("email_update_account successful"); + debug_log("Suceeded in email_update_account"); return TRUE; } else { debug_critical("Failed to update account Err(%d)", err); @@ -183,7 +182,7 @@ gboolean email_engine_update_account_with_validation(gint account_id, email_acco err = email_update_account_with_validation(account_id, _account); if (err == EMAIL_ERROR_NONE) { - debug_log("email_update_account_with_validation successful"); + debug_log("Suceeded in email_update_account_with_validation"); return TRUE; } else { debug_critical("Failed to update account with validation Err(%d)", err); @@ -239,7 +238,7 @@ gboolean email_engine_free_account_list(email_account_t **_account_list, int cou debug_critical("Fail to free account list Err(%d)", err); return FALSE; } else { - debug_log("Success to free account list"); + debug_log("Succeed in freeing account list"); return TRUE; } } @@ -345,7 +344,7 @@ gboolean email_engine_sync_folder(gint account_id, int mailbox_id, unsigned *han int err = 0; err = email_sync_header(account_id, mailbox_id, &email_handle); - debug_critical("email_handle: %d", email_handle); + debug_log("email_handle: %d", email_handle); if (err != EMAIL_ERROR_NONE) { debug_critical("fail to sync current folder - err (%d)", err); @@ -380,6 +379,37 @@ void email_engine_stop_working(gint account_id, unsigned handle) } } +gboolean email_engine_check_seen_mail(gint account_id, gint mail_id) +{ + debug_log(""); + RETURN_VAL_IF_FAIL(account_id > ACCOUNT_MIN, FALSE); + RETURN_VAL_IF_FAIL(mail_id > 0, FALSE); + + int res = 0; + int err = 0; + email_mail_data_t *mail_info = NULL; + + if ((err = email_get_mail_data(mail_id, &mail_info)) != EMAIL_ERROR_NONE) { + debug_log("fail to get mail data - err (%d)", err); + return 0; + } + + if (mail_info == NULL) { + debug_critical("mail_info is @niL"); + return 0; + } + + res = mail_info->flags_seen_field; + debug_log("flags_seen_field: %d", res); + + err = email_free_mail_data(&mail_info, 1); + + if (err != EMAIL_ERROR_NONE) { + debug_critical("fail to free mail info - err (%d)", err); + } + + return res; +} int email_engine_check_body_download(int mail_id) { @@ -412,6 +442,63 @@ int email_engine_check_body_download(int mail_id) return res; } +gboolean email_engine_body_download(gint account_id, gint mail_id, unsigned *handle) +{ + debug_log(""); + RETURN_VAL_IF_FAIL(account_id > ACCOUNT_MIN, FALSE); + RETURN_VAL_IF_FAIL(mail_id > 0, FALSE); + + int err = 0; + unsigned email_handle = 0; + gboolean res = FALSE; + + err = email_download_body(mail_id, 0, &email_handle); + + if (err != EMAIL_ERROR_NONE) { + debug_warning("fail to download body - err (%d)", err); + goto error; + } + + if (handle != NULL) { + debug_log("email_handle for body download: %d", email_handle); + *handle = email_handle; + } + + res = TRUE; + + error: + return res; +} + +gboolean email_engine_attachment_download(gint account_id, gint mail_id, gint index, unsigned *handle) +{ + debug_log(""); + RETURN_VAL_IF_FAIL(account_id > ACCOUNT_MIN, FALSE); + RETURN_VAL_IF_FAIL(mail_id > 0, FALSE); + RETURN_VAL_IF_FAIL(index > 0, FALSE); + + int err = 0; + unsigned email_handle = 0; + gboolean res = FALSE; + + err = email_download_attachment(mail_id, index, &email_handle); + + if (err != EMAIL_ERROR_NONE) { + debug_warning("fail to download attachment - err (%d)", err); + goto error; + } + + if (handle != NULL) { + debug_log("email_handle for attachment download: %d", email_handle); + *handle = email_handle; + } + + res = TRUE; + + error: + return res; +} + gboolean email_engine_delete_mail(gint account_id, int mailbox_id, gint mail_id, int sync) { debug_log(""); @@ -442,9 +529,6 @@ gboolean email_engine_delete_all_mail(gint account_id, int mailbox_id, int sync) { debug_log(""); RETURN_VAL_IF_FAIL(account_id > ACCOUNT_MIN, FALSE); - /* - RETURN_VAL_IF_FAIL(STR_VALID(folder_name), FALSE); - */ int err = 0; gboolean res = TRUE; /* MUST BE initialized TRUE. */ @@ -459,6 +543,33 @@ gboolean email_engine_delete_all_mail(gint account_id, int mailbox_id, int sync) return res; } +gboolean email_engine_move_mail(gint account_id, int mailbox_id, gint mail_id) +{ + debug_log(""); + RETURN_VAL_IF_FAIL(account_id > ACCOUNT_MIN, FALSE); + RETURN_VAL_IF_FAIL(mail_id > 0, FALSE); + + debug_log("account_id: %d", account_id); + debug_log("mail_id: %d", mail_id); + + int err = 0; + gboolean res = TRUE; /* MUST BE initialized TRUE. */ + + RETURN_VAL_IF_FAIL(mailbox_id > 0, FALSE); + + int mail_ids[1] = { 0 }; + mail_ids[0] = mail_id; + + err = email_move_mail_to_mailbox(mail_ids, 1, mailbox_id); + + if (err != EMAIL_ERROR_NONE) { + debug_warning("failed to move message - err (%d)", err); + res = FALSE; + } + + return res; +} + gboolean email_engine_move_all_mail(gint account_id, int old_mailbox_id, int new_mailbox_id) { debug_log(""); @@ -646,6 +757,64 @@ void email_engine_free_account_info(EmailAccountInfo **account_info) info = NULL; } +GList *email_engine_get_ca_mailbox_list_using_glist(int account_id) +{ + debug_log(""); + int i, count = 0; + email_mailbox_t *mailbox_list = NULL; + GList *ret = NULL; + int err = 0; + /* + debug_log("account_id: %d", account_id); + debug_log("&mailbox_list: 0x%x", &mailbox_list); + */ + + err = email_get_mailbox_list_ex(account_id, -1, 1, &mailbox_list, &count); + if (err != EMAIL_ERROR_NONE) { + debug_critical("email_get_mailbox_list return error"); + goto finally; + } + /* + debug_log("Executing email_get_mailbox_list is ended."); + debug_log("count: %d", count); + */ + + for (i = 0; i < count; i++) { + EmailMailboxNameAndAlias *nameandalias = calloc(1, sizeof(EmailMailboxNameAndAlias)); + if (mailbox_list[i].mailbox_name == NULL) { + debug_critical("mailbox_list[%d].name is null", i); + free(nameandalias); + continue; + } else { + /* debug_log("mailbox_list[].name is %s", mailbox_list[i].mailbox_name); */ + } + nameandalias->name = g_strdup(mailbox_list[i].mailbox_name); + nameandalias->mailbox_id = mailbox_list[i].mailbox_id; + + if (mailbox_list[i].alias == NULL) { + debug_critical("alias is NULL"); + nameandalias->alias = nameandalias->name; + } else { + /* debug_log("mailbox_list[].alias is %s", mailbox_list[i].alias); */ + nameandalias->alias = g_strdup(mailbox_list[i].alias); + } + + nameandalias->mailbox_type = mailbox_list[i].mailbox_type; + nameandalias->unread_count = mailbox_list[i].unread_count; + nameandalias->total_mail_count_on_local = mailbox_list[i].total_mail_count_on_local; + nameandalias->total_mail_count_on_server = mailbox_list[i].total_mail_count_on_server; + + ret = g_list_append(ret, (gpointer)nameandalias); + + /* debug_log("mailbox name: %s", mailbox_list[i].mailbox_name); */ + } + + finally: + + email_free_mailbox(&mailbox_list, count); + return ret; +} + void email_engine_free_ca_mailbox_list_using_glist(GList **mailbox_list) { debug_log(""); @@ -716,42 +885,5 @@ int email_engine_get_count_account(void) return count; } -gboolean email_engine_get_eas_acc_exist_only(void) -{ - debug_enter(); - - email_account_t *account_list = NULL; - int account_count = 0; - int err = 0; - int i = 0; - gboolean b_activeSyncOnly = TRUE; - - /* If one account only. Set as the account. */ - err = email_engine_get_account_list(&account_count, &account_list); - if (err == 0) { - debug_critical("fail to get account list - err(%d)", err); - return b_activeSyncOnly; - } - - for (i = 0; i < account_count; ++i) { - if (account_list[i].incoming_server_type != EMAIL_SERVER_TYPE_ACTIVE_SYNC) { - b_activeSyncOnly = FALSE; - break; - } - } - - err = email_engine_free_account_list(&account_list, account_count); - if (err == 0) { - debug_critical("fail to free account list - err(%d)", err); - } - else - { - account_list = NULL; - account_count = 0; - } - - debug_log("current b_activeSyncOnly: %d", b_activeSyncOnly); - return b_activeSyncOnly; -} /* EOF */ diff --git a/common/src/email-html-converter.c b/common/src/email-html-converter.c new file mode 100755 index 0000000..eaec51a --- /dev/null +++ b/common/src/email-html-converter.c @@ -0,0 +1,214 @@ +/* + Email Application + +Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd All Rights Reserved +Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0 +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. +*/ + +#include +#include +#include + +#include +#include + +#include "email-common-types.h" +#include "email-debug.h" +#include "email-utils.h" +#include "email-html-converter.h" + +#define _USE_HTML_DUMP_ 0 + +static const gchar *_get_html_tag(const gchar char_val) +{ + const gchar *tag = NULL; + + switch (char_val) { + case '\n': + tag = "
"; + break; + case '\r': + tag = ""; /* skip. */ + break; + case '<': + tag = "<"; + break; + case '>': + tag = ">"; + break; + default: + break; + } + return tag; +} + +/* g_free(). */ +static gchar *_get_parse_plain_text(const gchar *text, gint size) +{ + RETURN_VAL_IF_FAIL(STR_VALID(text), NULL); + RETURN_VAL_IF_FAIL(size > 0, NULL); + + gchar *html = NULL; + gchar *buff = NULL; + gchar *temp = NULL; + guint i = 0; + guint old_offset = 0, offset = 0; + + for (i = 0; i < size; ++i) { + + /* Get html tag. */ + const gchar *tag = _get_html_tag(text[i]); + + /* If need, convert text to html format. */ + if (tag) { + + temp = html; + + if (i > old_offset) { + offset = i - old_offset; + buff = g_strndup(&text[old_offset], offset); + if (temp) { + html = g_strconcat(temp, buff, tag, NULL); + } else { + html = g_strconcat(buff, tag, NULL); + } + if (buff) { + g_free(buff); + buff = NULL; + } + } else { + if (temp) { + html = g_strconcat(temp, tag, NULL); + } else { + html = g_strconcat(tag, NULL); + } + } + + if (temp) { + g_free(temp); + temp = NULL; + } + + old_offset = i + 1; + } + } + + /* If not terminated. */ + if (old_offset < size) { + if (html) { + temp = html; + buff = g_strndup(&text[old_offset], size - old_offset); + html = g_strconcat(temp, buff, NULL); + if (buff) { + g_free(buff); + } + g_free(temp); + } + } + + return html ? html : g_strndup(text, size); +} + +static void _dump_buff(const gchar *buff) +{ + RETURN_IF_FAIL(STR_VALID(buff)); + +#if _USE_HTML_DUMP_ == 1 + tzset(); /* MUST BE. */ + time_t now = time(NULL); + struct tm *t = localtime(&now); + + gchar buff_path[MAX_STR_LEN] = "\0"; + + g_sprintf(buff_path, "%s/%04d.%02d.%02d[%02dH.%02dM].html", DIR_SRV_PREFIX, t->tm_year + 1900, t->tm_mon, t->tm_mday, t->tm_hour, t->tm_min); + + debug_log("path [%s]", buff_path); + + email_save_file(buff_path, buff, STR_LEN((gchar *)buff)); +#endif /* _USE_HTML_DUMP_ */ +} + +/* Exported API. + */ +gchar *email_html_converter(const gchar *plain_text, const gchar *charset) +{ + /*debug_time();*/ + char meta_charset[MAX_STR_LEN] = { 0, }; + g_snprintf(meta_charset, sizeof(meta_charset), "" + "", charset); + debug_log("meta charset:%s", meta_charset); + + /*const char *text_css = "";*/ + + const char *text_css = ""; + + const gchar *html_etag = ""; + gchar *html_stag = NULL; + gchar *html = NULL; + + html_stag = g_strconcat(meta_charset, text_css, NULL); + + if (STR_INVALID(plain_text)) { + debug_log("empty file detected"); + html = g_strconcat(html_stag, html_etag, NULL); + g_free(html_stag); + return html; + } + + /* + debug_log("plain-text [%s]", plain_text); + */ + + gchar *text = NULL; + gchar *buff = NULL; + + if (STR_INVALID(html)) { + debug_log("not found cut-link - convert plain/text to html"); + text = _get_parse_plain_text(plain_text, STR_LEN((gchar *)plain_text)); + buff = g_strconcat(html_stag, text, NULL); + if (text) + g_free(text); + html = g_strconcat(buff, html_etag, NULL); + g_free(buff); + } + /*debug_time();*/ + + _dump_buff(html); + + if (html_stag) + g_free(html_stag); + + return html; +} + +/* EOF */ diff --git a/common/src/email-utils.c b/common/src/email-utils.c index 47571fd..40f6d19 100755 --- a/common/src/email-utils.c +++ b/common/src/email-utils.c @@ -56,7 +56,6 @@ enum { EMAIL_GROUP_READ, EMAIL_GROUP_FAVORITES, EMAIL_GROUP_ATTACHMENTS, - EMAIL_GROUP_MEETING_REQUEST, EMAIL_GROUP_OTHER, EMAIL_GROUP_PRIORITY_HIGH, EMAIL_GROUP_PRIORITY_NORMAL, @@ -65,6 +64,7 @@ enum { }; +static gboolean _copy_actual_file(const char *src_full_path, const char *dest_full_path, gboolean(*copy_file_cb) (float percentage)); static void _generate_best_pattern(const char *locale, UChar * customSkeleton, char *formattedString, void *time); static int _open_icu_pattern_n_formatter(const char *locale, char *skeleton, UDateFormat **formatter); static int _close_icu_pattern_n_formatter(UDateFormat *formatter); @@ -147,11 +147,6 @@ gchar *email_parse_get_filename_from_path(const gchar *path) g_strfreev(token_list); /* MUST BE. */ - /*token_list = g_strsplit_set(file_name, ".", -1); - RETURN_VAL_IF_FAIL(token_list != NULL, NULL); - gchar *file_name_without_ext = g_strdup(token_list[0]); - g_strfreev(token_list);*/ - int len = 0; if (file_name) len = strlen(file_name); @@ -191,11 +186,6 @@ void email_parse_get_filename_n_ext_from_path(const gchar *path, gchar **ret_fil g_strfreev(token_list); /* MUST BE. */ - /*token_list = g_strsplit_set(file_name, ".", -1); - RETURN_VAL_IF_FAIL(token_list != NULL, NULL); - gchar *file_name_without_ext = g_strdup(token_list[0]); - g_strfreev(token_list);*/ - int len = 0; if (file_name) len = strlen(file_name); @@ -211,6 +201,27 @@ void email_parse_get_filename_n_ext_from_path(const gchar *path, gchar **ret_fil g_free(file_name); } +gchar *email_parse_get_filepath_from_path(const gchar *path) +{ + debug_log(""); + RETURN_VAL_IF_FAIL(STR_VALID(path), NULL); + + gchar *file_path = NULL; + gint i = 0; + gint size = STR_LEN((gchar *)path); + + for (i = (size - 1); i >= 0; --i) { + if (path[i] == '/') { + file_path = g_strndup(path, i + 1); + break; + } + } + + debug_log("file path (%s)", file_path); + + return file_path; +} + void email_save_file(const gchar *path, const gchar *buf, gsize len) { debug_log(""); @@ -359,6 +370,22 @@ gboolean email_get_address_validation(const char *address) return ret; } +gchar *email_cut_text_by_byte_len(const gchar *text, gint len) +{ + debug_log(""); + RETURN_VAL_IF_FAIL(STR_VALID(text), NULL); + RETURN_VAL_IF_FAIL(len > 0, NULL); + + gint char_len2 = g_utf8_strlen(text, len); + gchar *offset = g_utf8_offset_to_pointer(text, char_len2); + + gchar *ret_text = (gchar *)g_malloc0(offset - text + 1); + + STR_NCPY(ret_text, (gchar *)text, offset - text); + + return ret_text; +} + static int is_yesterday(struct tm *req_tm, struct tm *now_tm) { if (now_tm->tm_yday == 0) { /* It is the first day of year */ @@ -493,14 +520,12 @@ int email_get_group_title_str(const time_t req_time, gchar **group_title, *group_date = NULL; } else if((req_tm.tm_year == now_tm.tm_year) && (req_tm.tm_mon == now_tm.tm_mon)) { - //*group_title = g_strdup(dgettext("sys_string", "IDS_COM_BODY_EARLIER_THISMONTH")); *group_title = g_strdup(N_("Earlier this Month")); groupIndex = EMAIL_GROUP_EARLIER_THISMONTH; *group_date = NULL; } else if(is_lastmonth(&req_tm, &now_tm)) { - //*group_title = g_strdup(dgettext("sys_string", "IDS_COM_BODY_LAST_MONTH")); - *group_title = g_strdup(N_("Last Month")); + *group_title = g_strdup(_("IDS_EMAIL_BODY_LAST_MONTH")); groupIndex = EMAIL_GROUP_LASTMONTH; *group_date = NULL; } @@ -510,9 +535,9 @@ int email_get_group_title_str(const time_t req_time, gchar **group_title, *group_date = NULL; } - /* debug_log("-now : %d.%d (%d)", now_tm.tm_year + 1900, now_tm.tm_yday, now_time); + /*debug_log("-now : %d.%d (%d)", now_tm.tm_year + 1900, now_tm.tm_yday, now_time); debug_log("-req : %d.%d (%d)", req_tm.tm_year + 1900, req_tm.tm_yday, req_time); - debug_log("(%s) (%s)", *group_title, *group_date); */ + debug_log("(%s) (%s)", *group_title, *group_date);*/ return groupIndex; } @@ -533,8 +558,8 @@ char *email_get_str_datetime(const time_t req_time) struct tm req_tm; memcpy(&req_tm, dummy, sizeof(struct tm)); -/* debug_log("*now : %d.%d.%d", now_tm.tm_year + 1900, now_tm.tm_mon, now_tm.tm_mday); - debug_log("*req : %d.%d.%d", req_tm.tm_year + 1900, req_tm.tm_mon, req_tm.tm_mday); */ + /*debug_log("*now : %d.%d.%d", now_tm.tm_year + 1900, now_tm.tm_mon, now_tm.tm_mday); + debug_log("*req : %d.%d.%d", req_tm.tm_year + 1900, req_tm.tm_mon, req_tm.tm_mday);*/ char *datetime = ({ char *_ret_str = NULL; @@ -689,6 +714,227 @@ static void _generate_best_pattern(const char *locale, UChar * customSkeleton, c udat_close(formatter); } +void _create_download_folder() +{ + debug_log(""); + + if (!email_check_dir_exist(DIR_DEFAULT_MEDIA_PHONE"/Downloads")) { + int nErr = -1; + nErr = mkdir(DIR_DEFAULT_MEDIA_PHONE"/Downloads", 0755); + debug_log("errno: %d", nErr); + if (nErr == -1) + debug_log("Downloads folder creation failed"); + } else + debug_log("Downloads folder already exists."); +} + +int email_attachments_save_file(const gchar *path, gchar *newpath, gboolean(*copy_file_cb) (float percentage)) +{ + debug_log(""); + RETURN_VAL_IF_FAIL(STR_VALID(path), EMAIL_EXT_SAVE_ERR_UNKNOWN); + + gchar new_path[MAX_DEFAULT_DIR_PATH] = { 0, }; + gchar tmp_path[MAX_DEFAULT_DIR_PATH] = { 0, }; + gchar new_filename[MAX_DEFAULT_DIR_PATH] = { 0, }; + gchar prefix[MAX_DEFAULT_DIR_PATH] = { 0, }; + gboolean saved = FALSE; + gint err = 0; + gint max_length = MAX_DEFAULT_DIR_PATH; + + snprintf(prefix, sizeof(prefix), "%s", DIR_DEFAULT_MEDIA_PHONE"/Downloads"); + + debug_log("prefix:%s", prefix); + + memset(new_path, 0, sizeof(MAX_DEFAULT_DIR_PATH)); + memset(tmp_path, 0, sizeof(MAX_DEFAULT_DIR_PATH)); + + if (STR_LEN(tmp_path) == 0) { + g_sprintf(tmp_path, "%s", path); + } + + gchar *file_name = NULL; + gchar *file_ext = NULL; + gchar *file_path = email_parse_get_filepath_from_path(tmp_path); + email_parse_get_filename_n_ext_from_path(tmp_path, &file_name, &file_ext); + + debug_log("file_name:%s", file_name); + debug_log("file_ext:%s", file_ext); + + if (file_ext == NULL) + file_ext = ""; + + if (STR_VALID(file_name) && file_ext != NULL) { + debug_log(""); + if (STR_LEN(file_name) + STR_LEN(file_ext) > max_length - STR_LEN(prefix)) { + gint available_len = max_length - STR_LEN(prefix); + + if (STR_VALID(file_ext)) { + available_len -= STR_LEN(file_ext); + } + + gchar *new_name = email_cut_text_by_byte_len(file_name, available_len); + + if (STR_VALID(new_name)) { + g_sprintf(new_path, "%s/%s%s", prefix, new_name, file_ext); + g_sprintf(new_filename, "%s%s", new_name, file_ext); + g_free(new_name); /* MUST BE. */ + } + } else { + g_sprintf(new_path, "%s/%s%s", prefix, file_name, file_ext); + } + } + + if (STR_VALID(file_path)) { + g_free(file_path); /* MUST BE. */ + } + + if (STR_VALID(file_name)) { + g_free(file_name); /* MUST BE. */ + } + + if (STR_VALID(file_ext)) { + g_free(file_ext); /* MUST BE. */ + } + + debug_log("new_path:%s", new_path); + + /* Move for DRM file */ + + _create_download_folder(); + + /* Copy for non-DRM */ + if (access(new_path, F_OK) != -1) { + debug_log("file existed"); + err = EMAIL_EXT_SAVE_ERR_ALREADY_EXIST; + } else { + saved = _copy_actual_file(path, new_path, copy_file_cb); + debug_log("saved(%d), err(%d), errno(%d)", saved, err, errno); + + if (saved) + err = EMAIL_EXT_SAVE_ERR_NONE; + else + err = EMAIL_EXT_SAVE_ERR_UNKNOWN; + } + + snprintf(newpath, MAX_STR_LEN, "%s", new_path); + + return err; +} + +static gboolean _copy_actual_file(const char *src_full_path, const char *dest_full_path, gboolean(*copy_file_cb) (float percentage)) +{ + debug_log(""); + FILE *fs = NULL; + FILE *fd = NULL; + char buff[4096] = { 0, }; + int n = 0; + gboolean result = FALSE; + gboolean stop_copying = FALSE; + int m = 0; + int cnt = 0; + struct stat statbuf = { 0 }; + int ret = 0; + int total_size = 0; + int copied_size = 0; + gboolean remove_dest = FALSE; + clock_t begin; + clock_t finish; /* consumed time to copy whole file */ + double totaltime; + float percentage = 0.0; + + fs = fopen(src_full_path, "rb"); + if (fs == NULL) { + int err = errno; + debug_log("fopen error(%d)", err); + return FALSE; + } + + ret = fstat(fileno(fs), &statbuf); + if (ret != 0) { + debug_log("fstat error"); + fclose(fs); + return FALSE; + } + + total_size = (int)statbuf.st_size; + + fseek(fs, 0, SEEK_SET); + + fd = fopen(dest_full_path, "wb"); + + remove_dest = TRUE; + + if (fd == NULL) { + int err = errno; + debug_log("fopen error(%d)", err); + fclose(fs); + return FALSE; + } + + fseek(fd, 0, SEEK_SET); + + copied_size = 0; + + begin = clock(); + + while (1) { + result = feof(fs); + if (!result) { + n = fread(buff, sizeof(char), sizeof(buff), fs); + if (n > 0) { + m = fwrite(buff, sizeof(char), n, fd); + if (m <= 0) { + debug_log("fwrite = %d", m); + result = FALSE; + goto CATCH; + } + + cnt++; + copied_size += m; + + if (cnt > 100) { + percentage = ((float)(total_size - copied_size) / (float)total_size) * 100.0; + if (copy_file_cb) + stop_copying = copy_file_cb(percentage); + + if (stop_copying) { + result = FALSE; + remove_dest = TRUE; + goto CATCH; + } + + cnt = 0; + } + } else { + result = TRUE; + goto CATCH; + } + } else { + result = TRUE; + goto CATCH; + } + } + + CATCH: + fflush(fd); + fsync(fileno(fd)); + fclose(fd); + fclose(fs); + + if (remove_dest && result == FALSE) { + remove(dest_full_path); + sync(); + } + + if (result) { + finish = clock(); + totaltime = (double)(finish - begin) / CLOCKS_PER_SEC; + debug_log("takes %f s to copy %s", totaltime, src_full_path); + } + + return result; +} + gboolean email_drm_file_is_right(const gchar *path) { RETURN_VAL_IF_FAIL(STR_VALID(path), FALSE); @@ -730,7 +976,6 @@ gboolean email_drm_file_forward_lock_check(const gchar *path) static int termination_flag = 0; static int pause_flag = 0; -static int eas_validation_started_flag = 0; void set_app_terminated() { @@ -752,14 +997,9 @@ void reset_app_paused() pause_flag = 0; } -void reset_eas_validation_started() -{ - eas_validation_started_flag = 0; -} - -int get_eas_validation_started() +int get_app_paused() { - return eas_validation_started_flag; + return pause_flag; } char* email_util_strrtrim(char* s) diff --git a/composer/CMakeLists.txt b/composer/CMakeLists.txt index 4d8b6dd..6f5c276 100755 --- a/composer/CMakeLists.txt +++ b/composer/CMakeLists.txt @@ -24,8 +24,8 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/include) INCLUDE(FindPkgConfig) pkg_check_modules(pkgs-composer REQUIRED ecore ecore-file glib-2.0 gobject-2.0 edbus - appcore-common elementary capi-appfw-application - sysman dlog email-service contacts-service syspopup-caller + appcore-common elementary capi-appfw-application status + sysman dlog email-service contacts-service efreet-mime ewebkit2 ui-gadget-1 bundle mm-fileinfo mmutil-jpeg libmedia-utils ethumb ecore-x) FOREACH(flag ${pkgs-composer_CFLAGS}) @@ -50,7 +50,6 @@ ADD_DEFINITIONS("-DDEBUG") ADD_DEFINITIONS("-D_TEMPORARY_FIX_FOR_ROTATION_") ADD_DEFINITIONS("-D_POPUP_WITH_LIST") ADD_DEFINITIONS("-D_ALWAYS_CC_MYSELF") -ADD_DEFINITIONS("-D_CC_BCC") ##ADD_DEFINITIONS("-D_LAUNCH_APP") ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) @@ -66,9 +65,4 @@ ADD_DEPENDENCIES(${PROJECT_NAME} email-composer-view.edj) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR}) INSTALL(FILES ${CMAKE_COMPOSER_BINARY_DIR}/email-composer-view.edj DESTINATION ${EDJDIR}) INSTALL(FILES ${CMAKE_COMPOSER_SOURCE_DIR}/ug-email-composer-efl.xml DESTINATION /opt/share/packages) -INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/images DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.png") -INSTALL(FILES ${CMAKE_COMPOSER_SOURCE_DIR}/theme/_email_default.html DESTINATION ${DATADIR}) - -# i18n -#ADD_SUBDIRECTORY(po) diff --git a/composer/include/email-composer-callback.h b/composer/include/email-composer-callback.h index 43d6a76..98222ef 100755 --- a/composer/include/email-composer-callback.h +++ b/composer/include/email-composer-callback.h @@ -55,9 +55,12 @@ 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_add_me_clicked(void *data, Evas_Object *obj, void *event_info); +void _composer_cbar_save_as_draft_clicked(void *data, Evas_Object *obj, void *event_info); +void _composer_cbar_priority_clicked(void *data, Evas_Object *obj, void *event_info); +void _composer_cbar_tracking_clicked(void *data, Evas_Object *obj, void *event_info); + 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); diff --git a/composer/include/email-composer-type.h b/composer/include/email-composer-type.h index 0c72425..cb0fb64 100755 --- a/composer/include/email-composer-type.h +++ b/composer/include/email-composer-type.h @@ -53,12 +53,12 @@ #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_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_SIZE 10 * 1024 * 1024 #define MAX_ATTACHMENT_FILE_LEN 1024 #define CONV_THUMB_WIDTH 250 diff --git a/composer/include/email-composer-util.h b/composer/include/email-composer-util.h index 5f3661a..eafd435 100755 --- a/composer/include/email-composer-util.h +++ b/composer/include/email-composer-util.h @@ -112,5 +112,8 @@ 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); +void _composer_set_option_tray_menu(int num, EmailComposerUGD *ugd); +void _composer_unset_option_tray_menu(int num, EmailComposerUGD *ugd); + #endif /* __DEF_email_composer_util_H__ */ diff --git a/composer/include/email-composer.h b/composer/include/email-composer.h index dc4b1fd..2fb9af9 100755 --- a/composer/include/email-composer.h +++ b/composer/include/email-composer.h @@ -43,7 +43,6 @@ #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 @@ -62,7 +61,7 @@ struct ug_data { Evas *evas; Evas_Object *bg; - /*Elm_Theme *th;*/ + Elm_Theme *th; /* New notify - TODO: unify the popup usage */ Evas_Object *composer_noti; @@ -93,6 +92,7 @@ struct ug_data { bool bSendBtnDisabled; bool cc_added; bool bcc_added; + bool me_added; int indicator_height; bool is_main_scroller_scrolling; @@ -108,11 +108,22 @@ struct ug_data { int option_header_opened; -#ifndef _CC_BCC - Elm_Object_Item *controlbar_item[2]; -#else - Elm_Object_Item *controlbar_item[1]; -#endif + Evas_Object *dummy_btn; + Evas_Object *add_me_btn; + Evas_Object *save_as_draft_btn; + + int priority_option; + Evas_Object *priority_btn; + Evas_Object *priority_rdg; + Evas_Object *priority_rd[3]; + + Evas_Object *tracking_btn; + Eina_Bool tracking_option[2]; + + Evas_Object *cbar; + Evas_Object *cbar2; + Elm_Object_Item *controlbar_item[6]; + Evas_Object *cc_btn; Evas_Object *bcc_btn; @@ -257,6 +268,16 @@ typedef enum { COMPOSER_RECIPIENT_TYPE_MAX, } COMPOSER_RECIPIENT_TYPE_E; +enum { + EMAIL_COMPOSER_ADD_ME_BTN, + EMAIL_COMPOSER_ADD_CC_BCC_BTN, + EMAIL_COMPOSER_SAVE_AS_DRAFT_BTN, + EMAIL_COMPOSER_PRIORITY_BTN, + EMAIL_COMPOSER_TRACKING_BTN, + EMAIL_COMPOSER_DUMMY_BTN, + EMAIL_COMPOSER_BTN_MAX +}; + /****************************************************/ /* Function Declaration */ /****************************************************/ diff --git a/composer/src/email-composer-callback.c b/composer/src/email-composer-callback.c index dfafbd4..f33602a 100755 --- a/composer/src/email-composer-callback.c +++ b/composer/src/email-composer-callback.c @@ -15,6 +15,7 @@ */ #include +#include #include "email-composer.h" #include "email-composer-util.h" @@ -24,6 +25,12 @@ #include "email-composer-predictive-search.h" #include "email-composer-js.h" +#define ACCOUNT_ICON_GMAIL IMGDIR"/M02_email_list_icon_gmail.png" +#define ACCOUNT_ICON_HOTMAIL IMGDIR"/M02_email_list_icon_hotmail.png" +#define ACCOUNT_ICON_YAHOO IMGDIR"/M02_email_list_icon_YahooMail.png" +#define ACCOUNT_ICON_AOL IMGDIR"/M02_email_list_icon_AOL.png" +#define ACCOUNT_ICON_OTHERS IMGDIR"/icon_email.png" + static EmailComposerUGD *g_ugd = NULL; bool edit_mode = false; @@ -35,6 +42,8 @@ EmailList email_list[MAX_RECIPIENT_COUNT]; static Elm_Genlist_Item_Class itc; static Elm_Genlist_Item_Class from_itc; +static Elm_Genlist_Item_Class priority_itc; +static Elm_Genlist_Item_Class tracking_itc; static void _composer_mbe_popup_change_addr_selected_cb(void *data, Evas_Object *obj, void *event_info); static void _composer_from_change_response_cb(void *data, Evas_Object *obj, void *event_info); @@ -42,9 +51,6 @@ static void _composer_from_radio_cb(void *data, Evas_Object *obj, void *event_in static void _composer_from_gl_sel(void *data, Evas_Object *obj, void *event_info); static Eina_Bool _composer_cc_mbe_set_focus(void *data); -#ifndef _CC_BCC -static Eina_Bool _composer_bcc_mbe_set_focus(void *data); -#endif static void *_composer_contact_search_by_email(EmailComposerUGD *ugd, const char *search_word); static void _composer_delete_contacts_list(EMAIL_CONTACT_LIST_INFO_S *contacts_list_item); static void _composer_get_html_content_for_draft_cb(Evas_Object *o, const char *result, void *data); @@ -99,13 +105,26 @@ void _composer_more_button_cb(void *data, Evas_Object *obj, void *event_info) debug_log("More Button Clicked"); - if (ugd->option_header_opened) + if (ugd->option_header_opened) { + if (ugd->isRotated == true) { + _composer_resize_body_webview(ugd, 316); + } else { + _composer_resize_body_webview(ugd, ugd->ime_height); + } elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,close", ""); - else - elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,open", ""); + } else { + if (ugd->isRotated == true) { + _composer_resize_body_webview(ugd, 316 + 122); + } else { + _composer_resize_body_webview(ugd, ugd->ime_height + 122); + } + elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,open", ""); + } ugd->option_header_opened = !ugd->option_header_opened; + elm_layout_sizing_eval(ugd->c_layout); + _composer_mbe_set_focus(ugd); } @@ -774,14 +793,9 @@ void _composer_mbe_popup_move_to_cc_cb(void *data, Evas_Object *obj, void *event if (!ugd->cc_added) { edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); email_composer_create_cc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); email_composer_create_bcc_field(ugd); - elm_object_text_set(ugd->cc_btn, N_("Remove Cc/Bcc")); -#endif - ugd->b_cc_bcc = false; } @@ -837,14 +851,9 @@ void _composer_mbe_popup_move_to_bcc_cb(void *data, Evas_Object *obj, void *even if (!ugd->bcc_added) { edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); email_composer_create_bcc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); email_composer_create_cc_field(ugd); - elm_object_text_set(ugd->cc_btn, N_("Remove Cc/Bcc")); -#endif - ugd->b_cc_bcc = false; } @@ -1307,7 +1316,7 @@ Eina_Bool _composer_mbe_create_change_addr_list(void *data) if (index > 5) index = 5; Evas_Object *box = elm_box_add(ugd->change_addr_noti); - evas_object_size_hint_min_set(box, 610 * elm_scale_get(), 113 * index * elm_scale_get()); + evas_object_size_hint_min_set(box, 610 * elm_scale_get(), 114 * index * elm_scale_get()); evas_object_show(genlist); elm_box_pack_end(box, genlist); elm_object_content_set(ugd->change_addr_noti, box); @@ -1525,7 +1534,7 @@ void _composer_from_show_popup(EmailComposerUGD *ugd) #endif elm_object_focus_allow_set(ugd->composer_noti, EINA_FALSE); - from_itc.item_style = "1text.1icon.2"; + from_itc.item_style = "email.2text.3icon.3"; from_itc.func.text_get = _composer_from_gl_text_get; from_itc.func.content_get = _composer_from_gl_content_get; from_itc.func.state_get = NULL; @@ -1533,6 +1542,7 @@ void _composer_from_show_popup(EmailComposerUGD *ugd) elm_genlist_clear(ugd->account_gen_list); ugd->account_gen_list = elm_genlist_add(ugd->composer_noti); + elm_object_theme_set(ugd->account_gen_list, ugd->th); evas_object_size_hint_weight_set(ugd->account_gen_list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(ugd->account_gen_list, EVAS_HINT_FILL, EVAS_HINT_FILL); @@ -1549,7 +1559,7 @@ void _composer_from_show_popup(EmailComposerUGD *ugd) if (acc_index > 5) acc_index = 5; Evas_Object *box = elm_box_add(ugd->composer_noti); - evas_object_size_hint_min_set(box, 610 * elm_scale_get(), 113 * acc_index * elm_scale_get()); + evas_object_size_hint_min_set(box, 610 * elm_scale_get(), 122 * acc_index * elm_scale_get()); evas_object_show(ugd->account_gen_list); elm_box_pack_end(box, ugd->account_gen_list); elm_object_content_set(ugd->composer_noti, box); @@ -1563,10 +1573,15 @@ char *_composer_from_gl_text_get(void *data, Evas_Object *obj, const char *part) int index = (int)data; debug_log("label index = %d", index); - debug_log("email_addr = %s", g_ugd->account_info->account_list[index].user_email_address); - if (!g_strcmp0(part, "elm.text")) { + if (!strncmp(part, "elm.text.1", 10)) { + debug_log("email_addr = %s", g_ugd->account_info->account_list[index].account_name); + return g_strdup(g_ugd->account_info->account_list[index].account_name); + } else if (!strncmp(part, "elm.text.2", 10)) { + debug_log("email_addr = %s", g_ugd->account_info->account_list[index].user_email_address); return g_strdup(g_ugd->account_info->account_list[index].user_email_address); + } else { + debug_log("part is invalid"); } return NULL; @@ -1580,7 +1595,7 @@ Evas_Object *_composer_from_gl_content_get(void *data, Evas_Object *obj, const c debug_log("account_id = %d", g_ugd->account_info->account_list[count].account_id); debug_log("default account_id = %d", g_ugd->account_info->account_id); - if (!strncmp(part, "elm.icon", 8)) { + if (!strncmp(part, "elm.icon.1", 10)) { g_ugd->account_info->account_rd[count] = elm_radio_add(obj); elm_radio_state_value_set(g_ugd->account_info->account_rd[count], count); @@ -1595,6 +1610,57 @@ Evas_Object *_composer_from_gl_content_get(void *data, Evas_Object *obj, const c evas_object_smart_callback_add(g_ugd->account_info->account_rd[count], "changed", _composer_from_radio_cb, g_ugd); return g_ugd->account_info->account_rd[count]; + } else if (!strncmp(part, "elm.icon.2", 10)) { + Evas_Object *icon = elm_icon_add(obj); + + // setting/include/email-setting.h + typedef enum { + HOTMAIL = 1, + GMAIL, + YAHOOMAIL, + AOL, + OTHERS + } AccountInfo; + + account_user_data_t *ud = (account_user_data_t *)g_ugd->account_info->account_list[count].user_data; + debug_log("is_preset_account:%d", ud->is_preset_account); + + switch (ud->is_preset_account) { + case GMAIL: + elm_icon_file_set(icon, ACCOUNT_ICON_GMAIL, NULL); + break; + case HOTMAIL: + elm_icon_file_set(icon, ACCOUNT_ICON_HOTMAIL, NULL); + break; + case YAHOOMAIL: + elm_icon_file_set(icon, ACCOUNT_ICON_YAHOO, NULL); + break; + case AOL: + elm_icon_file_set(icon, ACCOUNT_ICON_AOL, NULL); + break; + case OTHERS: + default: + elm_icon_file_set(icon, ACCOUNT_ICON_OTHERS, NULL); + break; + } + evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + + return icon; + } else if (!strncmp(part, "elm.swallow.colorbar", 20)) { + account_user_data_t *ud = (account_user_data_t *)g_ugd->account_info->account_list[count].user_data; + unsigned int val = ud->index_color; + int r = (val & 0xff000000) >> 24; + int g = (val & 0x00ff0000) >> 16; + int b = (val & 0x0000ff00) >> 8; + int a = val & 0x000000ff; + + Evas_Object *color_bar = evas_object_rectangle_add(evas_object_evas_get(obj)); + evas_object_size_hint_fill_set(color_bar, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_color_set(color_bar, r, g, b, a); + + return color_bar; + } else { + debug_log("part is invalid"); } return NULL; @@ -1634,8 +1700,6 @@ static void _composer_from_change_response_cb(void *data, Evas_Object *obj, void ugd->account_info->account_name = g_strdup(ugd->account_info->account_list[set_val].user_email_address); debug_log("account_id = %d", ugd->account_info->account_id); - if (!email_engine_get_account_full_data(ugd->account_info->account_id, &(ugd->account_info->account))) - debug_log("Failed to Get account full data"); debug_log("priority = %d", (*ugd->account_info->account).options.priority); @@ -1804,13 +1868,9 @@ void _composer_cbar_cc_clicked(void *data, Evas_Object *obj, void *event_info) edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.cc", "*"); email_composer_delete_cc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.bcc", "*"); email_composer_delete_bcc_field(ugd); - elm_object_text_set(ugd->cc_btn, _("IDS_EMAIL_OPT_ADD_CC_BCC")); -#endif if (ugd->b_cc_ps_open == true) { edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); @@ -1819,6 +1879,8 @@ void _composer_cbar_cc_clicked(void *data, Evas_Object *obj, void *event_info) ugd->b_cc_bcc = false; + elm_layout_sizing_eval(ugd->c_layout); + if (!_composer_check_popup_exist(ugd)) { ugd->idler_set_focus = ecore_idler_add(_composer_mbe_set_focus, ugd); } @@ -1834,74 +1896,531 @@ void _composer_cbar_cc_clicked(void *data, Evas_Object *obj, void *event_info) edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); email_composer_create_cc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); email_composer_create_bcc_field(ugd); - elm_object_text_set(ugd->cc_btn, N_("Remove Cc/Bcc")); -#endif + + elm_layout_sizing_eval(ugd->c_layout); ugd->idler_set_focus = ecore_idler_add(_composer_cc_mbe_set_focus, ugd); } +} - if (ugd->isRotated == true) - elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,close", ""); +void _composer_cbar_add_me_clicked(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + EmailComposerUGD *ugd = (EmailComposerUGD *)data; + + if (ugd->me_added == false) { + EmailRecpInfo *from_ri = NULL; + Elm_Object_Item *from_item = NULL; + from_item = elm_multibuttonentry_first_item_get(ugd->from_mbe); + + if (from_item) { + from_ri = elm_object_item_data_get(from_item); + + debug_log("from_ri = %s", from_ri->email_list[0].email_addr); + } + Elm_Object_Item *to_item = NULL; + to_item = elm_multibuttonentry_first_item_get(ugd->to_mbe); + + while (to_item) { + EmailRecpInfo *to_ri = NULL; + int index = 0; + + to_ri = (EmailRecpInfo *) elm_object_item_data_get(to_item); + + index = to_ri->selected_email_idx; + + debug_log("to_ri email_addr = %s", to_ri->email_list[index].email_addr); + + if (g_strcmp0(to_ri->email_list[index].email_addr, from_ri->email_list[0].email_addr) == 0) { + elm_object_item_del(to_item); + break; + } + + to_item = elm_multibuttonentry_item_next_get(to_item); + } + + EmailRecpInfo *new_to_ri = (EmailRecpInfo *) calloc(1, sizeof(EmailRecpInfo)); + + new_to_ri->selected_email_idx = 0; + new_to_ri->display_name = ugd->account_info->account->user_display_name; + snprintf(new_to_ri->email_list[0].email_addr, MAX_RECIPIENT_ADDRESS_LEN, "%s", ugd->account_info->account->user_email_address); + new_to_ri->email_cnt = 1; + new_to_ri->is_contact_info = false; + new_to_ri->is_always_bcc = false; + new_to_ri->is_from_addr = true; + + to_item = elm_multibuttonentry_first_item_get(ugd->to_mbe); + elm_multibuttonentry_item_insert_before(ugd->to_mbe, to_item, g_strdup(new_to_ri->display_name), NULL, new_to_ri); + + elm_object_text_set(ugd->add_me_btn, N_("Remove me")); + + ugd->me_added = true; + } else { + Elm_Object_Item *to_item = NULL; + to_item = elm_multibuttonentry_first_item_get(ugd->to_mbe); + if (to_item) { + elm_object_item_del(to_item); + ugd->me_added = false; + elm_object_text_set(ugd->add_me_btn, N_("Add me")); + } + } + + if (ugd->selected_entry == ugd->to_mbe_entry) { + elm_object_focus_set(ugd->to_mbe, EINA_TRUE); + } } -#ifndef _CC_BCC -void _composer_cbar_bcc_clicked(void *data, Evas_Object *obj, void *event_info) +static void _composer_cbar_save_as_draft_cb(Evas_Object *o, const char *result, void *data) { debug_log(""); - EmailComposerUGD *ugd = (EmailComposerUGD *)data; - if (ugd->bcc_added) { - if (ugd->b_cc_bcc) { - debug_log("b_cc_bcc is ON"); - return; + if (NULL != ugd->latest_html_content) { + g_free(ugd->latest_html_content); + ugd->latest_html_content = NULL; + } + + ugd->latest_html_content = g_strdup(result); + debug_log("ugd->latest_html_content => %s", ugd->latest_html_content); + + if (EINA_FALSE == ewk_view_plain_text_get(ugd->body_ewkview, _composer_plain_text_get_cb, (void *)ugd)) { + debug_log("ewk_view_plain_text_get Failed"); + } + + if (EINA_FALSE == ewk_view_script_execute(ugd->body_ewkview, COMPOSER_JS_GET_IMAGE_LIST, _composer_get_image_list_cb, (void *)ugd)) { + debug_log("COMPOSER_JS_GET_IMAGE_LIST error."); + } + + if (ugd->timeout_noti) { + debug_log("delete timeout_noti"); + evas_object_del(ugd->timeout_noti); + ugd->timeout_noti = NULL; + } + + if (ugd->composer_noti) { + debug_log("delete composer_noti"); + evas_object_del(ugd->composer_noti); + ugd->composer_noti = NULL; + } + + if (ugd->ps_list) { + debug_log("ps stop"); + _composer_ps_stop(ugd); + ugd->sc_timer = ecore_timer_add(0.5, _composer_ps_scroll_pop, ugd); + } + + if (ugd->selected_entry == ugd->body_ewkview) { + evas_object_focus_set(ugd->body_ewkview, EINA_FALSE); + } else { + Ecore_IMF_Context *imf_context = NULL; + imf_context = elm_entry_imf_context_get(ugd->selected_entry); + if (imf_context) + ecore_imf_context_input_panel_hide(imf_context); + } + + if (_composer_check_mail_is_modified(ugd)) { + debug_log("mail is changed."); + ugd->save_drafts = 1; + } else { + debug_log("mail is NOT changed."); + ugd->save_drafts = 0; + + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", _("IDS_EMAIL_OPT_COMPOSE_EMAIL")); + /*_show_select_info(ug_data, str);*/ + int ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + return; + } + + debug_log("account_type: %d", ugd->account_info->account_type); + + int ret = _composer_add_mailbox_folder(ugd, EMAIL_MAILBOX_TYPE_DRAFT); + + if (ret < COMPOSER_ERROR_NONE) { + debug_log("Failed save in Drafts(%d)", ret); + + if (ugd->popup_list) { + debug_log("popup count = %d", eina_list_count(ugd->popup_list)); + debug_log("obj: %p", o); + debug_log("composer_noti: %p", ugd->composer_noti); + + ugd->popup_list = eina_list_remove(ugd->popup_list, ugd->composer_noti/*obj*/); } - edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.bcc", "*"); - email_composer_delete_bcc_field(ugd); + evas_object_del(ugd->composer_noti); + ugd->composer_noti = NULL; - if (ugd->b_bcc_ps_open == true) { - edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); + ugd->idler_save_draft = ecore_idler_add(_composer_show_fail_to_save, ugd); + } else { + debug_log("Success save in Drafts"); + + debug_log("composer_type:%d", ugd->composer_type); + if (ugd->composer_type == RUN_COMPOSER_EDIT) { + //After a new draft mail is added, the old draft mail is deleted and synced to server + debug_log("Account id [%d] mailbox id [%d] mail id [%d]", ugd->account_info->account->account_id, ugd->mailbox_info->mailbox_id, ugd->nExistingMailID); - if (ugd->cc_added) { - edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); + if (!email_engine_delete_mail(ugd->account_info->account->account_id, ugd->mailbox_info->mailbox_id, ugd->nExistingMailID, EMAIL_DELETE_LOCAL_AND_SERVER)) { + debug_log("Deleting email is failed."); } + } + + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", _("IDS_EMAIL_POP_SAVED_IN_DRAFTS")); + /*_show_select_info(ug_data, str);*/ + int ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + } +} - ugd->b_bcc_ps_open = false; +void _composer_cbar_save_as_draft_clicked(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailComposerUGD *ugd = (EmailComposerUGD *)data; + + if (EINA_FALSE == ewk_view_script_execute(ugd->body_ewkview, COMPOSER_JS_GET_HTML_CONTENT, _composer_cbar_save_as_draft_cb, (void *)ugd)) + debug_log("COMPOSER_JS_GET_HTML_CONTENT failed."); +} + +static void _composer_priority_radio_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + EmailComposerUGD *ugd = (EmailComposerUGD *)data; + int i; + + for (i = 0; i < 3; i++) { + if (obj == ugd->priority_rd[i]) { + elm_radio_value_set(ugd->priority_rdg, i); } + } +} - ugd->b_cc_bcc = false; +static char *_composer_priority_gl_text_get(void *data, Evas_Object *obj, const char *part) +{ + int index = (int)data; - if (!_composer_check_popup_exist(ugd)) { - ugd->idler_set_focus = ecore_idler_add(_composer_mbe_set_focus, ugd); + debug_log("\n text index = %d", index); + + if (!g_strcmp0(part, "elm.text")) { + if (index == 0) + return strdup(_("IDS_EMAIL_BODY_HIGH_M_PRIORITY")); + else if (index == 1) + return strdup(_("IDS_EMAIL_BODY_NORMAL_M_EMAILPRIORITY")); + else if (index == 2) + return strdup(_("IDS_EMAIL_BODY_LOW_M_EMAILPRIORITY")); + } + return NULL; +} + +static Evas_Object *_composer_priority_gl_content_get(void *data, Evas_Object *obj, const char *part) +{ + int index = (int)data; + + debug_log("\n content index = %d", index); + + if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.swallow.icon")) { + g_ugd->priority_rd[index] = elm_radio_add(obj); + elm_radio_state_value_set(g_ugd->priority_rd[index], index); + + if (index == 0) { + g_ugd->priority_rdg = g_ugd->priority_rd[index]; + } else { + elm_radio_group_add(g_ugd->priority_rd[index], g_ugd->priority_rdg); + } + + if (g_ugd->priority_option == EMAIL_MAIL_PRIORITY_HIGH) { + elm_radio_value_set(g_ugd->priority_rdg, 0); + } else if ( g_ugd->priority_option == EMAIL_MAIL_PRIORITY_NORMAL) { + elm_radio_value_set(g_ugd->priority_rdg, 1); + } else if ( g_ugd->priority_option == EMAIL_MAIL_PRIORITY_LOW) { + elm_radio_value_set(g_ugd->priority_rdg, 2); + } else { + debug_log("\n g_ugd->priority_option4 = %d", g_ugd->priority_option); } + + evas_object_smart_callback_add(g_ugd->priority_rd[index], "changed", _composer_priority_radio_cb, g_ugd); + + return g_ugd->priority_rd[index]; + } + + return NULL; +} + +static Eina_Bool _composer_priority_gl_state_get(void *data, Evas_Object *obj, const char *part) +{ + debug_log(""); + return EINA_FALSE; +} + +static void _composer_priority_gl_del(void *data, Evas_Object *obj) +{ + debug_log(""); + return; +} + +static void _composer_priority_gl_sel(void *data, Evas_Object *obj, void *event_info) +{ + int index = (int)data; + + elm_radio_value_set(g_ugd->priority_rdg, index); + + if (index == 0) { + g_ugd->priority_option = EMAIL_MAIL_PRIORITY_HIGH; + } else if (index == 1) { + g_ugd->priority_option = EMAIL_MAIL_PRIORITY_NORMAL; + } else if (index == 2) { + g_ugd->priority_option = EMAIL_MAIL_PRIORITY_LOW; } else { - if (ugd->b_cc_bcc) { - debug_log("b_cc_bcc is ON"); - return; + debug_log("\n g_ugd->priority_option = %d", g_ugd->priority_option); + } + debug_log("\n _composer_priority_gl_sel : priority_option = %d", g_ugd->priority_option); +} + +void _composer_cbar_priority_clicked(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + EmailComposerUGD *ugd = (EmailComposerUGD *)data; + Elm_Object_Item *gen_item[2]; + int index; + + g_ugd = ugd; + + Evas_Object *popup; + + if (ugd->composer_noti) { + evas_object_del(ugd->composer_noti); + ugd->composer_noti = NULL; + } + popup = _composer_create_noti(ugd, false, _("IDS_EMAIL_BODY_PRIORITY"), NULL, 1, + dgettext("sys_string", "IDS_COM_POP_CLOSE"), NULL, 0.0, _composer_noti_response_cb); + + ugd->composer_noti = popup; + + if (ugd->clipboard_on) { + ugd->clipboard_on = false; + } + + if (ugd->cc_added) { + if (ugd->b_cc_ps_open == true) { + edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); + ugd->b_cc_ps_open = false; } + } - if (ugd->clipboard_on) { - ugd->clipboard_on = false; + if (ugd->b_bcc_ps_open == true) { + edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); + + if (ugd->cc_added) { + edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); } - edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); - email_composer_create_bcc_field(ugd); + ugd->b_bcc_ps_open = false; + } - ugd->idler_set_focus = ecore_idler_add(_composer_bcc_mbe_set_focus, ugd); +#ifdef _POPUP_WITH_LIST + elm_object_style_set(ugd->composer_noti, "min_menustyle"); +#else + elm_object_style_set(ugd->composer_noti, "menustyle"); +#endif + elm_object_focus_allow_set(ugd->composer_noti, EINA_FALSE); + + priority_itc.item_style = "1text.1icon.2"; + priority_itc.func.text_get = _composer_priority_gl_text_get; + priority_itc.func.content_get = _composer_priority_gl_content_get; + priority_itc.func.state_get = _composer_priority_gl_state_get; + priority_itc.func.del = _composer_priority_gl_del; + + Evas_Object *priority_genlist; + priority_genlist = elm_genlist_add(ugd->composer_noti); + + evas_object_size_hint_weight_set(priority_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(priority_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + for (index = 0; index < 3; index++) { + gen_item[index] = elm_genlist_item_append(priority_genlist, &priority_itc, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, _composer_priority_gl_sel, (void *)index); } - if (ugd->isRotated == true) - elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,close", ""); +// elm_genlist_effect_set(security_genlist, EINA_FALSE); + elm_genlist_tree_effect_enabled_set(priority_genlist, EINA_FALSE); + +#ifdef _POPUP_WITH_LIST + Evas_Object *box = elm_box_add(ugd->composer_noti); + evas_object_size_hint_min_set(box, 610 * elm_scale_get(), 114 * index * elm_scale_get()); + evas_object_show(priority_genlist); + elm_box_pack_end(box, priority_genlist); + elm_object_content_set(ugd->composer_noti, box); +#else + elm_object_content_set(ugd->composer_noti, priority_genlist); +#endif + +} + +static char *_composer_tracking_gl_text_get(void *data, Evas_Object *obj, const char *part) +{ + int index = (int)data; + + debug_log("\n text index = %d", index); + + if (!g_strcmp0(part, "elm.text")) { + if (index == 0) + return strdup(N_("Read report")); + else if (index == 1) + return strdup(N_("Delivery report")); + } + return NULL; +} + +static Evas_Object *_composer_tracking_gl_content_get(void *data, Evas_Object *obj, const char *part) +{ + int index = (int)data; + + debug_log("\n content index = %d", index); + + if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.swallow.icon")) { + Evas_Object *check = elm_check_add(obj); + + if (index == 0 && g_ugd->tracking_option[0] == 1) { + debug_log("Read report"); + elm_check_state_set(check, EINA_TRUE); + } else if (index == 1 && g_ugd->tracking_option[1] == 1) { + debug_log("Delivery report"); + elm_check_state_set(check, EINA_TRUE); + } else { + debug_log("NONE"); + elm_check_state_set(check, EINA_FALSE); + } + + evas_object_size_hint_weight_set(check, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(check, EVAS_HINT_FILL, EVAS_HINT_FILL); + + return check; + } + + return NULL; +} + +static Eina_Bool _composer_tracking_gl_state_get(void *data, Evas_Object *obj, const char *part) +{ + debug_log(""); + return EINA_FALSE; +} + +static void _composer_tracking_gl_del(void *data, Evas_Object *obj) +{ + debug_log(""); + return; +} + +static void _composer_tracking_gl_sel(void *data, Evas_Object *obj, void *event_info) +{ + int index; + Elm_Object_Item *item = (Elm_Object_Item *)event_info; + + debug_log("\nsel index = %d", (int)data); + + if (item != NULL) { + index = (int)elm_object_item_data_get(item); + elm_genlist_item_selected_set(item, EINA_FALSE); + + debug_log("tracking_option[%d]:%d, !tracking_option[%d]:%d", index, g_ugd->tracking_option[index], index, !g_ugd->tracking_option[index]); + g_ugd->tracking_option[index] = !g_ugd->tracking_option[index]; + elm_genlist_item_update(item); + } } + +void _composer_cbar_tracking_clicked(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + EmailComposerUGD *ugd = (EmailComposerUGD *)data; + Elm_Object_Item *gen_item[2]; + int index; + + g_ugd = ugd; + + Evas_Object *popup; + + if (ugd->composer_noti) { + evas_object_del(ugd->composer_noti); + ugd->composer_noti = NULL; + } + popup = _composer_create_noti(ugd, false, N_("Tracking"), NULL, 1, + dgettext("sys_string", "IDS_COM_POP_CLOSE"), NULL, 0.0, _composer_noti_response_cb); + + ugd->composer_noti = popup; + + if (ugd->clipboard_on) { + ugd->clipboard_on = false; + } + + if (ugd->cc_added) { + if (ugd->b_cc_ps_open == true) { + edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); + ugd->b_cc_ps_open = false; + } + } + + if (ugd->b_bcc_ps_open == true) { + edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); + + if (ugd->cc_added) { + edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); + } + + ugd->b_bcc_ps_open = false; + } + +#ifdef _POPUP_WITH_LIST + elm_object_style_set(ugd->composer_noti, "min_menustyle"); +#else + elm_object_style_set(ugd->composer_noti, "menustyle"); #endif + elm_object_focus_allow_set(ugd->composer_noti, EINA_FALSE); + + tracking_itc.item_style = "1text.1icon.2"; + tracking_itc.func.text_get = _composer_tracking_gl_text_get; + tracking_itc.func.content_get = _composer_tracking_gl_content_get; + tracking_itc.func.state_get = _composer_tracking_gl_state_get; + tracking_itc.func.del = _composer_tracking_gl_del; + + Evas_Object *tracking_genlist; + tracking_genlist = elm_genlist_add(ugd->composer_noti); + + evas_object_size_hint_weight_set(tracking_genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(tracking_genlist, EVAS_HINT_FILL, EVAS_HINT_FILL); + + for (index = 0; index < 2; index++) { + gen_item[index] = elm_genlist_item_append(tracking_genlist, &tracking_itc, (void *)index, NULL, ELM_GENLIST_ITEM_NONE, _composer_tracking_gl_sel, (void *)index); + } + +// elm_genlist_effect_set(security_genlist, EINA_FALSE); + elm_genlist_tree_effect_enabled_set(tracking_genlist, EINA_FALSE); + +#ifdef _POPUP_WITH_LIST + Evas_Object *box = elm_box_add(ugd->composer_noti); + evas_object_size_hint_min_set(box, 610 * elm_scale_get(), 114 * index * elm_scale_get()); + evas_object_show(tracking_genlist); + elm_box_pack_end(box, tracking_genlist); + elm_object_content_set(ugd->composer_noti, box); +#else + elm_object_content_set(ugd->composer_noti, tracking_genlist); +#endif +} void _composer_cbar_send_clicked(void *data, Evas_Object *obj, void *event_info) { @@ -1949,26 +2468,6 @@ static Eina_Bool _composer_cc_mbe_set_focus(void *data) return EINA_FALSE; } -#ifndef _CC_BCC -static Eina_Bool _composer_bcc_mbe_set_focus(void *data) -{ - debug_log(""); - - EmailComposerUGD *ugd = (EmailComposerUGD *)data; - - if (ugd->idler_set_focus) { - ecore_idler_del(ugd->idler_set_focus); - ugd->idler_set_focus = NULL; - } - - elm_object_focus_set(ugd->bcc_mbe, EINA_TRUE); - - ugd->b_cc_bcc = false; - - return EINA_FALSE; -} -#endif - void _composer_script_executed_cb(Evas_Object *o, const char *result, void *data) { debug_log(""); diff --git a/composer/src/email-composer-contents.c b/composer/src/email-composer-contents.c index 442c321..9552033 100755 --- a/composer/src/email-composer-contents.c +++ b/composer/src/email-composer-contents.c @@ -329,7 +329,11 @@ void _composer_webkit_loadFinished_cb(void *data, Evas_Object *obj, void *event_ //ewk_setting_auto_load_images_set(ewkSetting, EINA_TRUE); ewk_setting_editable_link_behavior_set(ewkSetting, EWK_EDITABLE_LINK_BEHAVIOR_NEVER_LIVE); - _composer_resize_body_webview(ugd, ugd->ime_height); + if (ugd->isRotated == true) { + _composer_resize_body_webview(ugd, 316); + } else { + _composer_resize_body_webview(ugd, ugd->ime_height); + } if (ugd->selected_entry == ugd->body_ewkview) { // focus to the body field when reply the email. @@ -499,7 +503,11 @@ static void _composer_webkit_ime_opened_cb(void *data, Evas_Object *obj, void *e debug_log(""); EmailComposerUGD *ugd = (EmailComposerUGD *)data; - _composer_resize_body_webview(ugd, ugd->ime_height); + if (ugd->isRotated == true) { + _composer_resize_body_webview(ugd, 316); + } else { + _composer_resize_body_webview(ugd, ugd->ime_height); + } } static void _composer_webkit_resized_cb(void *data, Evas_Object *obj, void *event_info) diff --git a/composer/src/email-composer-predictive-search.c b/composer/src/email-composer-predictive-search.c index 8cd4ebb..a4e93ba 100755 --- a/composer/src/email-composer-predictive-search.c +++ b/composer/src/email-composer-predictive-search.c @@ -122,20 +122,20 @@ Evas_Object *_composer_recipient_create_ps_field(Evas_Object *parent, EmailCompo Evas_Object *list; list = elm_genlist_add(parent); - /*elm_object_theme_set(list, ugd->th);*/ + elm_object_theme_set(list, ugd->th); evas_object_size_hint_align_set(list, EVAS_HINT_FILL, 0.0); elm_genlist_homogeneous_set(list, EINA_TRUE); elm_object_focus_allow_set(list, EINA_FALSE); - ugd->ps_itc_2.item_style = "2text.8"; /*"email/predictive/2text.8";*/ + ugd->ps_itc_2.item_style = "email.2text.1icon"; /*"email/predictive/2text.8";*/ ugd->ps_itc_2.func.text_get = composer_ps_text_get; - ugd->ps_itc_2.func.content_get = NULL; + ugd->ps_itc_2.func.content_get = composer_ps_icon_get; ugd->ps_itc_2.func.state_get = NULL; ugd->ps_itc_2.func.del = NULL; - ugd->ps_itc_1.item_style = "1text.2"; /*"email/predictive/1text.2";*/ + ugd->ps_itc_1.item_style = "email.1text.1icon"; /*"email/predictive/1text.2";*/ ugd->ps_itc_1.func.text_get = composer_ps_text_get; - ugd->ps_itc_1.func.content_get = NULL; + ugd->ps_itc_1.func.content_get = composer_ps_icon_get; ugd->ps_itc_1.func.state_get = NULL; ugd->ps_itc_1.func.del = NULL; @@ -288,7 +288,8 @@ Eina_List *composer_ps_search_contact(EmailComposerUGD *ugd, const char *search_ while (CTS_SUCCESS == contacts_svc_iter_next(iter)) { CTSvalue *contact = NULL; CTSvalue *email = NULL; - const char *first, *last, *img_path, *email_addr; + const char *first, *last; + const char *img_path, *email_addr; char *display = NULL; contact = contacts_svc_iter_get_info(iter); @@ -410,25 +411,32 @@ 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) { + debug_log(""); + EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = (EMAIL_CONTACT_LIST_INFO_S *) data; Evas_Object *ic = elm_icon_add(obj); - if (g_strcmp0(part, "swl.img") == 0) { + if (!strncmp(part, "elm.icon", 8)) { if (contacts_list_item->image_path) { + debug_log("contacts_list_item->image_path : %s", contacts_list_item->image_path); elm_icon_file_set(ic, contacts_list_item->image_path, NULL); } else { - char buf[64] = { 0, }; + char buf[MAX_PATH_LEN] = { 0, }; snprintf(buf, sizeof(buf), "%s/00_list_photo_default.png", COMPOSER_ICON_DIR); + debug_log("buf : %s", buf); elm_icon_file_set(ic, buf, NULL); } - } - elm_icon_resizable_set(ic, 1, 1); - evas_object_image_smooth_scale_set(ic, 1); - evas_object_show(ic); + evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(ic, 1, 1); + evas_object_image_smooth_scale_set(ic, 1); + evas_object_show(ic); + + return ic; + } - return ic; + return NULL; } void composer_ps_delete_contacts_list(Eina_List *predict_list) diff --git a/composer/src/email-composer-util.c b/composer/src/email-composer-util.c index bceb935..204c793 100755 --- a/composer/src/email-composer-util.c +++ b/composer/src/email-composer-util.c @@ -462,41 +462,43 @@ int _composer_make_mail(EmailComposerUGD *ugd) { debug_log(""); - email_account_t *account = NULL; - if (!email_engine_get_account_full_data(ugd->account_info->account_id, &account)) - debug_log("Failed to Get account full data"); - if (ugd->composer_type == RUN_COMPOSER_EDIT || ugd->composer_type == RUN_COMPOSER_REPLY || ugd->composer_type == RUN_COMPOSER_REPLY_ALL || ugd->composer_type == RUN_COMPOSER_FORWARD) { - debug_log("acc id = %d, %d, %d", ugd->account_info->account_id, account->account_id, ugd->existing_mail_info->mail_data->account_id); - debug_log("priority = %d, %d", (*account).options.priority, ugd->existing_mail_info->mail_data->priority); + debug_log("acc id = %d, %d", ugd->account_info->account_id, ugd->existing_mail_info->mail_data->account_id); + debug_log("priority = %d, %d", (*ugd->account_info->account).options.priority, ugd->existing_mail_info->mail_data->priority); debug_log("mailbox = %s, %s", ugd->mailbox_info->mail_box->mailbox_name, ugd->existing_mail_info->mail_data->server_mailbox_name); ugd->new_mail_info->mail_data->account_id = ugd->existing_mail_info->mail_data->account_id; - ugd->new_mail_info->mail_data->priority = ugd->existing_mail_info->mail_data->priority; + //ugd->new_mail_info->mail_data->priority = ugd->existing_mail_info->mail_data->priority; } else { //RUN_COMPOSER_NEW || RUN_COMPOSER_EXTERNAL - debug_log("acc id = %d, %d", ugd->account_info->account_id, account->account_id); - debug_log("priority = %d", (*account).options.priority); + debug_log("acc id = %d", ugd->account_info->account_id); + debug_log("priority = %d", (*ugd->account_info->account).options.priority); debug_log("mailbox = %s", ugd->mailbox_info->mail_box->mailbox_name); ugd->new_mail_info->mail_data->account_id = ugd->account_info->account_id; - ugd->new_mail_info->mail_data->priority = (*account).options.priority; + //ugd->new_mail_info->mail_data->priority = (*account).options.priority; } + ugd->new_mail_info->mail_data->report_status = EMAIL_MAIL_REPORT_NONE; +/* + if (ugd->tracking_option[0] == 1) { + ugd->new_mail_info->mail_data->report_status |= EMAIL_MAIL_REQUEST_MDN; + } + if (ugd->tracking_option[1] == 1) { + ugd->new_mail_info->mail_data->report_status |= EMAIL_MAIL_REQUEST_DSN; + } + debug_log("ugd->new_mail_info->mail_data->report_status = %d", ugd->new_mail_info->mail_data->report_status); +*/ + ugd->new_mail_info->mail_data->priority = ugd->priority_option; + ugd->new_mail_info->mail_data->server_mailbox_name = strdup(ugd->mailbox_info->mail_box->mailbox_name); ugd->new_mail_info->mail_data->mailbox_id = ugd->mailbox_info->mail_box->mailbox_id; - debug_log("user_name = %s", account->user_display_name); - debug_log("email_addr = %s", account->user_email_address); + debug_log("user_name = %s", ugd->account_info->account->user_display_name); + debug_log("email_addr = %s", ugd->account_info->account->user_email_address); char uc[MAX_ACCOUNT_NAME_LEN + 20]; - snprintf(uc, sizeof(uc), "\"%s\"<%s>", account->user_display_name, account->user_email_address); + snprintf(uc, sizeof(uc), "\"%s\"<%s>", ugd->account_info->account->user_display_name, ugd->account_info->account->user_email_address); ugd->new_mail_info->mail_data->full_address_from = g_strdup(uc); debug_log("from = %s", uc); - if (account) { - debug_log("email_free_account is called"); - email_free_account(&account, 1); - account = NULL; - } - if (elm_object_item_text_get(elm_multibuttonentry_first_item_get(ugd->to_mbe)) != NULL) { debug_log("to mbe"); if (_composer_make_recipient_char_to_list(ugd, ugd->to_mbe, &(ugd->new_mail_info->mail_data->full_address_to)) < COMPOSER_ERROR_NONE) @@ -970,7 +972,7 @@ void _composer_save_popup_response_cb(void *data, Evas_Object *obj, void *event_ if (ugd->composer_type == RUN_COMPOSER_EDIT) { //After a new draft mail is added, the old draft mail is deleted and synced to server - debug_log("Account id [%d] mailbox id [%s] mail id [%d]", ugd->account_info->account->account_id, ugd->mailbox_info->mailbox_id, ugd->nExistingMailID); + debug_log("Account id [%d] mailbox id [%d] mail id [%d]", ugd->account_info->account->account_id, ugd->mailbox_info->mailbox_id, ugd->nExistingMailID); if (!email_engine_delete_mail(ugd->account_info->account->account_id, ugd->mailbox_info->mailbox_id, ugd->nExistingMailID, EMAIL_DELETE_LOCAL_AND_SERVER)) { debug_log("Deleting email is failed."); @@ -1247,8 +1249,7 @@ void _composer_set_mail_info(EmailComposerUGD *ugd) _composer_add_subject(ugd); _composer_add_body(ugd); - if (ugd->composer_type != RUN_COMPOSER_EDIT) - { + if (ugd->composer_type != RUN_COMPOSER_EDIT) { _composer_add_origin_msg(ugd); } @@ -1278,7 +1279,9 @@ void _composer_set_mail_info(EmailComposerUGD *ugd) (ugd->composer_type == RUN_COMPOSER_EDIT || ugd->composer_type == RUN_COMPOSER_REPLY || ugd->composer_type == RUN_COMPOSER_REPLY_ALL || ugd->composer_type == RUN_COMPOSER_FORWARD)) { _composer_add_softlink_to_inline_images(ugd); - char *plain_charset = email_parse_get_filename_from_path(ugd->existing_mail_info->mail_data->file_path_plain); + char *plain_charset = NULL; + if (ugd->existing_mail_info->mail_data && ugd->existing_mail_info->mail_data->file_path_plain) + plain_charset = email_parse_get_filename_from_path(ugd->existing_mail_info->mail_data->file_path_plain); debug_log("plain_charset : %s", plain_charset); if (plain_charset) { @@ -1306,8 +1309,7 @@ void _composer_set_mail_info(EmailComposerUGD *ugd) } } - if (EINA_TRUE == ugd->has_body_html) - { + if (EINA_TRUE == ugd->has_body_html) { debug_log(""); char file_path[100] = { 0, }; @@ -1416,12 +1418,7 @@ Eina_Bool _composer_show_progress_popup(void *data) progressbar = elm_progressbar_add(popup); - if (ugd->account_info->account_type == EMAIL_SERVER_TYPE_ACTIVE_SYNC) { - elm_object_style_set(progressbar, "pending_list"); - elm_progressbar_pulse(progressbar, EINA_TRUE); - } else { - elm_object_style_set(progressbar, "list_progress"); - } + elm_object_style_set(progressbar, "list_progress"); evas_object_size_hint_align_set(progressbar, EVAS_HINT_FILL, 0.5); evas_object_size_hint_weight_set(progressbar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); @@ -1998,14 +1995,9 @@ void _composer_add_cc_address(EmailComposerUGD *ugd) if (ugd->cc_mbe == NULL) { edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); email_composer_create_cc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); email_composer_create_bcc_field(ugd); - elm_object_text_set(ugd->cc_btn, N_("Remove Cc/Bcc")); -#endif - ugd->b_cc_bcc = false; } @@ -2112,14 +2104,9 @@ void _composer_add_cc_address(EmailComposerUGD *ugd) debug_log(""); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); email_composer_create_cc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); email_composer_create_bcc_field(ugd); - elm_object_text_set(ugd->cc_btn, N_("Remove Cc/Bcc")); -#endif - ugd->b_cc_bcc = false; } } @@ -2145,14 +2132,9 @@ void _composer_add_bcc_address(EmailComposerUGD *ugd) if (ugd->bcc_mbe == NULL) { edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); email_composer_create_bcc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); email_composer_create_cc_field(ugd); - elm_object_text_set(ugd->cc_btn, N_("Remove Cc/Bcc")); -#endif - ugd->b_cc_bcc = false; } @@ -2259,14 +2241,9 @@ void _composer_add_bcc_address(EmailComposerUGD *ugd) debug_log(""); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); email_composer_create_bcc_field(ugd); - -#ifdef _CC_BCC edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); email_composer_create_cc_field(ugd); - elm_object_text_set(ugd->cc_btn, N_("Remove Cc/Bcc")); -#endif - ugd->b_cc_bcc = false; } } @@ -2366,8 +2343,7 @@ void _composer_add_body(EmailComposerUGD *ugd) if (ugd->existing_mail_info->mail_data && ugd->existing_mail_info->mail_data->body_download_status) { if (ugd->composer_type == RUN_COMPOSER_EDIT) { - if (ugd->has_body_html) - { + if (ugd->has_body_html) { debug_log("html composer_type: EDIT"); char *html_text_for_body = NULL; @@ -2380,14 +2356,23 @@ void _composer_add_body(EmailComposerUGD *ugd) debug_log("\nHTML-TEXT:\n%s", html_text_for_body); free(temp_body_plain); } + + char szMetaViewportInfo[TEMP_BUFFER_SIZE + 1] = { 0x00, }; + strncpy(szMetaViewportInfo, HTML_META_INFORMATION, TEMP_BUFFER_SIZE); + char *full_text = NULL; + full_text = g_strconcat(szMetaViewportInfo, html_text_for_body, NULL); + debug_log("html_text_for_body: %s", html_text_for_body); + if (html_text_for_body) { - email_composer_save_file(ugd->saved_html_path, html_text_for_body, STR_LEN(html_text_for_body)); + email_composer_save_file(ugd->saved_html_path, full_text, STR_LEN(full_text)); g_free(html_text_for_body); } else { html_text_for_body = (char *)email_get_buff_from_file(DATADIR"/_email_default.html", 0); - email_composer_save_file(ugd->saved_html_path, html_text_for_body, STR_LEN(html_text_for_body)); + email_composer_save_file(ugd->saved_html_path, full_text, STR_LEN(full_text)); g_free(html_text_for_body); } + + debug_log("full text:\n%s", full_text); } } } @@ -2422,8 +2407,7 @@ void _composer_make_html_body(EmailComposerUGD *ugd) char *temp; char *token; - if (((ugd->composer_type == RUN_COMPOSER_REPLY || ugd->composer_type == RUN_COMPOSER_REPLY_ALL) && ugd->account_info->account->options.reply_with_body) || ugd->composer_type == RUN_COMPOSER_FORWARD) - { + if (((ugd->composer_type == RUN_COMPOSER_REPLY || ugd->composer_type == RUN_COMPOSER_REPLY_ALL) && ugd->account_info->account->options.reply_with_body) || ugd->composer_type == RUN_COMPOSER_FORWARD) { if (ugd->existing_mail_info->mail_data->full_address_to) { temp = COMPOSER_STRDUP(ugd->existing_mail_info->mail_data->full_address_to); token = strtok(temp, ";"); @@ -3262,6 +3246,7 @@ void _composer_popup_response_cb(void *data, Evas_Object *obj, void *event_info) } // elm_multibuttonentry_item_unselect_all(mbe); + elm_object_tree_focus_allow_set(ugd->c_layout, EINA_TRUE); if (ugd->popup_list) { debug_log("popup count = %d", eina_list_count(ugd->popup_list)); @@ -3454,9 +3439,12 @@ void _composer_resize_body_webview(EmailComposerUGD *ugd, int ime_height) evas_object_geometry_get(ugd->webkit_ly, &x, &y, &w, &h); debug_log(" === resize webkit_ly x:%d, y:%d, w:%d, h:%d", x, y, w, h); - debug_log("nHeight:%d, COMPOSER_NAVI_HEIGHT:%d, indicator_height:%d", nHeight, COMPOSER_NAVI_HEIGHT, ugd->indicator_height); - - evas_object_size_hint_min_set(ugd->webkit_ly, 0, nHeight - COMPOSER_NAVI_HEIGHT - ugd->indicator_height - ime_height); + if (ugd->isRotated == false) { + debug_log("nHeight:%d, COMPOSER_NAVI_HEIGHT:%d, indicator_height:%d", nHeight, COMPOSER_NAVI_HEIGHT, ugd->indicator_height); + evas_object_size_hint_min_set(ugd->webkit_ly, 0, nHeight - COMPOSER_NAVI_HEIGHT - ugd->indicator_height - ime_height); + } else { + evas_object_size_hint_min_set(ugd->webkit_ly, 0, nWidth - COMPOSER_NAVI_HEIGHT - ime_height); + } } void _composer_input_panel_state_changed_cb(void *data, Ecore_IMF_Context *ctx, int value) @@ -3584,3 +3572,122 @@ void _composer_coords_evas_to_ewk(Evas_Object *view, int evasX, int evasY, int * *ewkY = evasY + scrollY - viewY; } +void _composer_set_option_tray_menu(int num, EmailComposerUGD *ugd) +{ + debug_log(""); + + Evas_Object *btn = NULL; + + switch (num) { + case EMAIL_COMPOSER_ADD_ME_BTN : // Add me btn + btn = elm_button_add(ugd->cbar); + elm_object_style_set(btn, "naviframe_control/default"); + evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.5); + ugd->controlbar_item[EMAIL_COMPOSER_ADD_ME_BTN] = elm_toolbar_item_append(ugd->cbar, NULL, NULL, NULL, NULL); + elm_object_item_part_content_set(ugd->controlbar_item[EMAIL_COMPOSER_ADD_ME_BTN], "object", btn); + elm_object_text_set(btn, N_("Add me")); + ugd->add_me_btn = btn; + evas_object_smart_callback_add(ugd->add_me_btn, "clicked", _composer_cbar_add_me_clicked, ugd); + break; + case EMAIL_COMPOSER_ADD_CC_BCC_BTN : // Add Cc/Bcc btn + btn = elm_button_add(ugd->cbar); + elm_object_style_set(btn, "naviframe_control/default"); + evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.5); + ugd->controlbar_item[EMAIL_COMPOSER_ADD_CC_BCC_BTN] = elm_toolbar_item_append(ugd->cbar, NULL, NULL, NULL, NULL); + elm_object_item_part_content_set(ugd->controlbar_item[EMAIL_COMPOSER_ADD_CC_BCC_BTN], "object", btn); + if (ugd->cc_added) { + elm_object_text_set(btn, N_("Remove Cc/Bcc")); + } else { + elm_object_text_set(btn, _("IDS_EMAIL_OPT_ADD_CC_BCC")); + } + ugd->cc_btn = btn; + evas_object_smart_callback_add(ugd->cc_btn, "clicked", _composer_cbar_cc_clicked, ugd); + break; + case EMAIL_COMPOSER_SAVE_AS_DRAFT_BTN : // Save as draft btn + { + Evas_Object *cbar = NULL; + cbar = ugd->cbar; + btn = elm_button_add(cbar); + elm_object_style_set(btn, "naviframe_control/default"); + evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.5); + ugd->controlbar_item[EMAIL_COMPOSER_SAVE_AS_DRAFT_BTN] = elm_toolbar_item_append(cbar, NULL, NULL, NULL, NULL); + elm_object_item_part_content_set(ugd->controlbar_item[EMAIL_COMPOSER_SAVE_AS_DRAFT_BTN], "object", btn); + elm_object_text_set(btn, N_("Save as draft")); + ugd->save_as_draft_btn = btn; + evas_object_smart_callback_add(ugd->save_as_draft_btn, "clicked", _composer_cbar_save_as_draft_clicked, ugd); + } + break; + case EMAIL_COMPOSER_PRIORITY_BTN : // Priority btn + btn = elm_button_add(ugd->cbar2); + elm_object_style_set(btn, "naviframe_control/default"); + evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.5); + ugd->controlbar_item[EMAIL_COMPOSER_PRIORITY_BTN] = elm_toolbar_item_append(ugd->cbar2, NULL, NULL, NULL, NULL); + elm_object_item_part_content_set(ugd->controlbar_item[EMAIL_COMPOSER_PRIORITY_BTN], "object", btn); + elm_object_text_set(btn, _("IDS_EMAIL_BODY_PRIORITY")); + ugd->priority_btn = btn; + evas_object_smart_callback_add(ugd->priority_btn, "clicked", _composer_cbar_priority_clicked, ugd); + break; + case EMAIL_COMPOSER_TRACKING_BTN : // Tracking btn + btn = elm_button_add(ugd->cbar2); + elm_object_style_set(btn, "naviframe_control/default"); + evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, 0.5); + ugd->controlbar_item[EMAIL_COMPOSER_TRACKING_BTN] = elm_toolbar_item_append(ugd->cbar2, NULL, NULL, NULL, NULL); + elm_object_item_part_content_set(ugd->controlbar_item[EMAIL_COMPOSER_TRACKING_BTN], "object", btn); + elm_object_text_set(btn, N_("Tracking")); + ugd->tracking_btn = btn; + evas_object_smart_callback_add(ugd->tracking_btn, "clicked", _composer_cbar_tracking_clicked, ugd); + break; + case EMAIL_COMPOSER_DUMMY_BTN : // Dummy btn + ugd->dummy_btn = NULL; + break; + default : // never get here! + debug_log("default"); + } + + evas_object_show(btn); +} + +void _composer_unset_option_tray_menu(int num, EmailComposerUGD *ugd) +{ + debug_log(""); + + elm_object_item_del(ugd->controlbar_item[num]); + ugd->controlbar_item[num] = NULL; + + switch (num) { + case EMAIL_COMPOSER_ADD_ME_BTN : // Add me btn + evas_object_del(ugd->add_me_btn); + ugd->add_me_btn = NULL; + break; + case EMAIL_COMPOSER_ADD_CC_BCC_BTN : // Add Cc/Bcc btn + evas_object_del(ugd->cc_btn); + ugd->cc_btn = NULL; + break; + case EMAIL_COMPOSER_SAVE_AS_DRAFT_BTN : // Save as draft btn + { + evas_object_del(ugd->save_as_draft_btn); + ugd->save_as_draft_btn = NULL; + } + break; + case EMAIL_COMPOSER_PRIORITY_BTN : // Priority btn + evas_object_del(ugd->priority_btn); + ugd->priority_btn = NULL; + break; + case EMAIL_COMPOSER_TRACKING_BTN : // Tracking btn + evas_object_del(ugd->tracking_btn); + ugd->tracking_btn = NULL; + break; + case EMAIL_COMPOSER_DUMMY_BTN : // Dummy btn + evas_object_del(ugd->dummy_btn); + ugd->dummy_btn = NULL; + break; + default : // never get here! + debug_log("default"); + } +} + diff --git a/composer/src/email-composer.c b/composer/src/email-composer.c index 7847ccf..e0889d4 100755 --- a/composer/src/email-composer.c +++ b/composer/src/email-composer.c @@ -404,14 +404,24 @@ static void on_event(ui_gadget_h ug, enum ug_event event, service_h data, void * case UG_EVENT_ROTATE_PORTRAIT: elm_layout_theme_set(ugd->main_layout, "layout", "application", "default"); // elm_win_indicator_mode_set(ugd->win_main, ELM_WIN_INDICATOR_SHOW); + if (ugd->option_header_opened) { + elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,close", ""); + ugd->option_header_opened = FALSE; + } ugd->isRotated = false; win_main_angle = 0; + _composer_resize_body_webview(ugd, ugd->ime_height); break; case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN: elm_layout_theme_set(ugd->main_layout, "layout", "application", "default"); // elm_win_indicator_mode_set(ugd->win_main, ELM_WIN_INDICATOR_SHOW); + if (ugd->option_header_opened) { + elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,close", ""); + ugd->option_header_opened = FALSE; + } ugd->isRotated = false; win_main_angle = 180; + _composer_resize_body_webview(ugd, ugd->ime_height); break; case UG_EVENT_ROTATE_LANDSCAPE: elm_layout_theme_set(ugd->main_layout, "layout", "application", "noindicator"); @@ -422,6 +432,7 @@ static void on_event(ui_gadget_h ug, enum ug_event event, service_h data, void * } ugd->isRotated = true; win_main_angle = 270; + _composer_resize_body_webview(ugd, 316); break; case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN: elm_layout_theme_set(ugd->main_layout, "layout", "application", "noindicator"); @@ -432,6 +443,7 @@ static void on_event(ui_gadget_h ug, enum ug_event event, service_h data, void * } ugd->isRotated = true; win_main_angle = 90; + _composer_resize_body_webview(ugd, 316); break; case UG_EVENT_REGION_CHANGE: break; @@ -439,6 +451,8 @@ static void on_event(ui_gadget_h ug, enum ug_event event, service_h data, void * break; } + elm_layout_sizing_eval(ugd->c_layout); + // win_main_angle = elm_win_rotation_get(ugd->win_main); // win_main_angle = app_get_device_orientation(); debug_log("win_main_angle: %d, event: %d", win_main_angle, event); @@ -796,7 +810,7 @@ void create_composer_frame(EmailComposerUGD *ugd) snprintf(title_str, sizeof(title_str), "%s", dgettext("sys_string", "IDS_COM_HEADER_EDIT")); else snprintf(title_str, sizeof(title_str), "%s", N_("New email")); - ugd->navi_item = elm_naviframe_item_push(ugd->navi_bar, title_str, NULL, NULL, outer_layout, NULL); + ugd->navi_item = elm_naviframe_item_push(ugd->navi_bar, title_str, NULL, NULL, outer_layout, "2line"); // Right : cancel button cancel_btn = elm_button_add(ugd->navi_bar); @@ -806,7 +820,7 @@ void create_composer_frame(EmailComposerUGD *ugd) evas_object_smart_callback_add(cancel_btn, "clicked", _composer_back_button_cb, ugd); ugd->cancel_btn = cancel_btn; debug_log("cancel_btn of composer: %p", ugd->cancel_btn); - elm_object_disabled_set(ugd->cancel_btn, EINA_TRUE); // It prevents clicking the cancel button before initializing. + //elm_object_disabled_set(ugd->cancel_btn, EINA_TRUE); // It prevents clicking the cancel button before initializing. // Middle : more button more_btn = elm_button_add(ugd->navi_bar); @@ -831,53 +845,25 @@ void create_composer_frame(EmailComposerUGD *ugd) elm_toolbar_shrink_mode_set(cbar, ELM_TOOLBAR_SHRINK_EXPAND); elm_object_style_set(cbar, "naviframe"); evas_object_show(cbar); + ugd->cbar = cbar; - elm_object_item_part_content_set(ugd->navi_item, "optionheader", cbar); - - ugd->option_header_opened = 0; + cbar = elm_toolbar_add(ugd->navi_bar); + if (cbar == NULL) + return; -#ifndef _CC_BCC - Evas_Object *cc_btn = elm_button_add(cbar); - elm_object_style_set(cc_btn, "naviframe_control/default"); - evas_object_size_hint_weight_set(cc_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(cc_btn, EVAS_HINT_FILL, 0.5); - elm_object_text_set(cc_btn, _("IDS_EMAIL_BODY_CC")); - evas_object_show(cc_btn); - ugd->cc_btn = cc_btn; - - Evas_Object *bcc_btn = elm_button_add(cbar); - elm_object_style_set(bcc_btn, "naviframe_control/default"); - evas_object_size_hint_weight_set(bcc_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(bcc_btn, EVAS_HINT_FILL, 0.5); - elm_object_text_set(bcc_btn, _("IDS_EMAIL_BODY_BCC")); - evas_object_show(bcc_btn); - ugd->bcc_btn = bcc_btn; - - ugd->controlbar_item[0] = elm_toolbar_item_append(cbar, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(ugd->controlbar_item[0], "object", cc_btn); - - ugd->controlbar_item[1] = elm_toolbar_item_append(cbar, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(ugd->controlbar_item[1], "object", bcc_btn); -#else - Evas_Object *cc_btn = elm_button_add(cbar); - elm_object_style_set(cc_btn, "naviframe_control/default"); - evas_object_size_hint_weight_set(cc_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(cc_btn, EVAS_HINT_FILL, 0.5); - if (ugd->cc_added) - elm_object_text_set(cc_btn, N_("Remove Cc/Bcc")); - else - elm_object_text_set(cc_btn, _("IDS_EMAIL_OPT_ADD_CC_BCC")); - evas_object_show(cc_btn); - ugd->cc_btn = cc_btn; + elm_toolbar_shrink_mode_set(cbar, ELM_TOOLBAR_SHRINK_EXPAND); + elm_object_style_set(cbar, "naviframe"); + evas_object_show(cbar); + ugd->cbar2 = cbar; - ugd->controlbar_item[0] = elm_toolbar_item_append(cbar, NULL, NULL, NULL, NULL); - elm_object_item_part_content_set(ugd->controlbar_item[0], "object", cc_btn); -#endif + int i = 0; + for (i = EMAIL_COMPOSER_ADD_ME_BTN; i < EMAIL_COMPOSER_BTN_MAX; i++) { + _composer_set_option_tray_menu(i, ugd); + } + ugd->option_header_opened = 0; - evas_object_smart_callback_add(cc_btn, "clicked", _composer_cbar_cc_clicked, ugd); -#ifndef _CC_BCC - evas_object_smart_callback_add(bcc_btn, "clicked", _composer_cbar_bcc_clicked, ugd); -#endif + elm_object_item_part_content_set(ugd->navi_item, "optionheader", ugd->cbar); + elm_object_item_part_content_set(ugd->navi_item, "optionheader2", ugd->cbar2); elm_object_item_signal_emit(ugd->navi_item, "elm,state,optionheader,close", ""); _composer_register_scroller_callback(ugd); @@ -976,6 +962,7 @@ static void _composer_init_data(void *data) ugd->ps_on = false; ugd->cc_added = false; ugd->bcc_added = false; + ugd->me_added = false; ugd->isRotated = false; ugd->is_recipient_duplicated = false; @@ -989,10 +976,10 @@ static void _composer_init_data(void *data) ugd->b_load_finished = EINA_FALSE; - /*Elm_Theme *th = elm_theme_new(); + Elm_Theme *th = elm_theme_new(); elm_theme_ref_set(th, NULL); ugd->th = th; - elm_theme_extension_add(ugd->th, COMPOSER_EDJ_NAME);*/ + elm_theme_extension_add(ugd->th, COMPOSER_EDJ_NAME); if (ethumb_init() != EINA_TRUE) { debug_log("Fail to ethumb_init()"); @@ -1013,6 +1000,7 @@ static void _composer_init_data(void *data) memset(ugd->account_info, 0x00, sizeof(EmailComposerMail)); ugd->ime_height = 444; + ugd->priority_option = EMAIL_MAIL_PRIORITY_NORMAL; } static int _composer_init_service(void *data) @@ -1099,11 +1087,11 @@ static void _composer_delete_evas_objects(EmailComposerUGD *ugd) ugd->bg = NULL; } - /*if (ugd->th) { + if (ugd->th) { elm_theme_extension_del(ugd->th, COMPOSER_EDJ_NAME); elm_theme_free(ugd->th); ugd->th = NULL; - }*/ + } if (ugd->idler_save_draft) { debug_log("delete idler_save_draft"); @@ -1875,18 +1863,11 @@ static void _on_edbus_event_composer_receive(void *data, DBusMessage * message) debug_log("receive noti, DOWNLOAD_ATTACHMENT"); char buf[128] = { 0, }; - if (ugd->account_info->account_type == EMAIL_SERVER_TYPE_ACTIVE_SYNC) { - char buf[128] = { 0, }; - - snprintf(buf, sizeof(buf), "%s [%d/%d]", _("IDS_EMAIL_POP_DOWNLOADING_ATTACHMENT_ING"), ugd->fw_dn_idx + 1, ugd->fw_dn_total_cnt); - elm_object_text_set(ugd->fw_dn_label, buf); - } else { - debug_log("Download : %d / %d", data4 + (ugd->fw_dn_idx * 100), (ugd->fw_dn_total_cnt * 100)); - snprintf(buf, sizeof(buf), "%s [%d/%d]", _("IDS_EMAIL_POP_DOWNLOADING_ATTACHMENT_ING"), ugd->fw_dn_idx + 1, ugd->fw_dn_total_cnt); - elm_object_text_set(ugd->fw_dn_label, buf); - elm_progressbar_value_set(ugd->fw_dn_progress, (double)(data4 + (ugd->fw_dn_idx * 100)) / (ugd->fw_dn_total_cnt * 100)); - evas_render(evas_object_evas_get(ugd->main_layout)); - } + debug_log("Download : %d / %d", data4 + (ugd->fw_dn_idx * 100), (ugd->fw_dn_total_cnt * 100)); + snprintf(buf, sizeof(buf), "%s [%d/%d]", _("IDS_EMAIL_POP_DOWNLOADING_ATTACHMENT_ING"), ugd->fw_dn_idx + 1, ugd->fw_dn_total_cnt); + elm_object_text_set(ugd->fw_dn_label, buf); + elm_progressbar_value_set(ugd->fw_dn_progress, (double)(data4 + (ugd->fw_dn_idx * 100)) / (ugd->fw_dn_total_cnt * 100)); + evas_render(evas_object_evas_get(ugd->main_layout)); break; diff --git a/composer/theme/email-composer-genlist.edc b/composer/theme/email-composer-genlist.edc new file mode 100755 index 0000000..27acad0 --- /dev/null +++ b/composer/theme/email-composer-genlist.edc @@ -0,0 +1,786 @@ +/* + * 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. + */ + +/* For Genlist */ +#define GENLIST_HEIGHT_1LINE 114 +#define GENLIST_HEIGHT_16_INC 16 +#define GENLIST_HEIGHT_60_INC 60 +#define GENLIST_HEIGHT_129_INC 129 + +#define GENLIST_FONT_32_INC 32 +#define GENLIST_FONT_44_INC 44 + +#define GENLIST_SIZE_10_INC 10 +#define GENLIST_SIZE_16_INC 16 +#define GENLIST_SIZE_21_INC 21 +#define GENLIST_SIZE_60_INC 60 +#define GENLIST_SIZE_61_INC 61 + +#define GENLIST_PADDING_10_INC 10 +#define GENLIST_PADDING_16_INC 16 +#define GENLIST_PADDING_26_INC 26 + +#define GENLIST_ICON_SMALL_SIZE 60 +#define GENLIST_ICON_BIG_SIZE 64 +#define GENLIST_LIST_MAIN_TEXT_SIZE GENLIST_FONT_44_INC +#define GENLIST_LIST_SUB_TEXT_SIZE 32 +#define GENLIST_PADDING_SIZE_LEFT GENLIST_PADDING_16_INC +#define GENLIST_PADDING_SIZE_RIGHT GENLIST_PADDING_16_INC + +#define GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR 0 0 0 255 +#define GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR_STYLE "#000000FF" +#define GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR 249 249 249 255 +#define GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR_STYLE "#F9F9F9FF" + +#define GENLIST_PART_MATCH_TAG_COLOR_INC "+ color=#3F8DAD" +#define GENLIST_PART_DISCLIP_COLOR_INC 255 255 255 110 // alpha was 64 +#define GENLIST_PART_BG_COLOR_INC 0 0 0 255 +#define GENLIST_PART_LIST_BG_COLOR 239 239 239 255 +#define GENLIST_PART_LIST_LINE_COLOR_INC 68 68 68 255 +#define GENLIST_PART_LIST_PRESS_COLOR_INC 0 140 210 255 +#define GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR 100 100 100 255 +#define GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR_STYLE "#646464FF" +#define GENLIST_LIST_SUB_TEXT_FOCUS_COLOR 249 249 249 255 +#define GENLIST_LIST_SUB_TEXT_FOCUS_COLOR_STYLE "#F9F9F9FF" + + +#define TEXTBLOCK_TAG \ + tag: "br" "\n";\ + tag: "ps" "ps";\ + tag: "tab" "\t";\ + tag: "b" "+ font=SLP:style=Bold";\ + tag: "match" GENLIST_PART_MATCH_TAG_COLOR_INC; + +#define GENLIST_PART_BASE( param_item_height ) \ + part { name: "base"; \ + type: RECT; \ + repeat_events: 1; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 param_item_height; \ + color: GENLIST_PART_BG_COLOR_INC; \ + } \ + } + +#define GENLIST_PART_BG_IMAGE \ + part { name: "bg_image"; \ + type: RECT; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + color: GENLIST_PART_LIST_BG_COLOR; \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + color: GENLIST_PART_LIST_PRESS_COLOR_INC; \ + } \ + } + +#define GENLIST_PART_BOTTOM_LINE \ + part { name: "bottom_line"; \ + type: RECT; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + min: 0 1; \ + fixed: 0 1; \ + visible: 1; \ + color: GENLIST_PART_LIST_LINE_COLOR_INC; \ + rel1 { \ + relative: 0.0 1.0; \ + offset: 0 -1; \ + } \ + } \ + } + +#define GENLIST_PART_PADDING_TOP( param_padding_size ) \ + part { name: "elm.padding.top"; \ + type: RECT; \ + scale: 1; \ + description { \ + state: "default" 0.0; \ + min: 0 param_padding_size; \ + fixed: 0 1; \ + visible: 0; \ + rel2.relative: 1.0 0.0; \ + align: 0.0 0.0; \ + } \ + } + +#define GENLIST_PART_PADDING_BOTTOM( param_padding_size ) \ + part { name: "elm.padding.bottom"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 param_padding_size; \ + fixed: 0 1; \ + visible: 0; \ + rel1.relative: 0.0 1.0; \ + align: 0.0 1.0; \ + } \ + } + +#define GENLIST_PART_PADDING_LEFT( param_padding_size ) \ + part { name: "elm.padding.left"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: param_padding_size 0; \ + fixed: 1 0; \ + visible: 0; \ + rel2.relative: 0.0 1.0; \ + align: 0.0 0.0; \ + } \ + } + +#define GENLIST_PART_PADDING_RIGHT( param_padding_size ) \ + part { name: "elm.padding.right"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: param_padding_size 0; \ + fixed: 1 0; \ + visible: 0; \ + rel1.relative: 1.0 0.0; \ + align: 1.0 0.0; \ + } \ + } + +#define GENLIST_PART_DISCLIP \ + part { name: "disclip"; \ + type: RECT; \ + description { state: "default" 0.0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + color: GENLIST_PART_DISCLIP_COLOR_INC; \ + } \ + } + +#define GENLIST_PART_FLIP \ + part { name: "elm.flip.content"; \ + clip_to: "disclip"; \ + type: SWALLOW; \ + mouse_events: 1; \ + scale: 1; \ + description { state: "default" 0.0; \ + visible: 0; \ + fixed: 1 1; \ + rel1 { \ + relative: 1.0 0.5; \ + to_x: "elm.padding.left"; \ + } \ + rel2 { \ + relative: 0.0 0.5; \ + to_x: "elm.padding.right"; \ + } \ + } \ + description { state: "flip_enabled" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } + +#define GENLIST_DESCRIPTION_FLIP_ENABLED \ + description { state: "flip_enabled" 0.0; \ + inherit: "default" 0.0; \ + visible: 0; \ + } + +#define GENLIST_PROGRAM_FLIP_1TEXT_1ICON \ + program { name: "flip_enabled"; \ + signal: "elm,state,flip,enabled"; \ + source: "elm"; \ + action: STATE_SET "flip_enabled" 0.0; \ + target: "elm.text"; \ + target: "elm.icon"; \ + target: "elm.flip.content"; \ + } \ + program { name: "flip_disabled"; \ + signal: "elm,state,flip,disabled"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "elm.text"; \ + target: "elm.icon"; \ + target: "elm.flip.content"; \ + } + +#define GENLIST_PROGRAM_FLIP_2TEXT_1ICON \ + program { name: "flip_enabled"; \ + signal: "elm,state,flip,enabled"; \ + source: "elm"; \ + action: STATE_SET "flip_enabled" 0.0; \ + target: "elm.text.1"; \ + target: "elm.text.2"; \ + target: "elm.icon"; \ + target: "elm.flip.content"; \ + } \ + program { name: "flip_disabled"; \ + signal: "elm,state,flip,disabled"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "elm.text.1"; \ + target: "elm.text.2"; \ + target: "elm.icon"; \ + target: "elm.flip.content"; \ + } + +#define GENLIST_PROGRAM_FLIP_2TEXT_2ICON \ + program { name: "flip_enabled"; \ + signal: "elm,state,flip,enabled"; \ + source: "elm"; \ + action: STATE_SET "flip_enabled" 0.0; \ + target: "elm.text.1"; \ + target: "elm.text.2"; \ + target: "elm.icon.1"; \ + target: "elm.icon.2"; \ + target: "elm.flip.content"; \ + } \ + program { name: "flip_disabled"; \ + signal: "elm,state,flip,disabled"; \ + source: "elm"; \ + action: STATE_SET "default" 0.0; \ + target: "elm.text.1"; \ + target: "elm.text.2"; \ + target: "elm.icon.1"; \ + target: "elm.icon.2"; \ + target: "elm.flip.content"; \ + } + +/* for From popup Genlist */ +group { name: "elm/genlist/item/email.2text.3icon.3/default"; + alias: "elm/genlist/item_odd/email.2text.3icon.3/default"; + alias: "elm/genlist/item_compress/email.2text.3icon.3/default"; + alias: "elm/genlist/item_compress_odd/email.2text.3icon.3/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2"; + data.item: "contents" "elm.icon.1 elm.icon.2 elm.swallow.colorbar"; + data.item: "flips" "elm.flip.content"; + images { + image: "00_list_bar_press_1x80.png" COMP; + } + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_1LINE ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_SIZE_LEFT ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_SIZE_RIGHT ) + part { name: "elm.swallow.colorbar"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_10_INC GENLIST_SIZE_21_INC; + fixed: 1 1; + rel2.relative: 0.0 0.0; + align: 0.0 0.0; + } + } + part { name: "elm.icon.1"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_SIZE_60_INC GENLIST_SIZE_60_INC; + max: GENLIST_SIZE_60_INC GENLIST_SIZE_60_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + part { name: "elm.padding.icon1.right"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_10_INC 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon.1"; + } + rel2.to_x: "elm.icon.1"; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.icon.2"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_ICON_BIG_SIZE GENLIST_ICON_BIG_SIZE; + max: GENLIST_ICON_BIG_SIZE GENLIST_ICON_BIG_SIZE; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon1.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 1.0 0.0; + to_x: "elm.padding.icon1.right"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + part { name: "elm.padding.icon2.right"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_16_INC 0; + fixed: 1 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon.2"; + } + rel2.to_x: "elm.icon.2"; + align: 0.0 0.0; + visible: 0; + } + } + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_61_INC; + fixed: 0 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon2.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + align: 0.0 0.0; + color: GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR; + text { + font: "SLP:style=Roman"; + size: GENLIST_LIST_MAIN_TEXT_SIZE; + min: 0 1; + align: 0.0 0.5; + text_class: "list_item"; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon2.right"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + color: GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR; + text { + font: "SLP:style=Medium"; + size: GENLIST_FONT_32_INC; + min: 0 1; + align: 0.0 0.5; + text_class: "slp_medium"; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_LIST_SUB_TEXT_FOCUS_COLOR; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + GENLIST_PART_FLIP + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + //GENLIST_PROGRAM_AFTER_PLAY_BUTTON_PRESS + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + GENLIST_PROGRAM_FLIP_2TEXT_2ICON + //GENLIST_PROGRAM_PLAY_BUTTON_PRESS + } +} + +/* For Gal photo Genlist */ +group { name: "elm/genlist/item/email.2text.1icon/default"; + alias: "elm/genlist/item_odd/email.2text.1icon/default"; + alias: "elm/genlist/item_compress/email.2text.1icon/default"; + alias: "elm/genlist/item_compress_odd/email.2text.1icon/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text.1 elm.text.2"; + data.item: "contents" "elm.icon"; + data.item: "flips" "elm.flip.content"; + images { + image: "00_list_bar_press_1x80.png" COMP; + } + styles { + style { + name: "genlist_style_list_main_text_unread"; + base: "font=SLP:style=Regular font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color="GENLIST_LIST_MAIN_TEXT_UNREAD_COLOR_STYLE" text_class=list_item ellipsis=1.0"; + TEXTBLOCK_TAG + } + + style { name: "genlist_style_list_main_text_focus"; + base: "font=SLP:style=Regular font_size="GENLIST_LIST_MAIN_TEXT_SIZE" color="GENLIST_LIST_MAIN_TEXT_FOCUS_COLOR_STYLE" text_class=list_item ellipsis=1.0"; + TEXTBLOCK_TAG + } + + style { name: "genlist_style_list_sub_text_default"; + base: "font=SLP:style=Medium font_size="GENLIST_LIST_SUB_TEXT_SIZE" color="GENLIST_LIST_SUB_TEXT_DEFAULT_COLOR_STYLE" ellipsis=1.0"; + TEXTBLOCK_TAG + } + style { name: "genlist_style_list_sub_text_focus"; + base: "font=SLP:style=Medium font_size="GENLIST_LIST_SUB_TEXT_SIZE" color="GENLIST_LIST_SUB_TEXT_FOCUS_COLOR_STYLE" ellipsis=1.0"; + TEXTBLOCK_TAG + } + } + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_SIZE_LEFT ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_SIZE_RIGHT ) + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + align: 1.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + part { name: "elm.padding.icon.left"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_16_INC 0; + fixed: 1 0; + rel1.to_x: "elm.icon"; + rel2 { + relative: 0.0 1.0; + to_x: "elm.icon"; + } + align: 1.0 0.0; + visible: 0; + } + } + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_61_INC; + fixed: 1 1; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.icon.left"; + to_y: "elm.padding.top"; + } + align: 0.0 0.0; + text { + style: "genlist_style_list_main_text_unread"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + text.style: "genlist_style_list_main_text_focus"; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + fixed: 1 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.icon.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.0; + text { + style: "genlist_style_list_sub_text_default"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + text.style: "genlist_style_list_sub_text_focus"; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + GENLIST_PART_FLIP + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + GENLIST_PROGRAM_FLIP_2TEXT_1ICON + } +} + +group { name: "elm/genlist/item/email.1text.1icon/default"; + alias: "elm/genlist/item_odd/email.1text.1icon/default"; + alias: "elm/genlist/item_compress/email.1text.1icon/default"; + alias: "elm/genlist/item_compress_odd/email.1text.1icon/default"; + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + data.item: "texts" "elm.text"; + data.item: "contents" "elm.icon"; + data.item: "flips" "elm.flip.content"; + images { + image: "00_list_bar_press_1x80.png" COMP; + } + parts { + GENLIST_PART_BASE( GENLIST_HEIGHT_129_INC ) + GENLIST_PART_BG_IMAGE + GENLIST_PART_BOTTOM_LINE + GENLIST_PART_PADDING_TOP( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_BOTTOM( GENLIST_PADDING_10_INC ) + GENLIST_PART_PADDING_LEFT( GENLIST_PADDING_SIZE_LEFT ) + GENLIST_PART_PADDING_RIGHT( GENLIST_PADDING_SIZE_RIGHT ) + part { name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: 0.0 1.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 0.0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + align: 1.0 0.5; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + part { name: "elm.padding.icon.left"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: GENLIST_PADDING_16_INC 0; + fixed: 1 0; + rel1.to_x: "elm.icon"; + rel2 { + relative: 0.0 1.0; + to_x: "elm.icon"; + } + align: 1.0 0.0; + visible: 0; + } + } + part { name: "elm.text"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 GENLIST_SIZE_61_INC; + fixed: 1 1; + rel1 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + to_x: "elm.padding.icon.left"; + to_y: "elm.padding.bottom"; + } + align: 0.0 0.0; + text { + style: "genlist_style_list_main_text_unread"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + text.style: "genlist_style_list_main_text_focus"; + } + GENLIST_DESCRIPTION_FLIP_ENABLED + } + GENLIST_PART_FLIP + GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + GENLIST_PROGRAM_FLIP_1TEXT_1ICON + } +} + diff --git a/composer/theme/email-composer-view.edc b/composer/theme/email-composer-view.edc index 7f432d1..f845ffc 100755 --- a/composer/theme/email-composer-view.edc +++ b/composer/theme/email-composer-view.edc @@ -48,4 +48,5 @@ collections { } #include "email-composer-layouts.edc" + #include "email-composer-genlist.edc" } diff --git a/composer/ug-email-composer-efl.xml b/composer/ug-email-composer-efl.xml index ffe86fc..102755e 100755 --- a/composer/ug-email-composer-efl.xml +++ b/composer/ug-email-composer-efl.xml @@ -7,14 +7,9 @@ - - - - - diff --git a/images/B15_double_tap_02.png b/images/B15_double_tap_02.png new file mode 100755 index 0000000000000000000000000000000000000000..289e9080f2c5514a713456ec8359b0ebcb8a13ef GIT binary patch literal 28446 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 literal 0 HcmV?d00001 diff --git a/images/M02_button_expand.png b/images/M02_button_expand.png new file mode 100755 index 0000000000000000000000000000000000000000..32ae2b5a180dd9effc0d364af3ebc9faaa29b629 GIT binary patch literal 3845 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 delta 329 zcmbOw_fLGoey(~(O-~ockcwMxZe7f6HV|ojSiF|+07uUOuAEC#tsFOVD!1?&Io){h zrPV7`NK>sVb;W<}k15LndDWy8&mDmsAx(QdV*1LF2J^Vk+v}H^4hfu*weuu)HfdcxIo~`28cE9dU+xFUT zwXwPU=WliQZ&h)~+rj&{k9ot>Q_sHH^BlPLL6T$o*0%->_oEM|EBL4$i^>vxA#d~c z_#E4M7oADR*jFDeSd#kT_0$jk0)DP>cf9r_y0%<K{KwO|8$pUaUHx3vIVCg!09XuzAOHXW diff --git a/images/M02_button_expand_press.png b/images/M02_button_expand_press.png new file mode 100755 index 0000000000000000000000000000000000000000..6df4ece04277fe0d0628e24e41100c1a5250a7a5 GIT binary patch literal 3833 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 literal 0 HcmV?d00001 diff --git a/images/M02_email_Flag_Clear.png b/images/M02_email_Flag_Clear.png old mode 100644 new mode 100755 index 3db2b9095ff7767e51387d2bf3f4a58d3dee123d..8d0887140871b6a8ba12785ff0c99e0d4f498032 GIT binary patch delta 1319 zcmV+?1=#wh9n>GNzY2c@|4BqaRCwC#nq5y5Ss2Iv#}1tiWlG;WOWjH_*>OV%E|hHB zgbQ9O0X2{iuKY570OPH9@B!q)1TQw+?cUT~QWUd_vx;EEI_(w;9q6m&?1g7o)~Kt< zRB7f(PTF*4PWzkxob#OLe@ZB&Xy!PBCJz(P1T+CnKoigeGy#8`IJo0pNC$g90 zS_^ea8TFF#3tZg##ckU<#lB zV3+mb0bpaFrzn4=1;ZZE@$vD!&d$#Bw{G3a0tm3X?_z*u)@q*!rpEz*DrSwksNqig)hZ$$x2ovMlpsV`JW)o*thd2oJAa zySDUImTG$NJdb=nzt+*w@slJ;oT{pCjx$R}B9XRuJnjpHLM~AhwWW6Afna|y$niYCQLR=VPEJn#{nZ!SdL)xc zT)1!n0F*!=@Utw-yrL+TPZ?t)BO_8*SC>@~gw&NQSN{B_s)?hqyu6G^B$CZ!GOzpl z`#t{$I6Xb>jz*)tU@-V>W@hG(Z@wN}Sy@4;R6@C2Ub9-QXJlFCKL$52FyM7K97`J; z8-{Dnhu~>djr_)at78XuVMXx9ds?{oN zHru)&2$tU7Ug7BRa5!x3>+5sYYPG)#g~Id2#YH5O$qezgIf%t#c12Mr0RQ^>`hVa~t!;Sk-aYvJ{!+bOe|7QVMF*?SB>;bI zXmA(;sH!Tm*(?M>P>xs|b>_64en0?NTwDYpSzc6JI= zQ&TRcVrSC;>MC*^_dFO33X&up0I(85&NT&~uA31}Yznt&#t d3D~^x&j1aT^sdiLQpx}T002ovPDHLkV1jHBhWY>i delta 1015 zcmV5E>B*|@80_1`8Ez1mmHqZ`-!|lz@&B0>>h92TYcXxL`?Q}XuJRYAIhVfOk zS{)S%1x(ZA`1qLf^Ye(~IF&>qQOf7@SF5Y5L&GqHrfFBRHC)#XS(c?Vo6U%6n$gS4 z%gA6b7)+YisLP*qxo7`10~{cw=LuKR3W$ulHFhl?ojk97LMUrrm0_ejbm< zj7FoxWHKowlgVeLQYloc)rN*)2vt?@+@#;{FIbkP9336SFD@>k|FTZIz+Zp>mQ+=Z zRVtNftyX(gEEcsA91+MbCgw zr0o(9%#s@LA+RXdc?p>B#HzhP8#3Y8{}F5v$jSGozz@J5@6?OFK?d--eENUi^N!^K z6?g?4yjR`CEwX?nuyhZ=j69CN0pC8Qe(+eX8NGi4E(?4&Z@75?UIMMRWYmRKL%`R589EJRO`8Ea z5^n4@pfbm`Pl4w^^5o=X+-|oGRaHCHY86e>o_qvnQ8a(NG`P#DjmSg+T819&~!&@@d?r_&Q5M77uJVcWKE0Ix?I<#O4L#bOB{=fz$0 z^4FyX&{0)Y&t|g%crhFfeFZpcr_^$}>_%@Qk*E+N=QqG6&;=HkmX?GNV#RNO$W|#{ zE|;%jv6#BIxA($tfDPaR&`YI~o6F^lr)swEx{Dv>^Z8{7>pMVOcK#tbo0*$J!QUwZ lzyL4+3;+Yb0MNhsX8`r&a`v~z@8AFc002ovPDHLkV1h7R@VNj0 diff --git a/images/M02_email_icon_favorite_off.png b/images/M02_email_icon_favorite_off.png old mode 100644 new mode 100755 index a71e9f8e8407eb3dcb7d44d42eb7c387c964652f..7986bbe8ba2b88cb305bca0df633492f2e759aa9 GIT binary patch delta 812 zcmV+{1JnHZ8M_-HiBL{Q4GJ0x0000DNk~Le0000u0000u2nGNE0H}sL9x3V-HF zL_t(|+U%NNWR+nUz<;$w9AcC)mQr?+v6N9aMM|lg(nXrG6e%S(J508n{UfrjB2q*| ziipuww!SB!jg3)yTGLCzzg|u7Bk8x4=i>MJ#}Ufq~irR*)#%1ug++fDgd0W^&O2 zFtX;_)3#tCEH3Lw z3(()_7VImFy>h*wwr1Lb8+>_-I=IOV7Q%wlkS=-!=tywhePBl;y69j+D}U??uG~;A zdQR=C;70p{OGgKck*c)=Z9pfm6X*txS2)f7kf+W9%fMWCU8qa4JvBAe3UsZ}?f}yn zFzsx_=sF6&)EFDXLF00ynRoR+po06QiS}_tcju!+ldvs!KK5 z2TP^Wb>LY_G4};HQE4Zj;*GvkD&0~a*4c8i!E%dr$z;aH#)j0PI>CJkF}GCLRBe2G z{GocM#&93hv+D0ua?y#2iKpr{b+ra?uhom{O4{YpE8te-1!V^41%FnnohVjcbTu;I zN@hCS0k9`B;L&CWYzqnYk1TYycZBjOw)AAhg55PLrFwvOSpe*zHgY%TdO>`ZK{b1$A$#UA1Dd*pi?x^9DEw+zFMy3*Z1S04!~CZC9!mR6Et} z|9QGI>LK;Ax={AnAAj|+x-V2F|I0PI((a44uQT=uI0l>#HQYwB3=9Q}J^}tDn7^(T zY+v&<->XML-8NfcV!f!|Q}=}a&vF=VOS|#A5Mt>K@H4`q_X{Wjg3IbaT$1LlA^V8hDa0RT&&+h`0oViW)X002ovPDHLkU;%=#etgIP delta 616 zcmV-u0+;=}8~GU_iBL{Q4GJ0x0000DNk~Le0000W0000W2nGNE0CReJ^synI3V$R? zL_t(|+U(a$h>c+w2k_q+%(!KSj9kVgO|G+>jVLxEQZlHKjFfUIMcJ?-VNEuZjo4VY z?JSfe!juh@QX;nnBAUj`G{$H1OiibAX3qJ}nK>K(I(@zG`QG>Wzt8zU|K~lKBuP{f zRVs{%6Bs{qu%~rLvFq2P4QKJXn16-WuHPs*150 z3($nEY4%G?U=vmk8E3Eyi^qb%q)2~l)_hZla?}Z|!G=5))rQ%lNuU-jsL%6#b7&!* z51+sk1vEq&=Y+~@Fn=M46@o?_ zMS}kL^x!ML<1Mb>K`sIf*qqi>vXF_4RL4PP#{4w&=F`AIoI&3xS^oG(>RG=B?f_PT@<6z<+TM zhww735eV!#(;DcJ~DTfu;V^t2%7zy*kIm<#|VTugYVdY4~ z3n8!oGg3NXW3=yrn^7(-kJDtMJ5>G-8?hqCJ9A@gS6Tv9(H|ye%|F6b+=>R%9Cv}8 z(ZmKZFUB9!5||vDWTFx}qm$ji`z)vH#Lc)XZo~A@P6IkhAs{wy$35-n>ABDsR@;Hg zIE=NWY9PV=IQ88k>i=nEs3jU)ex?5Zb6RNv{{{frbZaB2^~vi10000w3V#CF zNkldLVvda#t^3K-s?qp?0-P}xfgBl{!O4i=s6fgm}oK= z(V-jY5Y5%)UcKGXAsk4+NQ2yKfee@UyiDb1-QthhDBFuIO?wiiJa%XGNYch}GzRO|x3B?5z)&10> z&Pz4L0#F5ByHE(c18xDk-sz%$?&4dZ7g#h1w*uVoUijS$lU>8!+kf$gvb_hGH4J## zAAsT-U_vWyn||@4DHP=v*QULe4O9A;qDFUk1>pq3 z7($_LZX4k_!cpCsRCAlGk@i~IPBy9j&masVthETkitb7Vv|_MbH=pzq;0J_Lx^K(3 z*%B2ICJ_!JJk#JHB)k@W3&0ex3~U+LIZMC{@B}yq#5yDV26Tjf1PTE|zz{G53;{#H cE*`%J02HTN6U6+j#sB~S07*qoM6N<$g1^3U@Bjb+ delta 1262 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 literal 0 HcmV?d00001 diff --git a/images/M02_email_icon_popup_advanced_press.png b/images/M02_email_icon_popup_advanced_press.png new file mode 100755 index 0000000000000000000000000000000000000000..1f345f6afb6872ef2629489da0633031d47286c8 GIT binary patch literal 3313 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 literal 0 HcmV?d00001 diff --git a/images/M02_email_icon_popup_date_press.png b/images/M02_email_icon_popup_date_press.png new file mode 100755 index 0000000000000000000000000000000000000000..7c883bf4a6287fb871ea0196a51d47c820600cf5 GIT binary patch literal 3595 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 R&9?vm002ovPDHLkV1jaApZEX( literal 0 HcmV?d00001 diff --git a/images/M02_email_icon_popup_sender_press.png b/images/M02_email_icon_popup_sender_press.png new file mode 100755 index 0000000000000000000000000000000000000000..c9216119a9215688c6a85addcbdd9d885830337e GIT binary patch literal 3717 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 Bf;IpE literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_Aleadsymbol_press.png b/images/M02_rich_text_bar_Aleadsymbol_press.png new file mode 100755 index 0000000000000000000000000000000000000000..c6defea3f6cb78a5faa9ac3f0208379a2ae55a64 GIT binary patch literal 2966 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 M07*qoM6N<$f>bzu$N&HU literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_Indent_press.png b/images/M02_rich_text_bar_Indent_press.png new file mode 100755 index 0000000000000000000000000000000000000000..e4447df5acabc30f0c08f4eb06e26760aa6864d5 GIT binary patch literal 3165 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 literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_align_all_center.png b/images/M02_rich_text_bar_align_all_center.png new file mode 100755 index 0000000000000000000000000000000000000000..67665d1063003e5e26b20b106deffacdc4e7508d GIT binary patch literal 2918 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 LGo4z9bJTwUuuWV_ literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_align_all_center_press.png b/images/M02_rich_text_bar_align_all_center_press.png new file mode 100755 index 0000000000000000000000000000000000000000..1aa711798d4890ae276a3eb2ac87698dcc5ee28b GIT binary patch literal 2913 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 LNkvXXu0mjfgcMiy literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_align_center.png b/images/M02_rich_text_bar_align_center.png new file mode 100755 index 0000000000000000000000000000000000000000..180a8833096a2c10d824c298f21a7b94eeda0191 GIT binary patch literal 2937 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 literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_align_center_press.png b/images/M02_rich_text_bar_align_center_press.png new file mode 100755 index 0000000000000000000000000000000000000000..94e73137f3ec174b5d7ab7b966c09cf46e395c5e GIT binary patch literal 2942 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 b|NjF3k6tZxQJXu|00000NkvXXu0mjf+j?S{ literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_align_left_press.png b/images/M02_rich_text_bar_align_left_press.png new file mode 100755 index 0000000000000000000000000000000000000000..49ca62af84a10bb29c3e8c647cb434a549180fb2 GIT binary patch literal 2930 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 literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_bold_press.png b/images/M02_rich_text_bar_bold_press.png new file mode 100755 index 0000000000000000000000000000000000000000..cf8409077a6fa6a7c8ecd1f275f1d84ad625226f GIT binary patch literal 3173 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 LNkvXXu0mjfvINwu literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_btn_01_press.png b/images/M02_rich_text_bar_btn_01_press.png old mode 100644 new mode 100755 index 33eecd68a05ebe149fc0dbfa3db38ec63a60b531..95e8421047c8becff33b292b63f644bff1e191a1 GIT binary patch delta 2491 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 VEYf6AOGy9#002ovPDHLkV1m=>0mA?Q diff --git a/images/M02_rich_text_bar_btn_02_press.png b/images/M02_rich_text_bar_btn_02_press.png old mode 100644 new mode 100755 index 46c33f1366eff5ace5b1576256dcf85353e9dcc9..303c940a245cce26a606aa1efd8d823f16b8c10b GIT binary patch delta 532 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 literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_fontcolor.png b/images/M02_rich_text_bar_fontcolor.png old mode 100644 new mode 100755 index 9aecb6f70daa3e0e00bbda856892999f724edb78..19192a7c77f351f780654e3cff17ccb540a31871 GIT binary patch delta 506 zcmdlhxn6R^0j~O6o-U3d6}R5ZdYId6AkZowD6XJ9K`^3GG@@~#l~bgma*JR>i$T-x zY+_mV&@2TnymuAjp zjQK7jwAs;jrs7-%=CXCw?kBf2X1BWu8s9Ce_gKbcu7vNxkyVdVo8|u@u|njSbfv? z4<|Y3<=qjVZ*N=obc^Jth?5Oo5%nwXH7iZ1a@AYE;A;95pVykpqMuz!S^U!Zj@!BG zM?Ceur5>JMznFib)XsaG%Z098k+RcOID6`L>gid1p1~TcF3nC}yK(ZLE z)W?`^I>#7Oyl!s!q@^dybbjn8-_xD6W^2NqV~rdfEey==jr@pVJSl51Flay_F}U_3P?awi-+?#h!fPiV9zx^2@<6)_A#^w6FXl^P+`n zenlJgrT5hf)plGt(c8G!JkfXU!^=!XaTUAQL|!(`9Fpm73*}D z)tx;N6l2=;N~UU)prTogs_4~XCkZXy`-;sm{~piOnv^-``weBkb>~D>C0}~_F`PN} z@q*5}Y9>jgdwM7Go|b=7j6L9PA~;>bYPI&s_Le=zl^?C)tpBwBy|d>eNwcW05;wn0 zlw7ViGtT4vZ+ZQFyeHB$9E~)eetHw2&g(x(%HxD*oX{LwEsKX+j;(2X@ZT92;$}w; zzcwC|xVk81t?3y7uQrEGthF4*XpsTtuIhi!$nbuK$6wnid`%2M;OXk;vd$@iu?YYg C-036$ diff --git a/images/M02_rich_text_bar_fontcolor_press.png b/images/M02_rich_text_bar_fontcolor_press.png new file mode 100755 index 0000000000000000000000000000000000000000..752355f425b938d3bc69d711cc3cc165c6bf1cf1 GIT binary patch literal 3226 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 DSXk-E literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_fontsize.png b/images/M02_rich_text_bar_fontsize.png new file mode 100755 index 0000000000000000000000000000000000000000..6e3cb3ae68a51b1ed42d7d183641878d3180522a GIT binary patch literal 3408 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 Vx^70%hFyXRbTy4Ms$ure{s*|HM_!0{&v$ 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 LbKN?K(~JKA0($iD literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_insert_press.png b/images/M02_rich_text_bar_insert_press.png new file mode 100755 index 0000000000000000000000000000000000000000..3dbee48511e64951d5440a09eb170e9ffd4eb07c GIT binary patch literal 3223 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 JPDHLkV1jla`icMm literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_italic_press.png b/images/M02_rich_text_bar_italic_press.png new file mode 100755 index 0000000000000000000000000000000000000000..a31a5290e76df261d376be72eabbe4b0d576d840 GIT binary patch literal 3013 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 Hu0mjf?YoPN literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_numbering_press.png b/images/M02_rich_text_bar_numbering_press.png new file mode 100755 index 0000000000000000000000000000000000000000..83cfa03c87dff75d23917870e04d966179e5ff4a GIT binary patch literal 3148 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 LNkvXXu0mjf5Re|q literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_redo_press.png b/images/M02_rich_text_bar_redo_press.png new file mode 100755 index 0000000000000000000000000000000000000000..d9d0d5cb3014f1de58f43140c302d7e73f557d95 GIT binary patch literal 3463 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 Z1An>QF$)E+EdMPX(A6~3z(8!n{|BNyfA|0Z literal 0 HcmV?d00001 diff --git a/images/M02_rich_text_bar_underline_press.png b/images/M02_rich_text_bar_underline_press.png new file mode 100755 index 0000000000000000000000000000000000000000..4e63ff753bf6d5771dd03f02d95dea3e12aeed0d GIT binary patch literal 3120 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 literal 0 HcmV?d00001 diff --git a/mailbox/CMakeLists.txt b/mailbox/CMakeLists.txt index 8c179a6..0fd91a8 100755 --- a/mailbox/CMakeLists.txt +++ b/mailbox/CMakeLists.txt @@ -24,8 +24,8 @@ INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/include) INCLUDE(FindPkgConfig) pkg_check_modules(pkgs-mailbox REQUIRED appcore-efl ui-gadget-1 - elementary email-service glib-2.0 edbus bundle dlog capi-system-sensor - syspopup-caller capi-appfw-application status) + elementary email-service glib-2.0 edbus bundle dlog + capi-appfw-application status) FOREACH(flag ${pkgs-mailbox_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") @@ -45,9 +45,7 @@ ENDIF("${ARCH}" STREQUAL "arm") ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") ADD_DEFINITIONS("-DDEBUG") -#ADD_DEFINITIONS("-D__NEW_UX__") ADD_DEFINITIONS("-D_POPUP_WITH_LIST") -#ADD_DEFINITIONS("-D__TIZEN_BETA__") ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) TARGET_LINK_LIBRARIES(${PROJECT_NAME} email-common ${pkgs-mailbox_LDFLAGS}) @@ -61,8 +59,4 @@ ADD_DEPENDENCIES(${PROJECT_NAME} email-mailbox-theme.edj) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR}) INSTALL(FILES ${CMAKE_MAILBOX_BINARY_DIR}/email-mailbox-theme.edj DESTINATION ${EDJDIR}) -#INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/images DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.png") - -# i18n -#ADD_SUBDIRECTORY(po) diff --git a/mailbox/include/email-mailbox-list.h b/mailbox/include/email-mailbox-list.h index 709315f..bf2c742 100755 --- a/mailbox/include/email-mailbox-list.h +++ b/mailbox/include/email-mailbox-list.h @@ -46,7 +46,6 @@ void mailbox_make_unread_mail_list(void *data); void mailbox_make_attachment_mail_list(void *data); void mailbox_make_important_mail_list(void *data); void mailbox_make_priority_mail_list(void *data); -void mailbox_make_meeting_request_mail_list(void *data); void _make_account_mail_list(void *data); gint _compare_sort_rule_by_viewtype(gconstpointer a, gconstpointer b); void _update_item_in_view_cb(void *data, Ecore_Thread *thd, void* msg_data); diff --git a/mailbox/include/email-mailbox.h b/mailbox/include/email-mailbox.h index 42bae85..27dbe1a 100755 --- a/mailbox/include/email-mailbox.h +++ b/mailbox/include/email-mailbox.h @@ -43,8 +43,6 @@ #include #include -#include - #define MAILBOX_PACKAGE "email-mailbox" #define EDJ_PATH EDJDIR @@ -121,7 +119,6 @@ typedef struct { gint reply_flag; gint forward_flag; gint followup_flag; - gint meeting_request; time_t absolute_time; Elm_Object_Item *item; } list_data; @@ -144,7 +141,6 @@ typedef enum { VIEWBY_IMPORTANT, VIEWBY_ATTACHMENT, VIEWBY_PRIORITY, - VIEWBY_MEETING_REQUEST, VIEWBY_MAX, } EmailMailboxViewby; @@ -182,7 +178,6 @@ typedef enum { EMAIL_GROUP_READ, EMAIL_GROUP_FAVORITES, EMAIL_GROUP_ATTACHMENTS, - EMAIL_GROUP_MEETING_REQUEST, EMAIL_GROUP_OTHER, EMAIL_GROUP_PRIORITY_HIGH, EMAIL_GROUP_PRIORITY_NORMAL, @@ -196,11 +191,9 @@ typedef enum { EMAIL_VIEW_RECIPIENT, /* should display recipient list */ EMAIL_VIEW_UNREAD, /* should display only unread mail */ EMAIL_VIEW_IMPORTANT, /* Disply only important mail */ - EMAIL_VIEW_THREAD, /* Disply only thread mail */ EMAIL_VIEW_EDIT, /* Delete / Block / MoveTo */ EMAIL_VIEW_SEARCH, EMAIL_VIEW_PRIORITY, - EMAIL_VIEW_MEETING_REQUEST, EMAIL_VIEW_ATTACHMENTS, EMAIL_VIEW_MAX, } EmailMailboxViewType; @@ -258,7 +251,6 @@ struct ug_data { Evas_Object *prev_controlbar; Evas_Object *no_content; Evas_Object *no_content_sender; - Evas_Object *no_content_thread; Elm_Theme *theme; Elm_Object_Item *navibar_item[EMAIL_VIEW_MAX]; Evas_Object *navi_title_ly; @@ -271,14 +263,11 @@ struct ug_data { //Elm_Object_Item *edit_cancel_button; Evas_Object *folder_button; Evas_Object *update_button; - Evas_Object *thread_update_button; Evas_Object *sync_progress; Elm_Object_Item *delete_all_button; Evas_Object *ctxpopup; Evas_Object *motion_popup; GList *important_list; - sensor_h shake_handle; - sensor_h double_handle; Elm_Object_Item *date_tab; Evas_Object *selectioninfo_layout; Evas_Object *sub_layout[EMAIL_VIEW_MAX]; diff --git a/mailbox/src/email-mailbox-controlbar.c b/mailbox/src/email-mailbox-controlbar.c index ae4ff25..1b7b0f0 100755 --- a/mailbox/src/email-mailbox-controlbar.c +++ b/mailbox/src/email-mailbox-controlbar.c @@ -178,9 +178,6 @@ static void _block_mail_cb(void *data, Evas_Object *obj, void *event_info) mailbox_ugd->view_type = mailbox_ugd->previous_view; - if (mailbox_ugd->view_type == EMAIL_VIEW_THREAD) - mailbox_ugd->previous_view = EMAIL_VIEW_DATE; - edit_list = eina_list_free(edit_list); //evas_object_smart_callback_add(mailbox_ugd->searchbar_en, "focused", _searchbar_entry_focus_cb, mailbox_ugd); @@ -246,9 +243,6 @@ static void _markunread_mail_cb(void *data, Evas_Object *obj, void *event_info) mailbox_ugd->view_type = mailbox_ugd->previous_view; - if (mailbox_ugd->view_type == EMAIL_VIEW_THREAD) - mailbox_ugd->previous_view = EMAIL_VIEW_DATE; - edit_list = eina_list_free(edit_list); //evas_object_smart_callback_add(mailbox_ugd->searchbar_en, "focused", _searchbar_entry_focus_cb, mailbox_ugd); @@ -502,10 +496,6 @@ static void _gl_viewby_popup_sel(void *data, Evas_Object *obj, void *event_info) req->mailbox_ugd->sort_type = EMAIL_SORT_PRIORITY; mailbox_make_priority_mail_list(req->mailbox_ugd); break; - case VIEWBY_MEETING_REQUEST: - req->mailbox_ugd->sort_type = EMAIL_SORT_MEETING_REQUEST; - mailbox_make_meeting_request_mail_list(req->mailbox_ugd); - break; } evas_object_del(req->mailbox_ugd->viewby_popup); @@ -541,7 +531,6 @@ static void _radio_cb(void *data, Evas_Object *obj, void *event_info) static char *_gl_viewby_popup_text_get(void *data, Evas_Object *obj, const char *part) { viewby_req_t *req = (viewby_req_t *)data; - int type = GET_ACCOUNT_SERVER_TYPE(req->mailbox_ugd->account_id); char* ret = NULL; if (!g_strcmp0(part, "elm.text")) @@ -564,17 +553,11 @@ static char *_gl_viewby_popup_text_get(void *data, Evas_Object *obj, const char ret = g_strdup(_("IDS_EMAIL_OPT_READ_UNREAD")); break; case VIEWBY_IMPORTANT: - if(type == EMAIL_SERVER_TYPE_ACTIVE_SYNC) - ret = g_strdup(_("IDS_EMAIL_OPT_FLAG")); - else - ret = g_strdup(_("IDS_EMAIL_OPT_FAVOURITES")); + ret = g_strdup(_("IDS_EMAIL_OPT_FAVOURITES")); break; case VIEWBY_PRIORITY: ret = g_strdup(dgettext("sys_string", "IDS_COM_POP_PRIORITY")); break; - case VIEWBY_MEETING_REQUEST: - ret = g_strdup(_("IDS_EMAIL_OPT_MEETING_REQUEST")); - break; case VIEWBY_ATTACHMENT: ret = g_strdup(_("IDS_EMAIL_OPT_ATTACHMENTS")); break; @@ -619,10 +602,6 @@ static void _viewby_response_cb(void *data, Evas_Object *obj, void *event_info) case VIEWBY_PRIORITY: mailbox_make_priority_mail_list(mailbox_ugd); break; - case VIEWBY_MEETING_REQUEST: - mailbox_make_meeting_request_mail_list(mailbox_ugd); - break; - } */ evas_object_del(mailbox_ugd->viewby_popup); @@ -661,7 +640,6 @@ static void _viewby_cb(void *data, Evas_Object *obj, void *event_info) EmailMailboxViewby index = 0; for (; index < VIEWBY_MAX; index++) { viewby_req[index] = (viewby_req_t){index, NULL, mailbox_ugd}; - int type = GET_ACCOUNT_SERVER_TYPE(mailbox_ugd->account_id); switch(index) { @@ -675,15 +653,8 @@ static void _viewby_cb(void *data, Evas_Object *obj, void *event_info) ELM_GENLIST_ITEM_NONE, _gl_viewby_popup_sel, NULL); break; case VIEWBY_IMPORTANT: - if(mailbox_ugd->account_id != 0) - item = elm_genlist_item_append(genlist, &itc_popup, &viewby_req[index], NULL, - ELM_GENLIST_ITEM_NONE, _gl_viewby_popup_sel, NULL); - break; - case VIEWBY_PRIORITY: - case VIEWBY_MEETING_REQUEST: - if(type == EMAIL_SERVER_TYPE_ACTIVE_SYNC) - item = elm_genlist_item_append(genlist, &itc_popup, &viewby_req[index], NULL, - ELM_GENLIST_ITEM_NONE, _gl_viewby_popup_sel, NULL); + item = elm_genlist_item_append(genlist, &itc_popup, &viewby_req[index], NULL, + ELM_GENLIST_ITEM_NONE, _gl_viewby_popup_sel, NULL); break; case VIEWBY_UNKNOWN: case VIEWBY_MAX: @@ -721,9 +692,7 @@ void _create_controlbar(EmailMailboxUGD *mailbox_ugd) case EMAIL_VIEW_UNREAD: case EMAIL_VIEW_IMPORTANT: case EMAIL_VIEW_RECIPIENT: - case EMAIL_VIEW_THREAD: case EMAIL_VIEW_ATTACHMENTS: - case EMAIL_VIEW_MEETING_REQUEST: case EMAIL_VIEW_PRIORITY: mailbox_ugd->controlbar_btns = create_control_option(mailbox_ugd); break; @@ -821,20 +790,12 @@ static Evas_Object *create_control_option(EmailMailboxUGD *mailbox_ugd) elm_toolbar_item_append(control_bar, ICON_COMPOSE, _("IDS_EMAIL_SK_COMPOSE"), _compose_toolbar_clicked_cb, mailbox_ugd); - if (mailbox_ugd->view_type != EMAIL_VIEW_THREAD) { - elm_toolbar_item_append(control_bar, ICON_SORTBY, _("IDS_EMAIL_SK_SORT_BY"), - _viewby_cb, mailbox_ugd); - } + elm_toolbar_item_append(control_bar, ICON_SORTBY, _("IDS_EMAIL_SK_SORT_BY"), + _viewby_cb, mailbox_ugd); + + elm_toolbar_item_append(control_bar, ICON_DELETE_ALL, _("IDS_EMAIL_SK_DELETE_ALL"), + _delete_all_emails_cb, mailbox_ugd); - int type = GET_ACCOUNT_SERVER_TYPE(mailbox_ugd->account_id); - if (type == EMAIL_SERVER_TYPE_ACTIVE_SYNC && mailbox_ugd->mailbox_type == EMAIL_MAILBOX_TYPE_INBOX) { - elm_toolbar_item_append(control_bar, ICON_MORE, dgettext("sys_string", "IDS_COM_SK_MORE"), - _more_toolbar_clicked_cb, mailbox_ugd); - evas_object_event_callback_add(control_bar, EVAS_CALLBACK_MOUSE_DOWN, _mousedown_cb, NULL); - } else { - elm_toolbar_item_append(control_bar, ICON_DELETE_ALL, _("IDS_EMAIL_SK_DELETE_ALL"), - _delete_all_emails_cb, mailbox_ugd); - } elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar", control_bar); @@ -873,7 +834,7 @@ static Evas_Object *create_edit_control_option(EmailMailboxUGD *mailbox_ugd) g_delete_button = elm_toolbar_item_append(control_bar, ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), _delete_mail_cb, mailbox_ugd); - if (mbox_type != EMAIL_MAILBOX_TYPE_OUTBOX && mbox_type != EMAIL_MAILBOX_TYPE_DRAFT) + if (mailbox_ugd->mode != EMAIL_MAILBOX_MODE_ALL && mbox_type != EMAIL_MAILBOX_TYPE_OUTBOX && mbox_type != EMAIL_MAILBOX_TYPE_DRAFT) { g_move_button = elm_toolbar_item_append(control_bar, ICON_MOVE, dgettext("sys_string", "IDS_COM_BODY_MOVE"), _move_mail_cb, mailbox_ugd); diff --git a/mailbox/src/email-mailbox-item.c b/mailbox/src/email-mailbox-item.c index b8cc3fb..6e3680d 100755 --- a/mailbox/src/email-mailbox-item.c +++ b/mailbox/src/email-mailbox-item.c @@ -129,9 +129,6 @@ static void _mailbox_list_item_clicked(void *data, Evas_Object *obj, void *event { mailbox_ugd->view_type = mailbox_ugd->previous_view; - if (mailbox_ugd->view_type == EMAIL_VIEW_THREAD) - mailbox_ugd->previous_view = EMAIL_VIEW_DATE; - edit_list = eina_list_free(edit_list); //evas_object_smart_callback_add(mailbox_ugd->searchbar_en, "focused", _searchbar_entry_focus_cb, mailbox_ugd); //evas_object_smart_callback_add(mailbox_ugd->searchbar_en, "unfocused", _searchbar_entry_unfocus_cb, mailbox_ugd); @@ -246,11 +243,9 @@ void mailbox_process_move_mail(EmailMailboxUGD *mailbox_ugd) list_data *ld = eina_list_data_get(nth_list); /* save the mail-id to be moved */ - if (mailbox_ugd->previous_view == EMAIL_VIEW_THREAD || - mailbox_ugd->previous_view == EMAIL_VIEW_UNREAD || + if (mailbox_ugd->previous_view == EMAIL_VIEW_UNREAD || mailbox_ugd->previous_view == EMAIL_VIEW_IMPORTANT || mailbox_ugd->previous_view == EMAIL_VIEW_ATTACHMENTS || - mailbox_ugd->previous_view == EMAIL_VIEW_MEETING_REQUEST || mailbox_ugd->previous_view == EMAIL_VIEW_PRIORITY || mailbox_ugd->previous_view == EMAIL_VIEW_RECIPIENT || mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX || @@ -323,11 +318,9 @@ void mailbox_process_delete_mail(void* data, Ecore_Thread *thd) if (checked_count <= 0) return; /* if single mail view (not threaded view), */ - if (previous_view == EMAIL_VIEW_THREAD || - previous_view == EMAIL_VIEW_UNREAD || + if (previous_view == EMAIL_VIEW_UNREAD || previous_view == EMAIL_VIEW_IMPORTANT || previous_view == EMAIL_VIEW_PRIORITY || - previous_view == EMAIL_VIEW_MEETING_REQUEST || previous_view == EMAIL_VIEW_ATTACHMENTS || previous_view == EMAIL_VIEW_RECIPIENT || mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX || @@ -497,9 +490,6 @@ void _popup_response_delete_ok_cb(void *data, Evas_Object *obj, void *event_info mailbox_ugd->view_type = mailbox_ugd->previous_view; - if (mailbox_ugd->view_type == EMAIL_VIEW_THREAD) - mailbox_ugd->previous_view = EMAIL_VIEW_DATE; - //evas_object_smart_callback_add(mailbox_ugd->searchbar_en, "focused", _searchbar_entry_focus_cb, mailbox_ugd); //evas_object_smart_callback_add(mailbox_ugd->searchbar_en, "unfocused", _searchbar_entry_unfocus_cb, mailbox_ugd); diff --git a/mailbox/src/email-mailbox-list.c b/mailbox/src/email-mailbox-list.c index ec039f8..41d84ab 100755 --- a/mailbox/src/email-mailbox-list.c +++ b/mailbox/src/email-mailbox-list.c @@ -250,7 +250,7 @@ static void _get_more_clicked_cb(void *data, Evas_Object *obj, void *event_info) int new_slot_size = 0; int i = 0, j = 0; - if (g_get_more_progress_item || mailbox_ugd->view_type != EMAIL_VIEW_DATE || email_engine_get_eas_acc_exist_only() == TRUE) { + if (g_get_more_progress_item || mailbox_ugd->view_type != EMAIL_VIEW_DATE) { debug_log("is_get_more_button exists or download in progress"); return; } @@ -1016,11 +1016,10 @@ void mailbox_create_list_view(EmailMailboxUGD *mailbox_ugd) if ((mailbox_ugd->view_type == EMAIL_VIEW_DATE && mailbox_ugd->mode == EMAIL_MAILBOX_MODE_ALL - && email_engine_get_eas_acc_exist_only() == FALSE) + ) || (mailbox_ugd->view_type == EMAIL_VIEW_DATE && mailbox_ugd->mode == EMAIL_MAILBOX_MODE_MAILBOX - && EMAIL_SERVER_TYPE_ACTIVE_SYNC != GET_ACCOUNT_SERVER_TYPE(mailbox_ugd->account_id) && GET_MAILBOX_TO_GETMORE(mailbox_ugd->mailbox_id) > 0)) { @@ -1180,7 +1179,6 @@ static void _process_item_check_changed_cb(list_data *ld) static void _list_item_clicked(void *data, Evas_Object *obj, void *event_info) { debug_log(""); - gboolean b_thread_view = false; if (!event_info) { debug_log("event_info is NULL"); @@ -1211,15 +1209,8 @@ static void _list_item_clicked(void *data, Evas_Object *obj, void *event_info) } g_selected_item = it; - if (ld->mailbox_ugd->b_thread_list == true && ld->mailbox_ugd->view_type != EMAIL_VIEW_THREAD && ld->thread_count > 1 ) { - b_thread_view = TRUE; - } { - // fast double taps cause to tap the other email in all mail - if(ld->mailbox_ugd->view_type == EMAIL_VIEW_THREAD && ld->mailbox_ugd->thread_id != ld->thread_id) - return; - int id = ld->mail_id; email_mailbox_t *mbox = NULL; @@ -1405,7 +1396,6 @@ static int email_set_group(list_data *ld) #endif { case EMAIL_VIEW_DATE: - case EMAIL_VIEW_THREAD: group_index = email_get_group_title_str(ld->absolute_time, &ld->group_title, &ld->group_date); break; @@ -1453,19 +1443,6 @@ static int email_set_group(list_data *ld) ld->group_date = NULL; break; - case EMAIL_VIEW_MEETING_REQUEST: - if(ld->meeting_request == false){ - group_index = 0; - ld->group_title = g_strdup(_("IDS_EMAIL_BODY_OTHER")); - } - else - { - group_index = 1; - ld->group_title = g_strdup(_("IDS_EMAIL_BODY_MEETING_REQUEST")); - } - ld->group_date = NULL; - break; - case EMAIL_VIEW_IMPORTANT: if(ld->imp_sel == EMAIL_FLAG_NONE) { @@ -1571,7 +1548,6 @@ list_data *make_list_data(email_mail_list_item_t* mail_info, const EmailSearchDa ld->reply_flag = mail_info->flags_answered_field; ld->forward_flag = mail_info->flags_forwarded_field; ld->followup_flag = mail_info->flags_flagged_field; - ld->meeting_request = mail_info->is_meeting_request; //debug_log("preview_body: %s", mail_info->previewBodyText); /* datetime. */ @@ -2116,11 +2092,6 @@ void _mailbox_make_sorting_rule_list(EmailSortType sort_type, email_list_sorting sorting_rule_list[0].sort_order = EMAIL_SORT_ORDER_ASCEND; sorting_rule_list[0].force_boolean_check = true; break; - case EMAIL_SORT_MEETING_REQUEST: - sorting_rule_list[0].target_attribute = EMAIL_MAIL_ATTRIBUTE_MEETING_REQUEST_STATUS; - sorting_rule_list[0].sort_order = EMAIL_SORT_ORDER_DESCEND; - sorting_rule_list[0].force_boolean_check = false; - break; default: debug_error("INVALID sort_type."); break; @@ -2302,9 +2273,6 @@ void _edit_back_cb(void *data, Evas_Object *obj, void *event_info) mailbox_ugd->view_type = mailbox_ugd->previous_view; - if (mailbox_ugd->view_type == EMAIL_VIEW_THREAD) - mailbox_ugd->previous_view = EMAIL_VIEW_DATE; - if (GET_MAILBOX_TYPE(mailbox_ugd->mailbox_id) == EMAIL_MAILBOX_TYPE_OUTBOX) { mailbox_ugd->create_progress_part= true; debug_log("mailbox_ugd->view_type[%d]", mailbox_ugd->view_type); @@ -2315,15 +2283,7 @@ void _edit_back_cb(void *data, Evas_Object *obj, void *event_info) b_editmode = false; elm_object_disabled_set(mailbox_ugd->folder_button, EINA_FALSE); - if (mailbox_ugd->isRotate == true) { - email_rotate_landscape(mailbox_ugd); - /* - if (mailbox_ugd->current_rotmode == APP_DEVICE_ORIENTATION_270) - on_event(NULL, UG_EVENT_ROTATE_LANDSCAPE, NULL, mailbox_ugd); - else - on_event(NULL, UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN, NULL, mailbox_ugd); - */ - } else { + if (mailbox_ugd->isRotate == false) { elm_object_part_content_set(mailbox_ugd->search_layout, "searchbar", mailbox_ugd->searchbar_layout); edje_object_signal_emit(_EDJ(mailbox_ugd->search_layout), "show_searchbar", "search"); } @@ -2623,26 +2583,6 @@ void mailbox_make_priority_mail_list(void *data) return; } -void mailbox_make_meeting_request_mail_list(void *data) -{ - debug_log(""); - if (data == NULL) { - debug_log("data == NULL"); - return; - } - - EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data; - mailbox_ugd->gl[EMAIL_VIEW_MEETING_REQUEST] = mailbox_ugd->gl[mailbox_ugd->view_type]; - list_lock = false; - mailbox_ugd->previous_view = mailbox_ugd->view_type; - mailbox_ugd->view_type = EMAIL_VIEW_MEETING_REQUEST; - mailbox_ugd->navibar_item[EMAIL_VIEW_MEETING_REQUEST] = mailbox_ugd->navibar_item[mailbox_ugd->previous_view]; - - _refresh_mailbox(mailbox_ugd); - - return; -} - void _make_account_mail_list(void *data) { debug_log(""); @@ -3256,7 +3196,6 @@ gint _compare_sort_rule_by_viewtype(gconstpointer a, gconstpointer b) switch(type) { case EMAIL_VIEW_DATE: - case EMAIL_VIEW_THREAD: if(first_item->absolute_time > second_item->absolute_time) ret = (mailbox_ugd->sort_type == EMAIL_SORT_DATE_RECENT) ? -1 : 1; else if (first_item->absolute_time == second_item->absolute_time) @@ -3301,14 +3240,6 @@ gint _compare_sort_rule_by_viewtype(gconstpointer a, gconstpointer b) ret = 1; break; - case EMAIL_VIEW_MEETING_REQUEST: - if(first_item->is_attachment > second_item->is_attachment) - ret = -1; - else if (first_item->is_attachment == second_item->is_attachment) - ret = 1; - else - ret = 1; - break; } return ret; } diff --git a/mailbox/src/email-mailbox-noti-mgr.c b/mailbox/src/email-mailbox-noti-mgr.c index 2ab7e36..4f5de4d 100755 --- a/mailbox/src/email-mailbox-noti-mgr.c +++ b/mailbox/src/email-mailbox-noti-mgr.c @@ -102,9 +102,8 @@ void _delete_finish_cb(void* data, Ecore_Thread *thd) return; } delete_req_t *req = (delete_req_t *)data; - if(req->mailbox_ugd->view_type != EMAIL_VIEW_THREAD) { - _release_noti_Q_event(req->mailbox_ugd); - } + _release_noti_Q_event(req->mailbox_ugd); + FREE(req->msg_buf); FREE(req); debug_leave(); @@ -340,9 +339,7 @@ void _move_finish_cb(void* data, Ecore_Thread *thd) return; } move_req_t *req = (move_req_t *)data; - if(req->mailbox_ugd->view_type != EMAIL_VIEW_THREAD) { - _release_noti_Q_event(req->mailbox_ugd); - } + _release_noti_Q_event(req->mailbox_ugd); FREE(req->msg_buf); FREE(req); @@ -459,10 +456,7 @@ static void _edbus_event_mailbox_receive(void *local_data, DBusMessage *message) case NOTI_ACCOUNT_ADD: case NOTI_ACCOUNT_DELETE: debug_log("account added or deleted during pause status"); - if (get_eas_validation_started()) { - reset_eas_validation_started(); - break; - } + /* destroy all top ug and refresh all emails */ if (mailbox_ugd->ug_account) { destroy_account_cb(mailbox_ugd->ug_account, mailbox_ugd); @@ -478,17 +472,6 @@ static void _edbus_event_mailbox_receive(void *local_data, DBusMessage *message) debug_log("no account exists"); ug_destroy_me(mailbox_ugd->ug); } else { - if (subtype == NOTI_ACCOUNT_ADD) { - EmailAccountInfo *account_info = NULL; - if (email_engine_get_account_info(data1, &account_info)) { - if (account_info && account_info->receiving_type == EMAIL_SERVER_TYPE_ACTIVE_SYNC) { - debug_log("EAS account added, cancel sync header"); - break; - } - if (account_info) - email_engine_free_account_info(&account_info); - } - } if (list_lock) { debug_log("locked"); if (!evas_object_visible_get(mailbox_ugd->gl[view_type])) @@ -587,8 +570,8 @@ static void _edbus_event_mailbox_receive(void *local_data, DBusMessage *message) if (mailbox_ugd->mode == EMAIL_MAILBOX_MODE_ALL && mailbox_ugd->mailbox_type == mailbox_type) { if ( view_type == EMAIL_VIEW_DATE || view_type == EMAIL_VIEW_UNREAD || - view_type == EMAIL_VIEW_IMPORTANT || view_type == EMAIL_VIEW_MEETING_REQUEST || - view_type == EMAIL_VIEW_PRIORITY || view_type == EMAIL_VIEW_ATTACHMENTS) + view_type == EMAIL_VIEW_IMPORTANT ||view_type == EMAIL_VIEW_PRIORITY || + view_type == EMAIL_VIEW_ATTACHMENTS) { sync_req_t *req = MEM_ALLOC(req, 1); if(!req) return; @@ -612,8 +595,8 @@ static void _edbus_event_mailbox_receive(void *local_data, DBusMessage *message) { if (mailbox_ugd->mailbox_id == mailbox_id) { if ((view_type == EMAIL_VIEW_DATE || view_type == EMAIL_VIEW_UNREAD || - view_type == EMAIL_VIEW_IMPORTANT || view_type == EMAIL_VIEW_MEETING_REQUEST || - view_type == EMAIL_VIEW_PRIORITY || view_type == EMAIL_VIEW_ATTACHMENTS) && + view_type == EMAIL_VIEW_IMPORTANT || view_type == EMAIL_VIEW_PRIORITY || + view_type == EMAIL_VIEW_ATTACHMENTS) && mailbox_ugd->account_id == account_id && mailbox_ugd->mailbox_id == mailbox_id) { @@ -638,13 +621,6 @@ static void _edbus_event_mailbox_receive(void *local_data, DBusMessage *message) mailid = data2; int type = data4; - if(view_type == EMAIL_VIEW_THREAD) - { - noti_event *noti = MEM_ALLOC(noti, 1); - *noti = (noti_event){NOTI_MAIL_UPDATE, data1, data2, g_strdup(data3), data4}; - mailbox_ugd->noti_Q = g_list_prepend(mailbox_ugd->noti_Q, (gpointer)noti); - } - if(type == UPDATE_PARTIAL_BODY_DOWNLOAD) { list_data *ld = _find_mailinfo_by_mailid(mailid, mailbox_ugd->list_data[view_type]); if(ld) { @@ -722,25 +698,12 @@ static void _edbus_event_mailbox_receive(void *local_data, DBusMessage *message) if (email_check_account_list(data1)) { _remove_get_more_progress_item(mailbox_ugd); - if (EMAIL_VIEW_THREAD != mailbox_ugd->view_type) - { - if (mailbox_ugd->sync_progress == elm_object_part_content_get(mailbox_ugd->navi_title_ly, "right_btn")) - { - elm_object_part_content_unset(mailbox_ugd->navi_title_ly, "right_btn"); - evas_object_hide(mailbox_ugd->sync_progress); - elm_object_part_content_set(mailbox_ugd->navi_title_ly, "right_btn", mailbox_ugd->update_button); - evas_object_show(mailbox_ugd->update_button); - } - } - else + if (mailbox_ugd->sync_progress == elm_object_part_content_get(mailbox_ugd->navi_title_ly, "right_btn")) { - if (mailbox_ugd->sync_progress == elm_object_part_content_get(mailbox_ugd->navi_bar, "title_right_btn")) - { - elm_object_part_content_unset(mailbox_ugd->navi_bar, "title_right_btn"); - evas_object_hide(mailbox_ugd->sync_progress); - elm_object_part_content_set(mailbox_ugd->navi_bar, "title_right_btn", mailbox_ugd->thread_update_button); - evas_object_show(mailbox_ugd->thread_update_button); - } + elm_object_part_content_unset(mailbox_ugd->navi_title_ly, "right_btn"); + evas_object_hide(mailbox_ugd->sync_progress); + elm_object_part_content_set(mailbox_ugd->navi_title_ly, "right_btn", mailbox_ugd->update_button); + evas_object_show(mailbox_ugd->update_button); } } break; diff --git a/mailbox/src/email-mailbox-search.c b/mailbox/src/email-mailbox-search.c index 760ee97..2f9fef1 100755 --- a/mailbox/src/email-mailbox-search.c +++ b/mailbox/src/email-mailbox-search.c @@ -438,8 +438,7 @@ void mailbox_finish_search_mode(EmailMailboxUGD *mailbox_ugd) elm_object_disabled_set(mailbox_ugd->folder_button, EINA_FALSE); mailbox_ugd->view_type = mailbox_ugd->previous_view; - if(mailbox_ugd->view_type == EMAIL_VIEW_THREAD) - mailbox_ugd->previous_view = EMAIL_VIEW_DATE; + list_lock = false; _update_navigationbar_title(mailbox_ugd); diff --git a/mailbox/src/email-mailbox-sweep.c b/mailbox/src/email-mailbox-sweep.c index f96ae22..045fbd6 100755 --- a/mailbox/src/email-mailbox-sweep.c +++ b/mailbox/src/email-mailbox-sweep.c @@ -209,10 +209,6 @@ static void _sweep_reply_cb(void *data, Evas_Object *obj, void *event_info) debug_log("mailbox_ugd->account_id: %d", ld->account_id); debug_log("ld->mail_id: %d", ld->mail_id); - /* fast double taps cause to tap the other email in all mail */ - if(ld->mailbox_ugd->view_type == EMAIL_VIEW_THREAD && ld->mailbox_ugd->thread_id != ld->thread_id ) - return; - email_mailbox_t *mbox = NULL; int e = email_get_mailbox_by_mailbox_id(ld->mailbox_id, &mbox); if (e != EMAIL_ERROR_NONE) { @@ -267,10 +263,6 @@ static void _sweep_forward_cb(void *data, Evas_Object *obj, void *event_info) debug_log("mailbox_ugd->account_id: %d", ld->account_id); debug_log("ld->mail_id: %d", ld->mail_id); - /* fast double taps cause to tap the other email in all mail */ - if(ld->mailbox_ugd->view_type == EMAIL_VIEW_THREAD && ld->mailbox_ugd->thread_id != ld->thread_id ) - return; - email_mailbox_t *mbox = NULL; int e = email_get_mailbox_by_mailbox_id(ld->mailbox_id, &mbox); if (e != EMAIL_ERROR_NONE) { diff --git a/mailbox/src/email-mailbox.c b/mailbox/src/email-mailbox.c index 86702ec..5c29727 100755 --- a/mailbox/src/email-mailbox.c +++ b/mailbox/src/email-mailbox.c @@ -21,7 +21,6 @@ #include #include -#include "syspopup_caller.h" #include "email-mailbox.h" #include "email-mailbox-controlbar.h" #include "email-mailbox-list.h" @@ -575,11 +574,7 @@ static void _mailbox_rotate_to_potrait(void *data, int angle) elm_object_item_part_content_unset(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar"); _create_controlbar(mailbox_ugd); - if (mailbox_ugd->view_type == EMAIL_VIEW_THREAD) - { - elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "controlbar", mailbox_ugd->controlbar_btns); - } - else if (mailbox_ugd->view_type == EMAIL_VIEW_EDIT) + if (mailbox_ugd->view_type == EMAIL_VIEW_EDIT) { elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->previous_view], "controlbar", mailbox_ugd->controlbar_btns); } @@ -592,7 +587,7 @@ static void _mailbox_rotate_to_potrait(void *data, int angle) if (!evas_object_visible_get(mailbox_ugd->navi_title_ly)) { debug_log("title is not visible, show title. view_type:%d, previous_view:%d", mailbox_ugd->view_type, mailbox_ugd->previous_view); - if (mailbox_ugd->view_type == EMAIL_VIEW_THREAD || mailbox_ugd->view_type == EMAIL_VIEW_EDIT) + if (mailbox_ugd->view_type == EMAIL_VIEW_EDIT) elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->previous_view], "title", mailbox_ugd->navi_title_ly); else elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->view_type], "title", mailbox_ugd->navi_title_ly); @@ -1218,7 +1213,7 @@ static void _create_all_emails_view(Evas_Object *parent, EmailMailboxUGD *mailbo /* download new mails */ _stop_emf_job(mailbox_ugd, mailbox_ugd->emf_handle, true); - if (mailbox_ugd->initial_run || email_engine_get_eas_acc_exist_only() == FALSE) { + if (mailbox_ugd->initial_run) { _sync_all_folder(mailbox_ugd); Evas_Object * sync_button = elm_object_part_content_get(mailbox_ugd->navi_title_ly, "right_btn"); if (sync_button == mailbox_ugd->update_button) @@ -1819,26 +1814,14 @@ static void _process_update(EmailMailboxUGD *mailbox_ugd) elm_object_focus_set(mailbox_ugd->gl[mailbox_ugd->view_type], EINA_TRUE); - if (EMAIL_VIEW_THREAD != mailbox_ugd->view_type) - { - if (mailbox_ugd->update_button == elm_object_part_content_get(mailbox_ugd->navi_title_ly, "right_btn")) + if (mailbox_ugd->update_button == elm_object_part_content_get(mailbox_ugd->navi_title_ly, "right_btn")) { elm_object_part_content_unset(mailbox_ugd->navi_title_ly, "right_btn"); evas_object_hide(mailbox_ugd->update_button); elm_object_part_content_set(mailbox_ugd->navi_title_ly, "right_btn", mailbox_ugd->sync_progress); evas_object_show(mailbox_ugd->sync_progress); - } - } - else - { - if (mailbox_ugd->thread_update_button == elm_object_part_content_get(mailbox_ugd->navi_bar, "title_right_btn")) - { - elm_object_part_content_unset(mailbox_ugd->navi_bar, "title_right_btn"); - evas_object_hide(mailbox_ugd->thread_update_button); - elm_object_part_content_set(mailbox_ugd->navi_bar, "title_right_btn", mailbox_ugd->sync_progress); - evas_object_show(mailbox_ugd->sync_progress); - } } + debug_leave(); } @@ -1959,8 +1942,6 @@ email_sort_type_t _mailbox_conv_sort_type(EmailSortType sort_type) email_svc_sort_type = EMAIL_SORT_FAVORITE_HIGH; else if (sort_type == EMAIL_SORT_PRIORITY) email_svc_sort_type = EMAIL_SORT_PRIORITY_HIGH; - else if (sort_type == EMAIL_SORT_MEETING_REQUEST) - email_svc_sort_type = EMAIL_SORT_FLAGGED_FLAG_HIGH; else if (sort_type == EMAIL_SORT_ATTACHMENTS) email_svc_sort_type = EMAIL_SORT_ATTACHMENT_HIGH; else diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt index b320b87..2ed2473 100755 --- a/main/CMakeLists.txt +++ b/main/CMakeLists.txt @@ -51,9 +51,7 @@ TARGET_LINK_LIBRARIES(${PROJECT_NAME} email-common ${CMAKE_LDFLAGS} ${pkgs-email INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${BINDIR}) -# install desktop file & icon -#CONFIGURE_FILE(${CMAKE_EMAIL_SOURCE_DIR}/${PKGNAME}.desktop.in ${CMAKE_EMAIL_BINARY_DIR}/${PKGNAME}.desktop) -#INSTALL(FILES ${CMAKE_EMAIL_BINARY_DIR}/${PKGNAME}.desktop DESTINATION /opt/share/applications) +# install xml file & icon INSTALL(FILES ${CMAKE_EMAIL_BINARY_DIR}/${PKGNAME}.xml DESTINATION /opt/share/packages) INSTALL(FILES ${CMAKE_EMAIL_SOURCE_DIR}/${PKGNAME}.png DESTINATION ${ICONDIR}) INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/images DESTINATION ${RESDIR} FILES_MATCHING PATTERN "*.png") @@ -61,5 +59,3 @@ INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/images DESTINATION ${RESDIR} FILES_MATCHIN # install ini file INSTALL(FILES ${CMAKE_EMAIL_SOURCE_DIR}/${PROJECT_NAME}.ini DESTINATION /usr/share/process-info) -# i18n -#ADD_SUBDIRECTORY(po) diff --git a/main/email.c b/main/email.c index d24a900..b7ac5dc 100755 --- a/main/email.c +++ b/main/email.c @@ -52,15 +52,12 @@ struct appdata { ui_gadget_h mailbox_ug; ui_gadget_h setting_ug; -// ui_gadget_h *passwd_ug; ui_gadget_h composer_ug; ui_gadget_h viewer_ug; }; gboolean _b_setting_opened = false; extern ui_gadget_h _g_mailbox_ug; -//extern int _g_b_in_terminating; -//extern int _g_b_on_pause; static bool app_create(void *data); static int app_terminate(void *data); @@ -74,7 +71,6 @@ static int app_region_changed(void *data); static Evas_Object *create_win(const char *name); static void win_del(void *data, Evas_Object *obj, void *event); -/*static Eina_Bool _email_ui_keydown_cb(void *data, int type, void *event);*/ static void launch_email_ug(service_h b, struct appdata *ad); static int check_app_svc_operation(service_h b, struct appdata *ad, gint account_id); static int check_aul_mime_operation(service_h b, struct appdata *ad); @@ -89,7 +85,6 @@ static void aul_destroy_cb(ui_gadget_h ug, void *priv); ui_gadget_h create_ug(char *ug_name, service_h bd, void *data); static int _email_main_rotation_cb(app_device_orientation_e m, void *data); -/*static Ecore_Event_Handler *key_down_handler = NULL;*/ static void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv) { @@ -324,8 +319,6 @@ static bool app_create(void *data) } ad->win_main = win; - /*key_down_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _email_ui_keydown_cb, ad);*/ - UG_INIT_EFL(ad->win_main, UG_OPT_INDICATOR_ENABLE); /* icu */ @@ -337,27 +330,13 @@ static bool app_create(void *data) static int app_terminate(void *data) { debug_log(""); - //struct appdata *ad = data; - //_g_b_in_terminating = 1; set_app_terminated(); - //email_close_icu_pattern_generator(); - email_engine_finalize_force(); int ret = e_dbus_shutdown(); debug_log("ret: %d", ret); -#if 0 - if (ad) { - if (ad->win_main) - evas_object_del(ad->win_main); - - free(ad); - ad = NULL; - } -#endif - debug_log(""); return 0; } @@ -414,24 +393,6 @@ static int app_reset(service_h b, void *data) ad->setting_ug = NULL; } - /*if (ad->mailbox_ug) { - debug_log("destroy mailbox_ug"); - ug_destroy(ad->mailbox_ug); - ad->mailbox_ug = NULL; - } - - if (ad->composer_ug) { - debug_log("destroy composer_ug"); - ug_destroy(ad->composer_ug); - ad->composer_ug = NULL; - } - - if (ad->viewer_ug) { - debug_log("destroy viewer_ug"); - ug_destroy(ad->viewer_ug); - ad->viewer_ug = NULL; - }*/ - email_clear_all_notification_bar(); launch_email_ug(b, ad); @@ -510,7 +471,6 @@ static Evas_Object *create_win(const char *name) eo = elm_win_add(NULL, name, ELM_WIN_BASIC); if (eo) { elm_win_title_set(eo, name); -// elm_win_borderless_set(eo, EINA_TRUE); evas_object_smart_callback_add(eo, "delete,request", win_del, NULL); ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); evas_object_resize(eo, w, h); @@ -525,29 +485,6 @@ static void win_del(void *data, Evas_Object *obj, void *event) elm_exit(); } -/*static Eina_Bool _email_ui_keydown_cb(void *data, int type, void *event) -{ - debug_log(""); - - if (data == NULL) { - elm_exit(); - } - - struct appdata *ad; - ad = (struct appdata *)data; - - Ecore_Event_Key *ev = event; - debug_log("%s:%s", ev->keyname, KEY_END); - - if (strcmp(ev->keyname, KEY_END) == 0) { - ecore_event_handler_del(key_down_handler); - set_app_terminated();//_g_b_in_terminating = 1; - elm_exit(); - } - - return ECORE_CALLBACK_RENEW; -}*/ - static void launch_email_ug(service_h b, struct appdata *ad) { debug_log(""); @@ -1011,10 +948,8 @@ static int check_aul_launch_operation(service_h b, struct appdata *ad) goto FINISH_AUL_LAUNCH; } - char livemagazine[10] = { 0, }; char internal[10] = { 0, }; - snprintf(livemagazine, sizeof(livemagazine), "%d", 0); snprintf(internal, sizeof(internal), "%d", 0); ret = service_get_extra_data(b, EMAIL_BUNDLE_KEY_ACCOUNT_ID, &account_id); @@ -1039,8 +974,6 @@ static int check_aul_launch_operation(service_h b, struct appdata *ad) debug_log("service_add_extra_data: %d", ret); ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, mailbox_id); debug_log("service_add_extra_data: %d", ret); - ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_LIVEMAGAZINE, livemagazine); - debug_log("service_add_extra_data: %d", ret); ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_INTERNAL, internal); debug_log("service_add_extra_data: %d", ret); diff --git a/main/org.tizen.email.xml b/main/org.tizen.email.xml index 1d8e5bc..91e9a11 100755 --- a/main/org.tizen.email.xml +++ b/main/org.tizen.email.xml @@ -1,4 +1,4 @@ - + Minsoo Kim Email Application @@ -11,7 +11,7 @@ - + @@ -35,14 +35,9 @@ - - - - - diff --git a/packaging/org.tizen.email.spec b/packaging/org.tizen.email.spec index 7e4dcc7..23993a8 100755 --- a/packaging/org.tizen.email.spec +++ b/packaging/org.tizen.email.spec @@ -41,11 +41,11 @@ BuildRequires: pkgconfig(mmutil-jpeg) BuildRequires: pkgconfig(mmutil-imgp) BuildRequires: pkgconfig(libmedia-service) BuildRequires: pkgconfig(libmedia-utils) +BuildRequires: pkgconfig(calendar) BuildRequires: pkgconfig(drm-client) -BuildRequires: pkgconfig(heynoti) -BuildRequires: pkgconfig(syspopup-caller) BuildRequires: pkgconfig(status) -BuildRequires: pkgconfig(capi-system-sensor) +BuildRequires: pkgconfig(capi-media-metadata-extractor) +BuildRequires: pkgconfig(capi-media-image-util) %description @@ -71,70 +71,70 @@ rm -rf %{buildroot} %post -/usr/bin/vconftool set -t int file/private/com.samsung.email/defaultaccount "1" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/slot_size "50" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/spam_rule_changed "0" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/threadlist "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/aol_sending_address "smtp.aol.com" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/aol_sending_port "587" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/aol_sending_ssl "0" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/aol_receiving_type "2" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/aol_receiving_address "imap.aol.com" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/aol_receiving_port "143" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/aol_receiving_ssl "0" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/gmail_sending_address "smtp.gmail.com" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/gmail_sending_port "465" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/gmail_sending_ssl "1" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/gmail_receiving_type "2" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/gmail_receiving_address "imap.gmail.com" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/gmail_receiving_port "993" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/gmail_receiving_ssl "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/yahoo_sending_address "smtp.mail.yahoo.co.kr" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/yahoo_sending_port "465" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/yahoo_sending_ssl "1" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/yahoo_receiving_type "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/yahoo_receiving_address "pop.mail.yahoo.co.kr" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/yahoo_receiving_port "995" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/yahoo_receiving_ssl "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/hotmail_sending_address "smtp.live.com" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/hotmail_sending_port "587" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/hotmail_sending_ssl "2" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/hotmail_receiving_type "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/hotmail_receiving_address "pop3.live.com" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/hotmail_receiving_port "995" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/hotmail_receiving_ssl "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/samsung_pop3_sending_address "165.213.73.235" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_pop3_sending_port "465" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_pop3_sending_ssl "1" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_pop3_receiving_type "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/samsung_pop3_receiving_address "165.213.73.235" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_pop3_receiving_port "995" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_pop3_receiving_ssl "1" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/samsung_imap4_sending_address "165.213.73.235" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_imap4_sending_port "465" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_imap4_sending_ssl "1" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_imap4_receiving_type "2" -g 6514 -/usr/bin/vconftool set -t string file/private/com.samsung.email/samsung_imap4_receiving_address "165.213.73.235" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_imap4_receiving_port "993" -g 6514 -/usr/bin/vconftool set -t int file/private/com.samsung.email/samsung_imap4_receiving_ssl "1" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/defaultaccount "1" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/slot_size "50" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/spam_rule_changed "0" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/threadlist "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/aol_sending_address "smtp.aol.com" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/aol_sending_port "587" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/aol_sending_ssl "0" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/aol_receiving_type "2" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/aol_receiving_address "imap.aol.com" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/aol_receiving_port "143" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/aol_receiving_ssl "0" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/gmail_sending_address "smtp.gmail.com" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/gmail_sending_port "465" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/gmail_sending_ssl "1" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/gmail_receiving_type "2" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/gmail_receiving_address "imap.gmail.com" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/gmail_receiving_port "993" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/gmail_receiving_ssl "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/yahoo_sending_address "smtp.mail.yahoo.co.kr" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/yahoo_sending_port "465" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/yahoo_sending_ssl "1" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/yahoo_receiving_type "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/yahoo_receiving_address "pop.mail.yahoo.co.kr" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/yahoo_receiving_port "995" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/yahoo_receiving_ssl "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/hotmail_sending_address "smtp.live.com" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/hotmail_sending_port "587" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/hotmail_sending_ssl "2" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/hotmail_receiving_type "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/hotmail_receiving_address "pop3.live.com" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/hotmail_receiving_port "995" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/hotmail_receiving_ssl "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/samsung_pop3_sending_address "165.213.73.235" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_pop3_sending_port "465" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_pop3_sending_ssl "1" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_pop3_receiving_type "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/samsung_pop3_receiving_address "165.213.73.235" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_pop3_receiving_port "995" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_pop3_receiving_ssl "1" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/samsung_imap4_sending_address "165.213.73.235" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_imap4_sending_port "465" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_imap4_sending_ssl "1" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_imap4_receiving_type "2" -g 6514 +/usr/bin/vconftool set -t string file/private/org.tizen.email/samsung_imap4_receiving_address "165.213.73.235" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_imap4_receiving_port "993" -g 6514 +/usr/bin/vconftool set -t int file/private/org.tizen.email/samsung_imap4_receiving_ssl "1" -g 6514 chown -R 5000:5000 /opt/apps/org.tizen.email/data mkdir -p /opt/ug/bin/ ln -sf /usr/bin/ug-client /opt/ug/bin/email-composer-efl + %files %defattr(-,root,root,-) %exclude %{_datadir}/process-info/email.ini %{_appdir}/org.tizen.email/lib/libemail-common.so %{_ugdir}/lib/libug-email-composer-efl.so -#%{_ugdir}/lib/libug-email-viewer-efl.so +%{_ugdir}/lib/libug-email-viewer-efl.so %{_ugdir}/lib/libug-email-account-efl.so %{_ugdir}/lib/libug-email-block-efl.so %{_ugdir}/lib/libug-email-mailbox-efl.so %{_ugdir}/lib/libug-email-setting-efl.so -%{_ugdir}/res/locale/*/LC_MESSAGES/* -#%{_appdir}/org.tizen.email/res/edje/email-viewer-theme.edj +%{_appdir}/org.tizen.email/res/edje/email-viewer-theme.edj %{_appdir}/org.tizen.email/res/edje/email-setting-theme.edj %{_appdir}/org.tizen.email/res/edje/email-block-theme.edj %{_appdir}/org.tizen.email/res/edje/email-account-theme.edj diff --git a/po/CMakeLists.txt b/po/CMakeLists.txt index d5434c9..d1723e1 100755 --- a/po/CMakeLists.txt +++ b/po/CMakeLists.txt @@ -1,6 +1,6 @@ # for i18n -SET(POFILES en.po nl_NL.po de_DE.po zh_HK.po zh_CN.po ru_RU.po ko_KR.po zh_TW.po ja_JP.po es_ES.po el_GR.po it_IT.po tr_TR.po pt_PT.po fr_FR.po ar.po bg.po ca.po cs.po da.po en_US.po fi.po hi.po hr.po hu.po lt.po lv.po pl.po ro.po sk.po sl.po sr.po sv.po uk.po az.po en_PH.po es_US.po et.po eu.po fr_CA.po ga.po gl.po hy.po is.po ka.po kk.po mk.po pt_BR.po zh_SG.po) +SET(POFILES en.po nl_NL.po de_DE.po zh_HK.po zh_CN.po ru_RU.po ko_KR.po zh_TW.po ja_JP.po es_ES.po el_GR.po it_IT.po tr_TR.po pt_PT.po fr_FR.po ar.po bg.po ca.po cs.po da.po en_US.po fi.po hi.po hr.po hu.po lt.po lv.po pl.po ro.po sk.po sl.po sr.po sv.po uk.po az.po en_PH.po es_US.po et.po eu.po fr_CA.po ga.po gl.po hy.po is.po ka.po kk.po mk.po pt_BR.po zh_SG.po nb.po uz.po) #he.po id.po ms.po no.po th.po vi.po SET(MSGFMT "/usr/bin/msgfmt") @@ -19,9 +19,6 @@ FOREACH(pofile ${POFILES}) INSTALL(FILES ${moFile} DESTINATION ${LOCALEDIR}/${lang}/LC_MESSAGES RENAME email.mo) - INSTALL(FILES ${moFile} - DESTINATION /opt/ug/res/locale/${lang}/LC_MESSAGES RENAME email.mo) - SET(moFiles ${moFiles} ${moFile}) ENDFOREACH(pofile) diff --git a/po/ar.po b/po/ar.po index 33e202b..122ddd8 100755 --- a/po/ar.po +++ b/po/ar.po @@ -1390,3 +1390,60 @@ msgstr "كل d% دقائق" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "إضافة عنوان" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "بريد إلكتروني جديد" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "تحديد مجلد" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "التقاط فيديو" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "نقل لـ إلى" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "تحديد عنوان بريد إلكتروني" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "يتعذر البحث" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "المقروءة" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "انقر نقرا مزدوجا للانتقال إلى أعلى قوائم جهات الاتصال وقوائم البريد الإلكتروني ورسائل البريد الإلكتروني" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "تعديل الرد قبل الإرسال" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "إرسال الرد الآن" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "عدم إرسال الرد" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "التحقق من التوقيع" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "التحقق من التوقيع" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "يتعذر التحقق من التوقيع. لم يتم تثبيت المفتاح العام" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "التوقيع الرقمي الموجود في هذه الرسالة صالح وموثوق به" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "فك تشفير الرسالة" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "حفظ بريد إلكتروني" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "غير قادر على إنشاء مجلد" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "التقاط صورة" + diff --git a/po/az.po b/po/az.po index ff354c0..ea78793 100755 --- a/po/az.po +++ b/po/az.po @@ -1390,3 +1390,60 @@ msgstr "Hər %d dəqiqədən" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Ünvan əlavə edin" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Yeni epoçt" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Qovluq seç" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Video yaz" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Kimə sahəsinə keç" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "E-poçt ünvanını seç" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Axtarış mümkün deyil" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Oxu" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Kontakt siyahılarının, e-poçt siyahılarının və mesajların yuxarısına keçmək üçün iki dəfə vurun" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Göndərməzdən əvvəl cavabı redaktə et" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Cavabı indi göndər" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Cavab göndərmə" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "İmzanı yoxla" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "İmzanı yoxla" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "İmzanı yoxlamaq mümkün deyil. Ümumi açar quraşdırılmayıb" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Bu mesajın rəqəmsal imzası etibarlı və doğrudur" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Mesajı şifrlə" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "E-poçtu saxla" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Qovluq yaratmaq olmur" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Şəkil çək" + diff --git a/po/bg.po b/po/bg.po index 168339b..6476132 100755 --- a/po/bg.po +++ b/po/bg.po @@ -1390,3 +1390,60 @@ msgstr "През %d минути" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Добавяне на адрес" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Нов имейл" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Изберете папка" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Запис на видео" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Преместване в До" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Избор на email адрес" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Не може да се търси" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Прочетено" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Чукнете двукратно, за да отидете в горната част на списъците със записи, списъците с имейли и имейл съобщенията" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Редактиране на отговор преди изпращане" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Изпращане на отговор сега" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Не изпращай отговор" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Потвържд. подпис" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Потвърждаване на подпис" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Подписът не може да бъде проверен. Няма инсталиран публичен ключ" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Цифровият подпис на това съобщение е валиден и е надежден" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Дешифров. на съобщ." + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Записване на имейл" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Не може да се създаде папка" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Направи снимка" + diff --git a/po/ca.po b/po/ca.po index a6e6059..423ff8f 100755 --- a/po/ca.po +++ b/po/ca.po @@ -1390,3 +1390,60 @@ msgstr "Cada %d minuts" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Afegir adreça" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nou correu electrònic" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Seleccioni carpeta" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capturar vídeo" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Moure a Per a" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Seleccionar adreça de correu electrònic" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Error de cerca" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Llegir" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Toqui dos cops per anar al principi de la llista de contactes, la llista de correus electrònics i els missatges de correu electrònic" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editar la resposta abans d'enviar" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Enviar resposta ara" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "No enviar resposta" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verifiqui signatura" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verifiqui la signatura" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Error en verificar la signatura. La clau pública no està instal·lada" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "La signatura digital d'aquest missatge és vàlida i de confiança" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Desxifrar missatge" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Desar correu elect" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "No es pot crear la carpeta" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Fer foto" + diff --git a/po/cs.po b/po/cs.po index 1ac934e..53cb363 100755 --- a/po/cs.po +++ b/po/cs.po @@ -1390,3 +1390,60 @@ msgstr "Každých %d minut" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Přidat adresu" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nový e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Vybrat složku" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Nahrávání videoklipů" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Přesunout do Komu" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Vybrat e-mailovou adresu" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Chyba vyhledávání" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Přečteno" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Poklepáním přejdete na začátek seznamů kontaktů, seznamů e-mailů a e-mailových zpráv" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Upravit odpověď před odesláním" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Odeslat odpověď" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Neodeslat odpověď" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Ověřit podpis" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Ověřit podpis" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Podpis nelze ověřit. Veřejný klíč není nainstalován" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Digitální podpis této zprávy je platný a důvěryhodný" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dešifrovat zprávu" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Uložit e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Složku nelze vytvořit" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Vyfotografovat" + diff --git a/po/da.po b/po/da.po index e4c0c11..cd47f5d 100755 --- a/po/da.po +++ b/po/da.po @@ -590,7 +590,7 @@ msgid "IDS_EMAIL_OPT_SIGN" msgstr "Signatur" msgid "IDS_EMAIL_OPT_ENCRYPT" -msgstr "Krypter" +msgstr "Kryptér" msgid "IDS_EMAIL_POP_AUTHENTICATION_FAILED" msgstr "Godkendelse mislykkedes" @@ -1310,13 +1310,13 @@ msgid "IDS_EMAIL_POP_CERTIFICATE_DOES_NOT_MATCH_EMAIL_ADDRESS" msgstr "Certifikat stemmer ikke overens med e-mail-adresse" msgid "IDS_EMAIL_BODY_ENCRYPT" -msgstr "Krypter" +msgstr "Kryptér" msgid "IDS_EMAIL_BODY_SIGN" msgstr "Signatur" msgid "IDS_EMAIL_POP_DECRYPTING_MESSAGE_ING" -msgstr "Dekrypterer meddelelse..." +msgstr "Dekrypterer meddelelse ..." msgid "IDS_EMAIL_BODY_1_MONTH_AGO" msgstr "1 måned siden" @@ -1390,3 +1390,60 @@ msgstr "Hvert %d minut" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Tilføj adresse" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Ny e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Vælg mappe" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Optag video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Flyt til Til" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Vælg e-mail-adresse" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Kan ikke søge" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Læs" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Tap to gange for at gå til toppen af listen over kontakter, liste over e-mails og e-mail-meddelelser" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Rediger svar før afsendelse" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Send svar nu" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Send ikke svar" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Godkend signatur" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Godkend signatur" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Kunne ikke bekræfte signatur. Offentlig nøgle er ikke installeret" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Den digitale signatur på denne meddelelse er gyldig og er troværdig" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dekryptér besked" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Gem e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Kunne ikke oprette mappe" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Tag billede" + diff --git a/po/de_DE.po b/po/de_DE.po index 7f6c84e..9d464cd 100755 --- a/po/de_DE.po +++ b/po/de_DE.po @@ -1390,3 +1390,60 @@ msgstr "Alle %d Minuten" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Adresse hinzufügen" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Neue E-Mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Ordner auswählen" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Video aufnehmen" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "In 'An' verschieben" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Wählen Sie eine E-Mail-Adresse aus" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Suche nicht möglich" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Gelesen" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Tippen Sie zweimal, um zum Anfang der Kontakt-, E-Mail-Liste und der E-Mails zu gelangen." + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Antwort vor dem Senden bearbeiten" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Antwort jetzt senden" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Antwort nicht senden" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Signatur überprüfen" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Signatur überprüfen" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Die Signatur kann nicht überprüft werden. Kein öffentlicher Schlüssel installiert." + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Die digitale Signatur dieser Nachricht ist gültig und vertrauenswürdig." + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Nachricht entschl." + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "E-Mail speichern" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Ordner kann nicht erstellt werden" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Foto aufnehmen" + diff --git a/po/el_GR.po b/po/el_GR.po index 835bd7d..b8c6824 100755 --- a/po/el_GR.po +++ b/po/el_GR.po @@ -1390,3 +1390,60 @@ msgstr "Κάθε %d λεπτά" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Προσθήκη διεύθυνσης" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Νέο email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Επιλογή φακέλου" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Λήψη βίντεο" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Μετακίνηση σε Προς" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Επιλογή διεύθυνσης email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Δεν είναι δυνατή η αναζήτηση" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Ανάγνωση" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Μεταβείτε στην κορυφή της λίστας επαφών, της λίστας email και των μηνυμάτων email με διπλό πάτημα" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Επεξεργασία απάντησης πριν από την αποστολή" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Αποστολή απάντησης τώρα" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Να μην γίνει αποστολή της απάντησης" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Επαλήθευση υπογραφής" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Επαλήθευση υπογραφής" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Δεν είναι δυνατή η επαλήθευση υπογραφής, Δεν έχει εγκατασταθεί δημόσιο κλειδί" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Η ψηφιακή υπογραφή αυτού του μηνύματος είναι έγκυρη και αξιόπιστη" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Αποκρυπτ. μηνύματος" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Αποθήκευση email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Δεν είναι δυνατή η δημιουργία φακέλου" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Λήψη φωτογραφίας" + diff --git a/po/en.po b/po/en.po index 0bb687d..f6a353b 100755 --- a/po/en.po +++ b/po/en.po @@ -1390,3 +1390,60 @@ msgstr "Every %d minutes" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Add address" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "New email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Select folder" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capture video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Move to To" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Select email address" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Unable to search" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Read" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Double tap to go to the top of contacts lists, email lists and email messages" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Edit response before sending" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Send response now" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Do not send response" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verify signature" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verify signature" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Unable to verify signature. Public key is not installed" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "The digital signature on this message is valid and trusted" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Decrypt message" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Save email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Unable to create folder" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Take picture" + diff --git a/po/en_PH.po b/po/en_PH.po index 337dd91..28f76f1 100755 --- a/po/en_PH.po +++ b/po/en_PH.po @@ -1390,3 +1390,60 @@ msgstr "Every %d minutes" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Add address" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "New Email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Select folder" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capture video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Move to To" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Select Email address" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Unable to search" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Read" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Double tap to go to the top of contacts lists, Email lists and email messages" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Edit response before sending" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Send response now" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Do not send response" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verify signature" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verify signature" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Unable to verify signature. Public key is not installed" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "The digital signature on this message is valid and trusted" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Decrypt message" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Save Email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Unable to create folder" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Take picture" + diff --git a/po/en_US.po b/po/en_US.po index f596e6a..0760963 100755 --- a/po/en_US.po +++ b/po/en_US.po @@ -1175,7 +1175,7 @@ msgid "IDS_EMAIL_BODY_ADD_ACCOUNT" msgstr "Add account" msgid "IDS_EMAIL_BODY_REMOVE_EVENT_FROM_CALENDAR" -msgstr "Remove event from Calendar" +msgstr "Delete event from Calendar" msgid "IDS_EMAIL_POP_GETTING_RECIPIENTS_CERTIFICATES_ING" msgstr "Getting recipients certificates..." @@ -1390,3 +1390,60 @@ msgstr "Every %d minutes" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Add address" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "New email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Select folder" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capture video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Move to To" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Select email address" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Unable to search" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Read" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Double tap to go to the top of contacts lists, email lists and email messages" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Edit response before sending" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Send response now" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Do not send response" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verify signature" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verify signature" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Unable to verify signature. Public key is not installed" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "The digital signature on this message is valid and trusted" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Decrypt message" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Save email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Unable to create folder" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Take picture" + diff --git a/po/es_ES.po b/po/es_ES.po index c530776..a297678 100755 --- a/po/es_ES.po +++ b/po/es_ES.po @@ -1390,3 +1390,60 @@ msgstr "Cada %d minutos" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Añadir dirección" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Correo electrónico nuevo" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Seleccione carpeta" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capturar vídeo" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Mover a Para" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Seleccionar dirección de correo electrónico" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "No se puede buscar" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Leído" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Toque dos veces para ir al principio de la lista de contactos, la lista de correos electrónicos y los mensajes de correo electrónico" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editar respuesta antes de enviar" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Enviar respuesta ahora" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "No enviar respuesta" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verifique la firma" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verifique la firma" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "No se puede verificar la firma. La clave pública no está instalada" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "La firma digital de este mensaje es válida y de confianza" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Descifrar mensaje" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Guardar correo electrónico" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "No se puede crear carpeta" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Hacer foto" + diff --git a/po/es_US.po b/po/es_US.po index dd13fd9..7822a65 100755 --- a/po/es_US.po +++ b/po/es_US.po @@ -590,7 +590,7 @@ msgid "IDS_EMAIL_OPT_SIGN" msgstr "Firma" msgid "IDS_EMAIL_OPT_ENCRYPT" -msgstr "Cifrar" +msgstr "Encriptar" msgid "IDS_EMAIL_POP_AUTHENTICATION_FAILED" msgstr "Error de autentificación" @@ -1136,7 +1136,7 @@ msgid "IDS_EMAIL_POP_UNABLE_TO_DECRYPT_MESSAGE_CERTIFICATE_NOT_INSTALLED" msgstr "No se puede descifrar el mensaje. Certificado no instalado" msgid "IDS_EMAIL_POP_UNABLE_TO_SIGN_OR_ENCRYPT_MESSAGE_CERTIFICATE_NOT_INSTALLED" -msgstr "No se puede firmar o cifrar el mensaje. Certificado no instalado" +msgstr "No se puede firmar o encriptar el mensaje. Certificado no instalado" msgid "IDS_EMAIL_POP_DOWNLOAD_MORE_DETAILS_TO_SHOW_S_MIME_MESSAGES_CONTINUE_Q" msgstr "Descargue más detalles para mostrar los mensajes S/MIME. ¿Continuar?" @@ -1310,7 +1310,7 @@ msgid "IDS_EMAIL_POP_CERTIFICATE_DOES_NOT_MATCH_EMAIL_ADDRESS" msgstr "El certificado no coincide con la dirección de correo" msgid "IDS_EMAIL_BODY_ENCRYPT" -msgstr "Cifrar" +msgstr "Encriptar" msgid "IDS_EMAIL_BODY_SIGN" msgstr "Firma" @@ -1390,3 +1390,60 @@ msgstr "Cada %d minutos" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Añadir dirección" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nuevo correo" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Seleccionar carpeta" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capturar video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Mover a A" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Seleccionar dirección de correo" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "No se puede buscar" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Leídos" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Presione dos veces para ir al inicio de las listas de contactos, listas de correo y mensajes de correo" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editar respuesta antes de enviar" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Enviar respuesta ahora" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "No enviar respuesta" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verificar firma" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verificar firma" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "No es posible verificar la firma. El código público no está instalado" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "La firma digital en este mensaje es válida y es de confianza" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Descifrar mensaje" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Guardar correo" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "No se puede crear la carpeta" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Capturar imagen" + diff --git a/po/et.po b/po/et.po index 7c92a92..9c9385f 100755 --- a/po/et.po +++ b/po/et.po @@ -1390,3 +1390,60 @@ msgstr "Iga %d minuti järel" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Lisa aadress" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Uus e-kiri" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Vali kaust" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Salvesta video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Teisalda kausta Kellele" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Vali e-posti aadress" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Ei saa otsida" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Loe" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Toksake kaks korda, et liikuda kontaktide loendi, e-kirjade loendi ja e-kirjade ülaossa" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Redigeeri vastust enne saatmist" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Saada vastus kohe" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ära saada vastust" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Kinnitage allkiri" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Kinnitage allkiri" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Allkirja ei saa kinnitada. Avalikku võtit pole installitud" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Selles sõnumis olev digiallkiri on kehtiv ja usaldusväärne" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dekrüpti sõnum" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Salvesta e-kiri" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Kausta ei saa luua" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Pildista" + diff --git a/po/eu.po b/po/eu.po index c600e46..733b3ab 100755 --- a/po/eu.po +++ b/po/eu.po @@ -1390,3 +1390,60 @@ msgstr "%d minuturo" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Gehitu helbidea" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Mezu elektroniko berria" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Hautatu karpeta" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Bideoa grabatu" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Mugitu Nori-ra" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Aukeratu helbide elektronikoa" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Ezin da bilatu" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Irakurrita" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Ukitu bi aldiz kontaktu zerrendaren, mezu elektronikoen zerrendaren eta mezu elektronikoen goiko aldera joateko" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editatu erantzuna bidali aurretik" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Bidali erantzuna orain" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ez bidali erantzunik" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Egiaztatu sinadura" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Egiaztatu sinadura" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Ezin da sinadura egiaztatu. Gako publikoa ez da instalatu" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Mezu honetako sinadura digitala baliogarria eta fidagarria da" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Desenkriptatu mezua" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Gorde mezu elekt." + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Ezin da karpeta sortu" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Atera argazkia" + diff --git a/po/fi.po b/po/fi.po index 8e3ba9f..325cddf 100755 --- a/po/fi.po +++ b/po/fi.po @@ -1390,3 +1390,60 @@ msgstr "%d minuutin välein" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Lisää osoite" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Uusi sähköposti" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Valitse kansio" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Kuvaa video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Siirrä kohteeseen" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Valitse sähköpostiosoite" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Ei voi hakea" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Lue" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Siirry yhteystietoluetteloiden, sähköpostiluetteloiden ja sähköpostiviestien alkuun kaksoisnapauttamalla" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Muokkaa vastausta ennen lähettämistä" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Lähetä vastaus nyt" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Älä lähetä vastausta" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Tarkista allekirj." + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Tarkista allekirjoitus" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Allekirjoitusta ei voi tarkistaa. Julkista avainta ei ole asennettu" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Tässä viestissä oleva digitaalinen allekirjoitus kelpaa ja on luotettu" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Poista salaus" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Tallenna sähköposti" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Kansion luonti epäonnistui" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Ota kuva" + diff --git a/po/fr_CA.po b/po/fr_CA.po index 4e0a579..0742861 100755 --- a/po/fr_CA.po +++ b/po/fr_CA.po @@ -1390,3 +1390,60 @@ msgstr "Toutes les %d minutes" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Ajouter l'adresse" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nouveau courriel" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Sélectionner dossier" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Saisir une vidéo" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Déplacer vers A" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Sélectionner une adresse courriel" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Impossible de rechercher" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Lu" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Touchez deux fois pour revenir en haut des listes de contacts, des listes de courriels et des courriels" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Modifier la réponse avant l'envoi" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Envoyer la réponse maintenant" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ne pas envoyer la réponse" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Vérifier signature" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Vérifier la signature" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Impossible de vérifier la signature. La clé publique n'est pas installée" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "La signature numérique sur ce message est valide et fiable" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Décrypter le message" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Enregistrer courriel" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Impossible de créer un dossier" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Prendre une photo" + diff --git a/po/fr_FR.po b/po/fr_FR.po index 52155ed..bb863bd 100755 --- a/po/fr_FR.po +++ b/po/fr_FR.po @@ -1390,3 +1390,60 @@ msgstr "Toutes les %d minutes" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Ajouter adresse" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nouvel e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Sélectionner dossier" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capturer une vidéo" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Déplacer dans A" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Sélectionner une adresse e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Impossible de rechercher" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Lu" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Appuyez deux fois pour revenir en haut des listes de contacts, des listes d'e-mails et des e-mails" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Modifier la réponse avant l'envoi" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Envoyer la réponse maintenant" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ne pas envoyer la réponse" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Vérifier signature" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Vérifier la signature" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Impossible de vérifier la signature. La clé publique n'est pas installée" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "La signature numérique sur ce message est valide et fiable" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Décrypter le message" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Enregistrer e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Création de fichier impossible" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Prendre une photo" + diff --git a/po/ga.po b/po/ga.po index ce3a4a2..2d301da 100755 --- a/po/ga.po +++ b/po/ga.po @@ -1390,3 +1390,60 @@ msgstr "Gach %d nóiméad" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Cuir seoladh leis" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "R-phost nua" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Roghnaigh fillteán" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Gabh físeán" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Bog chuig Chuig" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Roghnaigh seoladh r-phoist" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Ní féidir cuardach" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Léite" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Déthapáil le dhul chuig barr an liosta teagmhálaithe, liostaí r-phoist, agus teachtaireachtaí r-phoist" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Cuir an fhreagairt in eagar roimh seoladh" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Seol freagairt anois" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ná seol freagairt" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Fíoraigh an síniú" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Fíoraigh an síniú" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Ní féidir an síniú a fhíordheimhniú. Níl an eochair phoiblí suiteáilte" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Tá an síniú digiteach ar an teachtaireacht seo bailí agus iontaofa" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Díchriptigh tcht" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Sábháil r-phost" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Ní féidir fillteán a dhéanamh" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Glac pictiúr" + diff --git a/po/gl.po b/po/gl.po index 994a326..0ad77f7 100755 --- a/po/gl.po +++ b/po/gl.po @@ -1390,3 +1390,60 @@ msgstr "Cada %d minutos" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Engadir enderezo" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Correo electrónico novo" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Seleccionar carpeta" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capturar Vídeo" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Mover a Para" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Seleccionar enderezo de correo electrónico" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Non se pode buscar" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Ler" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Toca dúas veces para ir á parte superior das listas de contactos, das listas de correos electrónicos e das mensaxes de correo electrónico" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editar resposta antes de enviar" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Enviar resposta agora" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Non enviar resposta" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verificar sinatura" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verificar sinatura" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Non se pode verificar a sinatura. A clave pública non está instalada" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "A sinatura dixital desta mensaxe é válida e fiable" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Descifrar mensaxe" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Gardar correo e." + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Non se pode crear a carpeta" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Facer unha foto" + diff --git a/po/hi.po b/po/hi.po index 403a087..95df512 100755 --- a/po/hi.po +++ b/po/hi.po @@ -1010,7 +1010,7 @@ msgid "IDS_EMAIL_OPT_RECIPIENT_HZ_TO_A" msgstr "प्राप्तकर्ता (Z से A)" msgid "IDS_EMAIL_HEADER_SEARCH_SHAREPOINT" -msgstr "SharePoint खोजें" +msgstr "शेयरपॉइंट्स खोजें" msgid "IDS_EMAIL_BODY_ENTER_PATH_OF_WINDOWS_SHAREPOINT_SERVICES_OR_WINDOWS_FILE_SHARE_HUNC_TO_ACCESS_DOCUMENTS_REMOTELY" msgstr "दस्तावेज़ों को दूरस्थ रूप से ऍक्सेस करने के लिए विंडोज़ SharePoint सेवाएँ या विंडोज़ फ़ाइल साझाकरण (UNC) का पथ दर्ज करें" @@ -1390,3 +1390,60 @@ msgstr "प्रत्‍येक %d मिनट" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "पता ज़ोडे" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "नयी ईमेल" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "फ़ोल्डर चुनें" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "वीडियो कैप्‍चर करें" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "प्रति में ले जाएँ" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "ईमेल पता चुनें" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "खोजने में अक्षम" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "पठित" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "संपर्क सूचियों, ईमेल सूचियों, और ईमेल संदेशों के शीर्ष पर जाने के लिए डबल टैप करें" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "भेजने से पहले प्रतिक्रिया संपादित करें" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "अभी प्रतिक्रिया भेजें" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "प्रतिक्रिया नहीं भेजें" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "हस्ताक्षर सत्‍यापित करें" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "हस्ताक्षर सत्‍यापित करें" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "हस्ताक्षर सत्यापित करने में अक्षम। सार्वजनिक कुंजी स्थापित नहीं की गई" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "इस संदेश पर डिज़िटल हस्ताक्षर मान्य और विश्वयनीय है" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "संदेश डिक्रिप्ट करें" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "ईमेल सुरक्षित" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "फ़ोल्‍डर बनाने में अक्षम" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "तस्वीर लें" + diff --git a/po/hr.po b/po/hr.po index 41707d0..a41892f 100755 --- a/po/hr.po +++ b/po/hr.po @@ -1390,3 +1390,60 @@ msgstr "Svakih %d minuta" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Dodaj adresu" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Novi email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Odaberi mapu" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Snimanje videa" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Premjesti u Za" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Odaberite e-mail adresu" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Traženje nemoguće" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Pročitano" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dvaput dodirnite za odlazak na vrh popisa kontakata, popisa emailova i email poruka" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Uredi odgovor prije slanja" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Pošalji odgovor" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Nemoj poslati odgovor" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Provjeri potpis" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Provjeri potpis" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Nemoguće provjeriti potpis. Javni ključ nije instaliran" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Digitalni potpis u ovoj poruci je valjan i pouzdan" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dešifriraj poruku" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Spremi email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Nemoguće napraviti mapu" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Fotografiraj" + diff --git a/po/hu.po b/po/hu.po index 2e82f54..f71972b 100755 --- a/po/hu.po +++ b/po/hu.po @@ -89,7 +89,7 @@ msgid "IDS_EMAIL_BODY_DOWNLOAD_FULL_MESSAGE" msgstr "Egész üzenet letöltése" msgid "IDS_EMAIL_BODY_GENERAL_SETTINGS" -msgstr "Ált. beállítások" +msgstr "Általános beállítások" msgid "IDS_EMAIL_BODY_TENTATIVE_C_PS" msgstr "Feltételes: %s" @@ -1390,3 +1390,60 @@ msgstr "%d percenként" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Cím hozzáadása" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Új e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Mappa kiválasztása" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Videó rögzítése" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Áthelyezés a Címzett mezőbe" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Válasszon e-mail címet" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Nem sikerült keresni" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Elolvasva" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dupla érintéssel a névjegyzékek, e-mail listák, illetve e-mail üzenetek tetejére ugorhat" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Válasz szerkesztése küldés előtt" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Válasz küldése most" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Nem küld választ" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Aláírás ellenőrzése" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Aláírás ellenőrzése" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Nem lehet hitelesíteni az aláírást. Nincs telepítve a nyilvános kulcs" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Az üzenet digitális aláírása érvényes és megbízható" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Üzenet dekódolása" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "E-mail mentése" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Mappa létrehozása sikertelen" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Kép készítése" + diff --git a/po/hy.po b/po/hy.po index efe1783..66e64a9 100755 --- a/po/hy.po +++ b/po/hy.po @@ -1390,3 +1390,60 @@ msgstr "Յուրաքանչյուր %d րոպե" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Ավելացնել հասցե" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Նոր էլ. փոստ" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Ընտրել թղթապանակ" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Տսհլվկ նկրլ" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Տեղափոխել դեպի Ում" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Ընտրել էլփոստի հասցե" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Անհնար է որոնել" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Ընթերցում" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Կրկնակի թակեք՝ կոնտակտների ցանկերի վերնամաս, էլ-նամակների ցանկեր և էլեկտրոնային հաղորդագրություններ գնալու համար" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Խմբագրել պատասխանը նախքան ուղարկելը" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Ուղարկել պատասխանը հիմա" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Պատասխան չուղարկել" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Ստուգել ստորագրթյուն" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Ստուգել ստորագրությունը" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Անհնար է ստուգել ստորագրությունը: Բաց բանալին տեղադրված չէ" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Այս հաղորդագրության թվային ստորագրությունը վավեր և վստահելի է" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Վերծանել հղգրթյունը" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Պահպանել էլ-նամակը" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Անհնար է ստեղծել ծրար" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Լուսանկարել" + diff --git a/po/is.po b/po/is.po index 124ec57..b69d0c9 100755 --- a/po/is.po +++ b/po/is.po @@ -1390,3 +1390,60 @@ msgstr "Á %d mínútna fresti" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Bæta við heimilisfangi" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nýr póstur" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Velja möppu" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Taka upp vídeó" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Færa í Til" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Veldu netfang" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Mistókst að leita" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Lesið" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Tvípikkaðu til að fara efst í tengiliðalista, lista yfir tölvupóst og í meginmáli" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Breyta svari fyrir sendingu" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Senda svar núna" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ekki senda svar" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Staðf. undirskrift" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Staðfesta undirskrift" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Mistókst að sannvotta undirritun. Almennur lykill er ekki uppsettur" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Stafræn undirskrift þessa skeytis er gild og henni er treyst" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Afkóða skilaboð" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Vista netfang" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Ekki tókst að búa til möppu" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Taka mynd" + diff --git a/po/it_IT.po b/po/it_IT.po index 51196bd..2ce4b6c 100755 --- a/po/it_IT.po +++ b/po/it_IT.po @@ -878,7 +878,7 @@ msgid "IDS_EMAIL_POP_UNABLE_TO_ATTACH_FILE" msgstr "Impossibile allegare file" msgid "IDS_EMAIL_OPT_CALENDAR" -msgstr "Agenda" +msgstr "Calendario" msgid "IDS_EMAIL_OPT_MEMO" msgstr "Promemoria" @@ -1390,3 +1390,60 @@ msgstr "Ogni %d minuti" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Aggiungi indirizzo" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nuova e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Seleziona cartella" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Registra video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Sposta in A" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Seleziona indirizzo e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Ricerca impossibile" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Letto" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Toccate due volte per tornare all'inizio degli elenchi contatti, degli elenchi e-mail e dei messaggi e-mail" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Modifica risposta prima dell'invio" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Invia risposta subito" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Non inviare risposta" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verifica firma" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verifica firma" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Impossibile verificare la firma. La chiave pubblica non è installata" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "La firma digitale su questo messaggio è valida e attendibile" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Decrittografa msg" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Salva e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Impossibile creare cartella" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Scatta foto" + diff --git a/po/ja_JP.po b/po/ja_JP.po index 4962a8e..309a1c1 100755 --- a/po/ja_JP.po +++ b/po/ja_JP.po @@ -140,7 +140,7 @@ msgid "IDS_EMAIL_BODY_ACCOUNT_NAME" msgstr "アカウント名" msgid "IDS_EMAIL_BODY_ATTACHMENTS" -msgstr "ファイル添付" +msgstr "添付" msgid "IDS_EMAIL_BODY_FROM_C" msgstr "発信元:" @@ -458,7 +458,7 @@ msgid "IDS_EMAIL_BODY_FROM" msgstr "送信元" msgid "IDS_EMAIL_BODY_NO_ADDRESS" -msgstr "アドレスはありません" +msgstr "アドレス​が​ありません。" msgid "IDS_EMAIL_OPT_RECORD_SOUND" msgstr "ボイスレコーダー起動" @@ -983,7 +983,7 @@ msgid "IDS_EMAIL_OPT_MEETING_REQUEST" msgstr "ミーティングリクエスト" msgid "IDS_EMAIL_OPT_ATTACHMENTS" -msgstr "ファイル添付" +msgstr "添付" msgid "IDS_EMAIL_HEADER_FOLDERS" msgstr "フォルダ" @@ -1390,3 +1390,60 @@ msgstr "%d分ごと" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "アドレス追加" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "新規Eメール" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "フォルダ選択" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "動画撮影" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "宛先に移動" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Eメール​アドレス​を​選択" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "検索できません。" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "既読" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "連絡​先​リスト、​E​メール​リスト​および​E​メール​メッセージ​の​トップ​に​移動​する​には、​ダブル​タップ​して​ください。" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "送信前に返信内容を編集" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "今すぐ返信" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "返信しない" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "署名​を​認証" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "署名​を​認証" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "署名​を​認証​でき​ません。​公開​キー​が​インストール​され​て​いま​せん。" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "このメッセージのデジタル署名は有効かつ、信頼できます。" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "メッセージ​を​復号" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Eメールを保存" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "フォルダ​を​作成​でき​ません。" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "カメラ撮影" + diff --git a/po/ka.po b/po/ka.po index 69f97a5..f019e4a 100755 --- a/po/ka.po +++ b/po/ka.po @@ -365,7 +365,7 @@ msgid "IDS_EMAIL_OPT_SENDER" msgstr "გამგზავნი" msgid "IDS_EMAIL_OPT_SEND_EMAIL" -msgstr "ელ.წერილის გაგზავნა" +msgstr "ელ. წერილის გაგზავნა" msgid "IDS_EMAIL_OPT_UPDATE_EXISTING" msgstr "არსებულის განახლება" @@ -476,7 +476,7 @@ msgid "IDS_EMAIL_OPT_CHANGE_EMAIL_ADDRESS_ABB" msgstr "ელ.ფოსტის მისამართის შეცვლა" msgid "IDS_EMAIL_OPT_CLIPBOARD" -msgstr "ბუფერული მეხსიერება" +msgstr "ბუფერული მეხს." msgid "IDS_EMAIL_OPT_VIEW_CONTACT_DETAILS" msgstr "საკონტაქტო მონაცემების დათვალიერება" @@ -1390,3 +1390,60 @@ msgstr "ყოველ %d წუთში" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "მისამართის დამატება" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "ახალი ელ.წერილი" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "აირჩიეთ საქაღალდე" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "ვიდეოს გადაღება" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "გადასვლა ველზე ”ვის”" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "აირჩიეთ ელ.ფოსტის მისამართი" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "ვერ იძებნება" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "წაკითხვა" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "ორჯერ შეხებით გადახვალთ კონტაქტების სიების თავში, ელფოსტების სიებში და ელფოსტის წერილებში" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "შეასწორეთ პასუხი, სანამ გაგზავნით" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "გაგზავნეთ პასუხი ახლა" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "არ გაგზავნოთ პასუხი" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "ხელმოწერის დამოწმება" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "ხელმოწერის დამოწმება" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "ხელმოწერა ვერ დადასტურდა. საჯარო კოდი არ არის დაინსტალირებული" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "ამ წერილში ციფრული ხელმოწერა ქმედითი და სანდოა" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "წერილის გაშიფვრა" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "ელ.წერილის შენახვა" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "ვერ შექმნით საქაღალდეს" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "სურათის გადაღება" + diff --git a/po/kk.po b/po/kk.po index 36fa21d..97456ea 100755 --- a/po/kk.po +++ b/po/kk.po @@ -1390,3 +1390,60 @@ msgstr "Әр %d минут" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Мекенжайды қосу" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Жаңа email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Қалта таңдау" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Видео бөгеліс" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "'Кімге' жолына ауыстыру" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Электрондық пошта мекенжайын таңдаңыз" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Іздеу мүмкін емес" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Оқу" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Контактілер тізімінің, электрондық пошта тізімінің және электрондық пошта хабарларының жоғарғы жағына өту үшін екі рет түртіңіз" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Жібермес бұрын жауапты өзгерту" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Қазір жауап жіберу" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Жауап жібермеу" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Қолтаңбаны тексеру" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Қолтаңбаны тексеру" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Қолтаңбаны тексеру мүмкін емес. Ашық кілт орнатылмаған" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Бұл хабардағы сандық қолтаңба жарамды әрі сенімді" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Хабарды шифрсыздан-у" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Элек. хабар сақтау" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Қалта құрылмады" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Суретке түсіру" + diff --git a/po/ko_KR.po b/po/ko_KR.po index 1488f57..607f15d 100755 --- a/po/ko_KR.po +++ b/po/ko_KR.po @@ -923,10 +923,10 @@ msgid "IDS_EMAIL_OPT_DATE_HOLDEST" msgstr "날짜(오래된순)" msgid "IDS_EMAIL_OPT_SENDER_HA_TO_Z" -msgstr "발신인(오름차순)" +msgstr "발신인(가나다순)" msgid "IDS_EMAIL_OPT_SENDER_HZ_TO_A" -msgstr "발신인(내림차순)" +msgstr "발신인(가나다역순)" msgid "IDS_EMAIL_OPT_READ_UNREAD" msgstr "읽음/읽지 않음" @@ -1004,10 +1004,10 @@ msgid "IDS_EMAIL_OPT_ALL" msgstr "전체" msgid "IDS_EMAIL_OPT_RECIPIENT_HA_TO_Z" -msgstr "받는 사람(오름차순)" +msgstr "받는 사람(가나다순)" msgid "IDS_EMAIL_OPT_RECIPIENT_HZ_TO_A" -msgstr "받는 사람(내림차순)" +msgstr "받는 사람(가나다역순)" msgid "IDS_EMAIL_HEADER_SEARCH_SHAREPOINT" msgstr "SharePoint 검색" @@ -1390,3 +1390,60 @@ msgstr "%d분 마다" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "주소 추가" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "새 이메일" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "폴더 선택" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "동영상 촬영" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "수신인으로 이동" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "이메일 주소를 선택하세요" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "검색할 수 없습니다" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "읽음" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "연락처 목록, 이메일 목록 및 이메일 메시지의 맨 위로 이동하려면 두 번 누르세요" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "전송하기 전에 응답 편집" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "지금 응답 전송" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "응답 보내지 않음" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "서명 확인" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "서명 확인" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "서명을 인증할 수 없습니다. 공개키가 설치되어 있지 않습니다" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "이 메시지의 전자 서명은 유효하며 신뢰할 수 있습니다" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "메시지 암호화 해제" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "이메일 저장" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "폴더를 생성할 수 없습니다" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "사진 촬영" + diff --git a/po/lt.po b/po/lt.po index f56b5e1..7276c42 100755 --- a/po/lt.po +++ b/po/lt.po @@ -1390,3 +1390,60 @@ msgstr "Kas %d minutes" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Pridėti adresą" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Naujas el. laiškas" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Pasirinkite aplanką" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Filmuoti vaizdo įrašą" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Perkelti į „Kam“" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Pasirinkti el. pašto adresą" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Neįmanoma ieškoti" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Skaityti" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Bakstelėkite dukart, kad pereitumėte į adresatų sąrašo, el. laiškų sąrašo ir el. laiškų pradžią" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Redaguoti atsakymą prieš siunčiant" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Siųsti atsakymą dabar" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Nesiųsti atsakymo" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Patvirtinti parašą" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Patvirtinti parašą" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Neįmanoma patvirtinti parašo. Viešasis raktas neįdiegtas" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Skaitmeninis parašas šioje žinutėje yra galiojantis ir patikimas" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Iššifruoti žinutę" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Išsaugoti el. laišką" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Neįmanoma sukurti aplanko" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Fotografuoti" + diff --git a/po/lv.po b/po/lv.po index a5ffb5a..b318594 100755 --- a/po/lv.po +++ b/po/lv.po @@ -1390,3 +1390,60 @@ msgstr "Ik pēc %d minūtēm" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Adreses pievienošana" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Jauna e-pasta ziņa" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Mapes izvēle" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Uzņemt videoklipu" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Pārvietot uz Kam" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Izvēlēties e-pasta adresi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Nevar meklēt" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Lasīta" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Veiciet dubultskārienu, lai dotos uz kontaktu saraksta, e-pastu saraksta un e-pasta ziņu saraksta sākumu" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Rediģēt atbildi pirms sūtīšanas" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Sūtīt atbildi tagad" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Nesūtīt atbildi" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verificēt parakstu" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verificēt parakstu" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Nevar verificēt parakstu. Nav instalēta publiskā atslēga" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Šīs ziņas ciparparaksts ir derīgs un uzticams" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Atšifrēt ziņu" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Saglabāt e-pastu" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Nevar izveidot mapi" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Fotografēt" + diff --git a/po/mk.po b/po/mk.po index 7b0eeda..4b728c6 100755 --- a/po/mk.po +++ b/po/mk.po @@ -1390,3 +1390,60 @@ msgstr "На %d минути" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Додај адреса" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Нова email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Одбери папка" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Сними видео" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Премести во До" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Изберете адреса за email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Не може да се пребара" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Читање" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Допрете двапати да одите најгоре во листата контакти, листата е-пошта и пораки" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Измени одговор пред праќање" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Прати одговор веднаш" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Не праќај одговор" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Потврди потпис" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Потврди потпис" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Не може да се потврди потписот. Не е инсталиран јавен клуч" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Дигиталниот потпис на оваа порака е важечки и доверлив" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Дешифрирај порака" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Сочувај email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Не може да се направи папка" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Сликај" + diff --git a/po/nb.po b/po/nb.po new file mode 100755 index 0000000..31fb396 --- /dev/null +++ b/po/nb.po @@ -0,0 +1,1449 @@ +msgid "IDS_EMAIL_BODY_ACCOUNT" +msgstr "Konto" + +msgid "IDS_EMAIL_BODY_B" +msgstr "B" + +msgid "IDS_EMAIL_BODY_BYTE" +msgstr "Byte" + +msgid "IDS_EMAIL_BODY_GB" +msgstr "GB" + +msgid "IDS_EMAIL_BODY_IMAP4_PORT" +msgstr "IMAP4-port" + +msgid "IDS_EMAIL_BODY_INCOMING" +msgstr "Innkommende" + +msgid "IDS_EMAIL_BODY_KB" +msgstr "KB" + +msgid "IDS_EMAIL_BODY_MB" +msgstr "MB" + +msgid "IDS_EMAIL_BODY_OUTGOING" +msgstr "Utgående" + +msgid "IDS_EMAIL_BODY_POP3_PORT" +msgstr "POP3-port" + +msgid "IDS_EMAIL_BODY_YOUR_NAME" +msgstr "Ditt navn" + +msgid "IDS_EMAIL_OPT_COPY" +msgstr "Kopier" + +msgid "IDS_EMAIL_OPT_COPY_IMAGE" +msgstr "Kopier bilde" + +msgid "IDS_EMAIL_OPT_CUT" +msgstr "Klipp ut" + +msgid "IDS_EMAIL_OPT_PASTE" +msgstr "Lim inn" + +msgid "IDS_EMAIL_OPT_SAVE_IMAGE" +msgstr "Lagre bilde" + +msgid "IDS_EMAIL_OPT_SELECT" +msgstr "Velg" + +msgid "IDS_EMAIL_OPT_SELECT_ALL" +msgstr "Merk alt" + +msgid "IDS_EMAIL_OPT_SEND_IMAGE_VIA_MESSAGING" +msgstr "Send bilde via Meldinger" + +msgid "IDS_EMAIL_POP_FILE_NAME_EMPTY" +msgstr "Filnavn tomt" + +msgid "IDS_EMAIL_POP_INCORRECT_USER_NAME_OR_PASSWORD" +msgstr "Feil brukernavn eller passord" + +msgid "IDS_EMAIL_POP_SERVER_NOT_AVAILABLE" +msgstr "Server ikke tilgjengelig" + +msgid "IDS_EMAIL_OPT_DOWNLOAD_MESSAGE" +msgstr "Last ned melding" + +msgid "IDS_EMAIL_OPT_TENTATIVE" +msgstr "Foreløpig" + +msgid "IDS_EMAIL_POP_TRY_AGAIN_IN_PD_MINUTES" +msgstr "Prøv igjen om %d minutter" + +msgid "IDS_EMAIL_POP_NO_EMAIL_ADDRESS" +msgstr "Mangler e-postadresse" + +msgid "IDS_EMAIL_BODY_COMPLETE" +msgstr "Fullført" + +msgid "IDS_EMAIL_BODY_ACCEPTED_C_PS" +msgstr "Godkjent: %s" + +msgid "IDS_EMAIL_BODY_DECLINED_C_PS" +msgstr "Avvist: %s" + +msgid "IDS_EMAIL_BODY_DOWNLOAD_FULL_MESSAGE" +msgstr "Last ned fullstendig melding" + +msgid "IDS_EMAIL_BODY_GENERAL_SETTINGS" +msgstr "Generelle innstillinger" + +msgid "IDS_EMAIL_BODY_TENTATIVE_C_PS" +msgstr "Foreløpig: %s" + +msgid "IDS_EMAIL_BODY_WHEN_C_PS" +msgstr "Når: %s" + +msgid "IDS_EMAIL_BODY_WHERE_C_PS" +msgstr "Hvor: %s" + +msgid "IDS_EMAIL_BUTTON_DECLINE_ABB" +msgstr "Avslå" + +msgid "IDS_EMAIL_BODY_ORIGINAL_MESSAGE" +msgstr "Opprinnelig melding" + +msgid "IDS_EMAIL_HEADER_ACCOUNT_SETTINGS" +msgstr "Kontoinnstillinger" + +msgid "IDS_EMAIL_OPT_BLOCK" +msgstr "Blokker" + +msgid "IDS_EMAIL_OPT_MARK_AS_READ" +msgstr "Marker som lest" + +msgid "IDS_EMAIL_OPT_MARK_AS_UNREAD" +msgstr "Marker som ulest" + +msgid "IDS_EMAIL_OPT_OTHERS" +msgstr "Andre" + +msgid "IDS_EMAIL_OPT_UNREAD" +msgstr "Ulest" + +msgid "IDS_EMAIL_SK_COMPOSE" +msgstr "Opprett" + +msgid "IDS_EMAIL_HEADER_DOWNLOAD_FAILED" +msgstr "Nedlasting mislyktes" + +msgid "IDS_EMAIL_OPT_ADD_TO_CONTACT" +msgstr "Legg til kontakt" + +msgid "IDS_EMAIL_OPT_VOICE_CALL" +msgstr "Taleanrop" + +msgid "IDS_EMAIL_BODY_ACCOUNT_NAME" +msgstr "Kontonavn" + +msgid "IDS_EMAIL_BODY_ATTACHMENTS" +msgstr "Vedlegg" + +msgid "IDS_EMAIL_BODY_FROM_C" +msgstr "Fra:" + +msgid "IDS_EMAIL_BODY_IMAP4_SERVER" +msgstr "IMAP4-server" + +msgid "IDS_EMAIL_BODY_INCLUDES" +msgstr "Inkluderer" + +msgid "IDS_EMAIL_BODY_INCOMING_PORT" +msgstr "Innkommende port" + +msgid "IDS_EMAIL_BODY_INCOMING_SERVER" +msgstr "Innkommende server" + +msgid "IDS_EMAIL_BODY_IN_PD_MINUTES" +msgstr "Om %d minutter" + +msgid "IDS_EMAIL_BODY_KEEP_IN_SERVER" +msgstr "Behold på server" + +msgid "IDS_EMAIL_BODY_NO_TEXT" +msgstr "Ingen tekst" + +msgid "IDS_EMAIL_BODY_OUTGOING_PORT" +msgstr "Utgående port" + +msgid "IDS_EMAIL_BODY_OUTGOING_SERVER" +msgstr "Utgående server" + +msgid "IDS_EMAIL_BODY_PD_EMAILS" +msgstr "%d e-poster" + +msgid "IDS_EMAIL_BODY_POP3_SERVER" +msgstr "POP3-server" + +msgid "IDS_EMAIL_BODY_RECENT" +msgstr "Nylige" + +msgid "IDS_EMAIL_BODY_RETRIEVING_OPTIONS" +msgstr "Hentealternativer" + +msgid "IDS_EMAIL_BODY_RE_C" +msgstr "SV:" + +msgid "IDS_EMAIL_BODY_SENT_C" +msgstr "Sendt:" + +msgid "IDS_EMAIL_BODY_SENT_FROM_SAMSUNG_MOBILE" +msgstr "Sendt fra en Samsung Mobil" + +msgid "IDS_EMAIL_BODY_USER_PASSWORD" +msgstr "Brukerpassord" + +msgid "IDS_EMAIL_HEADER_EDIT_RULES" +msgstr "Rediger regler" + +msgid "IDS_EMAIL_HEADER_EMAIL_SETTINGS" +msgstr "E-postinnst." + +msgid "IDS_EMAIL_HEADER_MAILBOXES" +msgstr "Postbokser" + +msgid "IDS_EMAIL_POP_ALERT" +msgstr "Varsling" + +msgid "IDS_EMAIL_POP_FILE_ALREADY_EXISTS" +msgstr "Filen finnes allerede" + +msgid "IDS_EMAIL_POP_NO_SENDER" +msgstr "Ingen avsender" + +msgid "IDS_EMAIL_POP_SUCCEEDED" +msgstr "Fullført" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ATTACH_MAXIMUM_NUMBER_OF_FILES_IS_PD" +msgstr "Kan ikke legge ved. Maksimalt antall filer er %d" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB" +msgstr "Kan ikke legge ved. Maksimal filstørrelse er %d kB" + +msgid "IDS_EMAIL_POP_VALIDATION_FAILED" +msgstr "Validering mislyktes" + +msgid "IDS_EMAIL_SK_REPLY_ALL" +msgstr "Svar alle" + +msgid "IDS_EMAIL_BODY_1_ITEM" +msgstr "1 element" + +msgid "IDS_EMAIL_BODY_ADD_MY_NAMECARD" +msgstr "Legg til mitt visittkort" + +msgid "IDS_EMAIL_BODY_ADD_SIGNATURE" +msgstr "Legg til signatur" + +msgid "IDS_EMAIL_BODY_ALL_EMAILS" +msgstr "Alle e-postmeldinger" + +msgid "IDS_EMAIL_BODY_ALWAYS_BCC_MYSELF" +msgstr "Alltid send blindkopi til meg selv" + +msgid "IDS_EMAIL_BODY_BCC" +msgstr "Bko" + +msgid "IDS_EMAIL_BODY_BLOCK_EMAILS" +msgstr "Blokker e-poster" + +msgid "IDS_EMAIL_BODY_BODY" +msgstr "Brødtekst" + +msgid "IDS_EMAIL_BODY_CC" +msgstr "Kopi" + +msgid "IDS_EMAIL_BODY_CC_BCC" +msgstr "Kopi/Blindkopi" + +msgid "IDS_EMAIL_BODY_CHECK_INTERVAL" +msgstr "Sjekk intervall" + +msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT" +msgstr "Standard konto" + +msgid "IDS_EMAIL_BODY_DRAFTS" +msgstr "Utkast" + +msgid "IDS_EMAIL_BODY_EMAIL_ACCOUNTS" +msgstr "E-postkontoer" + +msgid "IDS_EMAIL_BODY_END_TIME" +msgstr "Sluttid" + +msgid "IDS_EMAIL_BODY_ENTIRE_EMAIL" +msgstr "Hel e-post" + +msgid "IDS_EMAIL_BODY_EXACTLY_THE_SAME_AS" +msgstr "Eksakt samme som" + +msgid "IDS_EMAIL_BODY_EXAMPLE" +msgstr "Eksempel" + +msgid "IDS_EMAIL_BODY_FROM_M_SENDER" +msgstr "Fra:" + +msgid "IDS_EMAIL_BODY_INBOX" +msgstr "Innboks" + +msgid "IDS_EMAIL_BODY_INCLUDE" +msgstr "Ta med" + +msgid "IDS_EMAIL_BODY_MATCH_CRITERIA" +msgstr "Avvisningskriterier" + +msgid "IDS_EMAIL_BODY_NOT_USED" +msgstr "Brukes ikke" + +msgid "IDS_EMAIL_BODY_NO_ACCOUNTS" +msgstr "Ingen kontoer" + +msgid "IDS_EMAIL_BODY_PD_DAYS" +msgstr "%d dager" + +msgid "IDS_EMAIL_BODY_PD_ITEMS" +msgstr "%d elementer" + +msgid "IDS_EMAIL_BODY_PRIORITY" +msgstr "Prioritet" + +msgid "IDS_EMAIL_BODY_RECEIVING_OPTIONS" +msgstr "Mottaksalternativer" + +msgid "IDS_EMAIL_BODY_SECURE_CONNECTION" +msgstr "Sikker tilkobling" + +msgid "IDS_EMAIL_BODY_SENDING_OPTIONS" +msgstr "Sendingsalternativer" + +msgid "IDS_EMAIL_BODY_SENTBOX" +msgstr "Sendte meldinger" + +msgid "IDS_EMAIL_BODY_SERVER_URL" +msgstr "Server-URL" + +msgid "IDS_EMAIL_BODY_SIGNATURE" +msgstr "Signatur" + +msgid "IDS_EMAIL_BODY_SPAMBOX" +msgstr "Søppelpost" + +msgid "IDS_EMAIL_BODY_START_TIME" +msgstr "Starttid" + +msgid "IDS_EMAIL_BODY_TRASH" +msgstr "Søppel" + +msgid "IDS_EMAIL_BODY_WITHOUT_ATTACHMENTS" +msgstr "Uten vedlegg" + +msgid "IDS_EMAIL_BUTTON_GROUP" +msgstr "Gruppe" + +msgid "IDS_EMAIL_HEADER_ADD_RULES" +msgstr "Legg til regler" + +msgid "IDS_EMAIL_OPT_ATTACH_ITEMS" +msgstr "Legg ved elementer" + +msgid "IDS_EMAIL_OPT_EXCHANGE" +msgstr "Exchange" + +msgid "IDS_EMAIL_OPT_FILE" +msgstr "Fil" + +msgid "IDS_EMAIL_OPT_NAMECARD" +msgstr "Visittkort" + +msgid "IDS_EMAIL_OPT_OPEN_URL" +msgstr "Åpne URL" + +msgid "IDS_EMAIL_OPT_SENDER" +msgstr "Avsender" + +msgid "IDS_EMAIL_OPT_SEND_EMAIL" +msgstr "Send e-post" + +msgid "IDS_EMAIL_OPT_UPDATE_EXISTING" +msgstr "Oppdater eksisterende" + +msgid "IDS_EMAIL_POP_ADD_ACCOUNTS" +msgstr "Legg til kontoer" + +msgid "IDS_EMAIL_POP_DOWNLOADING_ATTACHMENT_ING" +msgstr "Laster ned vedlegg..." + +msgid "IDS_EMAIL_POP_INVALID_EMAIL_ADDRESS" +msgstr "Ugyldig e-postadresse" + +msgid "IDS_EMAIL_POP_LOADING_CONTENTS_ING" +msgstr "Laster innhold..." + +msgid "IDS_EMAIL_POP_MAXIMUM_NUMBER_OF_ATTACHMENTS_REACHED" +msgstr "Maksimalt antall vedlegg er nådd" + +msgid "IDS_EMAIL_POP_MOVE_TO_SPAMBOX_Q" +msgstr "Flytte til Søppelpost?" + +msgid "IDS_EMAIL_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS" +msgstr "Ingen mottakere lagt til. Angi mottakere" + +msgid "IDS_EMAIL_POP_PLEASE_FILL_ALL_THE_MANDATORY_FIELDS" +msgstr "Fyll ut alle de obligatoriske feltene" + +msgid "IDS_EMAIL_POP_SAVE_IN_DRAFTS_Q" +msgstr "Lagre i Utkast?" + +msgid "IDS_EMAIL_POP_THERE_IS_NO_ACCOUNT_CREATE_A_NEW_ACCOUNT_FIRST" +msgstr "Det finnes ikke noen konto. Opprett en ny konto først" + +msgid "IDS_EMAIL_POP_TOO_MANY_RECIPIENTS" +msgstr "For mange mottakere" + +msgid "IDS_EMAIL_POP_UNABLE_TO_DOWNLOAD" +msgstr "Kan ikke laste ned" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ENTER_TEXT" +msgstr "Kan ikke angi tekst" + +msgid "IDS_EMAIL_POP_UNABLE_TO_LAUNCH_APPLICATION" +msgstr "Kan ikke starte program" + +msgid "IDS_EMAIL_POP_UNABLE_TO_OPEN_ATTACHMENT" +msgstr "Kan ikke åpne vedlegg" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SAVE_ATTACHMENT" +msgstr "Kan ikke lagre vedlegg" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SAVE_IN_DRAFTS" +msgstr "Kan ikke lagre i Utkast" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEND_EMAIL" +msgstr "Kan ikke sende e-post" + +msgid "IDS_EMAIL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "Filtypen støttes ikke" + +msgid "IDS_EMAIL_POP_VALIDATING_ACCOUNT_ING" +msgstr "Validerer konto..." + +msgid "IDS_EMAIL_SK_RESEND" +msgstr "Send på nytt" + +msgid "IDS_EMAIL_BODY_ACCEPT_ALL_SSL_CERTIFICATES" +msgstr "Godta alle SSL-sertifikater" + +msgid "IDS_EMAIL_SK3_ACCOUNT_LIST" +msgstr "Konto liste" + +msgid "IDS_EMAIL_BODY_USER_ID" +msgstr "Bruker-ID" + +msgid "IDS_EMAIL_POP_ACCOUNT_ALREADY_REGISTERED" +msgstr "Kontoen er allerede registrert" + +msgid "IDS_EMAIL_HEADER_ATTACH_FILE" +msgstr "Legg ved fil" + +msgid "IDS_EMAIL_POP_ACCOUNT_ALREADY_EXISTS" +msgstr "Kontoen finnes allerede" + +msgid "IDS_EMAIL_BODY_NO_SUBJECT" +msgstr "Intet emne" + +msgid "IDS_EMAIL_BODY_FROM" +msgstr "Fra" + +msgid "IDS_EMAIL_BODY_NO_ADDRESS" +msgstr "Ingen adresse" + +msgid "IDS_EMAIL_OPT_RECORD_SOUND" +msgstr "Spill inn lyd" + +msgid "IDS_EMAIL_OPT_RECORD_VIDEO" +msgstr "Spill inn video" + +msgid "IDS_EMAIL_OPT_INSERT_IMAGE" +msgstr "Sett inn bilde" + +msgid "IDS_EMAIL_OPT_ADD_TO_CALENDAR" +msgstr "Legg til kalender" + +msgid "IDS_EMAIL_OPT_CHANGE_EMAIL_ADDRESS_ABB" +msgstr "Endre e-postadresse" + +msgid "IDS_EMAIL_OPT_CLIPBOARD" +msgstr "Utklippstavle" + +msgid "IDS_EMAIL_OPT_VIEW_CONTACT_DETAILS" +msgstr "Vis kontaktinformasjon" + +msgid "IDS_EMAIL_POP_SAVED_IN_DRAFTS" +msgstr "Lagret i Utkast" + +msgid "IDS_EMAIL_POP_NETWORK_BUSY" +msgstr "Nettverk opptatt" + +msgid "IDS_EMAIL_POP_LOGIN_ALLOWED_ONLY_EVERY_PD_MINUTES" +msgstr "Login allowed only every %d minutes" + +msgid "IDS_EMAIL_POP_HOST_NOT_FOUND" +msgstr "Finner ikke vert" + +msgid "IDS_EMAIL_POP_HOST_NOT_REACHABLE" +msgstr "Vert kan ikke nås" + +msgid "IDS_EMAIL_POP_NO_SERVICE" +msgstr "Nettv. mangler" + +msgid "IDS_EMAIL_POP_UNABLE_TO_FORWARD_DRM_CONTENTS" +msgstr "Kan ikke videresende DRM-innhold" + +msgid "IDS_EMAIL_POP_BLOCKED" +msgstr "Blokkert" + +msgid "IDS_EMAIL_POP_1_EMAIL_SELECTED" +msgstr "1 e-post valgt" + +msgid "IDS_EMAIL_POP_PD_EMAILS_SELECTED" +msgstr "%d e-poster valgt" + +msgid "IDS_EMAIL_POP_1_RECIPIENT_SELECTED" +msgstr "1 mottaker valgt" + +msgid "IDS_EMAIL_POP_PD_RECIPIENTS_SELECTED" +msgstr "%d mottakere valgt" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ADD_ACCOUNT" +msgstr "Kan ikke legge til konto" + +msgid "IDS_EMAIL_SK3_MOVE_HERE" +msgstr "Flytt hit" + +msgid "IDS_EMAIL_OPT_UNDO" +msgstr "Angre" + +msgid "IDS_EMAIL_OPT_REDO" +msgstr "Gjør om" + +msgid "IDS_EMAIL_OPT_BOLD" +msgstr "Fet" + +msgid "IDS_EMAIL_OPT_ITALIC" +msgstr "Kursiv" + +msgid "IDS_EMAIL_OPT_UNDERLINE" +msgstr "Understreking" + +msgid "IDS_EMAIL_OPT_FONT_SIZE" +msgstr "Skriftstørrelse" + +msgid "IDS_EMAIL_OPT_INDENT" +msgstr "Sett inn innrykk" + +msgid "IDS_EMAIL_OPT_VIEW_BY" +msgstr "Vis etter" + +msgid "IDS_EMAIL_OPT_IMPORTANT" +msgstr "Viktig" + +msgid "IDS_EMAIL_OPT_REFRESH" +msgstr "Oppdater" + +msgid "IDS_EMAIL_POP_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED" +msgstr "Maksimalt antall mottakere (%d) er nådd" + +msgid "IDS_EMAIL_BODY_TLS" +msgstr "TLS" + +msgid "IDS_EMAIL_BODY_SSL" +msgstr "SSL" + +msgid "IDS_EMAIL_BODY_POP3" +msgstr "POP3" + +msgid "IDS_EMAIL_BODY_IMAP4" +msgstr "IMAP4" + +msgid "IDS_EMAIL_OPT_VIDEO_CALL" +msgstr "Videoanrop" + +msgid "IDS_EMAIL_OPT_SEND_MESSAGE" +msgstr "Send melding" + +msgid "IDS_EMAIL_OPT_COMPOSE_EMAIL" +msgstr "Skriv e-post" + +msgid "IDS_EMAIL_OPT_OTHER" +msgstr "Annet" + +msgid "IDS_EMAIL_OPT_TAKE_PHOTO" +msgstr "Ta bilde" + +msgid "IDS_EMAIL_OPT_SECURITY" +msgstr "Sikkerhet" + +msgid "IDS_EMAIL_OPT_SIGN" +msgstr "Signatur" + +msgid "IDS_EMAIL_OPT_ENCRYPT" +msgstr "Krypter" + +msgid "IDS_EMAIL_POP_AUTHENTICATION_FAILED" +msgstr "Godkjenning mislyktes" + +msgid "IDS_EMAIL_POP_DOWNLOAD_CANCELLED" +msgstr "Nedlasting avbrutt" + +msgid "IDS_EMAIL_POP_SENDING_CANCELLED" +msgstr "Sending avbrutt" + +msgid "IDS_EMAIL_POP_ACCOUNT_EDITED" +msgstr "Konto redigert" + +msgid "IDS_EMAIL_POP_ACCOUNT_LIST_NOT_FOUND" +msgstr "Finner ikke kontolisten" + +msgid "IDS_EMAIL_OPT_COPY_IMAGE_LOCATION" +msgstr "Kopier bildeplassering" + +msgid "IDS_EMAIL_POP_DEVICE_STORAGE_FULL" +msgstr "Enhetsminnet er fullt" + +msgid "IDS_EMAIL_POP_DOWNLOAD_ATTACHMENT_Q" +msgstr "Laste ned vedlegg?" + +msgid "IDS_EMAIL_POP_EMAIL_DELETED_FROM_SERVER" +msgstr "E-post slettet fra serveren" + +msgid "IDS_EMAIL_POP_FAILED_TO_ACTIVATE_PDP" +msgstr "Kunne ikke aktivere PDP" + +msgid "IDS_EMAIL_POP_FAILED_TO_ADD_BLOCK_RULE" +msgstr "Kunne ikke legge til blokkeringsregel" + +msgid "IDS_EMAIL_POP_FAILED_TO_MARK_AS_UNREAD" +msgstr "Kunne ikke merke som ulest" + +msgid "IDS_EMAIL_BODY_INCOMING_MAIL_SERVER_TYPE" +msgstr "Servertype for innkommende e-post" + +msgid "IDS_EMAIL_BODY_LOADING_MORE_EMAILS_ING" +msgstr "Laster inn flere e-poster..." + +msgid "IDS_EMAIL_POP_LOG_IN_FAILED" +msgstr "Pålogging mislyktes" + +msgid "IDS_EMAIL_POP_RETRIEVING_ADDRESS_LIST_ING" +msgstr "Henter adresseliste..." + +msgid "IDS_EMAIL_OPT_SEND_IMAGE_VIA_EMAIL" +msgstr "Send bilde via e-post" + +msgid "IDS_EMAIL_BODY_YOU_CAN_USE_EMAIL_ON_YOUR_DEVICE_BY_ADDING_YOUR_ACCOUNT_IF_YOU_DO_NOT_HAVE_AN_EMAIL_ACCOUNT_SIGN_UP_FIRST" +msgstr "Du kan bruke e-post på enheten ved å legge til kontoen din. Hvis du ikke har en e-postkonto, må du registrere deg for en først" + +msgid "IDS_EMAIL_POP_DOWNLOADING_ATTACHMENTS_ON_THE_MOBILE_DEVICE_IS_NOT_ALLOWED_BY_EXCHANGE_SERVER_POLICY" +msgstr "Nedlasting av vedlegg på mobilenheten er ikke tillatt av Exchange Server-policy" + +msgid "IDS_EMAIL_POP_FAILED_TO_DELETE" +msgstr "Kunne ikke slette" + +msgid "IDS_EMAIL_POP_FAILED_TO_MOVE" +msgstr "Kunne ikke flytte" + +msgid "IDS_EMAIL_POP_MARKED_AS_UNREAD" +msgstr "Markert som ulest" + +msgid "IDS_EMAIL_POP_DOWNLOAD_ATTACHMENTS_Q" +msgstr "Laste ned vedlegg?" + +msgid "IDS_EMAIL_POP_MAXIMUM_RECIPIENT_EMAIL_LENGTH_EXCEEDED" +msgstr "Maksimal lengde på e-post for mottaker oversteget" + +msgid "IDS_EMAIL_POP_ACCOUNT_CREATION_CANCELLED" +msgstr "Kontooppretting avbrutt" + +msgid "IDS_EMAIL_MBODY_MAILBOX_LIST" +msgstr "Postboksliste" + +msgid "IDS_EMAIL_BODY_MAILBOX_SETUP" +msgstr "Konfigurering av postkasse" + +msgid "IDS_EMAIL_POP_ALREADY_DOWNLOADING_T_HEADER" +msgstr "Laster allerede ned" + +msgid "IDS_EMAIL_POP_CANCELLING_ATTACHMENT_DOWNLOAD_ING" +msgstr "Avbryter vedleggsnedlastingen..." + +msgid "IDS_EMAIL_BODY_SENT_USING_TIZEN_MOBILE" +msgstr "Sendt fra en TIZEN-mobil" + +msgid "IDS_EMAIL_POP_EXCHANGE_ACTIVESYNC_ACCOUNT_NOT_AVAILABLE_NOTI" +msgstr "Exchange ActiveSync-konto ikke tilgjengelig" + +msgid "IDS_EMAIL_BODY_RE" +msgstr "Svar" + +msgid "IDS_EMAIL_BODY_FWD_T_EMAIL_PREFIX_ABB" +msgstr "Videresend" + +msgid "IDS_EMAIL_BODY_EXCHANGE_ACTIVESYNC" +msgstr "Exchange ActiveSync" + +msgid "IDS_EMAIL_BODY_GMAIL" +msgstr "Gmail" + +msgid "IDS_EMAIL_BODY_HOTMAIL" +msgstr "Hotmail" + +msgid "IDS_EMAIL_BODY_AOL" +msgstr "AOL" + +msgid "IDS_EMAIL_BODY_YAHOO_E_MAIL" +msgstr "Yahoo! e-post" + +msgid "IDS_EMAIL_OPT_ADD_ACCOUNTS" +msgstr "Legg til kontoer" + +msgid "IDS_EMAIL_BODY_DOWNLOAD_MESSAGE" +msgstr "Last ned melding" + +msgid "IDS_EMAIL_POP_ALREADY_BLOCKED" +msgstr "Allerede blokkert" + +msgid "IDS_EMAIL_BODY_SEARCH_ON_SERVER" +msgstr "Søk på server" + +msgid "IDS_EMAIL_OPT_RECIPIENT" +msgstr "Mottaker" + +msgid "IDS_EMAIL_OPT_DELETE_ALL" +msgstr "Slett alle" + +msgid "IDS_EMAIL_OPT_RECENT_HPD" +msgstr "Nylige (%d)" + +msgid "IDS_EMAIL_OPT_REPLY_TO_SENDER" +msgstr "Svar til avsender" + +msgid "IDS_EMAIL_HEADER_RECENT_T_HEADER" +msgstr "Nylige" + +msgid "IDS_EMAIL_OPT_CONTACT_DETAILS" +msgstr "Kontaktinformasjon" + +msgid "IDS_EMAIL_OPT_REPLY_TO_ALL" +msgstr "Svar til alle" + +msgid "IDS_EMAIL_BODY_THREADED_LIST" +msgstr "Trådliste" + +msgid "IDS_EMAIL_BODY_SELECT_EMAIL" +msgstr "Velg e-post" + +msgid "IDS_EMAIL_OPT_VIEW_AS" +msgstr "Vis som" + +msgid "IDS_EMAIL_HEADER_BLOCK_EMAILS" +msgstr "Blokker e-poster" + +msgid "IDS_EMAIL_HEADER_DELETE" +msgstr "Slett" + +msgid "IDS_EMAIL_HEADER_DEFAULT_ACCOUNT" +msgstr "Standard konto" + +msgid "IDS_EMAIL_HEADER_EMAIL" +msgstr "E-post" + +msgid "IDS_EMAIL_BODY_SHOW_EMAILS" +msgstr "Vis e-poster" + +msgid "IDS_EMAIL_OPT_DATE" +msgstr "Dato" + +msgid "IDS_EMAIL_HEADER_SEARCH" +msgstr "Søk" + +msgid "IDS_EMAIL_POP_UNABLE_TO_OPEN_EMAIL_MESSAGE" +msgstr "Kan ikke åpne e-postmeldingen" + +msgid "IDS_EMAIL_POP_UNABLE_TO_COMPOSE_EMAIL_MESSAGE" +msgstr "Kan ikke skrive e-postmelding" + +msgid "IDS_EMAIL_POP_FAILED_TO_START_EMAIL_APPLICATION" +msgstr "Kunne ikke starte E-postprogram" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SAVE_SUBJECT_EMPTY" +msgstr "Kan ikke lagre. Emnet er tomt" + +msgid "IDS_EMAIL_HEADER_ALL_EMAILS" +msgstr "Alle e-postmeldinger" + +msgid "IDS_EMAIL_HEADER_MAILBOX_SETUP" +msgstr "Konfigurering av postkasse" + +msgid "IDS_EMAIL_HEADER_RETRIEVING_OPTIONS" +msgstr "Hentealternativer" + +msgid "IDS_EMAIL_HEADER_ADD_ACCOUNT" +msgstr "Legg til konto" + +msgid "IDS_EMAIL_HEADER_TEXT_COLOUR" +msgstr "Tekstfarge" + +msgid "IDS_EMAIL_HEADER_TEXT_BACKGROUND_COLOUR" +msgstr "Tekstbakgrunnsfarge" + +msgid "IDS_EMAIL_BODY_ADDRESS" +msgstr "Adresse" + +msgid "IDS_EMAIL_SK_DECLINE" +msgstr "Avslå" + +msgid "IDS_EMAIL_OPT_RESEND" +msgstr "Send på nytt" + +msgid "IDS_EMAIL_OPT_ATTACH_FILE" +msgstr "Legg ved fil" + +msgid "IDS_EMAIL_HEADER_COMPOSE_EMAIL" +msgstr "Skriv e-post" + +msgid "IDS_EMAIL_HEADER_ADD_ACCOUNTS" +msgstr "Legg til kontoer" + +msgid "IDS_EMAIL_OPT_PD_MOST_RECENT_EMAILS" +msgstr "%d nyeste e-poster" + +msgid "IDS_EMAIL_POP_YOU_CAN_ONLY_LOG_IN_ONCE_EVERY_PD_MINUTES" +msgstr "Du kan bare logge på én gang hvert %d. minutt" + +msgid "IDS_EMAIL_BODY_DEFAULT_SENDING_ACCOUNT" +msgstr "Standard sendekonto" + +msgid "IDS_EMAIL_HEADER_DEFAULT_SENDING_ACCOUNT" +msgstr "Standard sendekonto" + +msgid "IDS_EMAIL_BODY_DO_NOT_MATCH_FOLDER_WITH_SERVER" +msgstr "Ikke match mappe med server" + +msgid "IDS_EMAIL_POP_QUERYING_SERVER_INFORMATION_ING" +msgstr "Ber om serverinformasjon..." + +msgid "IDS_EMAIL_POP_SERVER_INFORMATION_QUERY_FAILED_ENTER_SERVER_INFORMATION_MANUALLY" +msgstr "Forespørsel om serverinformasjon mislyktes. Angi serverinformasjon manuelt" + +msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL" +msgstr "Sikkerhetspolicy begrenser bruk av POP/IMAP-e-post" + +msgid "IDS_EMAIL_OPT_VIEW" +msgstr "Vis" + +msgid "IDS_EMAIL_OPT_COPY_LINK" +msgstr "Kopier kobling" + +msgid "IDS_EMAIL_POP_FAILED_TO_MARK_AS_READ" +msgstr "Kunne ikke merke som lest" + +msgid "IDS_EMAIL_POP_MARKED_AS_READ" +msgstr "Markert som lest" + +msgid "IDS_EMAIL_OPT_COPY_IMAGE_URL" +msgstr "Kopier bilde-URL" + +msgid "IDS_EMAIL_OPT_COPY_URL" +msgstr "Kopier URL" + +msgid "IDS_EMAIL_OPT_MOVE_TO_SPAMBOX" +msgstr "Flytt til Søppelpost" + +msgid "IDS_EMAIL_POP_DISCARD_CURRENT_MESSAGE_Q" +msgstr "Forkast aktuell melding?" + +msgid "IDS_EMAIL_POP_MEETING_REQUEST_DECLINED_MESSAGE_WILL_BE_MOVED_TO_RECYCLE_BIN" +msgstr "Møteforespørsel avslått. Meldingen blir flyttet til papirkurven" + +msgid "IDS_EMAIL_POP_MEETING_REQUEST_TENTATIVELY_ACCEPTED_MESSAGE_WILL_BE_MOVED_TO_RECYCLE_BIN" +msgstr "Møteforespørsel foreløpig godtatt. Meldingen blir flyttet til papirkurven" + +msgid "IDS_EMAIL_POP_MEETING_REQUEST_ACCEPTED_MESSAGE_WILL_BE_MOVED_TO_RECYCLE_BIN" +msgstr "Møteforespørsel godtatt. Meldingen blir flyttet til papirkurven" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ATTACH_FILE" +msgstr "Kan ikke legge ved fil" + +msgid "IDS_EMAIL_OPT_CALENDAR" +msgstr "Kalender" + +msgid "IDS_EMAIL_OPT_MEMO" +msgstr "Notat" + +msgid "IDS_EMAIL_OPT_TINY_M_TEXTSIZE" +msgstr "Veldig liten" + +msgid "IDS_EMAIL_OPT_SMALL_M_TEXTSIZE" +msgstr "Liten" + +msgid "IDS_EMAIL_OPT_NORMAL_M_TEXTSIZE" +msgstr "Normal" + +msgid "IDS_EMAIL_OPT_LARGE_M_TEXTSIZE" +msgstr "Stor" + +msgid "IDS_EMAIL_OPT_HUGE_M_TEXTSIZE" +msgstr "Veldig stor" + +msgid "IDS_EMAIL_BODY_ALWAYS_CC_BCC_MYSELF" +msgstr "Alltid send kopi/blindkopi til meg selv" + +msgid "IDS_EMAIL_BODY_ALWAYS_CC_MYSELF" +msgstr "Alltid send kopi til meg selv" + +msgid "IDS_EMAIL_BODY_SEND_READ_REPORT" +msgstr "Send leserapport" + +msgid "IDS_EMAIL_OPT_VIEW_MODE" +msgstr "Visningsmodus" + +msgid "IDS_EMAIL_OPT_STANDARD_VIEW" +msgstr "Standard visning" + +msgid "IDS_EMAIL_OPT_CONVERSATION_VIEW" +msgstr "Samtalevisning" + +msgid "IDS_EMAIL_OPT_DATE_HMOST_RECENT" +msgstr "Dato (nyeste)" + +msgid "IDS_EMAIL_OPT_DATE_HOLDEST" +msgstr "Dato (eldste)" + +msgid "IDS_EMAIL_OPT_SENDER_HA_TO_Z" +msgstr "Avsender (A til Å)" + +msgid "IDS_EMAIL_OPT_SENDER_HZ_TO_A" +msgstr "Avsender (Å til A)" + +msgid "IDS_EMAIL_OPT_READ_UNREAD" +msgstr "Lest/ulest" + +msgid "IDS_EMAIL_OPT_FAVOURITES" +msgstr "Favoritter" + +msgid "IDS_EMAIL_HEADER_ALL_ACCOUNTS" +msgstr "Alle kontoer" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAILS" +msgstr "Velg e-postmeldinger" + +msgid "IDS_EMAIL_BODY_MICROSOFT_EXCHANGE_ACTIVESYNC" +msgstr "Microsoft Exchange ActiveSync" + +msgid "IDS_EMAIL_HEADER_VIEW_MODE_ABB" +msgstr "Visningsmodus" + +msgid "IDS_EMAIL_BODY_NO_EMAILS" +msgstr "Ingen e-poster" + +msgid "IDS_EMAIL_OPT_DOCUMENTS_ABB" +msgstr "Dokumenter" + +msgid "IDS_EMAIL_OPT_ATTACH" +msgstr "Legg ved" + +msgid "IDS_EMAIL_OPT_PRINT" +msgstr "Skriv ut" + +msgid "IDS_EMAIL_OPT_GALLERY" +msgstr "Galleri" + +msgid "IDS_EMAIL_OPT_MY_FILES" +msgstr "Mine Filer" + +msgid "IDS_EMAIL_OPT_CONTACTS" +msgstr "Kontakter" + +msgid "IDS_EMAIL_OPT_INSERT" +msgstr "Sett inn" + +msgid "IDS_EMAIL_BODY_SHOW_IMAGES" +msgstr "Vis bilder" + +msgid "IDS_EMAIL_OPT_SORT_BY" +msgstr "Sorter etter" + +msgid "IDS_EMAIL_OPT_FLAG" +msgstr "Flagg" + +msgid "IDS_EMAIL_OPT_MEETING_REQUEST" +msgstr "Møteinnkallelse" + +msgid "IDS_EMAIL_OPT_ATTACHMENTS" +msgstr "Vedlegg" + +msgid "IDS_EMAIL_HEADER_FOLDERS" +msgstr "Mapper" + +msgid "IDS_EMAIL_OPT_ADD_FOLDER" +msgstr "Legg til mappe" + +msgid "IDS_EMAIL_OPT_TITLE" +msgstr "Tittel" + +msgid "IDS_EMAIL_HEADER_PD_CONVERSATIONS" +msgstr "%d samtaler" + +msgid "IDS_EMAIL_HEADER_SERVER" +msgstr "Server" + +msgid "IDS_EMAIL_OPT_ALL" +msgstr "Alle" + +msgid "IDS_EMAIL_OPT_RECIPIENT_HA_TO_Z" +msgstr "Mottaker (A til Å)" + +msgid "IDS_EMAIL_OPT_RECIPIENT_HZ_TO_A" +msgstr "Mottaker (Å til A)" + +msgid "IDS_EMAIL_HEADER_SEARCH_SHAREPOINT" +msgstr "Søk i SharePoint" + +msgid "IDS_EMAIL_BODY_ENTER_PATH_OF_WINDOWS_SHAREPOINT_SERVICES_OR_WINDOWS_FILE_SHARE_HUNC_TO_ACCESS_DOCUMENTS_REMOTELY" +msgstr "Angi banen til Windows SharePoint Services eller Windows-fildeling (UNC) for å få tilgang til eksterne dokumenter" + +msgid "IDS_EMAIL_OPT_DELETE_FROM_CALENDAR" +msgstr "Slett fra Kalender" + +msgid "IDS_EMAIL_BODY_FLICK_UP_TO_SEARCH_ON_SERVER" +msgstr "Flikk opp for å søke på server" + +msgid "IDS_EMAIL_BODY_FLICK_UP_TO_SEARCH_ON_SERVER_AGAIN" +msgstr "Flikk opp for å søke på server igjen" + +msgid "IDS_EMAIL_BODY_RECENT_EMAILS" +msgstr "Nylige e-poster" + +msgid "IDS_EMAIL_BODY_DELETING_OPTIONS" +msgstr "Slettealternativer" + +msgid "IDS_EMAIL_BODY_FAVOURITES" +msgstr "Favoritter" + +msgid "IDS_EMAIL_BODY_HIGH_M_PRIORITY" +msgstr "Høy" + +msgid "IDS_EMAIL_BODY_NORMAL_M_EMAILPRIORITY" +msgstr "Normal" + +msgid "IDS_EMAIL_BODY_LOW_M_EMAILPRIORITY" +msgstr "Lav" + +msgid "IDS_EMAIL_BODY_MEETING_REQUEST" +msgstr "Møteinnkallelse" + +msgid "IDS_EMAIL_BODY_MEETING_INVITATION" +msgstr "Møteinvitasjon" + +msgid "IDS_EMAIL_OPT_SUGGEST_NEW_TIME_ABB" +msgstr "Foreslå nytt klokkeslett" + +msgid "IDS_EMAIL_BODY_VIEW_IN_CALENDAR" +msgstr "Vis i Kalender" + +msgid "IDS_EMAIL_BODY_SEARCH_EMAIL" +msgstr "Søk e-post" + +msgid "IDS_EMAIL_BODY_ALWAYS_SHOW_THIS_MESSAGE" +msgstr "Vis alltid denne meldingen" + +msgid "IDS_EMAIL_BODY_SEND_EMAIL_FROM_THIS_ACCOUNT_BY_DEFAULT" +msgstr "Send e-post fra denne kontoen som standard" + +msgid "IDS_EMAIL_BODY_SMTP_SERVER" +msgstr "SMTP-server" + +msgid "IDS_EMAIL_OPT_SEARCH" +msgstr "Søk" + +msgid "IDS_EMAIL_OPT_SHARE" +msgstr "Del" + +msgid "IDS_EMAIL_OPT_MESSAGE" +msgstr "Melding" + +msgid "IDS_EMAIL_OPT_EMAIL" +msgstr "E-post" + +msgid "IDS_EMAIL_OPT_FACEBOOK" +msgstr "Facebook" + +msgid "IDS_EMAIL_OPT_TWITTER" +msgstr "Twitter" + +msgid "IDS_EMAIL_OPT_NFC" +msgstr "NFC" + +msgid "IDS_EMAIL_BODY_SECURITY_OPTIONS" +msgstr "Sikkerhetsalternativer" + +msgid "IDS_EMAIL_HEADER_SECURITY_OPTIONS" +msgstr "Sikkerhetsalternativer" + +msgid "IDS_EMAIL_BODY_ENCRYPTION_ALGORITHM" +msgstr "Kryperingsalgoritme" + +msgid "IDS_EMAIL_BODY_SIGN_ALGORITHM" +msgstr "Signaturalgoritme" + +msgid "IDS_EMAIL_BODY_EMAIL_CERTIFICATE" +msgstr "E-postsertifikat" + +msgid "IDS_EMAIL_BODY_SUNDAY" +msgstr "Søndag" + +msgid "IDS_EMAIL_BODY_MONDAY" +msgstr "Mandag" + +msgid "IDS_EMAIL_BODY_TUESDAY" +msgstr "Tirsdag" + +msgid "IDS_EMAIL_BODY_WEDNESDAY" +msgstr "Onsdag" + +msgid "IDS_EMAIL_BODY_THURSDAY" +msgstr "Torsdag" + +msgid "IDS_EMAIL_BODY_FRIDAY" +msgstr "Fredag" + +msgid "IDS_EMAIL_BODY_SATURDAY" +msgstr "Lørdag" + +msgid "IDS_EMAIL_BODY_OTHER" +msgstr "Annet" + +msgid "IDS_EMAIL_BODY_PHONE" +msgstr "Telefon" + +msgid "IDS_EMAIL_POP_UNABLE_TO_DECRYPT_MESSAGE" +msgstr "Kan ikke dekryptere melding" + +msgid "IDS_EMAIL_POP_UNABLE_TO_DECRYPT_MESSAGE_CERTIFICATE_NOT_INSTALLED" +msgstr "Kan ikke dekryptere melding. Sertifikat ikke installert" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SIGN_OR_ENCRYPT_MESSAGE_CERTIFICATE_NOT_INSTALLED" +msgstr "Kan ikke signere eller kryptere melding. Sertifikat ikke installert" + +msgid "IDS_EMAIL_POP_DOWNLOAD_MORE_DETAILS_TO_SHOW_S_MIME_MESSAGES_CONTINUE_Q" +msgstr "Last ned mer informasjon for å vise S/MIME-meldinger. Fortsette?" + +msgid "IDS_EMAIL_BODY_LAST_WEEK" +msgstr "Siste uke" + +msgid "IDS_EMAIL_BODY_PD_WEEKS_AGO" +msgstr "%d uker siden" + +msgid "IDS_EMAIL_BODY_READ" +msgstr "Lese" + +msgid "IDS_EMAIL_BODY_UNREAD" +msgstr "Ulest" + +msgid "IDS_EMAIL_BODY_CLEAR" +msgstr "Slett" + +msgid "IDS_EMAIL_BODY_MANUAL_SETUP" +msgstr "Manuelt oppsett" + +msgid "IDS_EMAIL_BODY_OLDER_M_HISTORY" +msgstr "Eldre" + +msgid "IDS_EMAIL_HEADER_CHECKING" +msgstr "Kontrollerer" + +msgid "IDS_EMAIL_POP_THIS_ATTACHMENT_CANNOT_BE_DISPLAYED" +msgstr "Kan ikke vise vedlegg" + +msgid "IDS_EMAIL_BODY_SERVER" +msgstr "Server" + +msgid "IDS_EMAIL_BODY_ADD_ACCOUNT" +msgstr "Legg til konto" + +msgid "IDS_EMAIL_BODY_REMOVE_EVENT_FROM_CALENDAR" +msgstr "Fjern hendelse fra Kalender" + +msgid "IDS_EMAIL_POP_GETTING_RECIPIENTS_CERTIFICATES_ING" +msgstr "Henter mottakersertifikater..." + +msgid "IDS_EMAIL_POP_VALIDATING_CERTIFICATES_ING" +msgstr "Validerer sertifikater..." + +msgid "IDS_EMAIL_HEADER_CERTIFICATES" +msgstr "Sertifikater" + +msgid "IDS_EMAIL_POP_FOLLOWING_RECIPIENTS_HAVE_INVALID_CERTIFICATES" +msgstr "Følgende mottakere har ugyldige sertifikater" + +msgid "IDS_EMAIL_POP_VERIFYING_SIGNATURE_ING" +msgstr "Bekrefter signatur ..." + +msgid "IDS_EMAIL_BODY_ADVANCED" +msgstr "Avansert" + +msgid "IDS_EMAIL_BODY_SEARCH_BY" +msgstr "Søk etter" + +msgid "IDS_EMAIL_BODY_WINDOWS_LIVE_HOTMAIL" +msgstr "Windows Live Hotmail" + +msgid "IDS_EMAIL_BODY_DELETE_ALL_Q" +msgstr "Slette alle?" + +msgid "IDS_EMAIL_BODY_MOVE_TO" +msgstr "Flytt til" + +msgid "IDS_EMAIL_BODY_TOTAL_EMAILS" +msgstr "Totalt antall e-poster" + +msgid "IDS_EMAIL_BODY_HEADER_ONLY" +msgstr "Bare meldingshode" + +msgid "IDS_EMAIL_BODY_PHONE_AND_SERVER" +msgstr "Telefon og server" + +msgid "IDS_EMAIL_BODY_PHONE_ONLY" +msgstr "Bare telefon" + +msgid "IDS_EMAIL_BODY_USE_SAME_USERNAME_PASSWORD_AS_POP3_IMAP4" +msgstr "Bruk samme brukernavn/passord som POP3/IMAP4" + +msgid "IDS_EMAIL_BODY_USE_POP3_IMAP4_BEFORE_SMTP" +msgstr "Bruk POP3/IMAP4 før SMTP" + +msgid "IDS_EMAIL_POP_FAILED_TO_VALIDATE_ACCOUNT_CHECK_EMAIL_ADDRESS_AND_PASSWORD" +msgstr "Kunne ikke validere konto. Kontroller e-postadresse og passord" + +msgid "IDS_EMAIL_BODY_SMTP_PORT" +msgstr "SMTP-port" + +msgid "IDS_EMAIL_BODY_SHOW_PASSWORD" +msgstr "Vis passord" + +msgid "IDS_EMAIL_BODY_LAST_MONTH" +msgstr "Forrige måned" + +msgid "IDS_EMAIL_BODY_1_WEEK_AGO" +msgstr "1 uke siden" + +msgid "IDS_EMAIL_OPT_LOG_IN" +msgstr "Logg inn" + +msgid "IDS_EMAIL_BODY_FORWARD_WITH_FILES" +msgstr "Videresend med filer" + +msgid "IDS_EMAIL_BODY_REPLY_WITH_BODY" +msgstr "Svar med brødtekst" + +msgid "IDS_EMAIL_BODY_SAVE_ALL" +msgstr "Lagre alle" + +msgid "IDS_EMAIL_OPT_NEW_MEETING_INVITATION" +msgstr "Ny møteinvitasjon" + +msgid "IDS_EMAIL_OPT_MEETING_INVITATION" +msgstr "Møteinvitasjon" + +msgid "IDS_EMAIL_HEADER_REPLY_ABB" +msgstr "Svar" + +msgid "IDS_EMAIL_OPT_TO_SENDER_ABB" +msgstr "Til avsender" + +msgid "IDS_EMAIL_OPT_TO_ALL_ABB" +msgstr "Til alle" + +msgid "IDS_EMAIL_OPT_ADD_CC_BCC" +msgstr "Legg til Kopi/Blindkopi" + +msgid "IDS_EMAIL_OPT_MOVE_TO_CC" +msgstr "Flytt til Kopi" + +msgid "IDS_EMAIL_OPT_MOVE_TO_BCC" +msgstr "Flytt til Blindkopi" + +msgid "IDS_EMAIL_OPT_VIEW_CONTACT" +msgstr "Vis kontakter" + +msgid "IDS_EMAIL_HEADER_ATTACH_ABB" +msgstr "Vedlegg" + +msgid "IDS_EMAIL_HEADER_MOVE_TO" +msgstr "Flytt til" + +msgid "IDS_EMAIL_HEADER_SEARCH_BY" +msgstr "Søk etter" + +msgid "IDS_EMAIL_OPT_ADVANCED" +msgstr "Avansert" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_NOT_VALID_AND_IS_NOT_TRUSTED" +msgstr "Den digitale signaturen på denne meldingen er ikke gyldig og er ikke pålitelig" + +msgid "IDS_EMAIL_POP_CONNECTION_ERROR" +msgstr "Tilkoblingsfeil" + +msgid "IDS_EMAIL_BODY_EVERY_30_MINUTES" +msgstr "Hvert 30. minutt" + +msgid "IDS_EMAIL_BODY_EVERY_PD_HOURS" +msgstr "Hver %d. time" + +msgid "IDS_EMAIL_BODY_ONCE_A_DAY" +msgstr "Én gang om dagen" + +msgid "IDS_EMAIL_POP_CERTIFICATE_DOES_NOT_MATCH_EMAIL_ADDRESS" +msgstr "Sertifikat samsvarer ikke med e-postadresse" + +msgid "IDS_EMAIL_BODY_ENCRYPT" +msgstr "Krypter" + +msgid "IDS_EMAIL_BODY_SIGN" +msgstr "Signatur" + +msgid "IDS_EMAIL_POP_DECRYPTING_MESSAGE_ING" +msgstr "Dekrypterer melding..." + +msgid "IDS_EMAIL_BODY_1_MONTH_AGO" +msgstr "1 måned siden" + +msgid "IDS_EMAIL_OPT_ACCEPT" +msgstr "Godta" + +msgid "IDS_EMAIL_OPT_DECLINE" +msgstr "Avslå" + +msgid "IDS_EMAIL_BODY_ALL_ACCOUNTS" +msgstr "Alle kontoer" + +msgid "IDS_EMAIL_HEADER_SORT_BY" +msgstr "Sorter etter" + +msgid "IDS_EMAIL_SK_SORT_BY" +msgstr "Sorter" + +msgid "IDS_EMAIL_SK_DELETE_ALL" +msgstr "Slett alle" + +msgid "IDS_EMAIL_SK_MOVE" +msgstr "Flytt" + +msgid "IDS_EMAIL_SK_BLOCK" +msgstr "Sperr" + +msgid "IDS_EMAIL_SK_CREATE_FOLDER" +msgstr "Lag mappe" + +msgid "IDS_EMAIL_HEADER_CREATE_FOLDER" +msgstr "Opprett mappe" + +msgid "IDS_EMAIL_POP_FOLDER_NAME" +msgstr "Mappenavn" + +msgid "IDS_EMAIL_OPT_REPLY" +msgstr "Svar" + +msgid "IDS_EMAIL_OPT_FORWARD" +msgstr "Videresend" + +msgid "IDS_EMAIL_OPT_SHARE_VIA_EMAIL" +msgstr "Del via e-post" + +msgid "IDS_EMAIL_OPT_OPEN" +msgstr "Åpne" + +msgid "IDS_EMAIL_OPT_RECORD_AUDIO" +msgstr "Spill inn lyd" + +msgid "IDS_EMAIL_HEADER_SECURITY" +msgstr "Sikkerhet" + +msgid "IDS_EMAIL_BODY_PD_ATTACHMENTS" +msgstr "%d vedlegg" + +msgid "IDS_EMAIL_POP_UNABLE_TO_OPEN_FILE" +msgstr "Kan ikke åpne fil" + +msgid "IDS_EMAIL_POP_RETRIEVING_ING" +msgstr "Henter..." + +msgid "IDS_EMAIL_BODY_SYNC_SCHEDULE" +msgstr "Synkroniser oppføringer" + +msgid "IDS_EMAIL_BODY_EVERY_PD_MINUTES" +msgstr "Hvert %d minutt" + +msgid "IDS_EMAIL_BODY_ADD_ADDRESS" +msgstr "Legg til adresse" + +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Ny e-post" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Velg mappe" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Ta opp video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Flytt til Til" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Velg e-postadresse" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Søking mislyktes" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Lest" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dobbeltrykk for å gå til toppen av kontaktlistene, e-postlistene og e-postmeldingene" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Rediger svar før sending" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Send svar nå" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ikke send svar" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Bekreft signatur" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Bekreft signatur" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Kan ikke bekrefte signatur. Offentlig nøkkel er ikke installert" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Den digitale signaturen på denne meldingen er gyldig og pålitelig" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dekrypter melding" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Lagre e-post" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Kan ikke opprette mappe" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Ta bilde" + diff --git a/po/nl_NL.po b/po/nl_NL.po index 3c69949..3fd4b28 100755 --- a/po/nl_NL.po +++ b/po/nl_NL.po @@ -1390,3 +1390,60 @@ msgstr "Om de %d minuten" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Adres toevoegen" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nieuwe e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Map selecteren" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Video opnemen" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Verplaatsen naar Aan" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "E-mailadres selecteren" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Kan niet zoeken" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Gelezen" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dubbeltik om naar het begin van contactenlijsten, e-maillijsten of e-mailberichten te gaan" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Reactie bewerken voor verzenden" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Reactie nu verzenden" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Geen reactie verzenden" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Handtek. controleren" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Handtekening controleren" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Kan handtekening niet controleren. Openbare sleutel is niet geïnstalleerd" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "De digitale handtekening op dit bericht is geldig en vertrouwd" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Bericht decoderen" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "E-mail opslaan" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Kan map niet maken" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Foto maken" + diff --git a/po/pl.po b/po/pl.po index af4dac6..3b7425c 100755 --- a/po/pl.po +++ b/po/pl.po @@ -1390,3 +1390,60 @@ msgstr "Co %d min" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Dodaj adres" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr ": Nowy e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Wybierz katalog" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Nagraj video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Przenieś do Do" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Wybierz adres e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Nie można wyszukać" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Przeczytano" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dotknij dwukrotnie, aby przejść na górę list kontaktów, adresów i wiadomości e-mail" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Edytuj odpowiedź przed wysłaniem" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Wyślij odpowiedź teraz" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Nie wysyłaj odpowiedzi" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Weryfikuj podpis" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Weryfikuj podpis" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Nie można zweryfikować podpisu. Nie zainstalowano klucza publicznego" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Podpis cyfrowy w tej wiadomości jest prawidłowy i należy do zaufanych" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Odszyfruj wiadomość" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Zapisz wiadomość" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Nie można utworzyć katalogu" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Zrób zdjęcie" + diff --git a/po/pt_BR.po b/po/pt_BR.po index 004d520..fe2a4e9 100755 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -1390,3 +1390,60 @@ msgstr "A cada %d minutos" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Adicionar endereço" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Novo e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Selecionar pasta" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Gravar vídeo" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Mover para Para" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Selecionar endereço de e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Impossível procurar" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Lida" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Toque duas vezes para ir para o topo das listas de contatos, listas de e-mail e mensagens de e-mail" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editar resposta antes de enviar" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Enviar resposta agora" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Não enviar resposta agora" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verificar assinatura" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verificar assinatura" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Não é possível verificar a assinatura. A chave Pública não está instalada" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "A assinatura digital nesta mensagem é válida e confiável" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Decodificar mensagem" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Salvar e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Impossível criar pasta" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Tirar foto" + diff --git a/po/pt_PT.po b/po/pt_PT.po index c52ded4..5af483f 100755 --- a/po/pt_PT.po +++ b/po/pt_PT.po @@ -1390,3 +1390,60 @@ msgstr "Cada %d minutos" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Adicionar endereço" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Novo e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Seleccionar pasta" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Capturar vídeo" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Mover para Para" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Seleccionar endereço de e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Impossível procurar" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Ler" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Toque duas vezes para ir para o início de listas de contactos, listas de e-mails e mensagens de e-mail" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editar a resposta antes de enviar" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Enviar resposta agora" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Não enviar resposta" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verificar assinatura" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verificar assinatura" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Impossível verificar a assinatura. A chave pública não está instalada" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "A assinatura digital desta mensagem é válida e fidedigna" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Desencript. mensagem" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Guardar e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Impossível criar pasta" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Tirar fotografia" + diff --git a/po/ro.po b/po/ro.po index 942ea57..2304505 100755 --- a/po/ro.po +++ b/po/ro.po @@ -1390,3 +1390,60 @@ msgstr "La fiecare %d minute" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Adăugare adresă" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Email nou" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Selectare folder" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Captură video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Mutare la Către" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Selectare adresă de e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Imposibil de căutat" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Citit" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Atingeţi de două ori pentru a vă deplasa la începutul listei de contacte, al listei de e-mailuri şi al mesajelor de e-mail" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Editare răspuns înainte de trimitere" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Trimitere răspuns imediat" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Nu se trimite răspunsul" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verificaţi semnătura" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verificaţi semnătura" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Nu se poate verifica semnătura. Cheia publică nu este instalată" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Semnătura digitală de pe acest mesaj este validă şi acreditată" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Decriptaţi mesajul" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Salvare e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Imposibil de creat folderul" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Fotografiere" + diff --git a/po/ru_RU.po b/po/ru_RU.po index e0090a5..f67c4f9 100755 --- a/po/ru_RU.po +++ b/po/ru_RU.po @@ -1390,3 +1390,60 @@ msgstr "Каждые %d мин." msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Добавить адрес" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Новое сообщение E-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Выберите папку" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Записать видео" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Переместить в" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Выберите адрес электронной почты" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Не удалось выполнить поиск" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Прочитано" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Коснитесь дважды для перехода в начало списка контактов, адресов электронной почты или сообщений" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Изменить ответ перед отправкой" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Отправить ответ" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Не отправлять ответ" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Проверить подпись" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Проверить подпись" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Не удалось проверить подпись. Открытый ключ не установлен" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Цифровая подпись данного сообщения является верной и надежной" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Расшифров. сообщение" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Сохранить эл. почту" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Невозможно создать папку" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Сделать снимок" + diff --git a/po/sk.po b/po/sk.po index 7564937..abbdd4d 100755 --- a/po/sk.po +++ b/po/sk.po @@ -1390,3 +1390,60 @@ msgstr "Po každých %d minútach" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Pridať adresu" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nový e-mail" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Vybrať priečinok" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Snímať video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Premiestniť do poľa Adresát" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Vyberte e-mailovú adresu" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Nedá sa nájsť" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Prečítané" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dvojitým ťuknutím môžete prejsť na začiatok zoznamu kontaktov, e-mailov a e-mailových správ" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Pred odoslaním upraviť odpoveď" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Odoslať odpoveď teraz" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Neodoslať odpoveď" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Overiť podpis" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Overiť podpis" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Nedá sa overiť podpis. Verejný kľúč nie je nainštalovaný" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Digitálny podpis v tejto správe je platný a dôveryhodný" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dešifrovať správu" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Uložiť e-mail" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Nedá sa vytvoriť priečinok" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Odfotografovať" + diff --git a/po/sl.po b/po/sl.po index 60a0e7c..be4a6d5 100755 --- a/po/sl.po +++ b/po/sl.po @@ -1390,3 +1390,60 @@ msgstr "Vsakih %d minut" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Dodaj naslov" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nova e-pošta" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Izberi mapo" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Posnemi video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Premakni v polje Za" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Izberite e-poštni naslov" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Iskanje ni mogoče" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Prebrano" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dvakrat pritisnite, če se želite premakniti na vrh seznamov stikov, seznamov e-pošte in e-poštnih sporočil" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Pred pošiljanjem uredi odgovor" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Pošlji odgovor" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ne pošlji odgovora" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Preveri podpis" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Preveri podpis" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Podpisa ni mogoče preveriti. Javni ključ ni nameščen" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Digitalni podpis v tem sporočilu je veljaven in je zaupanja vreden" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dešifriraj sporočilo" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Shrani e-pošto" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Mape ni mogoče ustvariti" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Posnemi sliko" + diff --git a/po/sr.po b/po/sr.po index dff77d1..79e6389 100755 --- a/po/sr.po +++ b/po/sr.po @@ -1390,3 +1390,60 @@ msgstr "Svakih %d min" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Dodaj adresu" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Nova e-poruka" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Izaberi folder" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Snimi video zapis" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Premesti u „Za“" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Izaberi adresu e-pošte" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Nemoguće pretraživati" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Pročitano" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dvaput kucni za odlazak na vrh listi kontakata, slanje listi putem e-pošte ili slanje e-poruka" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Izmeni odgovor pre slanja" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Pošalji odgovor sada" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Ne šalji odgovor" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Potvrdi potpis" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Potvrdi potpis" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Nije moguće potvrditi potpis. Javni ključ nije instaliran" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Digitalni potpis u ovoj poruci je važeći i pouzdan" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Dešifruj poruku" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Sačuvaj e-poruku" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Nemoguće kreirati folder" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Slikaj" + diff --git a/po/sv.po b/po/sv.po index 35ba339..20f77ec 100755 --- a/po/sv.po +++ b/po/sv.po @@ -1390,3 +1390,60 @@ msgstr "Var %d minut" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Lägg till adress" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Ny e-post" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Välj mapp" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Spela in video" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Flytta till Till" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Vald e-postadress" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Det går inte att söka" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Läs" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Dubbeltryck för att gå till toppen av kontaktlistan, e-postlistan och e-postmeddelanden" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Redigera svar före sändning" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Skicka svar nu" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Skicka inte svar" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Verifiera signatur" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Verifiera signatur" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Det går inte att verifiera signaturen. Den offentliga nyckeln är inte installerad" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Den digitala signaturen i detta meddelande är giltig och betrodd" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Avkryptera meddel." + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Spara e-post" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Det går inte att skapa mapp" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Ta foto" + diff --git a/po/tr_TR.po b/po/tr_TR.po index 3eea32f..8c6a07c 100755 --- a/po/tr_TR.po +++ b/po/tr_TR.po @@ -1390,3 +1390,60 @@ msgstr "Her %d dakikada bir" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Adres ekle" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "yeni E-posta" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Dosya seç" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Video yakala" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Alıcıya taşı" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "E-posta adresi seç" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Aranamıyor" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Oku" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Kişi listeleri, e-posta listeleri ve e-posta mesajlarının başına gitmek için çift dokunun" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Göndermeden önce yanıtı düzenle" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Yanıtı şimdi gönder" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Yanıt gönderme" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "İmzayı doğrula" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "İmzayı doğrula" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "İmza doğrulanamıyor. Genel anahtar yüklü değil" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Bu mesajdaki dijital imza geçerli ve güvenilir" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Mesajın şifrsni çöz" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "E-postayı kaydet" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Klasör oluşturulamıyor" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Resim çek" + diff --git a/po/uk.po b/po/uk.po index ca484c7..adaa3a1 100755 --- a/po/uk.po +++ b/po/uk.po @@ -1390,3 +1390,60 @@ msgstr "Кожні %d хвилин(-и)" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "Додати адресу" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Новий Email" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Вибір папки" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Відеозйомка" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Перемістити у поле 'Кому'" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "Вибір адреси Email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Неможливо виконати пошук" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "Прочитане" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Двічі постукайте, щоб перейти вгору списку контактів, списку повідомлень Email або будь-якого повідомлення Email" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Редагувати відповіді перед надсиланням" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Надіслати відповідь зараз" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Не надсилати відповідь" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Перевірка підпису" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Перевірка підпису" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Неможливо перевірити підпис. Відкритий ключ не встановлено" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Цифровий підпис, наявний у цьому повідомленні, є дійсним і підтримується" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Дешифрувати повідом." + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "Зберег. повід. Email" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Неможливо створити папку" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Зробити знімок" + diff --git a/po/uz.po b/po/uz.po new file mode 100755 index 0000000..832b534 --- /dev/null +++ b/po/uz.po @@ -0,0 +1,1449 @@ +msgid "IDS_EMAIL_BODY_ACCOUNT" +msgstr "Hisob qaydnomasi" + +msgid "IDS_EMAIL_BODY_B" +msgstr "B" + +msgid "IDS_EMAIL_BODY_BYTE" +msgstr "Bayt" + +msgid "IDS_EMAIL_BODY_GB" +msgstr "Gb" + +msgid "IDS_EMAIL_BODY_IMAP4_PORT" +msgstr "IMAP4 port" + +msgid "IDS_EMAIL_BODY_INCOMING" +msgstr "Kiruvchi" + +msgid "IDS_EMAIL_BODY_KB" +msgstr "KB" + +msgid "IDS_EMAIL_BODY_MB" +msgstr "Mb" + +msgid "IDS_EMAIL_BODY_OUTGOING" +msgstr "Chiquvchi" + +msgid "IDS_EMAIL_BODY_POP3_PORT" +msgstr "POP3 porti" + +msgid "IDS_EMAIL_BODY_YOUR_NAME" +msgstr "Sizning ismingiz" + +msgid "IDS_EMAIL_OPT_COPY" +msgstr "Nusxa olish" + +msgid "IDS_EMAIL_OPT_COPY_IMAGE" +msgstr "Suratdan nusxa olish" + +msgid "IDS_EMAIL_OPT_CUT" +msgstr "Qirqish" + +msgid "IDS_EMAIL_OPT_PASTE" +msgstr "Qo‘shib qo‘yish" + +msgid "IDS_EMAIL_OPT_SAVE_IMAGE" +msgstr "Tasvirni saqlash" + +msgid "IDS_EMAIL_OPT_SELECT" +msgstr "Tanlash" + +msgid "IDS_EMAIL_OPT_SELECT_ALL" +msgstr "Barchasini tanlash" + +msgid "IDS_EMAIL_OPT_SEND_IMAGE_VIA_MESSAGING" +msgstr "Xabar yuborish orqali tasvir yuborish" + +msgid "IDS_EMAIL_POP_FILE_NAME_EMPTY" +msgstr "Fayl nomi bo‘sh" + +msgid "IDS_EMAIL_POP_INCORRECT_USER_NAME_OR_PASSWORD" +msgstr "Foydalanuvchi nomi yoki parol noto‘g‘ri" + +msgid "IDS_EMAIL_POP_SERVER_NOT_AVAILABLE" +msgstr "Serverdan foydalanib bo‘lmaydi" + +msgid "IDS_EMAIL_OPT_DOWNLOAD_MESSAGE" +msgstr "Xabar yuklab olish" + +msgid "IDS_EMAIL_OPT_TENTATIVE" +msgstr "Tajribaviy" + +msgid "IDS_EMAIL_POP_TRY_AGAIN_IN_PD_MINUTES" +msgstr "%d daqiqada qayta urinib ko‘ring" + +msgid "IDS_EMAIL_POP_NO_EMAIL_ADDRESS" +msgstr "Elektron pochta manzili yo‘q" + +msgid "IDS_EMAIL_BODY_COMPLETE" +msgstr "Yakunlamoq" + +msgid "IDS_EMAIL_BODY_ACCEPTED_C_PS" +msgstr "Qabul qilindi: %s" + +msgid "IDS_EMAIL_BODY_DECLINED_C_PS" +msgstr "Rad etilgan: %s" + +msgid "IDS_EMAIL_BODY_DOWNLOAD_FULL_MESSAGE" +msgstr "To‘liq xabarni yuklab olish" + +msgid "IDS_EMAIL_BODY_GENERAL_SETTINGS" +msgstr "Umumiy parametrlar" + +msgid "IDS_EMAIL_BODY_TENTATIVE_C_PS" +msgstr "Sinov: %s" + +msgid "IDS_EMAIL_BODY_WHEN_C_PS" +msgstr "Qachon: %s" + +msgid "IDS_EMAIL_BODY_WHERE_C_PS" +msgstr "Qayerda: %s" + +msgid "IDS_EMAIL_BUTTON_DECLINE_ABB" +msgstr "Rad etish" + +msgid "IDS_EMAIL_BODY_ORIGINAL_MESSAGE" +msgstr "Asl xabar" + +msgid "IDS_EMAIL_HEADER_ACCOUNT_SETTINGS" +msgstr "Hisob qaydnomasi parametrlari" + +msgid "IDS_EMAIL_OPT_BLOCK" +msgstr "Bloklash" + +msgid "IDS_EMAIL_OPT_MARK_AS_READ" +msgstr "O‘qilgan sifatida belgilash" + +msgid "IDS_EMAIL_OPT_MARK_AS_UNREAD" +msgstr "O‘qilmagan sifatida belgilash" + +msgid "IDS_EMAIL_OPT_OTHERS" +msgstr "Boshqalar" + +msgid "IDS_EMAIL_OPT_UNREAD" +msgstr "O‘qilmaganlar" + +msgid "IDS_EMAIL_SK_COMPOSE" +msgstr "Yaratish" + +msgid "IDS_EMAIL_HEADER_DOWNLOAD_FAILED" +msgstr "Yuklash bajarilmadi" + +msgid "IDS_EMAIL_OPT_ADD_TO_CONTACT" +msgstr "Kontaktga qo‘shish" + +msgid "IDS_EMAIL_OPT_VOICE_CALL" +msgstr "Ovozli qo‘ng‘iroq" + +msgid "IDS_EMAIL_BODY_ACCOUNT_NAME" +msgstr "Hisob qaydnomasi nomi" + +msgid "IDS_EMAIL_BODY_ATTACHMENTS" +msgstr "Biriktirmalar" + +msgid "IDS_EMAIL_BODY_FROM_C" +msgstr "Kimdan:" + +msgid "IDS_EMAIL_BODY_IMAP4_SERVER" +msgstr "IMAP4 server" + +msgid "IDS_EMAIL_BODY_INCLUDES" +msgstr "O‘z ichiga oladi" + +msgid "IDS_EMAIL_BODY_INCOMING_PORT" +msgstr "Kiruvchi port" + +msgid "IDS_EMAIL_BODY_INCOMING_SERVER" +msgstr "Kiruvchi server" + +msgid "IDS_EMAIL_BODY_IN_PD_MINUTES" +msgstr "%d daqiqada" + +msgid "IDS_EMAIL_BODY_KEEP_IN_SERVER" +msgstr "Serverda saqlash" + +msgid "IDS_EMAIL_BODY_NO_TEXT" +msgstr "Matn yo‘q" + +msgid "IDS_EMAIL_BODY_OUTGOING_PORT" +msgstr "Chiquvchi port" + +msgid "IDS_EMAIL_BODY_OUTGOING_SERVER" +msgstr "Chiquvchi server" + +msgid "IDS_EMAIL_BODY_PD_EMAILS" +msgstr "%d elektron pochta xabari" + +msgid "IDS_EMAIL_BODY_POP3_SERVER" +msgstr "POP3 serveri" + +msgid "IDS_EMAIL_BODY_RECENT" +msgstr "Oxirgi" + +msgid "IDS_EMAIL_BODY_RETRIEVING_OPTIONS" +msgstr "Qayta olish opsiyalari" + +msgid "IDS_EMAIL_BODY_RE_C" +msgstr "JAV:" + +msgid "IDS_EMAIL_BODY_SENT_C" +msgstr "Yuborgan:" + +msgid "IDS_EMAIL_BODY_SENT_FROM_SAMSUNG_MOBILE" +msgstr "Samsung Mobiledan yuborilgan" + +msgid "IDS_EMAIL_BODY_USER_PASSWORD" +msgstr "Foydalanuvchi paroli" + +msgid "IDS_EMAIL_HEADER_EDIT_RULES" +msgstr "Qoidalarni o‘zgartirish" + +msgid "IDS_EMAIL_HEADER_EMAIL_SETTINGS" +msgstr "E-pochta parametri" + +msgid "IDS_EMAIL_HEADER_MAILBOXES" +msgstr "Pochta qutilari" + +msgid "IDS_EMAIL_POP_ALERT" +msgstr "Signal" + +msgid "IDS_EMAIL_POP_FILE_ALREADY_EXISTS" +msgstr "Fayl avvaldan mavjud" + +msgid "IDS_EMAIL_POP_NO_SENDER" +msgstr "Yuboruvchi yo‘q" + +msgid "IDS_EMAIL_POP_SUCCEEDED" +msgstr "Muvaffaqiyatli bajarildi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ATTACH_MAXIMUM_NUMBER_OF_FILES_IS_PD" +msgstr "Biriktirib bo‘lmaydi. Fayllarning maksimal soni: %d" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ATTACH_MAXIMUM_SIZE_OF_FILES_IS_PD_KB" +msgstr "Biriktirib bo‘lmaydi. Fayllarning mumkin bo‘lgan maksimal o‘lchami: %d Kb" + +msgid "IDS_EMAIL_POP_VALIDATION_FAILED" +msgstr "Tasdiqlab bo‘lmadi" + +msgid "IDS_EMAIL_SK_REPLY_ALL" +msgstr "Barchaga j/ber." + +msgid "IDS_EMAIL_BODY_1_ITEM" +msgstr "1 element" + +msgid "IDS_EMAIL_BODY_ADD_MY_NAMECARD" +msgstr "Tashrif kartamni qo‘shish" + +msgid "IDS_EMAIL_BODY_ADD_SIGNATURE" +msgstr "Imzo qo‘shish" + +msgid "IDS_EMAIL_BODY_ALL_EMAILS" +msgstr "Barcha elektron pochta xabarlari" + +msgid "IDS_EMAIL_BODY_ALWAYS_BCC_MYSELF" +msgstr "O‘zimga har doim yashirin nusxa yuborish" + +msgid "IDS_EMAIL_BODY_BCC" +msgstr "Yashirin nusxa" + +msgid "IDS_EMAIL_BODY_BLOCK_EMAILS" +msgstr "E-pochtalarni bloklash" + +msgid "IDS_EMAIL_BODY_BODY" +msgstr "Matn" + +msgid "IDS_EMAIL_BODY_CC" +msgstr "Nusxa" + +msgid "IDS_EMAIL_BODY_CC_BCC" +msgstr "Nusxa/Yashirin nusxa" + +msgid "IDS_EMAIL_BODY_CHECK_INTERVAL" +msgstr "Intervalni tekshirish" + +msgid "IDS_EMAIL_BODY_DEFAULT_ACCOUNT" +msgstr "Sukut his/qaydnoma" + +msgid "IDS_EMAIL_BODY_DRAFTS" +msgstr "Qoralamalar" + +msgid "IDS_EMAIL_BODY_EMAIL_ACCOUNTS" +msgstr "E-pochta hisob qaydnomalari" + +msgid "IDS_EMAIL_BODY_END_TIME" +msgstr "Tugatish vaqti" + +msgid "IDS_EMAIL_BODY_ENTIRE_EMAIL" +msgstr "Butun e-pochta" + +msgid "IDS_EMAIL_BODY_EXACTLY_THE_SAME_AS" +msgstr "Quyidagi bilan bir xil" + +msgid "IDS_EMAIL_BODY_EXAMPLE" +msgstr "Namuna" + +msgid "IDS_EMAIL_BODY_FROM_M_SENDER" +msgstr "Quyidagidan:" + +msgid "IDS_EMAIL_BODY_INBOX" +msgstr "Kiruvchilar" + +msgid "IDS_EMAIL_BODY_INCLUDE" +msgstr "O‘z ichiga oladi" + +msgid "IDS_EMAIL_BODY_MATCH_CRITERIA" +msgstr "Moslik kriteriyasi" + +msgid "IDS_EMAIL_BODY_NOT_USED" +msgstr "Foydalanilmaydi" + +msgid "IDS_EMAIL_BODY_NO_ACCOUNTS" +msgstr "Hisob qaydnomalar yo‘q" + +msgid "IDS_EMAIL_BODY_PD_DAYS" +msgstr "%d kun" + +msgid "IDS_EMAIL_BODY_PD_ITEMS" +msgstr "%d element" + +msgid "IDS_EMAIL_BODY_PRIORITY" +msgstr "Ustunlik" + +msgid "IDS_EMAIL_BODY_RECEIVING_OPTIONS" +msgstr "Qabul qilish opsiyalari" + +msgid "IDS_EMAIL_BODY_SECURE_CONNECTION" +msgstr "Xavfsiz ulanish" + +msgid "IDS_EMAIL_BODY_SENDING_OPTIONS" +msgstr "Yuborish variantlari" + +msgid "IDS_EMAIL_BODY_SENTBOX" +msgstr "Yuborilganlar jildi" + +msgid "IDS_EMAIL_BODY_SERVER_URL" +msgstr "Server URL-manzili" + +msgid "IDS_EMAIL_BODY_SIGNATURE" +msgstr "Imzo" + +msgid "IDS_EMAIL_BODY_SPAMBOX" +msgstr "Spam quti" + +msgid "IDS_EMAIL_BODY_START_TIME" +msgstr "Boshlash vaqti" + +msgid "IDS_EMAIL_BODY_TRASH" +msgstr "Keraksiz" + +msgid "IDS_EMAIL_BODY_WITHOUT_ATTACHMENTS" +msgstr "Biriktirmalarsiz" + +msgid "IDS_EMAIL_BUTTON_GROUP" +msgstr "Guruh" + +msgid "IDS_EMAIL_HEADER_ADD_RULES" +msgstr "Qoidalar qo‘shish" + +msgid "IDS_EMAIL_OPT_ATTACH_ITEMS" +msgstr "Elementlarni biriktirish" + +msgid "IDS_EMAIL_OPT_EXCHANGE" +msgstr "Exchange" + +msgid "IDS_EMAIL_OPT_FILE" +msgstr "Fayl" + +msgid "IDS_EMAIL_OPT_NAMECARD" +msgstr "Tashrif kartasi" + +msgid "IDS_EMAIL_OPT_OPEN_URL" +msgstr "URLni ochish" + +msgid "IDS_EMAIL_OPT_SENDER" +msgstr "Yuboruvchi" + +msgid "IDS_EMAIL_OPT_SEND_EMAIL" +msgstr "E-pochta yub." + +msgid "IDS_EMAIL_OPT_UPDATE_EXISTING" +msgstr "Mavjudni yangilash" + +msgid "IDS_EMAIL_POP_ADD_ACCOUNTS" +msgstr "Hisob qaydnomalarini qo‘shish" + +msgid "IDS_EMAIL_POP_DOWNLOADING_ATTACHMENT_ING" +msgstr "Biriktirma yuklanishi..." + +msgid "IDS_EMAIL_POP_INVALID_EMAIL_ADDRESS" +msgstr "Noto‘g‘ri e-pochta manzili" + +msgid "IDS_EMAIL_POP_LOADING_CONTENTS_ING" +msgstr "Tarkib yuklanmoqda..." + +msgid "IDS_EMAIL_POP_MAXIMUM_NUMBER_OF_ATTACHMENTS_REACHED" +msgstr "Biriktirmalar soni maksimal miqdorga yetdi" + +msgid "IDS_EMAIL_POP_MOVE_TO_SPAMBOX_Q" +msgstr "Spamlar qutisiga ko‘chirilsinmi?" + +msgid "IDS_EMAIL_POP_NO_RECIPIENTS_ADDED_ENTER_RECIPIENTS" +msgstr "Oluvchilar qo‘shilmagan. Oluvchilarni kiritish" + +msgid "IDS_EMAIL_POP_PLEASE_FILL_ALL_THE_MANDATORY_FIELDS" +msgstr "Iltimos, barcha majburiy maydonlarni to‘ldiring" + +msgid "IDS_EMAIL_POP_SAVE_IN_DRAFTS_Q" +msgstr "Qoralamalarda saqlansinmi?" + +msgid "IDS_EMAIL_POP_THERE_IS_NO_ACCOUNT_CREATE_A_NEW_ACCOUNT_FIRST" +msgstr "Hisob qaydnomasi yo‘q. Avval hisob qaydnomasi yarating" + +msgid "IDS_EMAIL_POP_TOO_MANY_RECIPIENTS" +msgstr "Juda ko‘p oluvchilar" + +msgid "IDS_EMAIL_POP_UNABLE_TO_DOWNLOAD" +msgstr "Yuklab olib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ENTER_TEXT" +msgstr "Matn kiritib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_LAUNCH_APPLICATION" +msgstr "Ilovani ishga tushirib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_OPEN_ATTACHMENT" +msgstr "Biriktirmani ochib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SAVE_ATTACHMENT" +msgstr "Biriktirmani saqlab bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SAVE_IN_DRAFTS" +msgstr "Qoralamalarga saqlab bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEND_EMAIL" +msgstr "E-pochta yuborib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNSUPPORTED_FILE_TYPE" +msgstr "Qo‘llab-quvvatlanmaydigan fayl turi" + +msgid "IDS_EMAIL_POP_VALIDATING_ACCOUNT_ING" +msgstr "Hisob qaydnomasi tasdiqlanmoqda..." + +msgid "IDS_EMAIL_SK_RESEND" +msgstr "Qay. Yub." + +msgid "IDS_EMAIL_BODY_ACCEPT_ALL_SSL_CERTIFICATES" +msgstr "Barcha SSL sertifikatlarini qabul qilish" + +msgid "IDS_EMAIL_SK3_ACCOUNT_LIST" +msgstr "His/qayd. ro‘yx." + +msgid "IDS_EMAIL_BODY_USER_ID" +msgstr "Foydalanuvchi IDsi" + +msgid "IDS_EMAIL_POP_ACCOUNT_ALREADY_REGISTERED" +msgstr "Hisob qaydnomasi avvaldan ro‘yxatga olingan" + +msgid "IDS_EMAIL_HEADER_ATTACH_FILE" +msgstr "Fayl biriktirish" + +msgid "IDS_EMAIL_POP_ACCOUNT_ALREADY_EXISTS" +msgstr "Hisob qaydnomasi avvaldan mavjud" + +msgid "IDS_EMAIL_BODY_NO_SUBJECT" +msgstr "Mavzu yo‘q" + +msgid "IDS_EMAIL_BODY_FROM" +msgstr "Quyidagidan" + +msgid "IDS_EMAIL_BODY_NO_ADDRESS" +msgstr "Manzil mavjud emas" + +msgid "IDS_EMAIL_OPT_RECORD_SOUND" +msgstr "Tovushni yozib olish" + +msgid "IDS_EMAIL_OPT_RECORD_VIDEO" +msgstr "Video yozib olish" + +msgid "IDS_EMAIL_OPT_INSERT_IMAGE" +msgstr "Tasvir kiritish" + +msgid "IDS_EMAIL_OPT_ADD_TO_CALENDAR" +msgstr "Kalendarga qo‘shish" + +msgid "IDS_EMAIL_OPT_CHANGE_EMAIL_ADDRESS_ABB" +msgstr "E-pochta manzilini o‘zgartirish" + +msgid "IDS_EMAIL_OPT_CLIPBOARD" +msgstr "Bufer" + +msgid "IDS_EMAIL_OPT_VIEW_CONTACT_DETAILS" +msgstr "Kontakt tafsilotlarini ko‘rib chiqish" + +msgid "IDS_EMAIL_POP_SAVED_IN_DRAFTS" +msgstr "Qoralamalarda saqlandi" + +msgid "IDS_EMAIL_POP_NETWORK_BUSY" +msgstr "Tarmoq band" + +msgid "IDS_EMAIL_POP_LOGIN_ALLOWED_ONLY_EVERY_PD_MINUTES" +msgstr "Kirish faqat har %d daqiqada ruxsat etiladi" + +msgid "IDS_EMAIL_POP_HOST_NOT_FOUND" +msgstr "Xost topilmadi" + +msgid "IDS_EMAIL_POP_HOST_NOT_REACHABLE" +msgstr "Xost yetib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_NO_SERVICE" +msgstr "Xizmat yo‘q" + +msgid "IDS_EMAIL_POP_UNABLE_TO_FORWARD_DRM_CONTENTS" +msgstr "DRM tarkibni boshqa raqamga yo‘naltirib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_BLOCKED" +msgstr "Bloklangan" + +msgid "IDS_EMAIL_POP_1_EMAIL_SELECTED" +msgstr "1 ta e-pochta tanlangan" + +msgid "IDS_EMAIL_POP_PD_EMAILS_SELECTED" +msgstr "%d e-pochtalar tanlangan" + +msgid "IDS_EMAIL_POP_1_RECIPIENT_SELECTED" +msgstr "1 ta oluvchi tanlangan" + +msgid "IDS_EMAIL_POP_PD_RECIPIENTS_SELECTED" +msgstr "%d ta oluvchi tanlangan" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ADD_ACCOUNT" +msgstr "Hisob qaydnoma qo‘shib bo‘lmaydi" + +msgid "IDS_EMAIL_SK3_MOVE_HERE" +msgstr "Bu yerga ko‘ch." + +msgid "IDS_EMAIL_OPT_UNDO" +msgstr "Bekor qilish" + +msgid "IDS_EMAIL_OPT_REDO" +msgstr "Qayta bajarish" + +msgid "IDS_EMAIL_OPT_BOLD" +msgstr "Quyuq" + +msgid "IDS_EMAIL_OPT_ITALIC" +msgstr "Kursiv" + +msgid "IDS_EMAIL_OPT_UNDERLINE" +msgstr "Tagiga chizish" + +msgid "IDS_EMAIL_OPT_FONT_SIZE" +msgstr "Shrift o‘lchami" + +msgid "IDS_EMAIL_OPT_INDENT" +msgstr "Oraliq" + +msgid "IDS_EMAIL_OPT_VIEW_BY" +msgstr "Quyidagi bo‘yicha ko‘rib chiqish" + +msgid "IDS_EMAIL_OPT_IMPORTANT" +msgstr "Muhim" + +msgid "IDS_EMAIL_OPT_REFRESH" +msgstr "Yangilash" + +msgid "IDS_EMAIL_POP_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED" +msgstr "Qabul qiluvchilar soni ruxsat etilgan maksimal miqdorga (%d) yetdi" + +msgid "IDS_EMAIL_BODY_TLS" +msgstr "TLS" + +msgid "IDS_EMAIL_BODY_SSL" +msgstr "SSL" + +msgid "IDS_EMAIL_BODY_POP3" +msgstr "POP3" + +msgid "IDS_EMAIL_BODY_IMAP4" +msgstr "IMAP4" + +msgid "IDS_EMAIL_OPT_VIDEO_CALL" +msgstr "Video qo‘ng‘iroq" + +msgid "IDS_EMAIL_OPT_SEND_MESSAGE" +msgstr "Xabar yuborish" + +msgid "IDS_EMAIL_OPT_COMPOSE_EMAIL" +msgstr "E-pochta yozish" + +msgid "IDS_EMAIL_OPT_OTHER" +msgstr "Boshqa" + +msgid "IDS_EMAIL_OPT_TAKE_PHOTO" +msgstr "Suratga olish" + +msgid "IDS_EMAIL_OPT_SECURITY" +msgstr "Xavfsizlik" + +msgid "IDS_EMAIL_OPT_SIGN" +msgstr "Imzo" + +msgid "IDS_EMAIL_OPT_ENCRYPT" +msgstr "Shifrlash" + +msgid "IDS_EMAIL_POP_AUTHENTICATION_FAILED" +msgstr "Haqiqiylik tekshiruvi bajarilmadi" + +msgid "IDS_EMAIL_POP_DOWNLOAD_CANCELLED" +msgstr "Yuklab olish bekor qilindi" + +msgid "IDS_EMAIL_POP_SENDING_CANCELLED" +msgstr "Yuborish bekor qilindi" + +msgid "IDS_EMAIL_POP_ACCOUNT_EDITED" +msgstr "Hisob qaydnomasi tahrirlandi" + +msgid "IDS_EMAIL_POP_ACCOUNT_LIST_NOT_FOUND" +msgstr "Hisob qaydnomalar ro‘yxati topilmadi" + +msgid "IDS_EMAIL_OPT_COPY_IMAGE_LOCATION" +msgstr "Tasvir joylashuvidan nusxa ko‘chirish" + +msgid "IDS_EMAIL_POP_DEVICE_STORAGE_FULL" +msgstr "Qurilma xotirasi to‘la" + +msgid "IDS_EMAIL_POP_DOWNLOAD_ATTACHMENT_Q" +msgstr "Biriktirma yuklab olinsinmi?" + +msgid "IDS_EMAIL_POP_EMAIL_DELETED_FROM_SERVER" +msgstr "E-pochta serverdan o'chirildi" + +msgid "IDS_EMAIL_POP_FAILED_TO_ACTIVATE_PDP" +msgstr "PDPni faollashtirib bo‘lmadi" + +msgid "IDS_EMAIL_POP_FAILED_TO_ADD_BLOCK_RULE" +msgstr "Bloklash qoidasini qo‘shib bo‘lmadi" + +msgid "IDS_EMAIL_POP_FAILED_TO_MARK_AS_UNREAD" +msgstr "O‘qilmagan sifatida belgilab bo‘lmadi" + +msgid "IDS_EMAIL_BODY_INCOMING_MAIL_SERVER_TYPE" +msgstr "Kiruvchi pochta serveri turi" + +msgid "IDS_EMAIL_BODY_LOADING_MORE_EMAILS_ING" +msgstr "Ko‘proq e-pochtalar yuklanmoqda..." + +msgid "IDS_EMAIL_POP_LOG_IN_FAILED" +msgstr "Kirish bajarilmadi" + +msgid "IDS_EMAIL_POP_RETRIEVING_ADDRESS_LIST_ING" +msgstr "Manzillar ro‘yxati olinmoqda..." + +msgid "IDS_EMAIL_OPT_SEND_IMAGE_VIA_EMAIL" +msgstr "Tasvirni E-pochta orqali yuborish" + +msgid "IDS_EMAIL_BODY_YOU_CAN_USE_EMAIL_ON_YOUR_DEVICE_BY_ADDING_YOUR_ACCOUNT_IF_YOU_DO_NOT_HAVE_AN_EMAIL_ACCOUNT_SIGN_UP_FIRST" +msgstr "Hisob qaydnomangizni qo‘shish orqali e-pochtadan qurilmangizda foydalanishingiz mumkin. Agar e-pochta hisob qaydnomangiz mavjud bo‘lmasa, avval ro‘yxatdan o‘ting" + +msgid "IDS_EMAIL_POP_DOWNLOADING_ATTACHMENTS_ON_THE_MOBILE_DEVICE_IS_NOT_ALLOWED_BY_EXCHANGE_SERVER_POLICY" +msgstr "Mobil qurilmada biriktirmalarni yuklab olish Exchange server tomonidan ruxsat berilmagan" + +msgid "IDS_EMAIL_POP_FAILED_TO_DELETE" +msgstr "O'chirib bo‘lmadi" + +msgid "IDS_EMAIL_POP_FAILED_TO_MOVE" +msgstr "Ko‘chirib bo‘lmadi" + +msgid "IDS_EMAIL_POP_MARKED_AS_UNREAD" +msgstr "O‘qilmagan sifatida belgilash" + +msgid "IDS_EMAIL_POP_DOWNLOAD_ATTACHMENTS_Q" +msgstr "Biriktirmalar yuklab olinsinmi?" + +msgid "IDS_EMAIL_POP_MAXIMUM_RECIPIENT_EMAIL_LENGTH_EXCEEDED" +msgstr "Qabul qiluvchi e-pochtasining maksimal uzunligidan oshib ketildi" + +msgid "IDS_EMAIL_POP_ACCOUNT_CREATION_CANCELLED" +msgstr "Hisob qaydnomasi yaratilishi bekor qilindi" + +msgid "IDS_EMAIL_MBODY_MAILBOX_LIST" +msgstr "Pochta qutilari ro‘yxati" + +msgid "IDS_EMAIL_BODY_MAILBOX_SETUP" +msgstr "Pochta qutisini o‘rnatish" + +msgid "IDS_EMAIL_POP_ALREADY_DOWNLOADING_T_HEADER" +msgstr "Avvaldan yuklab olinmoqda" + +msgid "IDS_EMAIL_POP_CANCELLING_ATTACHMENT_DOWNLOAD_ING" +msgstr "Biriktirma yuklab olinishi bekor qilinmoqda..." + +msgid "IDS_EMAIL_BODY_SENT_USING_TIZEN_MOBILE" +msgstr "TIZEN mobil yordamida yuborilgan" + +msgid "IDS_EMAIL_POP_EXCHANGE_ACTIVESYNC_ACCOUNT_NOT_AVAILABLE_NOTI" +msgstr "Exchange ActiveSync hisob qaydnomasidan foydalanib bo‘lmaydi" + +msgid "IDS_EMAIL_BODY_RE" +msgstr "Ja" + +msgid "IDS_EMAIL_BODY_FWD_T_EMAIL_PREFIX_ABB" +msgstr "Boshq/yub" + +msgid "IDS_EMAIL_BODY_EXCHANGE_ACTIVESYNC" +msgstr "Exchange ActiveSync" + +msgid "IDS_EMAIL_BODY_GMAIL" +msgstr "Gmail" + +msgid "IDS_EMAIL_BODY_HOTMAIL" +msgstr "Hotmail" + +msgid "IDS_EMAIL_BODY_AOL" +msgstr "AOL" + +msgid "IDS_EMAIL_BODY_YAHOO_E_MAIL" +msgstr "Yahoo! pochtasi" + +msgid "IDS_EMAIL_OPT_ADD_ACCOUNTS" +msgstr "Hisob qaydnomalarini qo‘shish" + +msgid "IDS_EMAIL_BODY_DOWNLOAD_MESSAGE" +msgstr "Xabar yuklab olish" + +msgid "IDS_EMAIL_POP_ALREADY_BLOCKED" +msgstr "Avval bloklangan" + +msgid "IDS_EMAIL_BODY_SEARCH_ON_SERVER" +msgstr "Serverda qidirish" + +msgid "IDS_EMAIL_OPT_RECIPIENT" +msgstr "Oluvchi" + +msgid "IDS_EMAIL_OPT_DELETE_ALL" +msgstr "Barchasi o'chirish" + +msgid "IDS_EMAIL_OPT_RECENT_HPD" +msgstr "Oxirgi (%d)" + +msgid "IDS_EMAIL_OPT_REPLY_TO_SENDER" +msgstr "Yuboruvchiga javob berish" + +msgid "IDS_EMAIL_HEADER_RECENT_T_HEADER" +msgstr "Oxirgi" + +msgid "IDS_EMAIL_OPT_CONTACT_DETAILS" +msgstr "Kontakt tafsilotlari" + +msgid "IDS_EMAIL_OPT_REPLY_TO_ALL" +msgstr "Barchaga javob berish" + +msgid "IDS_EMAIL_BODY_THREADED_LIST" +msgstr "Bog‘langan ro‘yxat" + +msgid "IDS_EMAIL_BODY_SELECT_EMAIL" +msgstr "E-pochta tanlash" + +msgid "IDS_EMAIL_OPT_VIEW_AS" +msgstr "Quyidagi sifatida ko‘rib chiqish" + +msgid "IDS_EMAIL_HEADER_BLOCK_EMAILS" +msgstr "E-pochtalarni bloklash" + +msgid "IDS_EMAIL_HEADER_DELETE" +msgstr "O'chirish" + +msgid "IDS_EMAIL_HEADER_DEFAULT_ACCOUNT" +msgstr "Sukut his/qaydnoma" + +msgid "IDS_EMAIL_HEADER_EMAIL" +msgstr "E-pochta" + +msgid "IDS_EMAIL_BODY_SHOW_EMAILS" +msgstr "E-pochtalar ko‘rsatilsin" + +msgid "IDS_EMAIL_OPT_DATE" +msgstr "Sana" + +msgid "IDS_EMAIL_HEADER_SEARCH" +msgstr "Qidirish" + +msgid "IDS_EMAIL_POP_UNABLE_TO_OPEN_EMAIL_MESSAGE" +msgstr "E-pochta xabarini ochib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_COMPOSE_EMAIL_MESSAGE" +msgstr "E-pochta xabarini yaratib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_FAILED_TO_START_EMAIL_APPLICATION" +msgstr "E-pochta ilovasini ishga tushirib bo‘lmadi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SAVE_SUBJECT_EMPTY" +msgstr "Saqlab bo‘lmaydi. Mavzu bo‘sh" + +msgid "IDS_EMAIL_HEADER_ALL_EMAILS" +msgstr "Barcha elektron pochta xabarlari" + +msgid "IDS_EMAIL_HEADER_MAILBOX_SETUP" +msgstr "Pochta qutisini o‘rnatish" + +msgid "IDS_EMAIL_HEADER_RETRIEVING_OPTIONS" +msgstr "Qayta olish opsiyalari" + +msgid "IDS_EMAIL_HEADER_ADD_ACCOUNT" +msgstr "Hisob qaydnoma qo‘shish" + +msgid "IDS_EMAIL_HEADER_TEXT_COLOUR" +msgstr "Matn rangi" + +msgid "IDS_EMAIL_HEADER_TEXT_BACKGROUND_COLOUR" +msgstr "Matn foni rangi" + +msgid "IDS_EMAIL_BODY_ADDRESS" +msgstr "Manzil" + +msgid "IDS_EMAIL_SK_DECLINE" +msgstr "Rad etish" + +msgid "IDS_EMAIL_OPT_RESEND" +msgstr "Qayta yuborish" + +msgid "IDS_EMAIL_OPT_ATTACH_FILE" +msgstr "Fayl biriktirish" + +msgid "IDS_EMAIL_HEADER_COMPOSE_EMAIL" +msgstr "E-pochta yozish" + +msgid "IDS_EMAIL_HEADER_ADD_ACCOUNTS" +msgstr "Hisob qaydnomalarini qo‘shish" + +msgid "IDS_EMAIL_OPT_PD_MOST_RECENT_EMAILS" +msgstr "Oxirgi %d e-pochta" + +msgid "IDS_EMAIL_POP_YOU_CAN_ONLY_LOG_IN_ONCE_EVERY_PD_MINUTES" +msgstr "Har %d daqiqada faqat bir marta kirishingiz mumkin" + +msgid "IDS_EMAIL_BODY_DEFAULT_SENDING_ACCOUNT" +msgstr "Birlamchi o'rnatilgan yuborish hisob qaydnomasi" + +msgid "IDS_EMAIL_HEADER_DEFAULT_SENDING_ACCOUNT" +msgstr "Birlamchi o'rnatilgan yuborish hisob qaydnomasi" + +msgid "IDS_EMAIL_BODY_DO_NOT_MATCH_FOLDER_WITH_SERVER" +msgstr "Jildni server bilan bog‘lamang" + +msgid "IDS_EMAIL_POP_QUERYING_SERVER_INFORMATION_ING" +msgstr "Server ma’lumoti so‘rovi..." + +msgid "IDS_EMAIL_POP_SERVER_INFORMATION_QUERY_FAILED_ENTER_SERVER_INFORMATION_MANUALLY" +msgstr "Server ma’lumoti so‘rovi yuborilmadi. Server ma’lumotini qo‘lda kiriting" + +msgid "IDS_EMAIL_POP_SECURITY_POLICY_RESTRICTS_USE_OF_POP_IMAP_EMAIL" +msgstr "Xavfsizlik siyosati POP/IMAP e-pochtasidan foydalanishni cheklaydi" + +msgid "IDS_EMAIL_OPT_VIEW" +msgstr "Ko‘rib chiqish" + +msgid "IDS_EMAIL_OPT_COPY_LINK" +msgstr "'Link'dan nusxa ko‘chirish" + +msgid "IDS_EMAIL_POP_FAILED_TO_MARK_AS_READ" +msgstr "O‘qilgan sifatida belgilab bo‘lmadi" + +msgid "IDS_EMAIL_POP_MARKED_AS_READ" +msgstr "O‘qilgan sifatida belgilash" + +msgid "IDS_EMAIL_OPT_COPY_IMAGE_URL" +msgstr "Tasvir URL-manzilidan nusxa olish" + +msgid "IDS_EMAIL_OPT_COPY_URL" +msgstr "URLdan nusxa olish" + +msgid "IDS_EMAIL_OPT_MOVE_TO_SPAMBOX" +msgstr "Spamlar qutisiga ko‘chirish" + +msgid "IDS_EMAIL_POP_DISCARD_CURRENT_MESSAGE_Q" +msgstr "Joriy xabar rad etilsinmi?" + +msgid "IDS_EMAIL_POP_MEETING_REQUEST_DECLINED_MESSAGE_WILL_BE_MOVED_TO_RECYCLE_BIN" +msgstr "Uchrashuv so‘rovi rad etildi. Xabar Savatga ko‘chiriladi" + +msgid "IDS_EMAIL_POP_MEETING_REQUEST_TENTATIVELY_ACCEPTED_MESSAGE_WILL_BE_MOVED_TO_RECYCLE_BIN" +msgstr "Uchrashuv so‘rovi shartli ravishda qabul qilindi. Xabar Savatga ko‘chiriladi" + +msgid "IDS_EMAIL_POP_MEETING_REQUEST_ACCEPTED_MESSAGE_WILL_BE_MOVED_TO_RECYCLE_BIN" +msgstr "Uchrashuv so‘rovi qabul qilindi. Xabar Savatga ko‘chiriladi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_ATTACH_FILE" +msgstr "Fayl biriktirib bo‘lmaydi" + +msgid "IDS_EMAIL_OPT_CALENDAR" +msgstr "Kalendar" + +msgid "IDS_EMAIL_OPT_MEMO" +msgstr "Eslatma" + +msgid "IDS_EMAIL_OPT_TINY_M_TEXTSIZE" +msgstr "Mitti" + +msgid "IDS_EMAIL_OPT_SMALL_M_TEXTSIZE" +msgstr "Kichik" + +msgid "IDS_EMAIL_OPT_NORMAL_M_TEXTSIZE" +msgstr "Normal" + +msgid "IDS_EMAIL_OPT_LARGE_M_TEXTSIZE" +msgstr "Katta" + +msgid "IDS_EMAIL_OPT_HUGE_M_TEXTSIZE" +msgstr "Ulkan" + +msgid "IDS_EMAIL_BODY_ALWAYS_CC_BCC_MYSELF" +msgstr "Doim menga Nusxa/Yashirin nusxa yuborish" + +msgid "IDS_EMAIL_BODY_ALWAYS_CC_MYSELF" +msgstr "Har doim bir nusxa o‘zimga yuborilsin" + +msgid "IDS_EMAIL_BODY_SEND_READ_REPORT" +msgstr "O‘qilganlik haqida hisobot yuborish" + +msgid "IDS_EMAIL_OPT_VIEW_MODE" +msgstr "Ko‘rib chiqish rejimi" + +msgid "IDS_EMAIL_OPT_STANDARD_VIEW" +msgstr "Standart ko‘rinish" + +msgid "IDS_EMAIL_OPT_CONVERSATION_VIEW" +msgstr "Suhbat ko‘rinishi" + +msgid "IDS_EMAIL_OPT_DATE_HMOST_RECENT" +msgstr "Sana (Eng oxirgi)" + +msgid "IDS_EMAIL_OPT_DATE_HOLDEST" +msgstr "Sana (Eng eski)" + +msgid "IDS_EMAIL_OPT_SENDER_HA_TO_Z" +msgstr "Yuboruvchi (Adan Yagacha)" + +msgid "IDS_EMAIL_OPT_SENDER_HZ_TO_A" +msgstr "Yuboruvchi (Yadan Agacha)" + +msgid "IDS_EMAIL_OPT_READ_UNREAD" +msgstr "O‘qilgan/O‘qilmagan" + +msgid "IDS_EMAIL_OPT_FAVOURITES" +msgstr "Tanlanganlar" + +msgid "IDS_EMAIL_HEADER_ALL_ACCOUNTS" +msgstr "Barcha hisob qaydnomalar" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAILS" +msgstr "Elektron pochta xabarlarini tanlash" + +msgid "IDS_EMAIL_BODY_MICROSOFT_EXCHANGE_ACTIVESYNC" +msgstr "Microsoft Exchange ActiveSync" + +msgid "IDS_EMAIL_HEADER_VIEW_MODE_ABB" +msgstr "Ko‘rinish rejimi" + +msgid "IDS_EMAIL_BODY_NO_EMAILS" +msgstr "E-pochta yo‘q" + +msgid "IDS_EMAIL_OPT_DOCUMENTS_ABB" +msgstr "Hujjatlar" + +msgid "IDS_EMAIL_OPT_ATTACH" +msgstr "Biriktirish" + +msgid "IDS_EMAIL_OPT_PRINT" +msgstr "Chop etish" + +msgid "IDS_EMAIL_OPT_GALLERY" +msgstr "Galereya" + +msgid "IDS_EMAIL_OPT_MY_FILES" +msgstr "Mening fayllarim" + +msgid "IDS_EMAIL_OPT_CONTACTS" +msgstr "Kontaktlar" + +msgid "IDS_EMAIL_OPT_INSERT" +msgstr "Kiritish" + +msgid "IDS_EMAIL_BODY_SHOW_IMAGES" +msgstr "Rasmlarni ko'rsat" + +msgid "IDS_EMAIL_OPT_SORT_BY" +msgstr "Saralash" + +msgid "IDS_EMAIL_OPT_FLAG" +msgstr "Bayroq" + +msgid "IDS_EMAIL_OPT_MEETING_REQUEST" +msgstr "Uchrashish so‘rovi" + +msgid "IDS_EMAIL_OPT_ATTACHMENTS" +msgstr "Biriktirmalar" + +msgid "IDS_EMAIL_HEADER_FOLDERS" +msgstr "Jildlar" + +msgid "IDS_EMAIL_OPT_ADD_FOLDER" +msgstr "Jild qo‘shish" + +msgid "IDS_EMAIL_OPT_TITLE" +msgstr "Sarlavha" + +msgid "IDS_EMAIL_HEADER_PD_CONVERSATIONS" +msgstr "%d suhbat" + +msgid "IDS_EMAIL_HEADER_SERVER" +msgstr "Server" + +msgid "IDS_EMAIL_OPT_ALL" +msgstr "Barchasi" + +msgid "IDS_EMAIL_OPT_RECIPIENT_HA_TO_Z" +msgstr "Qabul qiluvchi (Adan Zgacha)" + +msgid "IDS_EMAIL_OPT_RECIPIENT_HZ_TO_A" +msgstr "Qabul qiluvchi (Zdan Agacha)" + +msgid "IDS_EMAIL_HEADER_SEARCH_SHAREPOINT" +msgstr "SharePointni qidirish" + +msgid "IDS_EMAIL_BODY_ENTER_PATH_OF_WINDOWS_SHAREPOINT_SERVICES_OR_WINDOWS_FILE_SHARE_HUNC_TO_ACCESS_DOCUMENTS_REMOTELY" +msgstr "Hujjatlarga masofadan kirish uchun, Windows SharePoint Xizmatlari yoki Windows faylini ulashish xizmati(UNC) yo‘lini kiriting" + +msgid "IDS_EMAIL_OPT_DELETE_FROM_CALENDAR" +msgstr "Kalendardan o'chirish" + +msgid "IDS_EMAIL_BODY_FLICK_UP_TO_SEARCH_ON_SERVER" +msgstr "Serverda qidirish uchun cherting" + +msgid "IDS_EMAIL_BODY_FLICK_UP_TO_SEARCH_ON_SERVER_AGAIN" +msgstr "Serverda yana qidirish uchun cherting" + +msgid "IDS_EMAIL_BODY_RECENT_EMAILS" +msgstr "Oxrigi e-pochtalar" + +msgid "IDS_EMAIL_BODY_DELETING_OPTIONS" +msgstr "O'chirib tashlash opsiyalari" + +msgid "IDS_EMAIL_BODY_FAVOURITES" +msgstr "Tanlanganlar" + +msgid "IDS_EMAIL_BODY_HIGH_M_PRIORITY" +msgstr "Yuqori" + +msgid "IDS_EMAIL_BODY_NORMAL_M_EMAILPRIORITY" +msgstr "Normal" + +msgid "IDS_EMAIL_BODY_LOW_M_EMAILPRIORITY" +msgstr "Past" + +msgid "IDS_EMAIL_BODY_MEETING_REQUEST" +msgstr "Uchrashish so‘rovi" + +msgid "IDS_EMAIL_BODY_MEETING_INVITATION" +msgstr "Uchrashuv taklifnomasi" + +msgid "IDS_EMAIL_OPT_SUGGEST_NEW_TIME_ABB" +msgstr "Yangi vaqt taklif qiling" + +msgid "IDS_EMAIL_BODY_VIEW_IN_CALENDAR" +msgstr "Kalendarda ko‘rib chiqish" + +msgid "IDS_EMAIL_BODY_SEARCH_EMAIL" +msgstr "E-pochtada qidirish" + +msgid "IDS_EMAIL_BODY_ALWAYS_SHOW_THIS_MESSAGE" +msgstr "Ushbu xabar doim ko‘rsatilsin" + +msgid "IDS_EMAIL_BODY_SEND_EMAIL_FROM_THIS_ACCOUNT_BY_DEFAULT" +msgstr "Ushbu hisob qaydnomasidan sukut bo‘yicha e-pochta xabarini yuborish" + +msgid "IDS_EMAIL_BODY_SMTP_SERVER" +msgstr "SMTP serveri" + +msgid "IDS_EMAIL_OPT_SEARCH" +msgstr "Qidirish" + +msgid "IDS_EMAIL_OPT_SHARE" +msgstr "Ulashish" + +msgid "IDS_EMAIL_OPT_MESSAGE" +msgstr "Xabar" + +msgid "IDS_EMAIL_OPT_EMAIL" +msgstr "E-pochta" + +msgid "IDS_EMAIL_OPT_FACEBOOK" +msgstr "Facebook" + +msgid "IDS_EMAIL_OPT_TWITTER" +msgstr "Twitter" + +msgid "IDS_EMAIL_OPT_NFC" +msgstr "NFC" + +msgid "IDS_EMAIL_BODY_SECURITY_OPTIONS" +msgstr "Xavfsizlik opsiyalari" + +msgid "IDS_EMAIL_HEADER_SECURITY_OPTIONS" +msgstr "Xavfsizlik opsiyalari" + +msgid "IDS_EMAIL_BODY_ENCRYPTION_ALGORITHM" +msgstr "Shifrlash algoritmi" + +msgid "IDS_EMAIL_BODY_SIGN_ALGORITHM" +msgstr "Imzo algoritmi" + +msgid "IDS_EMAIL_BODY_EMAIL_CERTIFICATE" +msgstr "E-pochta sertifikati" + +msgid "IDS_EMAIL_BODY_SUNDAY" +msgstr "Yakshanba" + +msgid "IDS_EMAIL_BODY_MONDAY" +msgstr "Dushanba" + +msgid "IDS_EMAIL_BODY_TUESDAY" +msgstr "Seshanba" + +msgid "IDS_EMAIL_BODY_WEDNESDAY" +msgstr "Chorshanba" + +msgid "IDS_EMAIL_BODY_THURSDAY" +msgstr "Payshaba" + +msgid "IDS_EMAIL_BODY_FRIDAY" +msgstr "Juma" + +msgid "IDS_EMAIL_BODY_SATURDAY" +msgstr "Shanba" + +msgid "IDS_EMAIL_BODY_OTHER" +msgstr "Boshqa" + +msgid "IDS_EMAIL_BODY_PHONE" +msgstr "Telefon" + +msgid "IDS_EMAIL_POP_UNABLE_TO_DECRYPT_MESSAGE" +msgstr "Xabar shifrini ochib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_UNABLE_TO_DECRYPT_MESSAGE_CERTIFICATE_NOT_INSTALLED" +msgstr "Xabar shifrini ochib bo‘lmaydi. Sertifikat o‘rnatilmagan" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SIGN_OR_ENCRYPT_MESSAGE_CERTIFICATE_NOT_INSTALLED" +msgstr "Xabarni imzolab yoki shifrlab bo‘lmaydi. Sertifikat o‘rnatilmagan" + +msgid "IDS_EMAIL_POP_DOWNLOAD_MORE_DETAILS_TO_SHOW_S_MIME_MESSAGES_CONTINUE_Q" +msgstr "S/MIME xabarlarini ko‘rsatish uchun, qo‘shimcha ma’lumotlarni yuklang. Davom ettirilsinmi?" + +msgid "IDS_EMAIL_BODY_LAST_WEEK" +msgstr "Oxirgi hafta" + +msgid "IDS_EMAIL_BODY_PD_WEEKS_AGO" +msgstr "%d hafta avval" + +msgid "IDS_EMAIL_BODY_READ" +msgstr "O‘qish" + +msgid "IDS_EMAIL_BODY_UNREAD" +msgstr "O‘qilmagan" + +msgid "IDS_EMAIL_BODY_CLEAR" +msgstr "Tozalash" + +msgid "IDS_EMAIL_BODY_MANUAL_SETUP" +msgstr "Qo‘lda o‘rnatish" + +msgid "IDS_EMAIL_BODY_OLDER_M_HISTORY" +msgstr "Eskiroq" + +msgid "IDS_EMAIL_HEADER_CHECKING" +msgstr "Tekshirilmoqda" + +msgid "IDS_EMAIL_POP_THIS_ATTACHMENT_CANNOT_BE_DISPLAYED" +msgstr "Biriktirmani aks ettirib bo‘lmaydi" + +msgid "IDS_EMAIL_BODY_SERVER" +msgstr "Server" + +msgid "IDS_EMAIL_BODY_ADD_ACCOUNT" +msgstr "Hisob qaydnoma qo‘shish" + +msgid "IDS_EMAIL_BODY_REMOVE_EVENT_FROM_CALENDAR" +msgstr "Kalendardan voqeani olib tashlash" + +msgid "IDS_EMAIL_POP_GETTING_RECIPIENTS_CERTIFICATES_ING" +msgstr "Qabul qiluvchilar sertifikatlari olinmoqda..." + +msgid "IDS_EMAIL_POP_VALIDATING_CERTIFICATES_ING" +msgstr "Sertifikatlar tasdiqlanmoqda..." + +msgid "IDS_EMAIL_HEADER_CERTIFICATES" +msgstr "Sertifikatlar" + +msgid "IDS_EMAIL_POP_FOLLOWING_RECIPIENTS_HAVE_INVALID_CERTIFICATES" +msgstr "Quyidagi qabul qiluvchilar noto‘g‘ri sertifikatlarga ega" + +msgid "IDS_EMAIL_POP_VERIFYING_SIGNATURE_ING" +msgstr "Imzo tekshirilmoqda..." + +msgid "IDS_EMAIL_BODY_ADVANCED" +msgstr "Takomillashgan" + +msgid "IDS_EMAIL_BODY_SEARCH_BY" +msgstr "Quyidagi bo‘yicha qidirish" + +msgid "IDS_EMAIL_BODY_WINDOWS_LIVE_HOTMAIL" +msgstr "Windows Live Hotmail" + +msgid "IDS_EMAIL_BODY_DELETE_ALL_Q" +msgstr "Barchasi o'chirilsinmi?" + +msgid "IDS_EMAIL_BODY_MOVE_TO" +msgstr "Quyidagiga ko‘chirish" + +msgid "IDS_EMAIL_BODY_TOTAL_EMAILS" +msgstr "Jami e-pochta xabarlari" + +msgid "IDS_EMAIL_BODY_HEADER_ONLY" +msgstr "Faqat sarlavha" + +msgid "IDS_EMAIL_BODY_PHONE_AND_SERVER" +msgstr "Telefon va server" + +msgid "IDS_EMAIL_BODY_PHONE_ONLY" +msgstr "Faqat telefon" + +msgid "IDS_EMAIL_BODY_USE_SAME_USERNAME_PASSWORD_AS_POP3_IMAP4" +msgstr "Bir xil foydalanuvchi nomi/parolni POP3/IMAP4 sifatida foydalaning" + +msgid "IDS_EMAIL_BODY_USE_POP3_IMAP4_BEFORE_SMTP" +msgstr "SMTPdan oldin POP3/IMAP4dan foydalaning" + +msgid "IDS_EMAIL_POP_FAILED_TO_VALIDATE_ACCOUNT_CHECK_EMAIL_ADDRESS_AND_PASSWORD" +msgstr "Hisob qaydnomasini tasdiqlab bo‘lmadi. Elektron pochta manzili va parolni tekshirish" + +msgid "IDS_EMAIL_BODY_SMTP_PORT" +msgstr "SMTP porti" + +msgid "IDS_EMAIL_BODY_SHOW_PASSWORD" +msgstr "Parol ko‘rsatilsin" + +msgid "IDS_EMAIL_BODY_LAST_MONTH" +msgstr "Oxirgi oy" + +msgid "IDS_EMAIL_BODY_1_WEEK_AGO" +msgstr "1 hafta avval" + +msgid "IDS_EMAIL_OPT_LOG_IN" +msgstr "Kirish" + +msgid "IDS_EMAIL_BODY_FORWARD_WITH_FILES" +msgstr "Fayllar b-n bosh/yub." + +msgid "IDS_EMAIL_BODY_REPLY_WITH_BODY" +msgstr "Matn b-n javob berish" + +msgid "IDS_EMAIL_BODY_SAVE_ALL" +msgstr "Barchasini saqlash" + +msgid "IDS_EMAIL_OPT_NEW_MEETING_INVITATION" +msgstr "Yangi uchrashuv taklifi" + +msgid "IDS_EMAIL_OPT_MEETING_INVITATION" +msgstr "Uchrashuv taklifnomasi" + +msgid "IDS_EMAIL_HEADER_REPLY_ABB" +msgstr "Javob berish" + +msgid "IDS_EMAIL_OPT_TO_SENDER_ABB" +msgstr "Yuboruvchiga" + +msgid "IDS_EMAIL_OPT_TO_ALL_ABB" +msgstr "Barchaga" + +msgid "IDS_EMAIL_OPT_ADD_CC_BCC" +msgstr "Nusxa/Yashirin nusxa qo‘shish" + +msgid "IDS_EMAIL_OPT_MOVE_TO_CC" +msgstr "Nusxaga (Cc) ko‘chirish" + +msgid "IDS_EMAIL_OPT_MOVE_TO_BCC" +msgstr "Yashirin nusxaga (Bcc) ko‘chirish" + +msgid "IDS_EMAIL_OPT_VIEW_CONTACT" +msgstr "Kontaktlarni ko‘rib chiqish" + +msgid "IDS_EMAIL_HEADER_ATTACH_ABB" +msgstr "Biriktirish" + +msgid "IDS_EMAIL_HEADER_MOVE_TO" +msgstr "Quyidagiga ko‘chirish" + +msgid "IDS_EMAIL_HEADER_SEARCH_BY" +msgstr "Quyidagi bo‘yicha qidirish" + +msgid "IDS_EMAIL_OPT_ADVANCED" +msgstr "Takomillashgan" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_NOT_VALID_AND_IS_NOT_TRUSTED" +msgstr "Ushbu xabardagi raqamli imzo haqiqiy ham ishonchli ham emas" + +msgid "IDS_EMAIL_POP_CONNECTION_ERROR" +msgstr "Ulanish xatosi" + +msgid "IDS_EMAIL_BODY_EVERY_30_MINUTES" +msgstr "Har 30 daqiqa" + +msgid "IDS_EMAIL_BODY_EVERY_PD_HOURS" +msgstr "Har %d soat" + +msgid "IDS_EMAIL_BODY_ONCE_A_DAY" +msgstr "Kunda bir marta" + +msgid "IDS_EMAIL_POP_CERTIFICATE_DOES_NOT_MATCH_EMAIL_ADDRESS" +msgstr "Sertifikat e-pochta manziliga mos kelmadi" + +msgid "IDS_EMAIL_BODY_ENCRYPT" +msgstr "Shifrlash" + +msgid "IDS_EMAIL_BODY_SIGN" +msgstr "Imzo" + +msgid "IDS_EMAIL_POP_DECRYPTING_MESSAGE_ING" +msgstr "Xabar shifri ochilmoqda..." + +msgid "IDS_EMAIL_BODY_1_MONTH_AGO" +msgstr "1 oy oldin" + +msgid "IDS_EMAIL_OPT_ACCEPT" +msgstr "Qabul qilish" + +msgid "IDS_EMAIL_OPT_DECLINE" +msgstr "Rad etish" + +msgid "IDS_EMAIL_BODY_ALL_ACCOUNTS" +msgstr "Barcha hisob qaydnomalar" + +msgid "IDS_EMAIL_HEADER_SORT_BY" +msgstr "Saralash" + +msgid "IDS_EMAIL_SK_SORT_BY" +msgstr "Saralash" + +msgid "IDS_EMAIL_SK_DELETE_ALL" +msgstr "Bar. o'ch" + +msgid "IDS_EMAIL_SK_MOVE" +msgstr "Ko‘chir." + +msgid "IDS_EMAIL_SK_BLOCK" +msgstr "Bloklash" + +msgid "IDS_EMAIL_SK_CREATE_FOLDER" +msgstr "Jild yaratish" + +msgid "IDS_EMAIL_HEADER_CREATE_FOLDER" +msgstr "Jild yaratish" + +msgid "IDS_EMAIL_POP_FOLDER_NAME" +msgstr "Jild nomi" + +msgid "IDS_EMAIL_OPT_REPLY" +msgstr "Javob berish" + +msgid "IDS_EMAIL_OPT_FORWARD" +msgstr "Boshqaga yo‘naltirish" + +msgid "IDS_EMAIL_OPT_SHARE_VIA_EMAIL" +msgstr "E-pochta orqali ulashish" + +msgid "IDS_EMAIL_OPT_OPEN" +msgstr "Ochish" + +msgid "IDS_EMAIL_OPT_RECORD_AUDIO" +msgstr "Audio yozib olish" + +msgid "IDS_EMAIL_HEADER_SECURITY" +msgstr "Xavfsizlik" + +msgid "IDS_EMAIL_BODY_PD_ATTACHMENTS" +msgstr "%d biriktirma" + +msgid "IDS_EMAIL_POP_UNABLE_TO_OPEN_FILE" +msgstr "Faylni ochib bo‘lmaydi" + +msgid "IDS_EMAIL_POP_RETRIEVING_ING" +msgstr "Qayta olinmoqda..." + +msgid "IDS_EMAIL_BODY_SYNC_SCHEDULE" +msgstr "Sinx. jadvali" + +msgid "IDS_EMAIL_BODY_EVERY_PD_MINUTES" +msgstr "Har %d daqiqa" + +msgid "IDS_EMAIL_BODY_ADD_ADDRESS" +msgstr "Add address" + +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "Yangi e-pochta" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "Jild tanlash" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "Video olish" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "Quyidagiga ko‘chirish" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "E-pochta manzilini tanlash" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "Qidirib bo‘lmaydi" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "O‘qilganlar" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "Kontaktlar ro‘yxati, e-pochtalar ro‘yxati va e-pochta xabarlarining eng yuqorisiga o‘tish uchun, ikki marta cherting" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "Yuborishdan avval javobni tahrirlang" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "Javob endi yuborilsin" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "Javob yuborilmasin" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "Imzoni tasdiqlash" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "Imzoni tasdiqlash" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "Imzoni tekshirib bo‘lmaydi. Umumiy kalit o‘rnatilmagan" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "Ushbu xabardagi raqamli imzo haqiqiy va ishonchli" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "Xabar shifrdan chiq" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "E-pochtani saqlash" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "Jild yaratib bo‘lmaydi" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "Rasmga olish" + diff --git a/po/zh_CN.po b/po/zh_CN.po index 748c18c..2b486ba 100755 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -1390,3 +1390,60 @@ msgstr "每 %d 分钟" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "添加地址" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "新邮件" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "选择文件夹" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "拍摄录像" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "移到收件人" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "选择电子邮件地址" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "无法搜索" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "已读" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "双击以转至联系人列表、电子邮件列表和电子邮件消息的顶部" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "编辑响应然后发送" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "立即发送响应" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "请勿发送响应" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "验证签名" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "验证签名" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "无法验证签名。公共密钥未安装" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "该消息上的数字签名有效且被信任" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "解密消息" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "保存电子邮件" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "不能创建文件夹" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "拍摄照片" + diff --git a/po/zh_HK.po b/po/zh_HK.po index ba085ac..6986777 100755 --- a/po/zh_HK.po +++ b/po/zh_HK.po @@ -896,7 +896,7 @@ msgid "IDS_EMAIL_OPT_LARGE_M_TEXTSIZE" msgstr "大" msgid "IDS_EMAIL_OPT_HUGE_M_TEXTSIZE" -msgstr "巨大" +msgstr "超大" msgid "IDS_EMAIL_BODY_ALWAYS_CC_BCC_MYSELF" msgstr "總是抄送/密送自己" @@ -1390,3 +1390,60 @@ msgstr "每 %d 分鐘" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "加入地址" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "新電子郵件" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "選擇資料夾" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "拍攝影片" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "移動到頂部" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "選擇電子郵件地址" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "無法搜尋" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "已讀取" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "輕觸兩次以前往聯絡人清單、電子郵件清單以及電子郵件訊息的頂部" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "在發送前的編輯回應" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "現在發送回應" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "不要發送回應" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "驗證簽署" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "驗證簽署" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "無法驗證簽名。未安裝公開金鑰" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "此訊息上的數位簽署有效且受信任" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "解密訊息" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "儲存電子郵件" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "無法建立資料夾" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "拍照" + diff --git a/po/zh_SG.po b/po/zh_SG.po index 8c90810..f1fdd93 100755 --- a/po/zh_SG.po +++ b/po/zh_SG.po @@ -1390,3 +1390,60 @@ msgstr "每 %d 分钟" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "添加地址" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "新邮件" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "选择文件夹" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "拍摄视频" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "移动到收件人" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "选择电子邮件地址" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "无法搜索" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "阅读" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "双击以转至联系人列表、电子邮件列表和电子邮件消息的顶部" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "编辑响应然后发送" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "立即发送响应" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "请勿发送响应" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "验证签名" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "验证签名" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "无法验证签名。公共密钥未安装" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "该消息上的数字签名有效且被信任" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "解密消息" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "保存电子邮件" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "不能创建文件夹" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "拍摄照片" + diff --git a/po/zh_TW.po b/po/zh_TW.po index 1b4c139..6a0eb54 100755 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -1390,3 +1390,60 @@ msgstr "每 %d 分鐘" msgid "IDS_EMAIL_BODY_ADD_ADDRESS" msgstr "加入地址" +msgid "IDS_EMAIL_BODY_NEW_EMAIL" +msgstr "新電子郵件" + +msgid "IDS_EMAIL_HEADER_SELECT_FOLDER_ABB" +msgstr "選取資料夾" + +msgid "IDS_EMAIL_BODY_CAPTURE_VIDEO" +msgstr "拍攝影片" + +msgid "IDS_EMAIL_BODY_MOVE_TO_TO" +msgstr "移動到至" + +msgid "IDS_EMAIL_HEADER_SELECT_EMAIL_ADDRESS" +msgstr "選擇電子郵件位址" + +msgid "IDS_EMAIL_POP_UNABLE_TO_SEARCH" +msgstr "無法搜尋" + +msgid "IDS_EMAIL_OPT_READ" +msgstr "已讀取" + +msgid "IDS_EMAIL_POP_DOUBLE_TAP_TO_GO_TO_THE_TOP_OF_CONTACTS_LISTS_EMAIL_LISTS_AND_EMAIL_MESSAGES" +msgstr "輕觸兩次前往聯絡人清單、電子郵件清單以及電子郵件訊息頂部" + +msgid "IDS_EMAIL_OPT_EDIT_RESPONSE_BEFORE_SENDING" +msgstr "在發送前編輯回應" + +msgid "IDS_EMAIL_OPT_SEND_RESPONSE_NOW" +msgstr "立刻發送回應" + +msgid "IDS_EMAIL_OPT_DO_NOT_SEND_RESPONSE" +msgstr "不要發送回應" + +msgid "IDS_EMAIL_BUTTON_VERIFY_SIGNATURE" +msgstr "驗證簽名" + +msgid "IDS_EMAIL_HEADER_VERIFY_SIGNATURE_HEADER" +msgstr "驗證簽名" + +msgid "IDS_EMAIL_BODY_UNABLE_TO_VERIFY_SIGNATURE_PUBLIC_KEY_IS_NOT_INSTALLED" +msgstr "無法驗證簽名。未安裝公開金鑰" + +msgid "IDS_EMAIL_POP_THE_DIGITAL_SIGNATURE_ON_THIS_MESSAGE_IS_VALID_AND_TRUSTED" +msgstr "此訊息的數位簽署有效且受信任" + +msgid "IDS_EMAIL_BUTTON_DECRYPT_MESSAGE" +msgstr "解密訊息" + +msgid "IDS_EMAIL_OPT_SAVE_EMAIL_ABB" +msgstr "儲存電子郵件" + +msgid "IDS_EMAIL_POP_UNABLE_TO_CREATE_FOLDER" +msgstr "無法建立資料夾" + +msgid "IDS_EMAIL_BUTTON_TAKE_PICTURE" +msgstr "拍攝圖片" + diff --git a/setting/CMakeLists.txt b/setting/CMakeLists.txt index f20138c..00da175 100755 --- a/setting/CMakeLists.txt +++ b/setting/CMakeLists.txt @@ -65,7 +65,4 @@ ADD_DEPENDENCIES(${PROJECT_NAME} email-setting-theme.edj) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR}) INSTALL(FILES ${CMAKE_SETTING_BINARY_DIR}/email-setting-theme.edj DESTINATION ${EDJDIR}) -INSTALL(FILES ${CMAKE_SOURCE_DIR}/images/org.tizen.email.png DESTINATION ${ICONDIR}) -# i18n -#ADD_SUBDIRECTORY(po) diff --git a/setting/include/email-setting.h b/setting/include/email-setting.h index 57d3a44..5536f5d 100755 --- a/setting/include/email-setting.h +++ b/setting/include/email-setting.h @@ -121,7 +121,6 @@ struct ug_data { int setup_mailbox; int navi_flag[16]; int start_account_validation; - int b_exchange; int change_view_ing; int b_on_pause; int wds_account_creation; diff --git a/setting/src/email-setting-account-set.c b/setting/src/email-setting-account-set.c index c43d84d..78549a4 100755 --- a/setting/src/email-setting-account-set.c +++ b/setting/src/email-setting-account-set.c @@ -211,14 +211,14 @@ static void _set_gmail(struct viewdata *vd) account->user_email_address = g_strdup("@gmail.com"); account->incoming_server_password = g_strdup();*/ - vconf_get_int("file/private/com.samsung.email/gmail_receiving_type", (int *)&(account->incoming_server_type)); - vconf_get_int("file/private/com.samsung.email/gmail_receiving_port", &(account->incoming_server_port_number)); - vconf_get_int("file/private/com.samsung.email/gmail_receiving_ssl", &(account->incoming_server_secure_connection)); - account->incoming_server_address = vconf_get_str("file/private/com.samsung.email/gmail_receiving_address"); - - vconf_get_int("file/private/com.samsung.email/gmail_sending_port", &(account->outgoing_server_port_number)); - vconf_get_int("file/private/com.samsung.email/gmail_sending_ssl", &(account->outgoing_server_secure_connection)); - account->outgoing_server_address = vconf_get_str("file/private/com.samsung.email/gmail_sending_address"); + vconf_get_int("file/private/org.tizen.email/gmail_receiving_type", (int *)&(account->incoming_server_type)); + vconf_get_int("file/private/org.tizen.email/gmail_receiving_port", &(account->incoming_server_port_number)); + vconf_get_int("file/private/org.tizen.email/gmail_receiving_ssl", &(account->incoming_server_secure_connection)); + account->incoming_server_address = vconf_get_str("file/private/org.tizen.email/gmail_receiving_address"); + + vconf_get_int("file/private/org.tizen.email/gmail_sending_port", &(account->outgoing_server_port_number)); + vconf_get_int("file/private/org.tizen.email/gmail_sending_ssl", &(account->outgoing_server_secure_connection)); + account->outgoing_server_address = vconf_get_str("file/private/org.tizen.email/gmail_sending_address"); account->outgoing_server_user_name = g_strdup(account->incoming_server_user_name); account->outgoing_server_password = g_strdup(account->incoming_server_password); @@ -291,14 +291,14 @@ static void _set_yahoomail(struct viewdata *vd) account->user_email_address = g_strdup("@yahoo.com"); account->incoming_server_password = g_strdup();*/ - vconf_get_int("file/private/com.samsung.email/yahoo_receiving_type", (int *)&(account->incoming_server_type)); - vconf_get_int("file/private/com.samsung.email/yahoo_receiving_port", &(account->incoming_server_port_number)); - vconf_get_int("file/private/com.samsung.email/yahoo_receiving_ssl", &(account->incoming_server_secure_connection)); - account->incoming_server_address = vconf_get_str("file/private/com.samsung.email/yahoo_receiving_address"); + vconf_get_int("file/private/org.tizen.email/yahoo_receiving_type", (int *)&(account->incoming_server_type)); + vconf_get_int("file/private/org.tizen.email/yahoo_receiving_port", &(account->incoming_server_port_number)); + vconf_get_int("file/private/org.tizen.email/yahoo_receiving_ssl", &(account->incoming_server_secure_connection)); + account->incoming_server_address = vconf_get_str("file/private/org.tizen.email/yahoo_receiving_address"); - account->outgoing_server_address = vconf_get_str("file/private/com.samsung.email/yahoo_sending_address"); - vconf_get_int("file/private/com.samsung.email/yahoo_sending_port", &(account->outgoing_server_port_number)); - vconf_get_int("file/private/com.samsung.email/yahoo_sending_ssl", &(account->outgoing_server_secure_connection)); + account->outgoing_server_address = vconf_get_str("file/private/org.tizen.email/yahoo_sending_address"); + vconf_get_int("file/private/org.tizen.email/yahoo_sending_port", &(account->outgoing_server_port_number)); + vconf_get_int("file/private/org.tizen.email/yahoo_sending_ssl", &(account->outgoing_server_secure_connection)); account->outgoing_server_user_name = g_strdup(account->incoming_server_user_name); account->outgoing_server_password = g_strdup(account->incoming_server_password); @@ -372,14 +372,14 @@ static void _set_hotmail(struct viewdata *vd) account->user_email_address = g_strdup("@aol.com"); account->incoming_server_password = g_strdup();*/ - vconf_get_int("file/private/com.samsung.email/hotmail_receiving_type", (int *)&(account->incoming_server_type)); - vconf_get_int("file/private/com.samsung.email/hotmail_receiving_port", &(account->incoming_server_port_number)); - vconf_get_int("file/private/com.samsung.email/hotmail_receiving_ssl", &(account->incoming_server_secure_connection)); - account->incoming_server_address = vconf_get_str("file/private/com.samsung.email/hotmail_receiving_address"); + vconf_get_int("file/private/org.tizen.email/hotmail_receiving_type", (int *)&(account->incoming_server_type)); + vconf_get_int("file/private/org.tizen.email/hotmail_receiving_port", &(account->incoming_server_port_number)); + vconf_get_int("file/private/org.tizen.email/hotmail_receiving_ssl", &(account->incoming_server_secure_connection)); + account->incoming_server_address = vconf_get_str("file/private/org.tizen.email/hotmail_receiving_address"); - account->outgoing_server_address = vconf_get_str("file/private/com.samsung.email/hotmail_sending_address"); - vconf_get_int("file/private/com.samsung.email/hotmail_sending_port", &(account->outgoing_server_port_number)); - vconf_get_int("file/private/com.samsung.email/hotmail_sending_ssl", &(account->outgoing_server_secure_connection)); + account->outgoing_server_address = vconf_get_str("file/private/org.tizen.email/hotmail_sending_address"); + vconf_get_int("file/private/org.tizen.email/hotmail_sending_port", &(account->outgoing_server_port_number)); + vconf_get_int("file/private/org.tizen.email/hotmail_sending_ssl", &(account->outgoing_server_secure_connection)); account->outgoing_server_user_name = g_strdup(account->incoming_server_user_name); account->outgoing_server_password = g_strdup(account->incoming_server_password); @@ -452,14 +452,14 @@ static void _set_aol(struct viewdata *vd) account->user_email_address = g_strdup("@aol.com"); account->incoming_server_password = g_strdup();*/ - vconf_get_int("file/private/com.samsung.email/aol_receiving_type", (int *)&(account->incoming_server_type)); - vconf_get_int("file/private/com.samsung.email/aol_receiving_port", &(account->incoming_server_port_number)); - vconf_get_int("file/private/com.samsung.email/aol_receiving_ssl", &(account->incoming_server_secure_connection)); - account->incoming_server_address = vconf_get_str("file/private/com.samsung.email/aol_receiving_address"); + vconf_get_int("file/private/org.tizen.email/aol_receiving_type", (int *)&(account->incoming_server_type)); + vconf_get_int("file/private/org.tizen.email/aol_receiving_port", &(account->incoming_server_port_number)); + vconf_get_int("file/private/org.tizen.email/aol_receiving_ssl", &(account->incoming_server_secure_connection)); + account->incoming_server_address = vconf_get_str("file/private/org.tizen.email/aol_receiving_address"); - account->outgoing_server_address = vconf_get_str("file/private/com.samsung.email/aol_sending_address"); - vconf_get_int("file/private/com.samsung.email/aol_sending_port", &(account->outgoing_server_port_number)); - vconf_get_int("file/private/com.samsung.email/aol_sending_ssl", &(account->outgoing_server_secure_connection)); + account->outgoing_server_address = vconf_get_str("file/private/org.tizen.email/aol_sending_address"); + vconf_get_int("file/private/org.tizen.email/aol_sending_port", &(account->outgoing_server_port_number)); + vconf_get_int("file/private/org.tizen.email/aol_sending_ssl", &(account->outgoing_server_secure_connection)); account->outgoing_server_user_name = g_strdup(account->incoming_server_user_name); account->outgoing_server_password = g_strdup(account->incoming_server_password); diff --git a/viewer/CMakeLists.txt b/viewer/CMakeLists.txt new file mode 100755 index 0000000..021818c --- /dev/null +++ b/viewer/CMakeLists.txt @@ -0,0 +1,63 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(ug-email-viewer-efl C) + +SET(SRCS + ./src/email-viewer.c + ./src/email-viewer-webview.c + ./src/email-viewer-logic.c + ./src/email-viewer-utils.c) +SET(CMAKE_SKIP_BUILD_RPATH TRUE) + +IF("${CMAKE_BUILD_TYPE}" STREQUAL "") + SET(CMAKE_BUILD_TYPE "Release") +ENDIF("${CMAKE_BUILD_TYPE}" STREQUAL "") +MESSAGE("Build type: ${CMAKE_BUILD_TYPE}") + +SET(CMAKE_MAILVIEWER_SOURCE_DIR "${CMAKE_SOURCE_DIR}/viewer") +SET(CMAKE_MAILVIEWER_BINARY_DIR "${CMAKE_BINARY_DIR}/viewer") +INCLUDE_DIRECTORIES(${CMAKE_MAILVIEWER_SOURCE_DIR}/include) +INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/common/include) + +INCLUDE(FindPkgConfig) +pkg_check_modules(pkgs-viewer REQUIRED appcore-efl ui-gadget-1 x11 elementary ecore glib-2.0 gobject-2.0 + status capi-media-metadata-extractor capi-media-image-util + email-service edbus capi-appfw-application vconf ewebkit2 contacts-service sysman bundle dlog efreet-mime mm-fileinfo mmutil-jpeg libmedia-utils calendar ethumb) + +FOREACH(flag ${pkgs-viewer_CFLAGS}) + SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") +ENDFOREACH(flag) +#SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -finstrument-functions") + +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") +SET(CMAKE_LDFLAGS "-Wl,-z,nodelete") + +FIND_PROGRAM(UNAME NAMES uname) +EXEC_PROGRAM("${UNAME}" ARGS "-m" OUTPUT_VARIABLE "ARCH") +IF("${ARCH}" STREQUAL "arm") + ADD_DEFINITIONS("-DTARGET") + MESSAGE("add -DTARGET") + SET(CMAKE_C_FLAGS_RELEASE "-mabi=aapcs-linux -msoft-float -O2") +ENDIF("${ARCH}" STREQUAL "arm") + +ADD_DEFINITIONS("-DPREFIX=\"${CMAKE_INSTALL_PREFIX}\"") +ADD_DEFINITIONS("-DDEBUG") +ADD_DEFINITIONS("-DFACTORYFS=\"$ENV{FACTORYFS}\"") +ADD_DEFINITIONS("-DDATAFS=\"$ENV{DATAFS}\"") +ADD_DEFINITIONS("-D_POPUP_WITH_LIST") +ADD_DEFINITIONS("-D_NEW_CT_SVC_API") + +ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} email-common ${CMAKE_LDFLAGS} ${pkgs-viewer_LDFLAGS}) + +ADD_CUSTOM_TARGET(email-viewer-theme.edj + COMMAND edje_cc -id ${CMAKE_SOURCE_DIR}/images + ${CMAKE_MAILVIEWER_SOURCE_DIR}/theme/email-viewer-theme.edc ${CMAKE_MAILVIEWER_BINARY_DIR}/email-viewer-theme.edj + DEPENDS ${CMAKE_MAILVIEWER_SOURCE_DIR}/theme/email-viewer-theme.edc +) +ADD_DEPENDENCIES(${PROJECT_NAME} email-viewer-theme.edj) + +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${UGDIR}) +INSTALL(FILES ${CMAKE_MAILVIEWER_BINARY_DIR}/email-viewer-theme.edj DESTINATION ${EDJDIR}) +INSTALL(FILES ${CMAKE_MAILVIEWER_SOURCE_DIR}/theme/_email_default.html DESTINATION ${DATADIR}) + diff --git a/viewer/include/email-viewer-js.h b/viewer/include/email-viewer-js.h new file mode 100755 index 0000000..93a7c54 --- /dev/null +++ b/viewer/include/email-viewer-js.h @@ -0,0 +1,44 @@ +/* + * 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_VIEWER_JS_H_ +#define EMAIL_VIEWER_JS_H_ + +#include "email-viewer.h" + +#define VIEWER_JS_FILE_PATH JSDIR"/email-viewer.js" + +#define COMPOSER_JS_REMOVE_IM "IM_JS.parentNode.removeChild(IM_JS);" + +#define VIEWER_JS_GET_HTML_BODY_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 VIEWER_JS_INSERT_IM(s) \ + "var IM_JS = document.createElement(\"script\");" \ + "IM_JS.setAttribute(\"type\", \"text/javascript\");" \ + "IM_JS.setAttribute(\"src\", \""s"\");" \ + "console.log(IM_JS);" \ + "if (typeof IM_JS != \"undefined\")" \ + "document.getElementsByTagName(\"head\")[0].appendChild(IM_JS);" + + +#endif /* EMAIL_VIEWER_JS_H_ */ diff --git a/viewer/include/email-viewer-logic.h b/viewer/include/email-viewer-logic.h new file mode 100755 index 0000000..0638294 --- /dev/null +++ b/viewer/include/email-viewer-logic.h @@ -0,0 +1,118 @@ +/* + * 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_viewer_logic_H__ +#define __DEF_email_viewer_logic_H__ + +#include +#include +#include +#include "email-api.h" +#include "email-types.h" + +#define ATTACH_MAX 65536 +#define CONCAT_FORMAT(x, y, z) ((x<<16) | (y<<8) | z) + +typedef struct _EmailViewerPrivate EmailViewerPrivate; +struct _EmailViewerPrivate { + int mailbox_id; + int mail_id; + int account_id; + unsigned int download_id; + gboolean download_mail; + gboolean multi_body; + gboolean b_att_open; + gboolean b_att_save; + gboolean b_all_att_save; + char *file_id; + char *att_file_id; + int file_size; + int attachment_id; + unsigned int view_creation_id; + unsigned int download_progress_id; + unsigned int download_fail_id; + unsigned int email_handle; + unsigned int download_all_email_handle[ATTACH_MAX]; + unsigned int download_all_cnt; + unsigned int download_all_fail_cnt; + email_mail_data_t *mail_info; + email_attachment_data_t *attachment_info; + email_address_info_list_t *addrs_info_list; + int attachment_count; +}; + +typedef struct _EmailViewerProp EmailViewerProp; +struct _EmailViewerProp { + int composer_type; + int account_id; + int mail_id; + int status; + int status2; + int priority; + int att_len; + int real_att_len; + + char *src_box; + char *sender; + char *sender_display_name; + char *recipient_to; + char *recipient_cc; + char *recipient_bcc; + char *from_contact_name; + char *to_contact_name; + char *cc_contact_name; + char *bcc_contact_name; + + unsigned int date; + unsigned int time; + time_t mktime; + + char *subject; + char *charset; + char *body; + char *body_uri; + GList *attachments; + + gint64 total_att_size; + + gboolean has_html; + gboolean has_attachment; + gboolean seen; + gboolean lock; + gboolean favorite; + gboolean request_report; + int body_download; +}; + +typedef struct _EmailAttachmentType EmailAttachmentType; +struct _EmailAttachmentType { + int attach_id; + int index; + char *name; + char *path; + gint64 size; + gboolean download_yn; + gboolean drm; + gboolean inline_content; +}; + +gboolean viewer_get_internal_mail_info(EmailViewerProp *prop, EmailViewerPrivate *email_data); +void viewer_make_internal_mail(EmailViewerProp *prop, EmailViewerPrivate *email_data); +void viewer_set_mail_seen(EmailViewerProp *prop, email_mail_data_t * mail_info); + +#endif /* __DEF_email_viewer_logic_H__ */ + +/* EOF */ diff --git a/viewer/include/email-viewer-utils.h b/viewer/include/email-viewer-utils.h new file mode 100755 index 0000000..88aeeaa --- /dev/null +++ b/viewer/include/email-viewer-utils.h @@ -0,0 +1,69 @@ +/* + * 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_viewer_utils_H__ +#define __DEF_email_viewer_utils_H__ + +#include +#include +#include +#include +#include + +#include +#include "email-viewer.h" + +#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; }) + +/* GList iterator */ +#define LIST_ITER_START(i, list) \ + for (i = 0; i < g_list_length(list); ++i) + +#define LIST_ITER_START_REVERSE(i, list) \ + for (i = (g_list_length(list) - 1); i >= 0; --i) + +#define LIST_ITER_GET(i, list) \ + g_list_nth(list, i) + +#define LIST_ITER_GET_DATA(i, list) \ + g_list_nth_data(list, i) + +typedef void (*popup_cb) (void *data, Evas_Object *obj, void *event_info); + +Evas_Object *viewer_make_thumbnail(char *path, Evas_Object *parent); +void _create_notify(EmailViewerUGD *ug_data, char *header, char *content, + int btn_num, char *btn1_lb, popup_cb resp_cb1, + char *btn2_lb, popup_cb resp_cb2, popup_cb resp_block_cb); + +int _find_folder_id_using_folder_type(EmailViewerUGD *ug_data, email_mailbox_type_e mailbox_type); + +void _move_email(EmailViewerUGD *ug_data, int dest_folder_id, gboolean is_delete); +void _delete_email(EmailViewerUGD *ug_data); +void _notify_mailbox_size(EmailViewerUGD *ug_data, char *size); + +#endif /* __DEF_email_viewer_utils_H__ */ + +/* EOF */ diff --git a/viewer/include/email-viewer-webview.h b/viewer/include/email-viewer-webview.h new file mode 100755 index 0000000..f1a922c --- /dev/null +++ b/viewer/include/email-viewer-webview.h @@ -0,0 +1,33 @@ +/* + * 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_viewer_webview_H__ +#define __DEF_email_viewer_webview_H__ + +#include "email-viewer.h" + +#define EMAIL_TMP_FILE_PATH DATADIR"/_email.tmp" + +Evas_Object *viewer_get_webview(EmailViewerUGD *ug_data, gboolean has_html); +void viewer_set_webview_content(EmailViewerUGD *ug_data, int reload); +char *viewer_set_html_content_file(EmailViewerWebview *wvd); +void viewer_coords_ewk_to_evas(Evas_Object *view, int ewkX, int ewkY, int *evasX, int *evasY); +void viewer_coords_evas_to_ewk(Evas_Object *view, int evasX, int evasY, int *ewkX, int *ewkY); +Eina_Bool viewer_send_message(void *data); + +#endif /* __DEF_email_viewer_webview_H__ */ + +/* EOF */ diff --git a/viewer/include/email-viewer.h b/viewer/include/email-viewer.h new file mode 100755 index 0000000..84ed1b9 --- /dev/null +++ b/viewer/include/email-viewer.h @@ -0,0 +1,342 @@ +/* + * 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_viewer_H_ +#define _DEF_email_viewer_H_ + +#include +#include +#include +#undef _ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "email-viewer-logic.h" +#include +#include "email-utils.h" +#include "email-locale.h" + +#define VIEWER_PACKAGE "email-viewer" +#define EV_THEME_PATH EDJDIR"/email-viewer-theme.edj" +#define PATH_VTCALL "/usr/bin/vtmain" + +#define _EDJ(o) elm_layout_edje_get(o) + +#define DEFAULT_CHARSET "UTF-8" + +#define MAILBOX_STR_MAX 128 +#define MAX_STR_LEN 1024 +#define MAX_LABEL_LEN 512 + +#define CONTACTUI_REQ_ADD_PHONE_NUMBER 19 +#define CONTACTUI_REQ_ADD_EMAIL 20 +#define CONTACTUI_REQ_ADD_URL 21 +#define CONTACTUI_REQ_SELECT_UPDATE_ITEM 11 +#define CONTACTUI_UPDATE_PHONE_NUMBER 0 +#define CONTACTUI_UPDATE_EMAIL 1 +#define CONTACTUI_UPDATE_HOMEPAGE 2 +#define CONTACT_PHONE_CONTACT 0 +#define CONTACTUI_REQ_CONTACT_DETAIL_INFO_VIEW 43 + +#define EMAIL_VIEW_MAX_TO_COUNT 50 +#define EMAIL_VIEW_MAX_CC_COUNT 50 +#define EMAIL_VIEW_MAX_BCC_COUNT 50 + +#define ICON_REPLY IMGDIR"/M02_controlbar_icon_reply.png" +#define ICON_REPLY_ALL IMGDIR"/M02_controlbar_icon_reply.png" +#define ICON_FORWARD IMGDIR"/M02_controlbar_icon_forward.png" +#define ICON_MOVE IMGDIR"/M02_controlbar_icon_move.png" +#define ICON_DELETE IMGDIR"/M02_controlbar_icon_delete.png" +#define ICON_RESEND IMGDIR"/M02_controlbar_icon_resend.png" +#define ICON_ADD_TO_CALENDAR IMGDIR"/M02_controlbar_icon_add_calendar.png" +#define ICON_CONTROLBAR_MORE IMGDIR"/M02_controlbar_icon_more.png" + +#define EMAIL_DEFAULT_HTML "file://"DATADIR"/_email_default.html" + +#define EMAIL_VIEWER_NOC_WIDTH 710.0 +#define EMAIL_VIEWER_NOC_HIGHT 949.0 + +typedef enum { + EMAIL_POPUP_BODY_DN_OK = 10, + EMAIL_POPUP_EMAIL_DELETE_OK, + EMAIL_POPUP_EMAIL_MOVETO_SPAM_OK, + EMAIL_POPUP_EMAIL_MOVETO_INBOX_OK, + EMAIL_POPUP_BODY_DN_CANCEL, + EMAIL_POPUP_ATT_DN_CANCEL, + EMAIL_POPUP_ATT_ALL_DN_CANCEL, + EMAIL_POPUP_HTML_LOAD_CANCEL, + EMAIL_POPUP_MAX +} EV_POPUP_RESPONSE_ID; + +typedef enum { + BODY_TYPE_TEXT = 0, + BODY_TYPE_HTML = 1, + BODY_TYPE_INVALID +} MESSAGE_BODY_TYPE; + +typedef enum { + EMAIL_VIEWER_PROGRESSBAR_ATT = 0, + EMAIL_VIEWER_PROGRESSBAR_ATT_ALL, + EMAIL_VIEWER_PROGRESSBAR_BODY, + EMAIL_VIEWER_PROGRESSBAR_HTML, + EMAIL_VIEWER_PROGRESSBAR_MAX +} EMAIL_VIEWER_PROGRESSBAR_TYPE; + +typedef struct list_data list_data; +struct list_data { + gchar *mailbox_ug; + + gchar *from; + gchar *title; + gchar *timeordate; + gchar *group_title; + gboolean is_attachment; + gboolean is_seen; + gboolean is_sending_now; + gboolean is_body_download; + gint mail_id; + gint account_id; + gint chksel; + gint idx; + Elm_Object_Item *item; +}; + +typedef struct _EMAIL_CONTACT_LIST_INFO_S { + int index; +#ifndef _NEW_CT_SVC_API + char *first_name; + char *last_name; +#else + char *display; +#endif + char *email_address; + char display_name[40]; +} EMAIL_CONTACT_LIST_INFO_S; + +typedef struct _EmailViewerWebview EmailViewerWebview; +struct _EmailViewerWebview { + Evas_Coord minw, minh; + Evas_Coord w, h; + int content_w, content_h; + float zoom_rate; + + MESSAGE_BODY_TYPE body_type; + MESSAGE_BODY_TYPE body_type_prev; + + char *html_content; + char *text_content; + char *uri; + char *charset; +}; + +typedef struct ug_data EmailViewerUGD; +struct ug_data { + Evas_Object *base; + ui_gadget_h ug; + + /* base */ + Evas *evas; + Evas_Object *win_main; + Evas_Object *layout_main; + Evas_Object *sub_ly; + Evas_Object *bg; + Elm_Theme *theme; + int main_w; + int main_h; + + /* arguments */ + int account_id; + int account_type; + int mail_id; + char *mailbox_name; + int mailbox_id; + char account_email_address[MAX_STR_LEN]; + + /* for flick */ + int prev_mail_id; + int next_mail_id; + int list_prev_idx; + int list_next_idx; + int mail_list_cur_idx; + GList *mail_list; + + /* flags */ + int got_att; + int b_internal; + int subject_onoff_flag; + int attach_onoff_flag; + int reset_view; + int b_noc; + int b_direct_destroy; + int b_partial_body; + int m_is_multi_touch; + int scroller_locked; + int b_contact_ug_launched; + int display_download_result; + int option_header_opened; + Eina_Bool b_load_finished; + Eina_Bool b_show_remote_images; + Eina_Bool is_webview_scrolling; + Eina_Bool is_main_scroller_scrolling; + + /* for ug create */ + int create_contact_arg; + int update_contact_type; + + /* Scalable UI */ + float scale_factor; + float webview_width; + float webview_height; + float webview_width_landscape; + float webview_height_landscape; + int webview_margin; + int webview_margin_landscape; + + /* for cut link */ + Ecore_Timer *cutlink_timer; + Eina_Bool last_click_have_link; + Eina_Bool last_click_have_image; + char *last_click_link_url; + char *last_click_link_text; + char *last_click_img_url; + + /* rotation */ + int isRotate; + + /* mailbox list */ + email_mailbox_type_e mailbox_type; + GList *folder_list; + email_mailbox_t *move_mailbox_list; + int move_mailbox_count; + + /* Evas Object */ + Evas_Object *dg_subject; + Evas_Object *lb_subject; + Evas_Object *ly_subject; + Evas_Object *dg_attach; + Evas_Object *addrs; + Evas_Object *scroller; + Evas_Object *conformant; + Evas_Object *webview_bx; + Evas_Object *main_bx; + Evas_Object *navi_bar; + Evas_Object *ctr_bar; + Evas_Object *up_ctrl_bar; + Evas_Object *webview; + Evas_Object *webkit; + Evas_Object *con_popup; + Evas_Object *timeout_popup; + Evas_Object *select_info; + Evas_Object *selectioninfo_layout; + Evas_Object *notify; + Evas_Object *pb_notify; + Evas_Object *pb_notify_lb; + Evas_Object *dn_popup; + Evas_Object *dn_progress; + Evas_Object *att_progress; + Evas_Object *b_btn; + Evas_Object *prev_btn; + Evas_Object *more_btn; + Evas_Object *next_btn; + Evas_Object *dn_btn; + Evas_Object *partial_dn_btn; + Evas_Object *partial_dn_btn_bx; + Evas_Object *top_sp; + Evas_Object *noc_bx; + Evas_Object *noc; + Evas_Object *to_mbe; + Evas_Object *cc_mbe; + Evas_Object *bcc_mbe; + + Evas_Object *opt_btn1; + Evas_Object *opt_btn2; + Evas_Object *opt_btn3; + Evas_Object *move_cbar; + + Evas_Object *to_ly; + Evas_Object *cc_ly; + Evas_Object *bcc_ly; + Evas_Object *from_btn; + Evas_Object *attach_hd_ly; + Evas_Object **attach_ex_ly; + Evas_Object *attach_hd_bk; + Evas_Object **attach_ex_bk; + + Evas_Object *progress_bar[ATTACH_MAX]; + Evas_Object *progress_bar_ly[ATTACH_MAX]; + + Elm_Object_Item *reply_ctr_it; + Elm_Object_Item *replyall_ctr_it; + Elm_Object_Item *forward_ctr_it; + Elm_Object_Item *calendar_ctr_it; + Elm_Object_Item *resend_ctr_it; + Elm_Object_Item *move_ctr_it; + Elm_Object_Item *del_ctr_it; + Elm_Object_Item *more_ctr_it; + + Elm_Object_Item *more_ctx_block_item; + + Elm_Object_Item *navi_main_it; + Elm_Object_Item *navi_move_it1; + Elm_Object_Item *navi_move_it2; + + E_DBus_Connection *edbus_conn; + EmailViewerWebview *webview_data; + EmailViewerPrivate *email_data; + EmailViewerProp *property; + + Evas_Object *gl; + Elm_Genlist_Item_Class itc1; + Elm_Genlist_Item_Class itc2; + Elm_Genlist_Item_Class itc3; + + GList *from_list; + GList *to_list; + GList *cc_list; + GList *bcc_list; + + ui_gadget_h ug_composer; + ui_gadget_h ug_image_viewer; + ui_gadget_h ug_contacts_search; + ui_gadget_h ug_calendar_edit; + + Ecore_Idler *idler; + Ecore_Timer *timer; +}; + +void _hide_view(EmailViewerUGD *ug_data); +void _launch_composer(EmailViewerUGD *ug_data, int type); + +#endif /* __DEF_email-viewer_H__ */ + +/* EOF */ diff --git a/viewer/src/email-viewer-logic.c b/viewer/src/email-viewer-logic.c new file mode 100755 index 0000000..383510c --- /dev/null +++ b/viewer/src/email-viewer-logic.c @@ -0,0 +1,492 @@ +/* + * 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. + */ + +#include "email-viewer-logic.h" +#include "email-viewer-utils.h" +#include "email-utils.h" +#include "email-engine.h" +#include "email-debug.h" + +void _set_mail_flags(EmailViewerProp *prop, EmailViewerPrivate *email_data); +static void _set_status(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _set_priority(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _set_lock(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _set_favorite(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _set_request_report(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _set_body_download(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _make_internal_sender(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _make_internal_date(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _make_internal_recipients(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _make_internal_subject(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _make_internal_body(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _make_internal_html_body(EmailViewerProp *prop, email_mail_data_t * mail_info); +static void _make_internal_attachments(EmailViewerProp *prop, email_attachment_data_t *attachment_info, int attachment_count); +static char *_str_removing_quots(char *src); + +gboolean viewer_get_internal_mail_info(EmailViewerProp *prop, EmailViewerPrivate *email_data) +{ + debug_log(""); + + int err = 0; + + if (email_data->mail_info) { + debug_log("mail_info freed"); + email_free_mail_data(&(email_data->mail_info), 1); + email_data->mail_info = NULL; + } + + if (email_data->attachment_info && email_data->attachment_count > 0) { + debug_log("attachment_info freed p[%p] n[%d]", email_data->attachment_info, email_data->attachment_count); + email_free_attachment_data(&(email_data->attachment_info), email_data->attachment_count); + email_data->attachment_info = NULL; + email_data->attachment_count = 0; + } + + if ((err = email_get_mail_data(email_data->mail_id, &(email_data->mail_info))) != EMAIL_ERROR_NONE) { + debug_log("fail to get mail data - err (%d)", err); + return FALSE; + } + + if (email_data->mail_info == NULL) { + debug_log("mail_info is NULL"); + return FALSE; + } + + if ((err = email_get_attachment_data_list(email_data->mail_id, &(email_data->attachment_info), &(email_data->attachment_count))) != EMAIL_ERROR_NONE) { + debug_log("fail to get attachment data - err (%d)", err); + return FALSE; + } + + _set_mail_flags(prop, email_data); + + return TRUE; +} + +void viewer_make_internal_mail(EmailViewerProp *prop, EmailViewerPrivate *email_data) +{ + debug_log(""); + email_mail_data_t *mail_info = email_data->mail_info; + email_attachment_data_t *attachment_info = email_data->attachment_info; + int attachment_count = email_data->attachment_count; + + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + /* sender */ + _make_internal_sender(prop, mail_info); + + /* datetime */ + _make_internal_date(prop, mail_info); + + /* recipient to, cc, bcc */ + _make_internal_recipients(prop, mail_info); + + /* subject */ + _make_internal_subject(prop, mail_info); + + /* body */ + _make_internal_body(prop, mail_info); + + /* html body */ + _make_internal_html_body(prop, mail_info); + + /* attachment */ + _make_internal_attachments(prop, attachment_info, attachment_count); +} + +void viewer_set_mail_seen(EmailViewerProp *prop, email_mail_data_t *mail_info) +{ + debug_log(""); + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + int err = 0; + + if (!mail_info->flags_seen_field) { + debug_log("newly arrived mail"); + + int mail_id = mail_info->mail_id; + err = email_set_flags_field(mail_info->account_id, &mail_id, 1, EMAIL_FLAGS_SEEN_FIELD, 1, 1); + + if (err != EMAIL_ERROR_NONE) { + debug_log("Failed to modify mail seen flag"); + } + } +} + +void _set_mail_flags(EmailViewerProp *prop, EmailViewerPrivate *email_data) +{ + debug_log(""); + email_mail_data_t *mail_info = email_data->mail_info; + + _set_status(prop, mail_info); + _set_priority(prop, mail_info); + _set_lock(prop, mail_info); + _set_favorite(prop, mail_info); + _set_request_report(prop, mail_info); + _set_body_download(prop, mail_info); +} + +static void _set_status(EmailViewerProp *prop, email_mail_data_t *mail_info) +{ + debug_log(""); + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + prop->status2 = mail_info->save_status; + debug_log("status2 (%d)", prop->status2); +} + +static void _set_priority(EmailViewerProp *prop, email_mail_data_t *mail_info) +{ + debug_log(""); + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + prop->priority = mail_info->priority; + debug_log("priority (%d)", prop->priority); +} + +static void _set_lock(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + prop->lock = mail_info->lock_status ? TRUE : FALSE; + debug_log("lock (%d)", prop->lock); +} + +static void _set_favorite(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + prop->favorite = mail_info->flags_flagged_field; + debug_log("favorite (%d)", prop->favorite); +} + +static void _set_request_report(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + email_account_t *account = NULL; + if (!email_engine_get_account_full_data(mail_info->account_id, &account)) { + debug_log("Failed email_engine_get_account_full_data"); + return; + } + + if (account) { + account_user_data_t *ud = (account_user_data_t*)account->user_data; + if (ud != NULL) { + debug_log("send_read_report is %d", ud->send_read_report); + prop->request_report = ud->send_read_report; + } + email_free_account(&account, 1); + account = NULL; + } + debug_log("request_report (%d)", prop->request_report); +} + +static void _set_body_download(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + if (mail_info == NULL) { + debug_log("mail_info is NULL"); + return; + } + + prop->body_download = mail_info->body_download_status; + debug_log("body_download (%d)", prop->body_download); +} + +static void _make_internal_sender(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + gchar **vector; + if (STR_VALID(mail_info->full_address_from)) { + if (STR_VALID(prop->sender)) { + free(prop->sender); + prop->sender = NULL; + } + debug_log("head from (%s)", mail_info->full_address_from); + + vector = g_strsplit_set(mail_info->full_address_from, "<>", -1); + if (vector == NULL) { + debug_log("vector == NULL"); + return; + } + + prop->sender_display_name = _str_removing_quots(vector[0]); + prop->sender = g_strdup(vector[1]); + + debug_log("display name (%s)", prop->sender_display_name); + debug_log("sender (%s)", prop->sender); + + g_strfreev(vector); + } + debug_log("sender (%s)", prop->sender ? prop->sender : "@niL"); +} + +static void _make_internal_date(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + + prop->mktime = mail_info->date_time; +} + +static void _make_internal_recipients(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + + if (STR_VALID(mail_info->full_address_to)) { + if (STR_VALID(prop->recipient_to)) { + free(prop->recipient_to); + prop->recipient_to = NULL; + } + prop->recipient_to = g_strdup(mail_info->full_address_to); + } + debug_log("recipient to (%s)", prop->recipient_to); + + if (STR_VALID(mail_info->full_address_cc)) { + if (STR_VALID(prop->recipient_cc)) { + free(prop->recipient_cc); + prop->recipient_cc = NULL; + } + prop->recipient_cc = g_strdup(mail_info->full_address_cc); + } + debug_log("recipient cc (%s)", prop->recipient_cc); + + if (STR_VALID(mail_info->full_address_bcc)) { + if (STR_VALID(prop->recipient_bcc)) { + free(prop->recipient_bcc); + prop->recipient_bcc = NULL; + } + prop->recipient_bcc = g_strdup(mail_info->full_address_bcc); + } + debug_log("recipient bcc (%s)", prop->recipient_bcc); +} + +static void _make_internal_subject(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + if (!STR_VALID(mail_info->subject)) { + debug_log("mail_info->head->subject is not valid"); + return; + } + + if (STR_VALID(prop->subject)) { + free(prop->subject); + prop->subject = NULL; + } + prop->subject = g_strdup(mail_info->subject); + + debug_log("subject (%s)", prop->subject); +} + +static void _make_internal_body(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + char *body_plain = NULL; + + if (STR_VALID(mail_info->file_path_plain)) { + if (STR_VALID(prop->body_uri)) { + free(prop->body_uri); + prop->body_uri = NULL; + } + prop->body_uri = g_strdup(mail_info->file_path_plain); + } + + char *plain_charset = email_parse_get_filename_from_path(mail_info->file_path_plain); + + if (STR_VALID(plain_charset)) { + if (STR_VALID(prop->charset)) { + free(prop->charset); + prop->charset = NULL; + } + prop->charset = g_strdup(plain_charset); + debug_log("charset: %s", prop->charset); + g_free(plain_charset); + } + + if (STR_VALID(mail_info->file_path_plain)) { + if (STR_VALID(prop->body)) { + free(prop->body); + prop->body = NULL; + } + body_plain = email_get_buff_from_file(mail_info->file_path_plain, 0); + prop->body = body_plain; + } +} + +static void _make_internal_html_body(EmailViewerProp *prop, email_mail_data_t * mail_info) +{ + debug_log(""); + + char *html = mail_info->file_path_html; + + if (STR_VALID(html)) { + debug_log("html body path (%s)", html); + + if (STR_VALID(prop->body_uri)) { + free(prop->body_uri); + prop->body_uri = NULL; + } + + prop->body_uri = g_strdup(mail_info->file_path_html); + prop->has_html = TRUE; + + if (prop->body_uri) { + if (STR_VALID(prop->charset)) { + free(prop->charset); + prop->charset = NULL; + } + + prop->charset = email_parse_get_filename_from_path(prop->body_uri); + debug_log("charset: %s", prop->charset); + } + } +} + +static void _make_internal_attachments(EmailViewerProp *prop, email_attachment_data_t *attachment_info, int attachment_count) +{ + debug_log(""); + int index = 0; + + if (attachment_info == NULL) { + debug_log("attachment_info is NULL"); + return; + } + + if (attachment_count <= 0) { + debug_log("attachment_count <= 0"); + return; + } + + if (prop->attachments) { + debug_log("Free the existing attachments.."); + int i; + LIST_ITER_START(i, prop->attachments) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, prop->attachments); + if (info->name) + free(info->name); + if (info->path) + free(info->path); + } + g_list_free(prop->attachments); + prop->attachments = NULL; + prop->real_att_len = 0; + prop->total_att_size = 0; + prop->att_len = 0; + } + + int i = 0; + for (i = 0; i < attachment_count; i++) { + email_attachment_data_t *attachment = attachment_info + i; + debug_log("attachments id (%d)", attachment->attachment_id); + debug_log("attachments name (%s)", attachment->attachment_name ? attachment->attachment_name : "@niL"); + debug_log("attachments path (%s)", attachment->attachment_path ? attachment->attachment_path : "@niL"); + debug_log("attachments size (%d)", attachment->attachment_size); + debug_log("attachments download (%d)", attachment->save_status); + debug_log("attachments drm (%d)", attachment->drm_status); + debug_log("attachments inline? (%d)", attachment->inline_content_status); + + EmailAttachmentType *attachment_item = g_new0(EmailAttachmentType, 1); + if (attachment_item) { + /* id */ + attachment_item->attach_id = attachment->attachment_id; + + /* index */ + attachment_item->index = ++index; + + /* name */ + if (STR_VALID(attachment->attachment_name)) { + attachment_item->name = g_strdup(attachment->attachment_name); + } + /* path */ + if (STR_VALID(attachment->attachment_path)) { + if (STR_INVALID(attachment_item->name)) { + attachment_item->name = email_parse_get_filename_from_path(attachment->attachment_path); + } + attachment_item->path = g_strdup(attachment->attachment_path); + } + /* size */ + if (attachment->attachment_size <= 0) { + attachment_item->size = email_get_file_size(attachment->attachment_path); + } else { + attachment_item->size = (guint64) attachment->attachment_size; + debug_log("attachment_item size (%d)", (gint) attachment_item->size); + } + + /* downloaded. */ + attachment_item->download_yn = attachment->save_status ? TRUE : FALSE; + + /* drm */ + attachment_item->drm = attachment->drm_status ? TRUE : FALSE; + + /* inline */ + attachment_item->inline_content = attachment->inline_content_status ? TRUE : FALSE; + if (!attachment->inline_content_status) { + (prop->real_att_len)++; + prop->total_att_size += (guint64) attachment->attachment_size; + } + + (prop->att_len)++; + + prop->attachments = g_list_append(prop->attachments, attachment_item); + } + } + + if (prop->real_att_len > 0) + prop->has_attachment = TRUE; +} + +static char *_str_removing_quots(char *src) +{ + int i = 0, j = 0; + int len = strlen(src); + char *ret; + + ret = (char *)malloc(len + 1); + memset(ret, 0, len + 1); + + for (i = 0; i < len; i++) { + if (src[i] != '"') { + ret[j++] = src[i]; + } + } + + return ret; +} + +/* EOF */ diff --git a/viewer/src/email-viewer-utils.c b/viewer/src/email-viewer-utils.c new file mode 100755 index 0000000..5d18639 --- /dev/null +++ b/viewer/src/email-viewer-utils.c @@ -0,0 +1,486 @@ +/* + * 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. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "email-viewer-utils.h" +#include "email-common-types.h" +#include "email-utils.h" +#include "email-engine.h" +#include "email-debug.h" + +#define MYFILE_IMGE_PATH "/opt/apps/com.samsung.myfile/res/images" +#define MB_SVC_FILE_PATH_LEN_MAX 255 + +static void _thumbnail_generated_cb(void *data, Ethumb *e, Eina_Bool success); + +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 */ +}; + +static 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} +}; + +static void _popup_response_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } +} + +Evas_Object *viewer_make_thumbnail(char *path, Evas_Object *parent) +{ + debug_log(""); + + if (parent == NULL) { + debug_log("parent obj is NULL"); + return NULL; + } + + Evas_Object *icon = NULL; + icon = elm_icon_add(parent); + + if (STR_INVALID(path)) { + elm_icon_file_set(icon, MYFILE_IMGE_PATH "/myfile_icon_etc.png", NULL); + evas_object_size_hint_min_set(icon, 30, 30); + return icon; + } + + char *default_icon_path = NULL; + char thumb_path[MB_SVC_FILE_PATH_LEN_MAX] = { 0, }; + + debug_log("file path: %s", path); + efreet_mime_init(); + char *type = (char *)efreet_mime_type_get(ecore_file_file_get(path)); + char *mime_type = g_strdup(type); + debug_log("mime type: %s", mime_type); + efreet_mime_shutdown(); + + if (mime_type) { + struct _mtd *mtd = (struct _mtd *)mtd_main; + + while (mtd && mtd->key) { + if (strncmp(mime_type, mtd->key, strlen(mime_type)) == 0) { + debug_log("key (%s)", mtd->key); + debug_log("type(%s)", type); + default_icon_path = g_strdup(mtd->icon_path); + debug_log("default_icon_path: %s", default_icon_path); + break; + } + mtd++; + } + + if (strncmp(mime_type, "image", 5) == 0) { + Ethumb *e = NULL; + e = ethumb_new(); + + ethumb_thumb_format_set(e, ETHUMB_THUMB_FDO); + ethumb_thumb_aspect_set(e, ETHUMB_THUMB_KEEP_ASPECT); + ethumb_thumb_size_set(e, 40, 40); + ethumb_thumb_category_set(e, "thumbnails"); + ethumb_thumb_dir_path_set(e, DATADIR); + ethumb_file_set(e, path, NULL); + + const char *thumb_path_tmp = NULL; + const char *key = NULL; + ethumb_thumb_path_get(e, &thumb_path_tmp, &key); + + if (!ecore_file_exists(thumb_path_tmp)) { + if (!ethumb_exists(e)) { + ethumb_generate(e, _thumbnail_generated_cb, NULL, NULL); + } + } + + if (thumb_path_tmp) { + debug_log("thumbnail path = %s", thumb_path); + snprintf(thumb_path, sizeof(thumb_path), "%s", thumb_path_tmp); + } + + ethumb_free(e); + } else if (strncmp(mime_type, "video", 5) == 0) { + int ret = 0; + int video_track_num = 0; + int video_w = 0; + int video_h = 0; + int thumb_len = 0; + void *stream = NULL; + MMHandleType content_attrs = 0; + + ret = mm_file_create_content_attrs(&content_attrs, path); + + if (ret == MM_ERROR_NONE && content_attrs) { + mm_file_get_attrs(content_attrs, NULL, + MM_FILE_CONTENT_VIDEO_TRACK_COUNT, + &video_track_num, NULL); + + if (video_track_num) { + mm_file_get_attrs(content_attrs, NULL, + MM_FILE_CONTENT_VIDEO_WIDTH, &video_w, + MM_FILE_CONTENT_VIDEO_HEIGHT, &video_h, + MM_FILE_CONTENT_VIDEO_THUMBNAIL, &stream, + &thumb_len, NULL); + + if (stream) { + int mm_ret = 0; + char filename[1024] = { 0, }; + char *file_name = NULL; + char *file_ext = NULL; + + email_parse_get_filename_n_ext_from_path(path, &file_name, &file_ext); + snprintf(filename, sizeof(filename), "%s%s%s%s", DATADIR"/", file_name, file_ext, ".jpg"); + g_free(file_name); + g_free(file_ext); + + mm_ret = mm_util_jpeg_encode_to_file(filename, stream, + video_w, video_h, + MM_UTIL_JPEG_FMT_RGB888, 70); + + if (ecore_file_exists(filename)) { + snprintf(thumb_path, sizeof(thumb_path), "%s", filename); + debug_log("file : %s, thumb_path : %s", path, thumb_path); + } + } + } + + mm_file_destroy_content_attrs(content_attrs); + } else { + debug_log("fail to mm_file_create_content_attrs - error(%x)", ret); + } + } else if (strncmp(mime_type, "audio", 5) == 0) { + int tag_ret = 0; + MMHandleType tag_attrs = 0; + + tag_ret = mm_file_create_tag_attrs(&tag_attrs, path); + + if (tag_ret == MM_ERROR_NONE && tag_attrs) { + char *error = NULL; + char *art_name = NULL; + int art_len = 0; + int art_size = 0; + + tag_ret = mm_file_get_attrs(tag_attrs, &error, + MM_FILE_TAG_ARTWORK, &art_name, &art_len, + MM_FILE_TAG_ARTWORK_SIZE, &art_size, NULL); + + if (tag_ret != MM_ERROR_NONE) { + if (error) { + debug_log("fail to mm_file_get_attrs() - ret(%x), error(%s)", tag_ret, error); + free(error); + } else { + debug_log("fail to mm_file_get_attrs() - ret(%x)", tag_ret); + } + } + + if (art_name) { + gchar *mm_path = NULL; + int fd = g_file_open_tmp(NULL, &mm_path, NULL); + + if (fd != -1) { + FILE *fp = fdopen(fd, "w"); + if (fp == NULL) { + debug_log("fail to fdopen()"); + close(fd); + } else { + int n = fwrite((unsigned char *)art_name, sizeof(char), art_size, fp); + if (n != art_size) { + debug_log("fail to fwrite()"); + fclose(fp); + close(fd); + } else { + fflush(fp); + fclose(fp); + close(fd); + } + } + } + + snprintf(thumb_path, sizeof(thumb_path), "%s", mm_path); + debug_log("file : %s, albumart_path : %s", path, thumb_path); + if (mm_path) + g_free(mm_path); + } + } + + mm_file_destroy_tag_attrs(tag_attrs); + } + + if (strlen(thumb_path) > 0) { + debug_log("thumbpath: %s", thumb_path); + elm_icon_file_set(icon, thumb_path, NULL); + } else { + if (default_icon_path) { + debug_log("thumbpath: %s", default_icon_path); + elm_icon_file_set(icon, default_icon_path, NULL); + } else { + elm_icon_file_set(icon, MYFILE_IMGE_PATH "/myfile_icon_etc.png", NULL); + evas_object_size_hint_min_set(icon, 30, 30); + } + } + } else { + elm_icon_file_set(icon, MYFILE_IMGE_PATH "/myfile_icon_etc.png", NULL); + evas_object_size_hint_min_set(icon, 30, 30); + } + + g_free(mime_type); + g_free(default_icon_path); + + return icon; +} + +static void _thumbnail_generated_cb(void *data, Ethumb *e, Eina_Bool success) +{ + debug_log(""); + + if (success) { + debug_log("Succeed in thumbnail generation"); + } else { + debug_log("Fail to create thumbnail"); + } +} + +void _create_notify(EmailViewerUGD *ug_data, char *header, char *content, + int btn_num, char *btn1_lb, popup_cb resp_cb1, + char *btn2_lb, popup_cb resp_cb2, popup_cb resp_block_cb) +{ + debug_log(""); + Evas_Object *notify = NULL; + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } + + notify = elm_popup_add(ug_data->win_main); + debug_log("notify: %p, win_main: %p", notify, ug_data->win_main); + if (!notify) { + debug_log("elm_popup_add returns NULL"); + return; + } + evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + ug_data->notify = notify; + + if (header) { + elm_object_part_text_set(notify, "title,text", header); + } + + if (content) { + elm_object_text_set(notify, content); + } + + if (btn_num == 0) { + elm_popup_timeout_set(notify, 2.0); + evas_object_smart_callback_add(notify, "block,clicked", resp_block_cb, ug_data); + } + + if (btn_num == 1) { + Evas_Object *btn1 = elm_button_add(notify); + elm_object_style_set(btn1, "popup_button/default"); + elm_object_text_set(btn1, btn1_lb); + elm_object_part_content_set(notify, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", resp_cb1, ug_data); + } + if (btn_num == 2) { + Evas_Object *btn1 = elm_button_add(notify); + elm_object_style_set(btn1, "popup_button/default"); + elm_object_text_set(btn1, btn1_lb); + elm_object_part_content_set(notify, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", resp_cb1, ug_data); + + Evas_Object *btn2 = elm_button_add(notify); + elm_object_style_set(btn2, "popup_button/default"); + elm_object_text_set(btn2, btn2_lb); + elm_object_part_content_set(notify, "button2", btn2); + evas_object_smart_callback_add(btn2, "clicked", resp_cb2, ug_data); + } + + evas_object_show(notify); +} + +int _find_folder_id_using_folder_type(EmailViewerUGD *ug_data, email_mailbox_type_e mailbox_type) +{ + debug_log(""); + if (ug_data->folder_list == NULL) { + return -1; + } + + int i = 0; + int cnt = g_list_length(ug_data->folder_list); + for (i = 0; i < cnt; i++) { + EmailMailboxNameAndAlias *nameandalias = (EmailMailboxNameAndAlias *) g_list_nth_data(ug_data->folder_list, i); + int folder_id = nameandalias->mailbox_id; + if (mailbox_type == nameandalias->mailbox_type) { + return folder_id; + } + } + + return -1; +} + +void _move_email(EmailViewerUGD *ug_data, int dest_folder_id, gboolean is_delete) +{ + debug_log(""); + + EmailViewerPrivate *priv = ug_data->email_data; + + if (!email_engine_move_mail(priv->account_id, dest_folder_id, priv->mail_id)) { + debug_log("Moving email is failed."); + + if (is_delete) + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + _("IDS_EMAIL_POP_FAILED_TO_DELETE"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + else + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + _("IDS_EMAIL_POP_FAILED_TO_MOVE"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + + } else { + debug_log("account_id: %d, moveto folder id: %d, mail_id: %d", priv->account_id, dest_folder_id, priv->mail_id); + char str[128] = { 0, }; + if (is_delete) + snprintf(str, sizeof(str), "%s", dgettext("sys_string", "IDS_COM_POP_DELETED")); + else + snprintf(str, sizeof(str), "%s", dgettext("sys_string", "IDS_COM_POP_MOVED")); + int ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + } +} + +void _delete_email(EmailViewerUGD *ug_data) +{ + debug_log(""); + + EmailViewerPrivate *priv = ug_data->email_data; + + int sync = EMAIL_DELETE_LOCAL_AND_SERVER; + if (ug_data->account_type == EMAIL_SERVER_TYPE_POP3) { + email_account_t *account_data = NULL; + if (email_engine_get_account_full_data(ug_data->account_id, &account_data)) { + debug_log("email_engine_get_account"); + if (account_data) { + account_user_data_t *user_data = (account_user_data_t*)account_data->user_data; + if (user_data != NULL) { + debug_log("pop3_deleting_option:%d", user_data->pop3_deleting_option); + if (user_data->pop3_deleting_option == 0) { + sync = EMAIL_DELETE_LOCALLY; + } else if (user_data->pop3_deleting_option == 1) { + sync = EMAIL_DELETE_LOCAL_AND_SERVER; + } + } + email_free_account(&account_data, 1); + account_data = NULL; + } + } + } + + if (!email_engine_delete_mail(priv->account_id, priv->mailbox_id, priv->mail_id, sync)) { + debug_log("Deleting email is failed."); + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + _("IDS_EMAIL_POP_FAILED_TO_DELETE"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + } else { + debug_log("account_id: %d, mailbox_id: %d, mail_id: %d", priv->account_id, priv->mailbox_id, priv->mail_id); + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", dgettext("sys_string", "IDS_COM_POP_DELETED")); + int ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + } +} + +void _notify_mailbox_size(EmailViewerUGD *ug_data, char *size) +{ + debug_log(""); + RETURN_IF_FAIL(ug_data != NULL); + RETURN_IF_FAIL(ug_data->ug != NULL); + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + /* Send mailbox resize notification to mailbox */ + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX_SIZE, size); + debug_log("service_add_extra_data: %d", ret); + + ug_send_result(ug_data->ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} +/* EOF */ diff --git a/viewer/src/email-viewer-webview.c b/viewer/src/email-viewer-webview.c new file mode 100755 index 0000000..cc9bd2d --- /dev/null +++ b/viewer/src/email-viewer-webview.c @@ -0,0 +1,384 @@ +/* + * 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. + */ + +#include "email-viewer-webview.h" +#include "email-viewer-js.h" + +#include "email-debug.h" +#include "email-engine.h" +#include "email-html-converter.h" + +static void _webview_script_executed_cb(Evas_Object *o, const char *result, void *data); +static void _webview_get_html_content_cb(Evas_Object *o, const char *result, void *data); +static void _webview_load_finished_cb(void *data, Evas_Object *obj, void *event_info); +static void _webview_load_error_cb(void *data, Evas_Object *obj, void *event_info); +static void _webview_load_committed_cb(void *data, Evas_Object *obj, void *event_info); +static void _webview_load_noemptylayout_finished_cb(void *data, Evas_Object *obj, void *event_info); +static void _webview_load_progress_cb(void *data, Evas_Object *obj, void *event_info); + +/* Double_Scroller */ +static void _webview_edge_top_cb(void *data, Evas_Object *obj, void *event_info); +static void _webview_edge_bottom_cb(void *data, Evas_Object *obj, void *event_info); +static void _webview_scroll_down_cb(void *data, Evas_Object *obj, void *event_info); +static void _webview_scroll_up_cb(void *data, Evas_Object *obj, void *event_info); +static int _send_read_report_mail(EmailViewerUGD *ug_data); + +extern EmailViewerUGD *_g_ug_data; +extern ui_gadget_h _g_mailbox_ug; + +Evas_Object *viewer_get_webview(EmailViewerUGD *ug_data, gboolean has_html) +{ + debug_log(""); + + Evas_Object *ewk_view = ewk_view_add(evas_object_evas_get(ug_data->win_main/*layout_main*/)); + ug_data->webview = ewk_view; + + Ewk_Setting *setting = ewk_view_setting_get(ewk_view); + + ewk_setting_auto_fitting_set(setting, EINA_FALSE); + ewk_setting_enable_text_zoom_set(setting, EINA_TRUE); + + if (ewk_setting_load_remote_images_set(setting, ug_data->b_show_remote_images) == EINA_FALSE) { + debug_log("SET remote images is FAILED!"); + } + + /* Double_Scroller */ + ewk_view_vertical_panning_hold_set(ug_data->webview, EINA_TRUE); + evas_object_smart_callback_add(ug_data->webview, "edge,top", _webview_edge_top_cb, ug_data); + evas_object_smart_callback_add(ug_data->webview, "edge,bottom", _webview_edge_bottom_cb, ug_data); + evas_object_smart_callback_add(ug_data->webview, "scroll,down", _webview_scroll_down_cb, ug_data); + evas_object_smart_callback_add(ug_data->webview, "scroll,up", _webview_scroll_up_cb, ug_data); + + /*evas_object_smart_callback_add(ug_data->webkit, "load,progress", _webview_progressed_cb, ug_data);*/ + evas_object_smart_callback_add(ug_data->webview, "load,committed", _webview_load_committed_cb, ug_data); + evas_object_smart_callback_add(ug_data->webview, "load,finished", _webview_load_finished_cb, ug_data); + evas_object_smart_callback_add(ug_data->webview, "load,nonemptylayout,finished", _webview_load_noemptylayout_finished_cb, ug_data); + evas_object_smart_callback_add(ug_data->webview, "load,progress", _webview_load_progress_cb, ug_data); + evas_object_smart_callback_add(ug_data->webview, "load,error", _webview_load_error_cb, ug_data); + + evas_object_show(ug_data->webview); + + return ug_data->webview; +} + +void viewer_set_webview_content(EmailViewerUGD *ug_data, int reload) +{ + debug_log(""); + + if (!ug_data) { + debug_log("ug_data is NULL"); + return; + } + + if (ug_data->webview_data == NULL) { + debug_log("webview_data is NULL"); + return; + } + + EmailViewerWebview *wvd = ug_data->webview_data; + + if (reload && (wvd->body_type == wvd->body_type_prev)) { + debug_log("reload current uri"); + ewk_view_reload(ug_data->webview); + return; + } + + char tmp_file_path[MAX_STR_LEN] = { 0, }; + char *tmp_file_name = NULL; + + /* set content */ + if (wvd->body_type == BODY_TYPE_HTML) { + if (wvd->uri == NULL) { + debug_log("invalid uri"); + return; + } + + snprintf(tmp_file_path, sizeof(tmp_file_path), "file://%s", wvd->uri); + debug_log("file://%s", wvd->uri); + + /* Fix for issue - Sometimes html content of previous mail is shown + * Set the default html page if file size is 0 */ + struct stat statbuf = { 0 }; + int status = lstat(wvd->uri, &statbuf); + if (!status) { + debug_log("Total file size: %d", (int)statbuf.st_size); + if ((int)statbuf.st_size == 0) { + debug_log("Set URI with default html"); + ewk_view_uri_set(ug_data->webview, EMAIL_DEFAULT_HTML); + return; + } + } + } else if (wvd->body_type == BODY_TYPE_TEXT) { + /* generate temporary html file for viewing */ + tmp_file_name = viewer_set_html_content_file(wvd); + + sprintf(tmp_file_path, "file://%s", tmp_file_name); + debug_log("file://%s", tmp_file_name); + } + + debug_log("default encoding:%s", ug_data->property->charset); + Ewk_Setting *setting = ewk_view_setting_get(ug_data->webview); + ewk_setting_default_encoding_set(setting, ug_data->property->charset); +// ewk_view_encoding_custom_set(ug_data->webview, ug_data->property->charset); + ewk_view_uri_set(ug_data->webview, tmp_file_path); +} + +char *viewer_set_html_content_file(EmailViewerWebview *wvd) +{ + debug_log(""); + + FILE *fp; + char *html; + char *tmp_file_name; + char *email_content = "\0"; + + tmp_file_name = EMAIL_TMP_FILE_PATH ".html"; + unlink(tmp_file_name); /*remove previous file*/ + + email_content = wvd->text_content; + html = email_html_converter(email_content, wvd->charset); + debug_log("html:%s", html); + fp = fopen(tmp_file_name, "w"); + if (fp != NULL) { + fputs(html, fp); + fclose(fp); + } + + if (html) + g_free(html); + + return tmp_file_name; +} + +void viewer_coords_ewk_to_evas(Evas_Object *view, int ewkX, int ewkY, int *evasX, int *evasY) +{ + int scrollX, scrollY, viewX, viewY; + ewk_view_scroll_pos_get(view, &scrollX, &scrollY); + evas_object_geometry_get(view, &viewX, &viewY, NULL, NULL); + + *evasX = ewkX - scrollX + viewX; + *evasY = ewkY - scrollY + viewY; +} + +void viewer_coords_evas_to_ewk(Evas_Object *view, int evasX, int evasY, int *ewkX, int *ewkY) +{ + debug_log("evasX:%d, evasY:%d", evasX, evasY); + int scrollX, scrollY, viewX, viewY; + ewk_view_scroll_pos_get(view, &scrollX, &scrollY); + evas_object_geometry_get(view, &viewX, &viewY, NULL, NULL); + debug_log("scrollX:%d, scrollY:%d, viewX:%d, viewY:%d", scrollX, scrollY, viewX, viewY); + + *ewkX = evasX + scrollX - viewX; + *ewkY = evasY + scrollY - viewY; +} + +Eina_Bool viewer_send_message(void *data) +{ + debug_log(""); + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->timer) { + ecore_timer_del(ug_data->timer); + ug_data->timer = NULL; + } + + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return EINA_FALSE; + } + + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MSG, EMAIL_BUNDLE_KEY_UNLOCK_LIST); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + + return EINA_FALSE; +} + +static void _webview_script_executed_cb(Evas_Object *o, const char *result, void *data) +{ + debug_log(""); +} + +static void _webview_get_html_content_cb(Evas_Object *o, const char *result, void *data) +{ + debug_log(""); + +// EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + +// ug_data->saved_html_content = g_strdup(result); +// debug_log("ug_data->saved_html_content => %s", ug_data->saved_html_content); +} + +static void _webview_load_finished_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (_g_ug_data == NULL) { + debug_log("_g_ug_data == NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + ug_data->b_load_finished = EINA_TRUE; + + /*_measure_webview_xy(ug_data);*/ + + if (ug_data->timer) { + ecore_timer_del(ug_data->timer); + ug_data->timer = NULL; + } + + ug_data->timer = ecore_timer_add(0.0, viewer_send_message, ug_data); + + if (ewk_view_script_execute(ug_data->webview, VIEWER_JS_INSERT_IM(VIEWER_JS_FILE_PATH), _webview_script_executed_cb, 0) == EINA_FALSE) + debug_log("VIEWER_JS_INSERT_IM(VIEWER_JS_FILE_PATH) failed."); +} + +static void _webview_load_error_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +static void _webview_load_committed_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +static void _webview_load_noemptylayout_finished_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +static void _webview_load_progress_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +/* Double_Scroller */ +static void _webview_edge_top_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (_g_ug_data == NULL) { + debug_log("_g_ug_data == NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->is_webview_scrolling) { + debug_log("main scroller start"); + ewk_view_vertical_panning_hold_set(ug_data->webview, EINA_TRUE); //stop + + if (elm_widget_scroll_freeze_get(ug_data->scroller) > 0) + elm_object_scroll_freeze_pop(ug_data->scroller); //restart + + /* WORKAROUND. To fix scrolling problem when screen is on the bottom of webview. (Do panning to top fast) */ + int x, y, w, h; + elm_scroller_region_get(ug_data->scroller, &x, &y, &w, &h); + debug_log("main_scroller(x:%d, y:%d, w:%d, h:%d)", x, y, w, h); + elm_scroller_region_bring_in(ug_data->scroller, x, 0, w, h); + + ug_data->is_main_scroller_scrolling = EINA_TRUE; + ug_data->is_webview_scrolling = EINA_FALSE; + } +} + +static void _webview_edge_bottom_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +static void _webview_scroll_down_cb(void *data, Evas_Object *obj, void *event_info) +{ +// debug_log(""); +} + +static void _webview_scroll_up_cb(void *data, Evas_Object *obj, void *event_info) +{ +// debug_log(""); +} + +static int _send_read_report_mail(EmailViewerUGD *ug_data) +{ + debug_log(""); + + int err = 0; + + email_account_t *account = NULL; + email_option_t option; + if (!email_engine_get_account_full_data(ug_data->account_id, &account)) { + debug_log("Failed email_engine_get_account_full_data"); + goto error; + } + + if (account) { + memcpy(&option, &(account->options), sizeof(email_option_t)); + } + + int output_receipt_mail_id = 0; + if ((err = email_add_read_receipt(ug_data->email_data->mail_id, &output_receipt_mail_id)) != EMAIL_ERROR_NONE) { + debug_log(" fail sending [%d]", err); + goto error; + } + debug_log("output_receipt_mail_id of saved email = %d", output_receipt_mail_id); + + unsigned handle = 0; + + if ((err = email_send_mail(output_receipt_mail_id, &option, &handle)) != EMAIL_ERROR_NONE) { + debug_log(" fail sending [%d]", err); + goto error; + } else { + debug_log(" finish sending"); + } + + error: + if (account) { + debug_log("[_send_read_report_mail] email_free_account is called"); + email_free_account(&account, 1); + account = NULL; + } + + return 1; +} + +#if 0 +static void _measure_webview_xy(EmailViewerUGD *ug_data) +{ + debug_log(""); + + int a, b, c, d; + evas_object_geometry_get(ug_data->navi_bar, &a, &b, &c, &d); + debug_log("navi_bar x[%d] y[%d] w[%d] h[%d]", a, b, c, d); + evas_object_geometry_get(ug_data->sub_ly, &a, &b, &c, &d); + debug_log("sub_ly x[%d] y[%d] w[%d] h[%d]", a, b, c, d); + evas_object_geometry_get(ug_data->ctr_bar, &a, &b, &c, &d); + debug_log("ctr_bar x[%d] y[%d] w[%d] h[%d]", a, b, c, d); + evas_object_geometry_get(ug_data->webview_bx, &a, &b, &c, &d); + debug_log("webview_bx x[%d] y[%d] w[%d] h[%d]", a, b, c, d); +} +#endif + +/* EOF */ diff --git a/viewer/src/email-viewer.c b/viewer/src/email-viewer.c new file mode 100755 index 0000000..36315b2 --- /dev/null +++ b/viewer/src/email-viewer.c @@ -0,0 +1,5801 @@ +/* + * 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 UG_MODULE_API +#define UG_MODULE_API __attribute__ ((visibility("default"))) +#endif + +/* Header Include */ +#include +#include +#include +#include +#include +#include + +#include "email-viewer.h" +#include "email-viewer-webview.h" +#include "email-viewer-utils.h" +#include "email-engine.h" +#include "email-utils.h" +#include "email-common-types.h" +#include "email-debug.h" + +#define EMAIL_VCONF_KEY_BLOCK_RULE_CHANGED "file/private/org.tizen.email/spam_rule_changed" + +/* Global Val */ +EmailViewerUGD *_g_ug_data = NULL; +E_DBus_Connection *_g_viewer_dbus_conn = NULL; +E_DBus_Signal_Handler *_g_viewer_signal_handler_network = NULL; +E_DBus_Signal_Handler *_g_viewer_signal_handler_storage = NULL; + +extern ui_gadget_h _g_mailbox_ug; +extern char *icu_locale; +extern enum appcore_time_format icu_timeformat; +extern void _set_mail_flags(EmailViewerProp *prop, EmailViewerPrivate *email_data); + +/* appcore */ +static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h data, void *priv); +static void on_start(ui_gadget_h ug, service_h data, void *priv); +static void on_pause(ui_gadget_h ug, service_h data, void *priv); +static void on_resume(ui_gadget_h ug, service_h data, void *priv); +static void on_destroy(ui_gadget_h ug, service_h data, void *pd); +static void on_message(ui_gadget_h ug, service_h msg, service_h data, void *priv); +static void on_event(ui_gadget_h ug, enum ug_event event, service_h data, void *priv); +static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h data, void *priv); + +/* ui-gadget */ +static void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv); +static void result_cb(ui_gadget_h ug, service_h result, void *priv); +static void destroy_cb(ui_gadget_h ug, void *priv); +static ui_gadget_h create_ug(char *ug_name, service_h bd, void *data); + +/* View related */ +static void _create_view(EmailViewerUGD *ug_data); +static void _reset_view(EmailViewerUGD *ug_data); + +static void _win_profile_changed_cb(void *data, Evas_Object *obj, void *event); + +static Evas_Object *_create_navigation_bar(EmailViewerUGD *ug_data); +static Evas_Object *_create_subject(EmailViewerUGD *ug_data); +static Evas_Object *_create_to_addrs(EmailViewerUGD *ug_data); +static Evas_Object *_create_cc_addrs(EmailViewerUGD *ug_data); +static Evas_Object *_create_bcc_addrs(EmailViewerUGD *ug_data); +static Evas_Object *_create_attach(EmailViewerUGD *ug_data); +static Evas_Object *_create_attach_ex(EmailViewerUGD *ug_data); +static Evas_Object *_create_body(EmailViewerUGD *ug_data); +static Evas_Object *_create_tab_bar(EmailViewerUGD *ug_data); +static Evas_Object *_update_tab_bar(EmailViewerUGD *ug_data); +static Evas_Object *_create_partial_body_dn_btn(EmailViewerUGD *ug_data); +static Evas_Object *_create_bg(Evas_Object *win); + +static void _create_down_progress(char *message, popup_cb resp_cb); +static void _create_down_progress_ex(int index, EMAIL_VIEWER_PROGRESSBAR_TYPE p_type); +static void _destroy_down_progress_ex(void *data, Evas_Object *obj, void *event_info); +static void _create_more_ctxpopup(EmailViewerUGD *ug_data); +static void _delete_evas_objects(EmailViewerUGD *ug_data); + +static void _launch_vcs_editor(EmailViewerUGD *ug_data); + +/* callback functions */ +static void _back_cb(void *data, Evas_Object *obj, void *event_info); +static void _prev_mail_cb(void *data, Evas_Object *obj, void *event_info); +static void _next_mail_cb(void *data, Evas_Object *obj, void *event_info); +static void _reply_cb(void *data, Evas_Object *obj, void *event_info); +static void _reply_all_cb(void *data, Evas_Object *obj, void *event_info); +static void _reply_option_cb(void *data, Evas_Object *obj, void *event_info); +static void _forward_cb(void *data, Evas_Object *obj, void *event_info); +static void _add_to_calendar_cb(void *data, Evas_Object *obj, void *event_info); +static void _resend_cb(void *data, Evas_Object *obj, void *event_info); +static void _delete_cb(void *data, Evas_Object *obj, void *event_info); +static void _move_cb(void *data, Evas_Object *obj, void *event_info); +static void _more_cb(void *data, Evas_Object *obj, void *event_info); +static void _body_down_cb(void *data, Evas_Object *obj, void *event_info); +static void _subject_favorite_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _subject_detail_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _attachment_item_collapse_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _attachment_save_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _attachment_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _attachment_save_all_cb(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _attachment_bg_set_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info); +static void _attachment_bg_unset_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info); +static void _mark_as_unread_cb(void *data, Evas_Object *obj, void *event_info); +static void _mark_as_read_cb(void *data, Evas_Object *obj, void *event_info); + +static void _ctxpopup_detail_contact_cb(void *data, Evas_Object *obj, void *event_info); +static void _ctxpopup_send_email_cb(void *data, Evas_Object *obj, void *event_info); +static void _ctxpopup_add_contact_cb(void *data, Evas_Object *obj, void *event_info); +static void _ctxpopup_cutlink_update_contact_cb(void *data, Evas_Object *obj, void *event_info); +static void _ctxpopup_select_contact_mode_email_cb(void *data, Evas_Object *obj, void *event_info); +static void _ctxpopup_add_block_rule_cb(void *data, Evas_Object *obj, void *event_info); +static void _popup_response_cb(void *data, Evas_Object *obj, void *event_info); +static void _popup_response_delete_ok_cb(void *data, Evas_Object *obj, void *event_info); +static void _popup_response_to_destroy_cb(void *data, Evas_Object *obj, void *event_info); + +static void _webview_multi_up_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info); +static void _webview_multi_down_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info); +static void _webview_policy_navigation_decide_cb(void *data, Evas_Object *obj, void *event_info); + +static void _outter_scroller_bottom_hit_cb(void *data, Evas_Object *obj, void *event_info); +static void _outter_scroller_top_hit_cb(void *data, Evas_Object *obj, void *event_info); +static void _outter_scroller_scroll_cb(void *data, Evas_Object *obj, void *event_info); + +static void _mbe_added_cb(void *data, Evas_Object *obj, void *event_info); +static void _mbe_selected_cb(void *data, Evas_Object *obj, void *event_info); +static void _destroy_down_progress_cb(void *data, Evas_Object *obj, void *event_info); + +/* Logic Functions */ +static void _init_viewer_data(int account_id, int mail_id, char *srv_mail_id, EmailViewerUGD *ug_data); +static int _init_webview_data(EmailViewerUGD *ug_data); +static Eina_Bool _check_body_download(void *data); +static int _update_attachment_info(EmailViewerUGD *ug_data, int index); +static int _get_attachment_info_index(EmailViewerUGD *ug_data, int index); +static void _show_select_info(EmailViewerUGD *ug_data, char *str); +static void _save_attachment(EmailViewerUGD *ug_data, int index); +static void _show_attachment(EmailViewerUGD *ug_data, int index); +static void _save_attachment_all(EmailViewerUGD *ug_data); +static void _dbus_receiver_setup(EmailViewerUGD *ug_data); +static void _dbus_receiver_remove(EmailViewerUGD *ug_data); +static void _on_edbus_event_email_viewer_receive(void *local_data, DBusMessage *message); + +static void _delete_contacts_list(EMAIL_CONTACT_LIST_INFO_S *contacts_list_item); +static void *_contact_search_by_email(EmailViewerUGD *ug_data, const char *search_word); +static void _set_value_down_progress(double val); +static void _set_value_down_progress_by_index(double val, int index); +static void _cancel_download_attachment(EmailViewerUGD *ug_data); + +/* Util Functions */ +static char *_get_service_fail_type(int type); +static Evas_Object *_load_edj(Evas_Object *parent, const char *file, const char *group); + +/* genlist cb */ +static Eina_Bool _gl_state_get(void *data, Evas_Object *obj, const char *part); +static void _gl_del(void *data, Evas_Object *obj); +static char *_gl_text_get(void *data, Evas_Object *obj, const char *part); +static Evas_Object *_gl_content_get(void *data, Evas_Object *obj, const char *part); +static void _gl_sel(void *data, Evas_Object *obj, void *event_info); +static char *_gl_sub_upper_text_get(void *data, Evas_Object *obj, const char *part); +static Evas_Object *_gl_sub_upper_icon_get(void *data, Evas_Object *obj, const char *part); +static void _gl_sub_upper_sel(void *data, Evas_Object *obj, void *event_info); +static void _move_here_cb(void *data, Evas_Object *obj, void *event_info); +static void _move_back_cb(void *data, Evas_Object *obj, void *event_info); +static void _move_back_cb2(void *data, Evas_Object *obj, void *event_info); + + +UG_MODULE_API int UG_MODULE_INIT(struct ug_module_ops *ops) +{ + debug_log(""); + + EmailViewerUGD *ug_data; + + if (!ops) + return -1; + + ug_data = calloc(1, sizeof(EmailViewerUGD)); + if (!ug_data) + return -1; + + _g_ug_data = ug_data; +// g_type_init(); + + ops->create = on_create; + ops->start = on_start; + ops->pause = on_pause; + ops->resume = on_resume; + ops->destroy = on_destroy; + ops->message = on_message; + ops->event = on_event; + ops->key_event = on_key_event; + ops->priv = ug_data; + ops->opt = UG_OPT_INDICATOR_ENABLE; + + return 0; +} + +UG_MODULE_API void UG_MODULE_EXIT(struct ug_module_ops *ops) +{ + debug_log(""); + EmailViewerUGD *ug_data; + + if (!ops) + return; + + ug_data = ops->priv; + if (ug_data) + free(ug_data); + + debug_log("~"); +} + +static void *on_create(ui_gadget_h ug, enum ug_mode mode, service_h data, void *priv) +{ + debug_log(""); + EmailViewerUGD *ug_data; + char *account_id = NULL; + char *mail_id = NULL; + char *mailbox_id = NULL; + char *binternal = NULL; + char *landscape = NULL; + + if (!ug || !priv) + return NULL; + + ug_data = priv; + ug_data->ug = ug; + + if (!data) { + debug_log("account_id and mail_id are required by arguments"); + ug_data->b_direct_destroy = 1; + ug_destroy_me(ug_data->ug); + _g_ug_data = NULL; + return NULL; + } + + /* email engine initialize */ + if (email_engine_initialize() == FALSE) { + debug_log("Failed to initialize email engine"); + ug_data->b_direct_destroy = 1; + ug_destroy_me(ug_data->ug); + _g_ug_data = NULL; + return NULL; + } + +/* Elm_Theme *theme = elm_theme_new(); + elm_theme_ref_set(theme, NULL); + ug_data->theme = theme; + elm_theme_extension_add(ug_data->theme, EV_THEME_PATH);*/ + + int ret; + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_ACCOUNT_ID, (char **)&account_id); + debug_log("service_get_extra_data: %d", ret); + debug_log("account_id:%s", account_id); + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_MAIL_ID, (char **)&mail_id); + debug_log("service_get_extra_data: %d", ret); + debug_log("mail_id:%s", mail_id); + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_MAILBOX, (char **)&mailbox_id); + debug_log("service_get_extra_data: %d", ret); + debug_log("mailbox:%s", mailbox_id); + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_INTERNAL, (char **)&binternal); + debug_log("service_get_extra_data: %d", ret); + debug_log("binternal:%s", binternal); + ret = service_get_extra_data(data, EMAIL_BUNDLE_KEY_FIRST_LANDSCAPE, (char **)&landscape); + debug_log("service_get_extra_data: %d", ret); + debug_log("landscape:%s", landscape); + + if (landscape) { + ug_data->isRotate = atoi(landscape); + debug_log("@@@@ Landscape = %d @@@@", ug_data->isRotate); + g_free(landscape); + } + + if (account_id) { + ug_data->account_id = atoi(account_id); + ug_data->folder_list = email_engine_get_ca_mailbox_list_using_glist(ug_data->account_id); + g_free(account_id); + } + + if (mail_id) { + ug_data->mail_id = atoi(mail_id); + g_free(mail_id); + } + + if (mailbox_id) { + g_free(ug_data->mailbox_name); + ug_data->mailbox_name = NULL; + ug_data->mailbox_id = atoi(mailbox_id); + g_free(mailbox_id); + + int err = 0; + email_mail_data_t *mail_data = NULL; + if ((err = email_get_mail_data(ug_data->mail_id, &mail_data)) != EMAIL_ERROR_NONE) { + debug_log("fail to get mail - err (%d)", err); + } + + if (mail_data == NULL) { + debug_log("mail_data is NULL"); + } + + ug_data->mailbox_name = g_strdup(mail_data->server_mailbox_name); + ug_data->mailbox_type = mail_data->mailbox_type; + debug_log("server_mailbox_name:%s", mail_data->server_mailbox_name); + debug_log("mailbox_name:%s", ug_data->mailbox_name); + debug_log("mailbox_type:%d", ug_data->mailbox_type); + + if (mail_data) { + debug_log("email_free_mail is called"); + email_free_mail_data(&(mail_data), 1); + mail_data = NULL; + } + } + + if (binternal) { + ug_data->b_internal = atoi(binternal); + if (ug_data->b_internal == 1) + debug_log("############Launched from email-mailbox###############"); + g_free(binternal); + } + + debug_log("account_id [%d], mail_id [%d], mailbox_id [%d], mailbox name [%s]", ug_data->account_id, ug_data->mail_id, ug_data->mailbox_id, ug_data->mailbox_name); + + if (ug_data->account_id <= 0 || ug_data->mail_id <= 0 || ug_data->mailbox_id <= 0) { + debug_log("Required bundle parameters are missing!"); + ug_data->timeout_popup = elm_popup_add(ug_get_window()); + evas_object_size_hint_weight_set(ug_data->timeout_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_popup_timeout_set(ug_data->timeout_popup, 2); + elm_object_text_set(ug_data->timeout_popup, _("IDS_EMAIL_POP_UNABLE_TO_OPEN_EMAIL_MESSAGE")); + elm_object_part_text_set(ug_data->timeout_popup, "title,text", _("IDS_EMAIL_POP_ALERT")); + evas_object_smart_callback_add(ug_data->timeout_popup, "block,clicked", _popup_response_to_destroy_cb, ug_data); + evas_object_smart_callback_add(ug_data->timeout_popup, "timeout", _popup_response_to_destroy_cb, ug_data); + evas_object_show(ug_data->timeout_popup); + + return elm_layout_add(ug_get_window()); + } + + ug_data->win_main = ug_get_window(); + + char *proxy_address = vconf_get_str(VCONFKEY_NETWORK_PROXY); + debug_log("network proxy: %s", proxy_address); + if (proxy_address && (g_strcmp0(proxy_address, "") != 0)) { + ewk_context_proxy_uri_set(ewk_context_default_get(), proxy_address); + } + + if (proxy_address) + free(proxy_address); + + int w, h; + ecore_x_window_size_get(ecore_x_window_root_first_get(), &w, &h); + debug_log("WINDOW W[%d] H[%d]", w, h); + ug_data->main_w = w; + ug_data->main_h = h; + + ug_data->scale_factor = elm_scale_get(); + debug_log("ELM Scale[%f]", ug_data->scale_factor); + + if (w == 480) { + ug_data->webview_width = 710.0; + ug_data->webview_height = 949.0; + ug_data->webview_width_landscape = 710.0; + ug_data->webview_height_landscape = 568.0; + ug_data->webview_margin = 633; + ug_data->webview_margin_landscape = 379; + } else if (w == 720) { + ug_data->webview_width = 710.0; + ug_data->webview_height = 1009.0; + ug_data->webview_width_landscape = 710.0; + ug_data->webview_height_landscape = 558.0; + ug_data->webview_margin = 1029; + ug_data->webview_margin_landscape = 558; + } else { + ug_data->webview_width = 710.0; + ug_data->webview_height = 949.0; + ug_data->webview_width_landscape = 710.0; + ug_data->webview_height_landscape = 568.0; + ug_data->webview_margin = 633; + ug_data->webview_margin_landscape = 379; + } + + ug_data->evas = evas_object_evas_get(ug_data->win_main); + + /* Double_Scroller */ + ug_data->b_noc = 1; + + email_account_t *account = NULL; + if (email_engine_get_account_full_data(ug_data->account_id, &account)) { + debug_log("email_engine_get_account"); + if (account) { + ug_data->account_type = account->incoming_server_type; + snprintf(ug_data->account_email_address, sizeof(ug_data->account_email_address), "%s", account->user_email_address); + + account_user_data_t *ud = (account_user_data_t*)account->user_data; + if (ud != NULL) { + debug_log("show_images is %d", ud->show_images); + ug_data->b_show_remote_images = ud->show_images; + } + email_free_account(&account, 1); + account = NULL; + } + } + + /* DBUS */ + _dbus_receiver_setup(ug_data); + + _init_viewer_data(ug_data->account_id, ug_data->mail_id, NULL, ug_data); + _create_view(ug_data); + + _check_body_download(ug_data); + + ug_data->base = ug_data->layout_main; + + ug_data->display_download_result = TRUE; + + return ug_data->base; +} + +static void on_start(ui_gadget_h ug, service_h data, void *priv) +{ + debug_log(""); +} + +static void on_pause(ui_gadget_h ug, service_h data, void *priv) +{ + debug_log(""); +} + +static void on_resume(ui_gadget_h ug, service_h data, void *priv) +{ + debug_log(""); +} + +static void on_destroy(ui_gadget_h ug, service_h data, void *pd) +{ + debug_log(""); + EmailViewerUGD *ug_data; + + if (!ug || !pd) + return; + + ug_data = pd; + + _g_ug_data = NULL; + + if (ug_data->b_direct_destroy) + return; + + /* stop engine */ + EmailViewerPrivate *priv = ug_data->email_data; + EmailViewerProp *prop = ug_data->property; + int i = 0; + int att_len = g_list_length(prop->attachments); + + if (priv->email_handle != 0) + email_engine_stop_working(ug_data->account_id, priv->email_handle); + + for (i = 0; i < att_len; i++) { + if (priv->download_all_email_handle[i] != 0) + email_engine_stop_working(ug_data->account_id, priv->download_all_email_handle[i]); + } + +/* if (ug_data->theme) { + elm_theme_extension_del(ug_data->theme, EV_THEME_PATH); + elm_theme_free(ug_data->theme); + ug_data->theme = NULL; + }*/ + + _delete_evas_objects(ug_data); + + debug_log("free webview_data"); + if (ug_data->webview_data) { + free(ug_data->webview_data); + ug_data->webview_data = NULL; + } + + debug_log("free address info list"); + email_free_address_info_list(&(priv->addrs_info_list)); + ug_data->from_list = NULL; + ug_data->to_list = NULL; + ug_data->cc_list = NULL; + ug_data->bcc_list = NULL; + + debug_log("free mail_info"); + if (ug_data->email_data->mail_info) { + email_free_mail_data(&(ug_data->email_data->mail_info), 1); + ug_data->email_data->mail_info = NULL; + } + + if (ug_data->email_data->attachment_info && ug_data->email_data->attachment_count > 0) { + email_free_attachment_data(&(ug_data->email_data->attachment_info), ug_data->email_data->attachment_count); + ug_data->email_data->attachment_info = NULL; + ug_data->email_data->attachment_count = 0; + } + + debug_log("free email_data"); + if (ug_data->email_data) { + free(ug_data->email_data); + ug_data->email_data = NULL; + } + + debug_log("free attachment"); + if (ug_data->property->attachments) { + int i = 0; + LIST_ITER_START(i, ug_data->property->attachments) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, ug_data->property->attachments); + if (info->name) + free(info->name); + if (info->path) + free(info->path); + free(info); + } + g_list_free(ug_data->property->attachments); + ug_data->property->attachments = NULL; + } + + debug_log("free property"); + if (ug_data->property) { + free(ug_data->property); + ug_data->property = NULL; + } + + email_engine_finalize(); + + _dbus_receiver_remove(NULL); + + int ret = e_dbus_shutdown(); + debug_log("ret: %d", ret); + debug_log("~"); + + ug_data->base = NULL; +} + +static void on_message(ui_gadget_h ug, service_h msg, service_h data, void *priv) +{ + debug_log(""); + + if (!ug || !priv) + return; + + debug_log("_g_ug_data - %p", _g_ug_data); + if (_g_ug_data != NULL) { + debug_log("Hide previous mail data"); + _hide_view(_g_ug_data); + } + + char *account_id = NULL; + char *mail_id = NULL; + char *mailbox_id = NULL; + char *binternal = NULL; + char *landscape = NULL; + + EmailViewerUGD *ug_data = (EmailViewerUGD *)priv; + _g_ug_data = ug_data; + + /* reset viewer */ + int ret; + ret = service_get_extra_data(msg, EMAIL_BUNDLE_KEY_ACCOUNT_ID, (char **)&account_id); + debug_log("service_get_extra_data: %d", ret); + debug_log("account_id:%s", account_id); + ret = service_get_extra_data(msg, EMAIL_BUNDLE_KEY_MAIL_ID, (char **)&mail_id); + debug_log("service_get_extra_data: %d", ret); + debug_log("mail_id:%s", mail_id); + ret = service_get_extra_data(msg, EMAIL_BUNDLE_KEY_MAILBOX, (char **)&mailbox_id); + debug_log("service_get_extra_data: %d", ret); + debug_log("mailbox:%s", mailbox_id); + ret = service_get_extra_data(msg, EMAIL_BUNDLE_KEY_INTERNAL, (char **)&binternal); + debug_log("service_get_extra_data: %d", ret); + debug_log("binternal:%s", binternal); + ret = service_get_extra_data(msg, EMAIL_BUNDLE_KEY_FIRST_LANDSCAPE, (char **)&landscape); + debug_log("service_get_extra_data: %d", ret); + debug_log("landscape:%s", landscape); + + if (landscape) { + ug_data->isRotate = atoi(landscape); + debug_log("@@@@ Landscape = %d @@@@", ug_data->isRotate); + g_free(landscape); + } + + if (account_id) { + ug_data->account_id = atoi(account_id); + ug_data->folder_list = email_engine_get_ca_mailbox_list_using_glist(ug_data->account_id); + g_free(account_id); + } + + if (mail_id) { + ug_data->mail_id = atoi(mail_id); + g_free(mail_id); + } + + if (mailbox_id) { + g_free(ug_data->mailbox_name); + ug_data->mailbox_name = NULL; + ug_data->mailbox_id = atoi(mailbox_id); + g_free(mailbox_id); + + int err = 0; + email_mail_data_t *mail_data = NULL; + if ((err = email_get_mail_data(ug_data->mail_id, &mail_data)) != EMAIL_ERROR_NONE) { + debug_log("fail to get mail - err (%d)", err); + } + + if (mail_data == NULL) { + debug_log("mail_data is NULL"); + } + + ug_data->mailbox_name = g_strdup(mail_data->server_mailbox_name); + ug_data->mailbox_type = mail_data->mailbox_type; + debug_log("server_mailbox_name:%s", mail_data->server_mailbox_name); + debug_log("mailbox_name:%s", ug_data->mailbox_name); + debug_log("mailbox_type:%d", ug_data->mailbox_type); + + if (mail_data) { + debug_log("email_free_mail is called"); + email_free_mail_data(&(mail_data), 1); + mail_data = NULL; + } + } + + if (binternal) { + ug_data->b_internal = atoi(binternal); + if (ug_data->b_internal == 1) + debug_log("############Launched from email-mailbox###############"); + g_free(binternal); + } + + debug_log("account_id [%d], mail_id [%d], mailbox_id[%d], mailbox name [%s]", ug_data->account_id, ug_data->mail_id, ug_data->mailbox_id, ug_data->mailbox_name); + + if (ug_data->account_id <= 0 || ug_data->mail_id <= 0 || ug_data->mailbox_id <= 0) { + debug_log("Required bundle parameters are missing!"); + _g_ug_data = NULL; + return; + } + + email_account_t *account = NULL; + if (email_engine_get_account_full_data(ug_data->account_id, &account)) { + debug_log("email_engine_get_account"); + if (account) { + ug_data->account_type = account->incoming_server_type; + snprintf(ug_data->account_email_address, sizeof(ug_data->account_email_address), "%s", account->user_email_address); + + account_user_data_t *ud = (account_user_data_t*)account->user_data; + if (ud != NULL) { + debug_log("show_images is %d", ud->show_images); + ug_data->b_show_remote_images = ud->show_images; + } + email_free_account(&account, 1); + account = NULL; + } + + Ewk_Setting *setting = ewk_view_setting_get(ug_data->webview); + + debug_log("b_show_remote_images is %d", ug_data->b_show_remote_images); + if (ewk_setting_load_remote_images_set(setting, ug_data->b_show_remote_images) == EINA_FALSE) { + debug_log("SET remote images is FAILED!"); + } + } + + _init_viewer_data(ug_data->account_id, ug_data->mail_id, NULL, ug_data); + + evas_object_show(ug_data->layout_main); + evas_object_raise(ug_data->layout_main); + + _reset_view(ug_data); + + ug_data->display_download_result = TRUE; +} + +static void on_event(ui_gadget_h ug, enum ug_event event, service_h data, void *priv) +{ + debug_log(""); + + if (!ug || !priv) + return; + + EmailViewerUGD *ug_data = (EmailViewerUGD *)priv; + EmailViewerProp *prop = ug_data->property; + char date_time[MAX_STR_LEN] = { 0, }; + char *formatted_date = NULL; + int ret = 0; + + debug_log("rotate event = %d", event); + + switch (event) { + case UG_EVENT_LOW_MEMORY: + break; + case UG_EVENT_LOW_BATTERY: + break; + case UG_EVENT_LANG_CHANGE: + break; + case UG_EVENT_ROTATE_PORTRAIT: + case UG_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN: + if (ug_data->b_internal && ug_data->isRotate == true) { + debug_log("In Full view - Showing navi bar"); + elm_naviframe_item_title_visible_set(ug_data->navi_main_it, EINA_TRUE); + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + if (ug_data->navi_move_it1) { + debug_log("move1"); + Evas_Object *move_back_btn = elm_button_add(ug_data->navi_bar); + elm_object_style_set(move_back_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(move_back_btn, "clicked", _move_back_cb, ug_data); + elm_object_item_part_content_set(ug_data->navi_move_it1, "prev_btn", move_back_btn); + elm_naviframe_item_title_visible_set(ug_data->navi_move_it1, EINA_TRUE); + if (ug_data->move_cbar) { + elm_object_item_part_content_unset(ug_data->navi_move_it1, "controlbar"); + evas_object_del(ug_data->move_cbar); + ug_data->move_cbar = NULL; + } + } + if (ug_data->navi_move_it2) { + debug_log("move2"); + Evas_Object *move_back_btn = elm_button_add(ug_data->navi_bar); + elm_object_style_set(move_back_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(move_back_btn, "clicked", _move_back_cb2, ug_data); + elm_object_item_part_content_set(ug_data->navi_move_it2, "prev_btn", move_back_btn); + elm_naviframe_item_title_visible_set(ug_data->navi_move_it2, EINA_TRUE); + } + + if (ug_data->b_btn) { + evas_object_smart_callback_del(ug_data->b_btn, "clicked", _back_cb); + evas_object_del(ug_data->b_btn); + ug_data->b_btn = NULL; + } + + ug_data->b_btn = elm_button_add(ug_data->navi_bar); + elm_object_style_set(ug_data->b_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(ug_data->b_btn, "clicked", _back_cb, ug_data); + elm_object_item_part_content_set(ug_data->navi_main_it, "prev_btn", ug_data->b_btn); + + int resized_w = ug_data->webview_width * ug_data->scale_factor; + int resized_h = ug_data->webview_height * ug_data->scale_factor; + evas_object_size_hint_min_set(ug_data->webview, resized_w, resized_h); + + ug_data->isRotate = false; + } + + break; + + case UG_EVENT_ROTATE_LANDSCAPE: + case UG_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN: + if (ug_data->b_internal && ug_data->isRotate == false) { + debug_log("In Split view - Hiding navi bar"); + elm_naviframe_item_title_visible_set(ug_data->navi_main_it, EINA_FALSE); + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + if (ug_data->navi_move_it1) { + debug_log("move1"); + ug_data->move_cbar = elm_toolbar_add(ug_data->navi_bar); + elm_toolbar_shrink_mode_set(ug_data->move_cbar, ELM_TOOLBAR_SHRINK_EXPAND); + elm_object_style_set(ug_data->move_cbar, "naviframe"); + evas_object_show(ug_data->move_cbar); + + elm_object_item_disabled_set(elm_toolbar_item_append(ug_data->move_cbar, NULL, "", NULL, NULL), EINA_TRUE); + elm_toolbar_item_append(ug_data->move_cbar, NULL, dgettext("sys_string", "IDS_COM_SK_CANCEL"), _move_back_cb, ug_data); + elm_object_item_part_content_set(ug_data->navi_move_it1, "controlbar", ug_data->move_cbar); + + Evas_Object *move_back_btn = elm_object_item_part_content_get(ug_data->navi_move_it1, "prev_btn"); + if (move_back_btn) { + evas_object_smart_callback_del(move_back_btn, "clicked", _move_back_cb); + evas_object_del(move_back_btn); + elm_object_item_part_content_set(ug_data->navi_move_it1, "prev_btn", NULL); + } + elm_naviframe_item_title_visible_set(ug_data->navi_move_it1, EINA_FALSE); + } + if (ug_data->navi_move_it2) { + debug_log("move2"); + Evas_Object *move_back_btn = elm_object_item_part_content_get(ug_data->navi_move_it2, "prev_btn"); + if (move_back_btn) { + evas_object_smart_callback_del(move_back_btn, "clicked", _move_back_cb2); + evas_object_del(move_back_btn); + elm_object_item_part_content_set(ug_data->navi_move_it2, "prev_btn", NULL); + } + elm_naviframe_item_title_visible_set(ug_data->navi_move_it2, EINA_FALSE); + } + + if (ug_data->b_btn) { + evas_object_smart_callback_del(ug_data->b_btn, "clicked", _back_cb); + evas_object_del(ug_data->b_btn); + ug_data->b_btn = NULL; + elm_object_item_part_content_set(ug_data->navi_main_it, "prev_btn", NULL); + } + + int resized_w = ug_data->webview_width_landscape * ug_data->scale_factor; + int resized_h = ug_data->webview_height_landscape * ug_data->scale_factor; + evas_object_size_hint_min_set(ug_data->webview, resized_w, resized_h); + + ug_data->isRotate = true; + } + + break; + + case UG_EVENT_REGION_CHANGE: + appcore_get_timeformat(&icu_timeformat); + /* ICU API to set default locale */ + if (icu_timeformat == APPCORE_TIME_FORMAT_12) + formatted_date = email_get_date_text(icu_locale, "yMdhms", &(prop->mktime)); + else + formatted_date = email_get_date_text(icu_locale, "yMdHms", &(prop->mktime)); + ret = snprintf(date_time, MAX_STR_LEN, "%s", formatted_date); + + free(formatted_date); + formatted_date = NULL; + + edje_object_part_text_set(_EDJ(ug_data->ly_subject), "elm.text.sub", date_time); + evas_object_show(ug_data->ly_subject); + break; + + default: + break; + } +} + +static void on_key_event(ui_gadget_h ug, enum ug_key_event event, service_h data, void *priv) +{ + debug_log(""); + + if (!ug) + return; + + EmailViewerUGD *ug_data = (EmailViewerUGD *)priv; + EmailViewerPrivate *private = ug_data->email_data; + EmailViewerProp *prop = ug_data->property; + + switch (event) { + case UG_KEY_EVENT_END: + if (_g_ug_data) { + if (ug_data->notify != NULL || ug_data->pb_notify != NULL || ug_data->timeout_popup != NULL) { + if (ug_data->timeout_popup) { + evas_object_del(ug_data->timeout_popup); + ug_data->timeout_popup = NULL; + } + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } + + if (ug_data->pb_notify) { + int i = 0; + int att_len = g_list_length(prop->attachments); + + evas_object_del(ug_data->pb_notify); + ug_data->pb_notify = NULL; + + if (private->email_handle != 0) + email_engine_stop_working(ug_data->account_id, private->email_handle); + + for (i = 0; i < att_len; i++) { + if (private->download_all_email_handle[i] != 0) + email_engine_stop_working(ug_data->account_id, private->download_all_email_handle[i]); + } + } + + if (ug_data->pb_notify_lb) { + evas_object_del(ug_data->pb_notify_lb); + ug_data->pb_notify_lb = NULL; + } + } else { + if (ug_data->isRotate == false && ug_data->b_internal) { + /* Viewer to hide, so set left content (mailbox) size to full */ + _notify_mailbox_size(ug_data, "MAILBOX_RESIZE_FULL"); + } + + if (ug_data->b_internal) + _hide_view(ug_data); + else + ug_destroy_me(ug_data->ug); + } + } else { + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MSG, EMAIL_BUNDLE_VAL_END_KEY); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } + break; + + default: + break; + } +} + +static void layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv) +{ + debug_log(""); + Evas_Object *base, *win; + + if (!ug || !priv) + return; + + base = ug_get_layout(ug); + if (!base) + return; + + win = ug_get_window(); + + switch (mode) { + case UG_MODE_FULLVIEW: + evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(win, base); + evas_object_show(base); + break; + default: + break; + } +} + +static void result_cb(ui_gadget_h ug, service_h result, void *priv) +{ + debug_log(""); + + if (!ug || !priv) + return; + + EmailViewerUGD *ug_data = (EmailViewerUGD *)priv; + EmailViewerProp *prop = ug_data->property; + EmailViewerPrivate *private = ug_data->email_data; + + if (ug == ug_data->ug_composer) { + char *cmd = NULL; + int ret = service_get_extra_data(result, EMAIL_BUNDLE_KEY_SAVE_ALL, (char **)&cmd); + debug_log("service_get_extra_data: %d", ret); + debug_log("return of bundle_get_val for save all(%s)", cmd); + if (cmd) { + debug_log("save all from composer(%s)", cmd); + + if (prop->real_att_len == 1) { + private->b_all_att_save = TRUE; + _save_attachment(ug_data, 0); + } else if (prop->real_att_len > 1) { + _save_attachment_all(ug_data); + } + g_free(cmd); + return; + } + + ret = service_get_extra_data(result, EMAIL_BUNDLE_KEY_CANCEL_ALL, (char **)&cmd); + debug_log("service_get_extra_data: %d", ret); + debug_log("return of bundle_get_val for cancel all(%s)", cmd); + if (cmd) { + debug_log("cancel all attachment from composer(%s)", cmd); + + _cancel_download_attachment(ug_data); + g_free(cmd); + return; + } + } +} + +static void destroy_cb(ui_gadget_h ug, void *priv) +{ + debug_log(""); + if (!ug || !priv) + return; + + EmailViewerUGD *ug_data = (EmailViewerUGD *)priv; + EmailViewerProp *prop = ug_data->property; + ug_data->display_download_result = TRUE; + + if (ug == ug_data->ug_composer) { + ug_data->ug_composer = NULL; + } + + ug_destroy(ug); + + if (ug_data->b_contact_ug_launched) { + debug_log("change navibar title label"); + EMAIL_CONTACT_LIST_INFO_S *contact_list_item = NULL; + contact_list_item = (EMAIL_CONTACT_LIST_INFO_S *)_contact_search_by_email(ug_data, prop->sender); + + if (contact_list_item) { + elm_object_item_text_set(ug_data->navi_main_it, contact_list_item->display_name); + _delete_contacts_list(contact_list_item); + } else { + elm_object_item_text_set(ug_data->navi_main_it, prop->sender_display_name); + } + + ug_data->b_contact_ug_launched = FALSE; + } +} + +static ui_gadget_h create_ug(char *ug_name, service_h bd, void *data) +{ + debug_log(""); + ui_gadget_h ug; + struct ug_cbs cbs = { 0, }; + + cbs.layout_cb = layout_cb; + cbs.result_cb = result_cb; + cbs.destroy_cb = destroy_cb; + cbs.priv = data; + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + ug = ug_create(ug_data->ug, ug_name, UG_MODE_FULLVIEW, bd, &cbs); + + return ug; +} + +static void _create_view(EmailViewerUGD *ug_data) +{ + debug_log(""); + + Evas_Object *b_btn; + Evas_Object *prev_btn; + Evas_Object *next_btn; + EmailViewerProp *prop = ug_data->property; + + ug_data->bg = _create_bg(ug_data->win_main); + + /* create layout */ + ug_data->layout_main = elm_layout_add(ug_data->win_main); + + if (ug_data->b_internal) + elm_layout_theme_set(ug_data->layout_main, "layout", "application", "noindicator"); + else + elm_layout_theme_set(ug_data->layout_main, "layout", "application", "default"); + evas_object_size_hint_weight_set(ug_data->layout_main, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(ug_data->layout_main); + + elm_object_part_content_set(ug_data->layout_main, "elm.swallow.bg", ug_data->bg); + + /* indicator */ + elm_win_indicator_mode_set(ug_data->win_main, ELM_WIN_INDICATOR_SHOW); + + evas_object_smart_callback_add(ug_data->win_main, "profile,changed", _win_profile_changed_cb, ug_data); + + /* navigation Bar */ + _create_navigation_bar(ug_data); + + /* push navigation bar */ + ug_data->sub_ly = elm_layout_add(ug_data->navi_bar); + elm_layout_theme_set(ug_data->sub_ly, "layout", "application", "noindicator"); + evas_object_size_hint_weight_set(ug_data->sub_ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(ug_data->sub_ly); + + /* back button */ + b_btn = elm_button_add(ug_data->navi_bar); + elm_object_style_set(b_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(b_btn, "clicked", _back_cb, ug_data); + ug_data->b_btn = b_btn; + + ug_data->navi_main_it = elm_naviframe_item_push(ug_data->navi_bar, prop->sender_display_name, b_btn, NULL, ug_data->sub_ly, NULL); + + if (ug_data->b_internal) { + /* Left : previous button */ + prev_btn = elm_button_add(ug_data->navi_bar); + Evas_Object *prev_ic = elm_icon_add(prev_btn); + elm_icon_file_set(prev_ic, IMGDIR "/M02_icon_previous.png", NULL); + elm_object_style_set(prev_btn, "naviframe/title/default"); + evas_object_size_hint_aspect_set(prev_ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(prev_ic, 0.8, 0.8); + elm_object_part_content_set(prev_btn, "icon", prev_ic); + elm_object_item_part_content_set(ug_data->navi_main_it, "title_left_btn", prev_btn); + evas_object_smart_callback_add(prev_btn, "clicked", _prev_mail_cb, ug_data); + ug_data->prev_btn = prev_btn; + + /* Right : next button */ + next_btn = elm_button_add(ug_data->navi_bar); + Evas_Object *next_ic = elm_icon_add(next_btn); + elm_icon_file_set(next_ic, IMGDIR "/M02_icon_next.png", NULL); + elm_object_style_set(next_btn, "naviframe/title/default"); + evas_object_size_hint_aspect_set(next_ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(next_ic, 0.8, 0.8); + elm_object_part_content_set(next_btn, "icon", next_ic); + elm_object_item_part_content_set(ug_data->navi_main_it, "title_right_btn", next_btn); + evas_object_smart_callback_add(next_btn, "clicked", _next_mail_cb, ug_data); + ug_data->next_btn = next_btn; + } + + /* create scroller */ + ug_data->scroller = elm_scroller_add(ug_data->navi_bar); + evas_object_propagate_events_set(ug_data->scroller, EINA_FALSE); + elm_scroller_bounce_set(ug_data->scroller, EINA_FALSE, EINA_TRUE); + elm_scroller_policy_set(ug_data->scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF); + evas_object_show(ug_data->scroller); + evas_object_smart_callback_add(ug_data->scroller, "edge,bottom", _outter_scroller_bottom_hit_cb, ug_data); + evas_object_smart_callback_add(ug_data->scroller, "edge,top", _outter_scroller_top_hit_cb, ug_data); + evas_object_smart_callback_add(ug_data->scroller, "scroll,drag,start", _outter_scroller_scroll_cb, ug_data); + + /* create conformant */ + elm_win_conformant_set(ug_data->win_main, EINA_TRUE); + ug_data->conformant = elm_conformant_add(ug_data->sub_ly); + elm_object_style_set(ug_data->conformant, "internal_layout"); + evas_object_size_hint_weight_set(ug_data->conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(ug_data->conformant, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_content_set(ug_data->conformant, ug_data->scroller); + elm_object_part_content_set(ug_data->sub_ly, "elm.swallow.content", ug_data->conformant); + evas_object_show(ug_data->conformant); + + if (ug_data->from_list != NULL) { + email_address_info_t *addrs_info = NULL; + int n_from_list = g_list_length(ug_data->from_list); + debug_log("from list count [%d]", n_from_list); + + if (n_from_list > 0) { + addrs_info = (email_address_info_t *) g_list_nth_data(ug_data->from_list, 0); + debug_log("From Address:%s", addrs_info->address); + debug_log("Display Name:%s", addrs_info->display_name); + debug_log("Storage Type:%d", addrs_info->storage_type); + debug_log("Contact ID:%d", addrs_info->contact_id); + debug_log(""); + g_free(prop->sender_display_name); + prop->sender_display_name = g_strdup(addrs_info->display_name); + g_free(prop->sender); + prop->sender = g_strdup(addrs_info->address); + + if (addrs_info->display_name && strlen(addrs_info->display_name) > 0) + elm_object_item_text_set(ug_data->navi_main_it, addrs_info->display_name); + else + elm_object_item_text_set(ug_data->navi_main_it, addrs_info->address); + } + } + + /* create main box */ + ug_data->main_bx = elm_box_add(ug_data->navi_bar); + evas_object_size_hint_weight_set(ug_data->main_bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(ug_data->main_bx, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(ug_data->main_bx); + elm_object_content_set(ug_data->scroller, ug_data->main_bx); + + if (ug_data->property->has_attachment) + ug_data->got_att = 1; + else + ug_data->got_att = 0; + + /* packing subject, addrs, attachment */ + _create_subject(ug_data); + + if (ug_data->got_att) { + _create_attach(ug_data); + } + + if (ug_data->isRotate == true) { + debug_log("In Split view - Hiding navi bar"); + elm_naviframe_item_title_visible_set(ug_data->navi_main_it, EINA_FALSE); + + if (ug_data->b_btn) { + + debug_log("hiding back button"); + + evas_object_smart_callback_del(ug_data->b_btn, "clicked", _back_cb); + evas_object_del(ug_data->b_btn); + ug_data->b_btn = NULL; + + elm_object_item_part_content_set(ug_data->navi_main_it, "prev_btn", NULL); + } + } +} + +static void _reset_view(EmailViewerUGD *ug_data) +{ + debug_log(""); + EmailViewerProp *prop = ug_data->property; + int ret; + char date_time[MAX_STR_LEN] = { 0, }; + + debug_log("@@@@@@@@@@ isRotate = %d", ug_data->isRotate); + if (ug_data->isRotate == true) { + debug_log("In Split view - Hiding navi bar"); + elm_naviframe_item_title_visible_set(ug_data->navi_main_it, EINA_FALSE); + + if (ug_data->b_btn) { + + debug_log("hiding back button"); + + evas_object_smart_callback_del(ug_data->b_btn, "clicked", _back_cb); + evas_object_del(ug_data->b_btn); + ug_data->b_btn = NULL; + + elm_object_item_part_content_set(ug_data->navi_main_it, "prev_btn", NULL); + } + + /* Set scroller to start - height made 480 to consider viewer in split view */ + elm_scroller_region_show(ug_data->scroller, 0, 0, (int)((double)ug_data->main_h * 0.6), ug_data->main_w); + } else { + debug_log("In Full view - Showing navi bar"); + elm_naviframe_item_title_visible_set(ug_data->navi_main_it, EINA_TRUE); + + if (ug_data->b_btn) { + + evas_object_smart_callback_del(ug_data->b_btn, "clicked", _back_cb); + evas_object_del(ug_data->b_btn); + ug_data->b_btn = NULL; + } + + debug_log("showing back button"); + + ug_data->b_btn = elm_button_add(ug_data->navi_bar); + elm_object_style_set(ug_data->b_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(ug_data->b_btn, "clicked", _back_cb, ug_data); + + elm_object_item_part_content_set(ug_data->navi_main_it, "prev_btn", ug_data->b_btn); + + /* Set scroller to start */ + elm_scroller_region_show(ug_data->scroller, 0, 0, ug_data->main_w, ug_data->main_h); + } + + if (ug_data->from_list != NULL) { + email_address_info_t *addrs_info = NULL; + int n_from_list = g_list_length(ug_data->from_list); + debug_log("from list count [%d]", n_from_list); + + if (n_from_list > 0) { + addrs_info = (email_address_info_t *) g_list_nth_data(ug_data->from_list, 0); + if (addrs_info) { + debug_log("From Address:%s", addrs_info->address); + debug_log("Display Name:%s", addrs_info->display_name); + debug_log("Storage Type:%d", addrs_info->storage_type); + debug_log("Contact ID:%d", addrs_info->contact_id); + g_free(prop->sender_display_name); + prop->sender_display_name = g_strdup(addrs_info->display_name); + g_free(prop->sender); + prop->sender = g_strdup(addrs_info->address); + + if (addrs_info->display_name && strlen(addrs_info->display_name) > 0) + elm_object_item_text_set(ug_data->navi_main_it, addrs_info->display_name); + else + elm_object_item_text_set(ug_data->navi_main_it, addrs_info->address); + } + } + } else { + elm_object_item_text_set(ug_data->navi_main_it, prop->sender_display_name); + } + + /* reset subject */ + char *_subject = elm_entry_utf8_to_markup(prop->subject); + char *_subject_concated = g_strconcat("", _subject, "", NULL); + elm_object_text_set(ug_data->lb_subject, _subject_concated); + elm_label_wrap_width_set(ug_data->lb_subject, ug_data->main_w - (int)(110 * ug_data->scale_factor)); + elm_label_line_wrap_set(ug_data->lb_subject, ELM_WRAP_WORD); + g_free(_subject); + g_free(_subject_concated); + + /* reset date & time */ + char *formatted_date = NULL; + + if (icu_timeformat == APPCORE_TIME_FORMAT_12) + formatted_date = email_get_date_text(icu_locale, "yMdhms", &(prop->mktime)); + else + formatted_date = email_get_date_text(icu_locale, "yMdHms", &(prop->mktime)); + ret = snprintf(date_time, MAX_STR_LEN, "%s", formatted_date); + + free(formatted_date); + formatted_date = NULL; + + elm_object_part_text_set(ug_data->ly_subject, "elm.text.sub", date_time); + + Evas_Object *favorite_icon = elm_icon_add(ug_data->ly_subject); + switch(prop->favorite) + { + case EMAIL_FLAG_NONE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_icon_favorite_off.png", NULL); + break; + case EMAIL_FLAG_FLAGED: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_icon_favorite_on.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_CLEAR: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Clear.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_ACTIVE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Active.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_COMPLETE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Complete.png", NULL); + break; + } + evas_object_size_hint_aspect_set(favorite_icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(favorite_icon, 1, 1); + evas_object_del(elm_object_part_content_unset(ug_data->ly_subject, "elm.icon.favorite")); + elm_object_part_content_set(ug_data->ly_subject, "elm.icon.favorite", favorite_icon); + evas_object_show(favorite_icon); + + evas_object_show(ug_data->ly_subject); + elm_box_pack_end(ug_data->main_bx, ug_data->ly_subject); + + if (prop->has_attachment) + ug_data->got_att = 1; + else + ug_data->got_att = 0; + + /* pack attachment if it exist */ + if (ug_data->got_att) { + _create_attach(ug_data); + } + + /* check body downloaded */ + _check_body_download(ug_data); +} + +void _hide_view(EmailViewerUGD *ug_data) +{ + debug_log(""); + EmailViewerProp *prop = ug_data->property; + EmailViewerPrivate *priv = ug_data->email_data; + + debug_log("Cancelling all attachment downloads"); + _cancel_download_attachment(ug_data); + + ug_data->display_download_result = FALSE; + _g_ug_data = NULL; + + if (elm_naviframe_top_item_get(ug_data->navi_bar) != ug_data->navi_main_it) { + ug_data->navi_move_it1 = NULL; + ug_data->navi_move_it2 = NULL; + elm_naviframe_item_pop_to(ug_data->navi_main_it); + } + + evas_object_hide(ug_data->layout_main); + elm_box_unpack_all(ug_data->main_bx); + elm_object_scroll_freeze_pop(ug_data->scroller); + + evas_object_hide(ug_data->ly_subject); + evas_object_hide(ug_data->lb_subject); + evas_object_hide(ug_data->webview_bx); + evas_object_hide(ug_data->webview); + + if (ug_data->partial_dn_btn) { + evas_object_del(ug_data->partial_dn_btn); + ug_data->partial_dn_btn = NULL; + } + + if (ug_data->partial_dn_btn_bx) { + evas_object_del(ug_data->partial_dn_btn_bx); + ug_data->partial_dn_btn_bx = NULL; + } + + if (ug_data->ctr_bar) { + elm_object_item_part_content_unset(ug_data->navi_main_it, "controlbar"); + evas_object_del(ug_data->ctr_bar); + ug_data->ctr_bar = NULL; + + ug_data->reply_ctr_it = NULL; + ug_data->replyall_ctr_it = NULL; + ug_data->forward_ctr_it = NULL; + ug_data->calendar_ctr_it = NULL; + ug_data->resend_ctr_it = NULL; + ug_data->move_ctr_it = NULL; + ug_data->del_ctr_it = NULL; + } + + if (ug_data->to_ly) { + evas_object_del(ug_data->to_ly); + ug_data->to_ly = NULL; + } + + if (ug_data->cc_ly) { + evas_object_del(ug_data->cc_ly); + ug_data->cc_ly = NULL; + } + + if (ug_data->bcc_ly) { + evas_object_del(ug_data->bcc_ly); + ug_data->bcc_ly = NULL; + } + + if (ug_data->got_att) { + int i; + + evas_object_del(ug_data->attach_hd_bk); + ug_data->attach_hd_ly = NULL; + ug_data->attach_hd_bk = NULL; + + if (prop->real_att_len > 1) { + for (i = 0; i < prop->real_att_len; i++) { + if (ug_data->attach_ex_ly != NULL) { + if (ug_data->attach_ex_ly[i] != NULL) { + debug_log("index %d", i); + evas_object_del(ug_data->attach_ex_bk[i]); + ug_data->attach_ex_ly[i] = NULL; + ug_data->attach_ex_bk[i] = NULL; + } + } + } + + if (ug_data->attach_ex_ly != NULL) { + free(ug_data->attach_ex_ly); + ug_data->attach_ex_ly = NULL; + ug_data->attach_ex_bk = NULL; + } + } + + for (i = 0; i <= prop->att_len; i++) { + if (ug_data->progress_bar_ly[i] != NULL) { + evas_object_del(ug_data->progress_bar_ly[i]); + ug_data->progress_bar_ly[i] = NULL; + ug_data->progress_bar[i] = NULL; + } + } + } + + if (ug_data->con_popup != NULL) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + if (ug_data->notify != NULL) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } + + edje_object_signal_emit(_EDJ(ug_data->ly_subject), "elm,state,contracted", "elm"); + + evas_object_hide(ug_data->noc_bx); + evas_object_hide(ug_data->dn_btn); + + ewk_view_uri_set(ug_data->webview, EMAIL_DEFAULT_HTML); + + debug_log("free address info list"); + email_free_address_info_list(&(priv->addrs_info_list)); + ug_data->from_list = NULL; + ug_data->to_list = NULL; + ug_data->cc_list = NULL; + ug_data->bcc_list = NULL; + + ug_data->got_att = 0; + ug_data->subject_onoff_flag = 0; + ug_data->attach_onoff_flag = 0; + ug_data->b_partial_body = 0; + ug_data->b_internal = 0; + ug_data->scroller_locked = 0; + ug_data->m_is_multi_touch = 0; + + ug_data->navi_move_it1 = NULL; + ug_data->navi_move_it2 = NULL; + + /* Double_Scroller */ + ug_data->b_noc = 1; + ug_data->b_load_finished = EINA_FALSE; + ug_data->b_show_remote_images = EINA_FALSE; + ug_data->is_webview_scrolling = EINA_FALSE; + ug_data->is_main_scroller_scrolling = EINA_FALSE; +} + +static void _win_profile_changed_cb(void *data, Evas_Object *obj, void *event) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + const char *profile = elm_config_profile_get(); + if (!g_strcmp0(profile, "desktop")) + elm_layout_theme_set(ug_data->layout_main, "layout", "application", "noindicator"); + else + elm_layout_theme_set(ug_data->layout_main, "layout", "application", "default"); + + evas_object_size_hint_weight_set(ug_data->layout_main, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(ug_data->win_main, ug_data->layout_main); + evas_object_show(ug_data->layout_main); +} + +static Evas_Object *_create_navigation_bar(EmailViewerUGD *ug_data) +{ + debug_log(""); + Evas_Object *navi_bar; + + navi_bar = elm_naviframe_add(ug_data->layout_main); + if (navi_bar == NULL) { + debug_log("navi_bar == NULL"); + return NULL; + } + + elm_object_part_content_set(ug_data->layout_main, "elm.swallow.content", navi_bar); + evas_object_show(navi_bar); + + ug_data->navi_bar = navi_bar; + return navi_bar; +} + +static Evas_Object *_create_subject(EmailViewerUGD *ug_data) +{ + debug_log(""); + EmailViewerProp *prop = ug_data->property; + int ret; + char date_time[MAX_STR_LEN] = { 0, }; + + /* append subject */ + Evas_Object *di = elm_layout_add(ug_data->navi_bar); + elm_layout_file_set(di, EV_THEME_PATH, "layout.email.detail_subject"); + evas_object_size_hint_align_set(di, EVAS_HINT_FILL, 0.0); + + Evas_Object *subject_label; + subject_label = elm_label_add(di); + elm_object_part_content_set(di, "elm.text", subject_label); + char *subject = elm_entry_utf8_to_markup(prop->subject); + char *subject_tagged = g_strconcat("", subject, "", NULL); + elm_object_text_set(subject_label, subject_tagged); + elm_label_wrap_width_set(subject_label, ug_data->main_w - (int)(110 * ug_data->scale_factor)); + elm_label_line_wrap_set(subject_label, ELM_WRAP_WORD); + ug_data->lb_subject = subject_label; + g_free(subject); + g_free(subject_tagged); + + char *formatted_date = NULL; + + if (icu_timeformat == APPCORE_TIME_FORMAT_12) + formatted_date = email_get_date_text(icu_locale, "yMdhms", &(prop->mktime)); + else + formatted_date = email_get_date_text(icu_locale, "yMdHms", &(prop->mktime)); + ret = snprintf(date_time, MAX_STR_LEN, "%s", formatted_date); + free(formatted_date); + formatted_date = NULL; + + elm_object_part_text_set(di, "elm.text.sub", date_time); + + Evas_Object *favorite_icon = elm_icon_add(di); + switch(prop->favorite) + { + case EMAIL_FLAG_NONE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_icon_favorite_off.png", NULL); + break; + case EMAIL_FLAG_FLAGED: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_icon_favorite_on.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_CLEAR: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Clear.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_ACTIVE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Active.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_COMPLETE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Complete.png", NULL); + break; + } + evas_object_size_hint_aspect_set(favorite_icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(favorite_icon, 1, 1); + elm_object_part_content_set(di, "elm.icon.favorite", favorite_icon); + evas_object_show(favorite_icon); + + evas_object_show(di); + elm_box_pack_end(ug_data->main_bx, di); + ug_data->ly_subject = di; + + Evas_Object *edje = elm_layout_edje_get(di); + + if (ug_data->to_list || ug_data->cc_list || ug_data->bcc_list) { + edje_object_signal_callback_add(edje, "elm,action,expand,toggle", "elm", _subject_detail_clicked_cb, di); + edje_object_signal_callback_add(edje, "elm,action,toggle", "elm", _subject_favorite_clicked_cb, di); + } else { + edje_object_signal_emit(edje, "elm,state,arrow_hidden", "elm"); + } + + return di; +} + +static Evas_Object *_create_to_addrs(EmailViewerUGD *ug_data) +{ + debug_log(""); + email_address_info_t *addrs_info = NULL; + Elm_Object_Item *mbe_item; + + if (ug_data->to_list == NULL) { + debug_log("to_list is NULL"); + return NULL; + } + + int n_to_list = g_list_length(ug_data->to_list); + int i = 0; + + if (n_to_list <= 0) { + debug_log("to_list count is 0"); + return NULL; + } + + Evas_Object *di = elm_layout_add(ug_data->main_bx); + elm_layout_file_set(di, EV_THEME_PATH, "layout.email.to_cc"); + evas_object_size_hint_align_set(di, EVAS_HINT_FILL, 0.0); + evas_object_show(di); + ug_data->to_ly = di; + elm_box_pack_after(ug_data->main_bx, di, ug_data->ly_subject); + + Evas_Object *to_mbe = elm_multibuttonentry_add(ug_data->main_bx); + char desc[MAX_STR_LEN] = { 0, }; + snprintf(desc, MAX_STR_LEN, "%s:", dgettext("sys_string", "IDS_COM_BODY_TO")); + char *to_str = g_strconcat("", desc, "", NULL); + elm_object_text_set(to_mbe, to_str); + g_free(to_str); + + evas_object_smart_callback_add(to_mbe, "item,clicked", _mbe_selected_cb, ug_data); + evas_object_smart_callback_add(to_mbe, "item,added", _mbe_added_cb, ug_data); + elm_object_part_content_set(di, "elm.icon", to_mbe); + ug_data->to_mbe = to_mbe; + + Evas_Object *entry = elm_multibuttonentry_entry_get(to_mbe); + if (entry) + elm_entry_editable_set(entry, EINA_FALSE); + + if (n_to_list > EMAIL_VIEW_MAX_TO_COUNT) + n_to_list = EMAIL_VIEW_MAX_TO_COUNT; + + for (i = 0; i < n_to_list; i++) { + addrs_info = (email_address_info_t *) g_list_nth_data(ug_data->to_list, i); + debug_log("Address:%s", addrs_info->address); + debug_log("Display Name:%s", addrs_info->display_name); + debug_log("Storage Type:%d", addrs_info->storage_type); + debug_log("Contact ID:%d", addrs_info->contact_id); + debug_log(""); + if (addrs_info->display_name && strlen(addrs_info->display_name) > 0) + mbe_item = elm_multibuttonentry_item_append(to_mbe, addrs_info->display_name, NULL, NULL); + else + mbe_item = elm_multibuttonentry_item_append(to_mbe, addrs_info->address, NULL, NULL); + elm_object_item_data_set(mbe_item, addrs_info); + } + + return di; +} + +static Evas_Object *_create_cc_addrs(EmailViewerUGD *ug_data) +{ + debug_log(""); + email_address_info_t *addrs_info = NULL; + Elm_Object_Item *mbe_item; + + if (ug_data->cc_list == NULL) { + debug_log("cc_list is NULL"); + return NULL; + } + + int n_cc_list = g_list_length(ug_data->cc_list); + int i = 0; + + if (n_cc_list <= 0) { + debug_log("cc_list count is 0"); + return NULL; + } + + Evas_Object *di = elm_layout_add(ug_data->main_bx); + elm_layout_file_set(di, EV_THEME_PATH, "layout.email.to_cc"); + evas_object_size_hint_align_set(di, EVAS_HINT_FILL, 0.0); + evas_object_show(di); + ug_data->cc_ly = di; + + if (ug_data->to_ly) { + elm_box_pack_after(ug_data->main_bx, di, ug_data->to_ly); + } else { + elm_box_pack_after(ug_data->main_bx, di, ug_data->ly_subject); + } + + Evas_Object *cc_mbe = elm_multibuttonentry_add(ug_data->main_bx); + char desc[MAX_STR_LEN] = { 0, }; + snprintf(desc, MAX_STR_LEN, "%s:", _("IDS_EMAIL_BODY_CC")); + char *cc_str = g_strconcat("", desc, "", NULL); + elm_object_text_set(cc_mbe, cc_str); + g_free(cc_str); + evas_object_smart_callback_add(cc_mbe, "item,clicked", _mbe_selected_cb, ug_data); + evas_object_smart_callback_add(cc_mbe, "item,added", _mbe_added_cb, ug_data); + elm_object_part_content_set(di, "elm.icon", cc_mbe); + ug_data->cc_mbe = cc_mbe; + + Evas_Object *entry = elm_multibuttonentry_entry_get(cc_mbe); + if (entry) + elm_entry_editable_set(entry, EINA_FALSE); + + if (n_cc_list > EMAIL_VIEW_MAX_CC_COUNT) + n_cc_list = EMAIL_VIEW_MAX_CC_COUNT; + + for (i = 0; i < n_cc_list; i++) { + addrs_info = (email_address_info_t *) g_list_nth_data(ug_data->cc_list, i); + + if (addrs_info->display_name && strlen(addrs_info->display_name) > 0) + mbe_item = elm_multibuttonentry_item_append(cc_mbe, addrs_info->display_name, NULL, NULL); + else + mbe_item = elm_multibuttonentry_item_append(cc_mbe, addrs_info->address, NULL, NULL); + elm_object_item_data_set(mbe_item, addrs_info); + } + + return di; +} + +static Evas_Object *_create_bcc_addrs(EmailViewerUGD *ug_data) +{ + debug_log(""); + email_address_info_t *addrs_info = NULL; + Elm_Object_Item *mbe_item; + + if (ug_data->bcc_list == NULL) { + debug_log("bcc_list is NULL"); + return NULL; + } + + int n_bcc_list = g_list_length(ug_data->bcc_list); + int i = 0; + + if (n_bcc_list <= 0) { + debug_log("bcc_list count is 0"); + return NULL; + } + + Evas_Object *di = elm_layout_add(ug_data->main_bx); + elm_layout_file_set(di, EV_THEME_PATH, "layout.email.to_cc"); + evas_object_size_hint_align_set(di, EVAS_HINT_FILL, 0.0); + evas_object_show(di); + ug_data->bcc_ly = di; + + if (ug_data->cc_ly) { + elm_box_pack_after(ug_data->main_bx, di, ug_data->cc_ly); + } + if (ug_data->to_ly && ug_data->cc_ly == NULL) { + elm_box_pack_after(ug_data->main_bx, di, ug_data->to_ly); + } + if (ug_data->to_ly == NULL && ug_data->cc_ly == NULL) { + elm_box_pack_after(ug_data->main_bx, di, ug_data->ly_subject); + } + + Evas_Object *bcc_mbe = elm_multibuttonentry_add(ug_data->main_bx); + char desc[MAX_STR_LEN] = { 0, }; + snprintf(desc, MAX_STR_LEN, "%s:", _("IDS_EMAIL_BODY_BCC")); + char *bcc_str = g_strconcat("", desc, "", NULL); + elm_object_text_set(bcc_mbe, bcc_str); + g_free(bcc_str); + evas_object_smart_callback_add(bcc_mbe, "item,clicked", _mbe_selected_cb, ug_data); + evas_object_smart_callback_add(bcc_mbe, "item,added", _mbe_added_cb, ug_data); + elm_object_part_content_set(di, "elm.icon", bcc_mbe); + ug_data->bcc_mbe = bcc_mbe; + + Evas_Object *entry = elm_multibuttonentry_entry_get(bcc_mbe); + if (entry) + elm_entry_editable_set(entry, EINA_FALSE); + + if (n_bcc_list > EMAIL_VIEW_MAX_BCC_COUNT) + n_bcc_list = EMAIL_VIEW_MAX_BCC_COUNT; + + for (i = 0; i < n_bcc_list; i++) { + addrs_info = (email_address_info_t *) g_list_nth_data(ug_data->bcc_list, i); + + if (addrs_info->display_name && strlen(addrs_info->display_name) > 0) + mbe_item = elm_multibuttonentry_item_append(bcc_mbe, addrs_info->display_name, NULL, NULL); + else + mbe_item = elm_multibuttonentry_item_append(bcc_mbe, addrs_info->address, NULL, NULL); + elm_object_item_data_set(mbe_item, addrs_info); + } + + return di; +} + +static Evas_Object *_create_attach(EmailViewerUGD *ug_data) +{ + debug_log(""); + + EmailViewerProp *prop = ug_data->property; + char buff[MAX_STR_LEN]; + int i = 0; + int att_len = prop->real_att_len; + int att_index = 0; + + RETURN_VAL_IF_FAIL(prop->attachments != NULL, NULL); + RETURN_VAL_IF_FAIL(att_len > 0, NULL); + + GList *attachment_list = prop->attachments; + + if (att_len == 1) { + LIST_ITER_START(i, attachment_list) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, attachment_list); + + if (info && !info->inline_content) { + if (info->size < 1024) { + g_sprintf(buff, "%s (%d %s)", info->name, (gint) info->size, dgettext("sys_string", "IDS_COM_BODY_B")); + } else { + gdouble tmpsize = (gdouble) (info->size / 1024.); + if (tmpsize < 1024) { + g_sprintf(buff, "%s (%.2f %s)", info->name, tmpsize, dgettext("sys_string", "IDS_COM_BODY_KB")); + } else { + tmpsize /= 1024.; + if (tmpsize < 1024) { + g_sprintf(buff, "%s (%.2f %s)", info->name, tmpsize, dgettext("sys_string", "IDS_COM_BODY_MB")); + } else { + tmpsize /= 1024.; + g_sprintf(buff, "%s (%.2f %s)", info->name, tmpsize, dgettext("sys_string", "IDS_COM_BODY_GB")); + } + } + } + + Evas_Object *di = elm_layout_add(ug_data->navi_bar); + elm_layout_file_set(di, EV_THEME_PATH, "layout.email.attachment_item"); + evas_object_size_hint_align_set(di, EVAS_HINT_FILL, 0.0); + evas_object_show(di); + elm_box_pack_after(ug_data->main_bx, di, ug_data->ly_subject); + + Evas_Object *thumbnail = NULL; + + if (info->download_yn) { + thumbnail = viewer_make_thumbnail(info->path, di); + } else + thumbnail = viewer_make_thumbnail(NULL, di); + evas_object_size_hint_aspect_set(thumbnail, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(thumbnail, 1, 1); + elm_object_part_content_set(di, "elm.icon", thumbnail); + evas_object_show(thumbnail); + + elm_object_part_text_set(di, "elm.text", buff); + + att_index = i; + + Evas_Object *edje = elm_layout_edje_get(di); + edje_object_signal_callback_add(edje, "elm,action,download", "elm", _attachment_save_cb, (void *)att_index); + edje_object_signal_callback_add(edje, "clicked", "*", _attachment_clicked_cb, (void *)att_index); + + Evas_Object *text_bg = NULL; + text_bg = (Evas_Object *)edje_object_part_object_get(_EDJ(di), "elm.event.rect"); + + if (text_bg) { + evas_object_event_callback_add(text_bg, EVAS_CALLBACK_MOUSE_DOWN, _attachment_bg_set_cb, (void *)att_index); + evas_object_event_callback_add(text_bg, EVAS_CALLBACK_MOUSE_UP, _attachment_bg_unset_cb, (void *)att_index); + } + + ug_data->attach_hd_ly = di; + ug_data->attach_hd_bk = di; + } + } + } else if (att_len > 1) { + gint64 total_size = prop->total_att_size; + + Evas_Object *di = elm_layout_add(ug_data->navi_bar); + elm_layout_file_set(di, EV_THEME_PATH, "layout.email.attachment_head"); + evas_object_size_hint_align_set(di, EVAS_HINT_FILL, 0.0); + snprintf(buff, sizeof(buff), "%d %s", att_len, _("IDS_EMAIL_BODY_ATTACHMENTS")); + + Evas_Object *att_head_label; + att_head_label = elm_label_add(di); + elm_object_part_content_set(di, "elm.text", att_head_label); + + char *buff_tagged = g_strconcat("", buff, "", NULL); + elm_object_text_set(att_head_label, buff_tagged); + g_free(buff_tagged); + + if (total_size < 1024) { + g_sprintf(buff, "(%d %s)", (gint) total_size, dgettext("sys_string", "IDS_COM_BODY_B")); + } else { + gdouble tmpsize = (gdouble) (total_size / 1024.); + + if (tmpsize < 1024) { + g_sprintf(buff, "(%.2f %s)", tmpsize, dgettext("sys_string", "IDS_COM_BODY_KB")); + } else { + tmpsize /= 1024.; + + if (tmpsize < 1024) { + g_sprintf(buff, "(%.2f %s)", tmpsize, dgettext("sys_string", "IDS_COM_BODY_MB")); + } else { + tmpsize /= 1024.; + g_sprintf(buff, "(%.2f %s)", tmpsize, dgettext("sys_string", "IDS_COM_BODY_GB")); + } + } + } + + edje_object_part_text_set(_EDJ(di), "elm.text.sub", buff); + + Evas_Object *edje = elm_layout_edje_get(di); + edje_object_signal_callback_add(edje, "att,icon,save,all", "", _attachment_save_all_cb, di); + edje_object_signal_callback_add(edje, "elm,action,expand,toggle", "elm", _attachment_item_collapse_cb, di); + evas_object_show(di); + elm_box_pack_after(ug_data->main_bx, di, ug_data->ly_subject); + ug_data->attach_hd_ly = di; + ug_data->attach_hd_bk = di; + } else { + debug_log("Attachment doesn't exist"); + } + + return NULL; +} + +static Evas_Object *_create_attach_ex(EmailViewerUGD *ug_data) +{ + debug_log(""); + + EmailViewerProp *prop = ug_data->property; + char buff[MAX_STR_LEN]; + int i = 0; + int j = 0; + int att_len = prop->real_att_len; + int att_index = 0; + + RETURN_VAL_IF_FAIL(prop->attachments != NULL, NULL); + RETURN_VAL_IF_FAIL(att_len > 0, NULL); + + GList *attachment_list = prop->attachments; + + ug_data->attach_ex_ly = (Evas_Object **)calloc(att_len, sizeof(Evas_Object *)); + ug_data->attach_ex_bk = (Evas_Object **)calloc(att_len, sizeof(Evas_Object *)); + + LIST_ITER_START(i, attachment_list) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, attachment_list); + + if (info && !info->inline_content) { + if (info->size < 1024) { + g_sprintf(buff, "%s (%d %s)", info->name, (gint) info->size, dgettext("sys_string", "IDS_COM_BODY_B")); + } else { + gdouble tmpsize = (gdouble) (info->size / 1024.); + if (tmpsize < 1024) { + g_sprintf(buff, "%s (%.2f %s)", info->name, tmpsize, dgettext("sys_string", "IDS_COM_BODY_KB")); + } else { + tmpsize /= 1024.; + if (tmpsize < 1024) { + g_sprintf(buff, "%s (%.2f %s)", info->name, tmpsize, dgettext("sys_string", "IDS_COM_BODY_MB")); + } else { + tmpsize /= 1024.; + g_sprintf(buff, "%s (%.2f %s)", info->name, tmpsize, dgettext("sys_string", "IDS_COM_BODY_GB")); + } + } + } + + Evas_Object *di = elm_layout_add(ug_data->navi_bar); + elm_layout_file_set(di, EV_THEME_PATH, "layout.email.attachment_item"); + evas_object_size_hint_align_set(di, EVAS_HINT_FILL, 0.0); + elm_box_pack_after(ug_data->main_bx, di, ug_data->attach_hd_ly); + evas_object_show(di); + + Evas_Object *thumbnail = NULL; + + if (info->download_yn) { + thumbnail = viewer_make_thumbnail(info->path, di); + } else + thumbnail = viewer_make_thumbnail(NULL, di); + evas_object_size_hint_aspect_set(thumbnail, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(thumbnail, 1, 1); + elm_object_part_content_set(di, "elm.icon", thumbnail); + evas_object_show(thumbnail); + + elm_object_part_text_set(di, "elm.text", buff); + + att_index = i; + + Evas_Object *edje = elm_layout_edje_get(di); + edje_object_signal_callback_add(edje, "elm,action,download", "elm", _attachment_save_cb, (void *)att_index); + edje_object_signal_callback_add(edje, "clicked", "*", _attachment_clicked_cb, (void *)att_index); + + Evas_Object *text_bg = NULL; + text_bg = (Evas_Object *)edje_object_part_object_get(_EDJ(di), "elm.event.rect"); + + if (text_bg) { + evas_object_event_callback_add(text_bg, EVAS_CALLBACK_MOUSE_DOWN, _attachment_bg_set_cb, (void *)att_index); + evas_object_event_callback_add(text_bg, EVAS_CALLBACK_MOUSE_UP, _attachment_bg_unset_cb, (void *)att_index); + } + + debug_log("attach ly %d, att_index %d", j, i); + + ug_data->attach_ex_ly[j] = di; + ug_data->attach_ex_bk[j] = di; + + j++; + } + } + + return NULL; +} + +static Evas_Object *_create_body(EmailViewerUGD *ug_data) +{ + debug_log(""); + EmailViewerProp *prop = ug_data->property; + EmailViewerPrivate *priv = ug_data->email_data; + + ug_data->b_noc = 0; + + if (ug_data->noc_bx) { + elm_box_unpack(ug_data->main_bx, ug_data->noc_bx); + evas_object_hide(ug_data->noc_bx); + } + + if (ug_data->dn_btn) { + evas_object_hide(ug_data->dn_btn); + } + + if (ug_data->webview_bx) { + _init_webview_data(ug_data); + + if (prop->has_html) { + /* html mail */ + ug_data->webview_data->body_type_prev = BODY_TYPE_HTML; + ug_data->webview_data->body_type = BODY_TYPE_HTML; + ug_data->webview_data->uri = prop->body_uri; + } else { + /* text mail */ + ug_data->webview_data->body_type_prev = BODY_TYPE_TEXT; + ug_data->webview_data->body_type = BODY_TYPE_TEXT; + ug_data->webview_data->text_content = prop->body; + } + + viewer_set_webview_content(ug_data, 0); + + evas_object_show(ug_data->webview_bx); + evas_object_show(ug_data->webview); + elm_box_pack_end(ug_data->main_bx, ug_data->webview_bx); + + _update_tab_bar(ug_data); + } else { + /* create webview layout */ + ug_data->webview_bx = _load_edj(ug_data->navi_bar, EV_THEME_PATH, "layout.email.web_view"); + if (ug_data->webview_bx == NULL) { + debug_log("Cannot load edj"); + return NULL; + } + + evas_object_size_hint_align_set(ug_data->webview_bx, EVAS_HINT_FILL, 0.0); + evas_object_show(ug_data->webview_bx); + elm_box_pack_end(ug_data->main_bx, ug_data->webview_bx); + + /* create webview */ + if (NULL == ug_data->webview) { + _init_webview_data(ug_data); + viewer_get_webview(ug_data, prop->has_html); + + if (prop->has_html) { + ug_data->webview_data->body_type_prev = BODY_TYPE_HTML; + ug_data->webview_data->body_type = BODY_TYPE_HTML; + ug_data->webview_data->uri = prop->body_uri; + } else { + ug_data->webview_data->body_type_prev = BODY_TYPE_TEXT; + ug_data->webview_data->body_type = BODY_TYPE_TEXT; + ug_data->webview_data->text_content = prop->body; + } + viewer_set_webview_content(ug_data, 0); + } + + evas_object_show(ug_data->webview); + elm_object_part_content_set(ug_data->webview_bx, "web_body", ug_data->webview); + + int resized_w = 0; + int resized_h = 0; + if (ug_data->isRotate) { + resized_w = ug_data->webview_width_landscape * ug_data->scale_factor; + resized_h = ug_data->webview_height_landscape * ug_data->scale_factor; + } else { + resized_w = ug_data->webview_width * ug_data->scale_factor; + resized_h = ug_data->webview_height * ug_data->scale_factor; + } + + evas_object_size_hint_min_set(ug_data->webview, resized_w, resized_h); + + /* set touch callbacks */ + evas_object_smart_callback_add(ug_data->webview, "policy,navigation,decide", _webview_policy_navigation_decide_cb, ug_data); + evas_object_event_callback_add(ug_data->webview, EVAS_CALLBACK_MULTI_DOWN, _webview_multi_down_cb, ug_data); + evas_object_event_callback_add(ug_data->webview, EVAS_CALLBACK_MULTI_UP, _webview_multi_up_cb, ug_data); + + /* update control Bar */ + _update_tab_bar(ug_data); + } + + viewer_set_mail_seen(prop, priv->mail_info); + + if (ug_data->timer) { + ecore_timer_del(ug_data->timer); + ug_data->timer = NULL; + } + + debug_log("send message - list unlock"); + ug_data->timer = ecore_timer_add(0.0, viewer_send_message, ug_data); + + return ug_data->webview_bx; +} + +static Evas_Object *_create_tab_bar(EmailViewerUGD *ug_data) +{ + debug_log(""); + + EmailViewerProp *prop = ug_data->property; + Evas_Object *obj; + obj = elm_toolbar_add(ug_data->navi_bar); + elm_toolbar_shrink_mode_set(obj, ELM_TOOLBAR_SHRINK_EXPAND); + elm_object_style_set(obj, "naviframe"); + + if (ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_INBOX || ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_SENTBOX || + ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_TRASH || ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_SPAMBOX) { + int n_to_list = g_list_length(ug_data->to_list); + int n_cc_list = g_list_length(ug_data->cc_list); + debug_log("to:%d, cc:%d", n_to_list, n_cc_list); + if (n_to_list + n_cc_list >= 2) + ug_data->reply_ctr_it = elm_toolbar_item_append(obj, ICON_REPLY, dgettext("sys_string", "IDS_COM_SK_REPLY"), _reply_option_cb, ug_data); + else + ug_data->reply_ctr_it = elm_toolbar_item_append(obj, ICON_REPLY, dgettext("sys_string", "IDS_COM_SK_REPLY"), _reply_cb, ug_data); + ug_data->forward_ctr_it = elm_toolbar_item_append(obj, ICON_FORWARD, dgettext("sys_string", "IDS_COM_BODY_FORWARD"), _forward_cb, ug_data); + ug_data->del_ctr_it = elm_toolbar_item_append(obj, ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), _delete_cb, ug_data); + ug_data->more_ctr_it = elm_toolbar_item_append(obj, ICON_CONTROLBAR_MORE, dgettext("sys_string", "IDS_COM_SK_MORE"), _more_cb, ug_data); + + elm_object_item_disabled_set(ug_data->reply_ctr_it, EINA_TRUE); + elm_object_item_disabled_set(ug_data->forward_ctr_it, EINA_TRUE); + } else if (ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_OUTBOX) { + debug_log("save_status: %d", prop->status2); + if (prop->status2 == EMAIL_MAIL_STATUS_SEND_FAILURE) { + ug_data->resend_ctr_it = elm_toolbar_item_append(obj, ICON_RESEND, _("IDS_EMAIL_SK_RESEND"), _resend_cb, ug_data); + ug_data->del_ctr_it = elm_toolbar_item_append(obj, ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), _delete_cb, ug_data); + } else { + ug_data->del_ctr_it = elm_toolbar_item_append(obj, ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), _delete_cb, ug_data); + } + } else { + ug_data->del_ctr_it = elm_toolbar_item_append(obj, ICON_DELETE, dgettext("sys_string", "IDS_COM_SK_DELETE"), _delete_cb, ug_data); + ug_data->move_ctr_it = elm_toolbar_item_append(obj, ICON_MOVE, _("IDS_EMAIL_SK_MOVE"), _move_cb, ug_data); + } + + elm_object_item_part_content_set(ug_data->navi_main_it, "controlbar", obj); + ug_data->ctr_bar = obj; + + return NULL; +} + +static Evas_Object *_update_tab_bar(EmailViewerUGD *ug_data) +{ + debug_log(""); + + if (ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_INBOX || ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_SENTBOX || + ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_TRASH || ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_SPAMBOX) { + elm_object_item_disabled_set(ug_data->reply_ctr_it, EINA_FALSE); + elm_object_item_disabled_set(ug_data->forward_ctr_it, EINA_FALSE); + } + + return NULL; +} + +static Evas_Object *_create_partial_body_dn_btn(EmailViewerUGD *ug_data) +{ + debug_log(""); + + ug_data->partial_dn_btn_bx = _load_edj(ug_data->navi_bar, EV_THEME_PATH, "layout.email.partial_download_btn"); + if (ug_data->partial_dn_btn_bx == NULL) { + debug_log("Cannot load edj"); + return NULL; + } + + evas_object_size_hint_align_set(ug_data->partial_dn_btn_bx, EVAS_HINT_FILL, 0.0); + evas_object_show(ug_data->partial_dn_btn_bx); + elm_box_pack_before(ug_data->main_bx, ug_data->partial_dn_btn_bx, ug_data->webview_bx); + + Evas_Object *dn_btn = elm_button_add(ug_data->navi_bar); + elm_object_text_set(dn_btn, _("IDS_EMAIL_BODY_DOWNLOAD_FULL_MESSAGE")); + evas_object_smart_callback_add(dn_btn, "clicked", _body_down_cb, (void *)ug_data); + /*elm_object_theme_set(dn_btn, ug_data->theme);*/ + elm_object_style_set(dn_btn, "text_only/style2"); + evas_object_show(dn_btn); + ug_data->partial_dn_btn = dn_btn; + + elm_object_part_content_set(ug_data->partial_dn_btn_bx, "button", ug_data->partial_dn_btn); + + return ug_data->partial_dn_btn_bx; +} + +static Evas_Object *_create_bg(Evas_Object *win) +{ + debug_log(""); + + Evas_Object *bg = elm_bg_add(win); + evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(win, bg); + evas_object_show(bg); + + return bg; +} + +static void _create_down_progress(char *message, popup_cb resp_cb) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + Evas_Object *notify, *pb; + + notify = elm_popup_add(ug_data->win_main); + if (!notify) { + debug_log("elm_popup_add returns NULL"); + return; + } + evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + ug_data->pb_notify = notify; + + elm_object_part_text_set(notify, "title,text", message); + + pb = elm_progressbar_add(notify); + + elm_object_style_set(pb, "list_progress"); + + elm_progressbar_horizontal_set(pb, EINA_TRUE); + evas_object_size_hint_align_set(pb, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(pb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(pb); + elm_progressbar_value_set(pb, 0.0); + elm_object_content_set(notify, pb); + ug_data->pb_notify_lb = pb; + + Evas_Object *btn1 = elm_button_add(notify); + elm_object_style_set(btn1, "popup_button/default"); + elm_object_text_set(btn1, dgettext("sys_string", "IDS_COM_SK_CANCEL")); + elm_object_part_content_set(notify, "button1", btn1); + evas_object_smart_callback_add(btn1, "clicked", resp_cb, ug_data); + debug_log("Cancel btn1 for downloading body: %p", btn1); + + evas_object_show(notify); +} + +static void _create_down_progress_ex(int index, EMAIL_VIEWER_PROGRESSBAR_TYPE p_type) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerProp *prop = ug_data->property; + EmailViewerPrivate *priv = ug_data->email_data; + + if (!prop || !prop->attachments) { + debug_log(""); + return; + } + + if (!priv) { + debug_log(""); + return; + } + + if (ug_data->forward_ctr_it) + elm_object_item_disabled_set(ug_data->forward_ctr_it, EINA_TRUE); + + int scr_x = 0; + int scr_y = 0; + int scr_w = 0; + int scr_h = 0; + elm_scroller_region_get(ug_data->scroller, &scr_x, &scr_y, &scr_w, &scr_h); + debug_log("scroller region> x[%d] y[%d] w[%d] h[%d]", scr_x, scr_y, scr_w, scr_h); + + GList *attachment_list = prop->attachments; + int i = 0, j = 0; + debug_log("index %d of attachment_count %d", index, prop->att_len); + + EmailAttachmentType *info = NULL; + info = g_list_nth_data(attachment_list, index); + if (info == NULL) { + debug_log("info is NULL"); + } + + Evas_Object *pbar_ly = elm_layout_add(ug_data->navi_bar); + elm_layout_file_set(pbar_ly, EV_THEME_PATH, "layout.email.attachment_downloading"); + evas_object_size_hint_align_set(pbar_ly, EVAS_HINT_FILL, 0.0); + evas_object_show(pbar_ly); + ug_data->progress_bar_ly[index + 1] = pbar_ly; + + if (info) { + char buff[MAX_STR_LEN] = { 0, }; + + Evas_Object *downloading_label1; + downloading_label1 = elm_label_add(pbar_ly); + elm_object_part_content_set(pbar_ly, "elm.text.1", downloading_label1); + char *text_tagged = g_strconcat("", info->name, "", NULL); + elm_object_text_set(downloading_label1, text_tagged); + elm_label_ellipsis_set(downloading_label1, EINA_TRUE); + elm_label_wrap_width_set(downloading_label1, ug_data->main_w - 240); + g_free(text_tagged); + + if (info->size < 1024) { + g_sprintf(buff, "%d %s", (gint) info->size, dgettext("sys_string", "IDS_COM_BODY_B")); + } else { + gdouble tmpsize = (gdouble) (info->size / 1024.); + + if (tmpsize < 1024) { + g_sprintf(buff, "%.2f %s", tmpsize, dgettext("sys_string", "IDS_COM_BODY_KB")); + } else { + tmpsize /= 1024.; + + if (tmpsize < 1024) { + g_sprintf(buff, "%.2f %s", tmpsize, dgettext("sys_string", "IDS_COM_BODY_MB")); + } else { + tmpsize /= 1024.; + g_sprintf(buff, "%.2f %s", tmpsize, dgettext("sys_string", "IDS_COM_BODY_GB")); + } + } + } + + Evas_Object *downloading_label3; + downloading_label3 = elm_label_add(pbar_ly); + elm_object_part_content_set(pbar_ly, "elm.text.3", downloading_label3); + text_tagged = g_strconcat("", buff, "", NULL); + elm_object_text_set(downloading_label3, text_tagged); + g_free(text_tagged); + } + + Evas_Object *progressbar = elm_progressbar_add(pbar_ly); + elm_progressbar_horizontal_set(progressbar, EINA_TRUE); + elm_object_style_set(progressbar, "list_progress"); + elm_object_part_content_set(pbar_ly, "elm.icon.2", progressbar); + ug_data->progress_bar[index + 1] = progressbar; + evas_object_show(progressbar); + + Evas_Object *cancel_btn = elm_button_add(pbar_ly); + /*elm_object_theme_set(cancel_btn, ug_data->theme);*/ + elm_object_style_set(cancel_btn, "text_only/style2"); + elm_object_text_set(cancel_btn, dgettext("sys_string", "IDS_COM_SK_CANCEL")); + + elm_object_part_content_set(pbar_ly, "elm.icon.1", cancel_btn); + evas_object_show(cancel_btn); + evas_object_smart_callback_add(cancel_btn, "clicked", _destroy_down_progress_ex, (void *)index); + debug_log("Cancel button for attachment downloading progress popup: %p", cancel_btn); + + /* packing progress layout */ + if (p_type == EMAIL_VIEWER_PROGRESSBAR_ATT && prop->real_att_len > 1) { + for (i = 0; i < prop->att_len; i++) { + info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, attachment_list); + if (info && !info->inline_content) { + if (index == i) { + if (ug_data->attach_ex_ly != NULL && ug_data->attach_ex_ly[j] != NULL) { + debug_log(""); + elm_box_pack_after(ug_data->main_bx, pbar_ly, ug_data->attach_ex_ly[j]); + elm_box_unpack(ug_data->main_bx, ug_data->attach_ex_ly[j]); + evas_object_hide(ug_data->attach_ex_ly[j]); + ug_data->attach_ex_ly[j] = pbar_ly; + } + } + j++; + } + } + } + if ((p_type == EMAIL_VIEWER_PROGRESSBAR_ATT && prop->real_att_len == 1) || (p_type == EMAIL_VIEWER_PROGRESSBAR_ATT_ALL)) { + debug_log(""); + elm_box_pack_after(ug_data->main_bx, pbar_ly, ug_data->attach_hd_ly); + elm_box_unpack(ug_data->main_bx, ug_data->attach_hd_ly); + evas_object_hide(ug_data->attach_hd_ly); + ug_data->attach_hd_ly = pbar_ly; + } + + elm_object_focus_set(pbar_ly, EINA_TRUE); + elm_scroller_region_show(ug_data->scroller, scr_x, scr_y, scr_w, scr_h); +} + +static void _destroy_down_progress_ex(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerPrivate *priv = ug_data->email_data; + EmailViewerProp *prop = ug_data->property; + + if (!prop || !prop->attachments) { + debug_log(""); + return; + } + + if (!priv) { + debug_log(""); + return; + } + + int scr_x = 0; + int scr_y = 0; + int scr_w = 0; + int scr_h = 0; + elm_scroller_region_get(ug_data->scroller, &scr_x, &scr_y, &scr_w, &scr_h); + debug_log("scroller region> x[%d] y[%d] w[%d] h[%d]", scr_x, scr_y, scr_w, scr_h); + + GList *attachment_list = prop->attachments; + int index = (int)data; + int i = 0, j = 0; + + /* Cancel the download in email-service */ + if (index >= 0) { + debug_log("index[%d] download_all_cnt[%d] email_handle[%d]", index, priv->download_all_cnt, priv->download_all_email_handle[index]); + if (priv->download_all_email_handle[index] > 0) { + email_engine_stop_working(ug_data->account_id, priv->download_all_email_handle[index]); + priv->download_all_email_handle[index] = 0; + } + + (priv->download_all_cnt)--; + + if (priv->download_all_cnt == 0) + priv->b_all_att_save = FALSE; + } else if (index == -1) { + for (i = 0; i < prop->att_len; i++) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, attachment_list); + if (info && !info->inline_content) { + debug_log("index[%d] download_all_cnt[%d] email_handle[%d]", i, priv->download_all_cnt, priv->download_all_email_handle[i]); + if (priv->download_all_email_handle[i] > 0) { + email_engine_stop_working(ug_data->account_id, priv->download_all_email_handle[i]); + } + } + priv->download_all_email_handle[i] = 0; + } + priv->download_all_cnt = 0; + priv->b_all_att_save = FALSE; + } + + /* upack and delete, pack again */ + if (index >= 0) { + debug_log("real_att_len:%d", prop->real_att_len); + if (prop->real_att_len == 1) { + debug_log("index[%d]", index); + elm_box_pack_after(ug_data->main_bx, ug_data->attach_hd_bk, ug_data->attach_hd_ly); + elm_box_unpack(ug_data->main_bx, ug_data->attach_hd_ly); + evas_object_del(ug_data->attach_hd_ly); + ug_data->attach_hd_ly = ug_data->attach_hd_bk; + evas_object_show(ug_data->attach_hd_ly); + elm_object_focus_set(ug_data->attach_hd_ly, EINA_TRUE); + ug_data->progress_bar[index + 1] = NULL; + ug_data->progress_bar_ly[index + 1] = NULL; + } else if (prop->real_att_len > 1) { + for (i = 0; i < prop->att_len; i++) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, attachment_list); + if (info && !info->inline_content) { + if (index == i) { + debug_log("index[%d]", i); + debug_log("attach_onoff_flag:%d", ug_data->attach_onoff_flag); + if (ug_data->attach_onoff_flag > 0) { + elm_box_pack_after(ug_data->main_bx, ug_data->attach_ex_bk[j], ug_data->attach_ex_ly[j]); + elm_box_unpack(ug_data->main_bx, ug_data->attach_ex_ly[j]); + evas_object_del(ug_data->attach_ex_ly[j]); + ug_data->attach_ex_ly[j] = ug_data->attach_ex_bk[j]; + evas_object_show(ug_data->attach_ex_ly[j]); + elm_object_focus_set(ug_data->attach_ex_ly[j], EINA_TRUE); + ug_data->progress_bar[index + 1] = NULL; + ug_data->progress_bar_ly[index + 1] = NULL; + } else { + evas_object_del(ug_data->attach_ex_ly[j]); + ug_data->attach_ex_ly[j] = ug_data->attach_ex_bk[j]; + ug_data->progress_bar[index + 1] = NULL; + ug_data->progress_bar_ly[index + 1] = NULL; + } + } + j++; + } + } + } + } else if (index == -1) { + debug_log("index[%d]", index); + elm_box_pack_after(ug_data->main_bx, ug_data->attach_hd_bk, ug_data->attach_hd_ly); + elm_box_unpack(ug_data->main_bx, ug_data->attach_hd_ly); + evas_object_del(ug_data->attach_hd_ly); + ug_data->attach_hd_ly = ug_data->attach_hd_bk; + evas_object_show(ug_data->attach_hd_ly); + elm_object_focus_set(ug_data->attach_hd_ly, EINA_TRUE); + ug_data->progress_bar[index + 1] = NULL; + ug_data->progress_bar_ly[index + 1] = NULL; + } + + elm_scroller_region_show(ug_data->scroller, scr_x, scr_y, scr_w, scr_h); + + if (priv && priv->download_all_cnt <= 0) { + if (ug_data->forward_ctr_it) + elm_object_item_disabled_set(ug_data->forward_ctr_it, EINA_FALSE); + } +} + +static void _create_more_ctxpopup(EmailViewerUGD *ug_data) +{ + debug_log(""); + if (!ug_data) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerProp *prop = ug_data->property; + EMAIL_CONTACT_LIST_INFO_S *contact_list_item = NULL; + contact_list_item = (EMAIL_CONTACT_LIST_INFO_S *)_contact_search_by_email(ug_data, prop->sender); + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + ug_data->con_popup = elm_ctxpopup_add(ug_data->navi_bar); + if (ug_data->con_popup == NULL) { + debug_log("cannot create context popup"); + return; + } + + if (contact_list_item) { + debug_log("Contact Item Exist: index[%d]", contact_list_item->index); + char index[10] = { 0, }; + snprintf(index, sizeof(index), "%d", contact_list_item->index); + + if (email_engine_check_seen_mail(ug_data->account_id, ug_data->mail_id)) + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_MARK_AS_UNREAD"), NULL, _mark_as_unread_cb, ug_data); + else + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_MARK_AS_READ"), NULL, _mark_as_read_cb, ug_data); + + elm_ctxpopup_item_append(ug_data->con_popup, dgettext("sys_string", "IDS_COM_BODY_MOVE"), NULL, _move_cb, ug_data); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_VIEW_CONTACT"), NULL, _ctxpopup_detail_contact_cb, g_strdup(index)); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_ADD_TO_CALENDAR"), NULL, _add_to_calendar_cb, ug_data); + ug_data->more_ctx_block_item = elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_BLOCK"), NULL, _ctxpopup_add_block_rule_cb, prop->sender); + + _delete_contacts_list(contact_list_item); + } else { + if (email_engine_check_seen_mail(ug_data->account_id, ug_data->mail_id)) + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_MARK_AS_UNREAD"), NULL, _mark_as_unread_cb, ug_data); + else + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_MARK_AS_READ"), NULL, _mark_as_read_cb, ug_data); + + elm_ctxpopup_item_append(ug_data->con_popup, dgettext("sys_string", "IDS_COM_BODY_MOVE"), NULL, _move_cb, ug_data); + elm_ctxpopup_item_append(ug_data->con_popup, dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS"), NULL, _ctxpopup_select_contact_mode_email_cb, prop->sender); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_ADD_TO_CALENDAR"), NULL, _add_to_calendar_cb, ug_data); + ug_data->more_ctx_block_item = elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_BLOCK"), NULL, _ctxpopup_add_block_rule_cb, prop->sender); + } + + int count, i; + email_rule_t *rule_list = NULL; + + /* get the rule list from service */ + if (email_get_rule_list(&rule_list, &count) < 0) { + debug_log("email_get_rule_list failed"); + } else { + if (count > 0) { + for (i = 0; i < count; i++) { + if (rule_list[i].type == EMAIL_FILTER_FROM) { + debug_log("block address %s", rule_list[i].value); + + if (g_strcmp0(rule_list[i].value, prop->sender) == 0) { + debug_log("[%s] already blocked", rule_list[i].value); + if (ug_data->more_ctx_block_item) + elm_object_item_disabled_set(ug_data->more_ctx_block_item, EINA_TRUE); + } + } + } + } + /* free email rule_list */ + email_free_rule(&rule_list, count); + } + + Evas_Coord x, y; + evas_pointer_canvas_xy_get(ug_data->evas, &x, &y); + evas_object_move(ug_data->con_popup, x, y - 20); + evas_object_show(ug_data->con_popup); +} + +static void _create_reply_ctxpopup(EmailViewerUGD *ug_data) +{ + debug_log(""); + if (!ug_data) { + debug_log("ug_data is NULL"); + return; + } + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + ug_data->con_popup = elm_ctxpopup_add(ug_data->navi_bar); + if (ug_data->con_popup == NULL) { + debug_log("cannot create context popup"); + return; + } + + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_TO_SENDER_ABB"), NULL, _reply_cb, ug_data); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_TO_ALL_ABB"), NULL, _reply_all_cb, ug_data); + + Evas_Coord x, y; + evas_pointer_canvas_xy_get(ug_data->evas, &x, &y); + evas_object_move(ug_data->con_popup, x, y - 20); + evas_object_show(ug_data->con_popup); +} + +static void _delete_evas_objects(EmailViewerUGD *ug_data) +{ + debug_log(""); + EmailViewerProp *prop = ug_data->property; + + if (ug_data->webview) { + evas_object_del(ug_data->webview); + ug_data->webview = NULL; + } + + if (ug_data->webview_bx) { + evas_object_del(ug_data->webview_bx); + ug_data->webview_bx = NULL; + } + + if (ug_data->scroller) { + evas_object_del(ug_data->scroller); + ug_data->scroller = NULL; + } + + if (ug_data->main_bx) { + evas_object_del(ug_data->main_bx); + ug_data->main_bx = NULL; + } + + if (ug_data->b_btn) { + evas_object_del(ug_data->b_btn); + ug_data->b_btn = NULL; + } + + if (ug_data->sub_ly) { + evas_object_del(ug_data->sub_ly); + ug_data->sub_ly = NULL; + } + + if (ug_data->navi_bar) { + evas_object_del(ug_data->navi_bar); + ug_data->navi_bar = NULL; + } + + if (ug_data->ctr_bar) { + evas_object_del(ug_data->ctr_bar); + ug_data->ctr_bar = NULL; + } + + if (ug_data->layout_main) { + evas_object_del(ug_data->layout_main); + ug_data->layout_main = NULL; + } + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + if (ug_data->select_info) { + evas_object_del(ug_data->select_info); + ug_data->select_info = NULL; + } + + if (ug_data->selectioninfo_layout != NULL) { + evas_object_del(ug_data->selectioninfo_layout); + ug_data->selectioninfo_layout = NULL; + } + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } + + if (ug_data->pb_notify) { + evas_object_del(ug_data->pb_notify); + ug_data->pb_notify = NULL; + } + + if (ug_data->pb_notify_lb) { + evas_object_del(ug_data->pb_notify_lb); + ug_data->pb_notify_lb = NULL; + } + + if (ug_data->partial_dn_btn) { + evas_object_del(ug_data->partial_dn_btn); + ug_data->partial_dn_btn = NULL; + } + + if (ug_data->partial_dn_btn_bx) { + evas_object_del(ug_data->partial_dn_btn_bx); + ug_data->partial_dn_btn_bx = NULL; + } + + if (ug_data->cutlink_timer) { + ecore_timer_del(ug_data->cutlink_timer); + ug_data->cutlink_timer = NULL; + } + + if (ug_data->timer) { + ecore_timer_del(ug_data->timer); + ug_data->timer = NULL; + } + + if (ug_data->idler) { + ecore_idler_del(ug_data->idler); + ug_data->idler = NULL; + } + + if (ug_data->got_att) { + int i; + + evas_object_del(ug_data->attach_hd_bk); + ug_data->attach_hd_ly = NULL; + ug_data->attach_hd_bk = NULL; + + if (prop->real_att_len > 1) { + for (i = 0; i < prop->real_att_len; i++) { + if (ug_data->attach_ex_ly != NULL) { + if (ug_data->attach_ex_ly[i] != NULL) { + debug_log("index %d", i); + evas_object_del(ug_data->attach_ex_bk[i]); + ug_data->attach_ex_ly[i] = NULL; + ug_data->attach_ex_bk[i] = NULL; + } + } + } + + if (ug_data->attach_ex_ly != NULL) { + free(ug_data->attach_ex_ly); + ug_data->attach_ex_ly = NULL; + ug_data->attach_ex_bk = NULL; + } + } + + for (i = 0; i <= prop->att_len; i++) { + if (ug_data->progress_bar_ly[i] != NULL) { + evas_object_del(ug_data->progress_bar_ly[i]); + ug_data->progress_bar_ly[i] = NULL; + ug_data->progress_bar[i] = NULL; + } + } + } +} + +void _launch_composer(EmailViewerUGD *ug_data, int type) +{ + debug_log(""); + + if (!ug_data) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerPrivate *priv = ug_data->email_data; + char tmp[256]; + + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + char rtype[10] = { 0, }; + snprintf(rtype, sizeof(rtype), "%d", type); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, rtype); + debug_log("service_add_extra_data: %d", ret); + + memset(tmp, 0x0, sizeof(tmp)); + snprintf(tmp, sizeof(tmp), "%d", priv->account_id); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ACCOUNT_ID, tmp); + debug_log("service_add_extra_data: %d", ret); + + memset(tmp, 0x0, sizeof(tmp)); + snprintf(tmp, sizeof(tmp), "%d", priv->mailbox_id); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAILBOX, tmp); + debug_log("service_add_extra_data: %d", ret); + + memset(tmp, 0x0, sizeof(tmp)); + snprintf(tmp, sizeof(tmp), "%d", priv->mail_id); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MAIL_ID, tmp); + debug_log("service_add_extra_data: %d", ret); + + ug_data->ug_composer = create_ug(UG_NAME_EMAIL_COMPOSER, service, ug_data); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _launch_vcs_editor(EmailViewerUGD *ug_data) +{ + debug_log(""); + + if (!ug_data) { + debug_log("ug_data is NULL"); + return; + } + + char account_id[MAX_STR_LEN] = { 0, }; + char mail_id[MAX_STR_LEN] = { 0, }; + + EmailViewerProp *prop = ug_data->property; + + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + snprintf(account_id, sizeof(account_id), "%d", prop->account_id); + snprintf(mail_id, sizeof(mail_id), "%d", prop->mail_id); + + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CALENDAR_EDIT_ACCOUNT_ID, account_id); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CALENDAR_EDIT_MAIL_ID, mail_id); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CALENDAR_EDIT_SRC_BOX, prop->src_box); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CALENDAR_EDIT_INDEX, EMAIL_BUNDLE_VAL_CALENDAR_EDIT_INDEX); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CALENDAR_EDIT_NOTE, prop->subject); + debug_log("service_add_extra_data: %d", ret); + + ug_data->ug_calendar_edit = create_ug(UG_NAME_CALENDAR_EDIT, service, ug_data); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _back_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (_g_ug_data == NULL) { + debug_log("_g_ug_data is NULL"); + return; + } + + if (!data) { + debug_log("data is NULL"); + return; + } + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->con_popup != NULL) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + debug_log("isRoate = %d", ug_data->isRotate); + if (ug_data->isRotate == false && ug_data->b_internal) { + /* Viewer to hide, so set left content (mailbox) size to full */ + _notify_mailbox_size(ug_data, "MAILBOX_RESIZE_FULL"); + } + + if (ug_data->b_internal != 1) { + debug_log("ug_destory_me"); + ug_destroy_me(ug_data->ug); + } else { + _hide_view(ug_data); + } +} + +static void _prev_mail_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + /* send next or previous mail request to mailbox. */ + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MSG, EMAIL_BUNDLE_VAL_PREV_MSG); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_DO_DELETE, "0"); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _next_mail_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + /* send next or previous mail request to mailbox. */ + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MSG, EMAIL_BUNDLE_VAL_NEXT_MSG); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_DO_DELETE, "0"); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _reply_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + ug_data->display_download_result = FALSE; + + _launch_composer(ug_data, RUN_COMPOSER_REPLY); + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } +} + +static void _reply_all_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + ug_data->display_download_result = FALSE; + + _launch_composer(ug_data, RUN_COMPOSER_REPLY_ALL); + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } +} + +static void _reply_option_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + _create_reply_ctxpopup(ug_data); +} + +static void _forward_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + ug_data->display_download_result = FALSE; + + _launch_composer(ug_data, RUN_COMPOSER_FORWARD); +} + +static void _add_to_calendar_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (data == NULL) + return; + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + _launch_vcs_editor(ug_data); +} + +static void _resend_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +static void _delete_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + _create_notify(ug_data, NULL, dgettext("sys_string", "IDS_COM_POP_DELETE_Q"), + 2, dgettext("sys_string", "IDS_COM_SK_DELETE"), + _popup_response_delete_ok_cb, dgettext("sys_string", "IDS_COM_SK_CANCEL"), + _popup_response_cb, NULL); +} + +static void _move_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + EmailViewerPrivate *priv = ug_data->email_data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + Elm_Object_Item *git = NULL; + Evas_Object *gl = elm_genlist_add(ug_data->navi_bar); + evas_object_show(gl); + + ug_data->itc1.item_style = "1text.1icon.2"; + ug_data->itc1.func.text_get = _gl_text_get; + ug_data->itc1.func.content_get = _gl_content_get; + ug_data->itc1.func.state_get = _gl_state_get; + ug_data->itc1.func.del = _gl_del; + + ug_data->itc2.item_style = "1text.1icon.2"; + ug_data->itc2.func.text_get = _gl_sub_upper_text_get; + ug_data->itc2.func.content_get = _gl_sub_upper_icon_get; + ug_data->itc2.func.state_get = _gl_state_get; + ug_data->itc2.func.del = NULL; + + ug_data->itc3.item_style = "grouptitle.dialogue.seperator"; + ug_data->itc3.func.text_get = NULL; + ug_data->itc3.func.content_get = NULL; + ug_data->itc3.func.state_get = _gl_state_get; + ug_data->itc3.func.del = NULL; + + Elm_Object_Item *navi_it = NULL; + navi_it = elm_naviframe_item_push(ug_data->navi_bar, dgettext("sys_string", "IDS_COM_BODY_MOVE"), NULL, NULL, gl, NULL); + ug_data->navi_move_it1 = navi_it; + if (ug_data->isRotate) + elm_naviframe_item_title_visible_set(ug_data->navi_move_it1, EINA_FALSE); + + email_mailbox_t *mailbox_list = NULL; + int mailbox_count = 0; + int i = 0; + + email_get_mailbox_list(priv->account_id, -1, &mailbox_list, &mailbox_count); + debug_log("folder count %d", mailbox_count); + ug_data->move_mailbox_list = mailbox_list; + ug_data->move_mailbox_count = mailbox_count; + + git = elm_genlist_item_append(gl, &(ug_data->itc3), NULL, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); + elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + + for (i = 0; i < mailbox_count; i++) { + if (g_strcmp0(ug_data->mailbox_name, mailbox_list[i].mailbox_name) != 0) { + if (mailbox_list[i].mailbox_type != EMAIL_MAILBOX_TYPE_OUTBOX && + mailbox_list[i].mailbox_type != EMAIL_MAILBOX_TYPE_SENTBOX && + mailbox_list[i].mailbox_type != EMAIL_MAILBOX_TYPE_DRAFT && + mailbox_list[i].mailbox_type != EMAIL_MAILBOX_TYPE_TRASH && + mailbox_list[i].mailbox_type != EMAIL_MAILBOX_TYPE_ALL_EMAILS && + mailbox_list[i].mailbox_type != EMAIL_MAILBOX_TYPE_SEARCH_RESULT) + if (g_strcmp0(mailbox_list[i].alias, "[Gmail]")) { + elm_genlist_item_append(gl, &ug_data->itc1, (void *)&(mailbox_list[i]), git, ELM_GENLIST_ITEM_NONE, _gl_sel, (void *)&(mailbox_list[i])); + } + } + } + + /*if (ug_data->b_internal) + elm_layout_theme_set(ug_data->layout_main, "layout", "application", "noindicator"); + else + elm_layout_theme_set(ug_data->layout_main, "layout", "application", "default");*/ + + Evas_Object *move_back_btn = NULL; + if (ug_data->isRotate) { + ug_data->move_cbar = elm_toolbar_add(ug_data->navi_bar); + elm_toolbar_shrink_mode_set(ug_data->move_cbar, ELM_TOOLBAR_SHRINK_EXPAND); + elm_object_style_set(ug_data->move_cbar, "naviframe"); + evas_object_show(ug_data->move_cbar); + + elm_object_item_disabled_set(elm_toolbar_item_append(ug_data->move_cbar, NULL, "", NULL, NULL), EINA_TRUE); + elm_toolbar_item_append(ug_data->move_cbar, NULL, dgettext("sys_string", "IDS_COM_SK_CANCEL"), _move_back_cb, ug_data); + elm_object_item_part_content_set(navi_it, "controlbar", ug_data->move_cbar); + + move_back_btn = elm_object_item_part_content_get(navi_it, "prev_btn"); + if (move_back_btn) { + evas_object_del(move_back_btn); + elm_object_item_part_content_set(navi_it, "prev_btn", NULL); + } + } else { + move_back_btn = elm_object_item_part_content_get(navi_it, "prev_btn"); + if (move_back_btn) { + evas_object_del(move_back_btn); + move_back_btn = elm_button_add(ug_data->navi_bar); + elm_object_style_set(move_back_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(move_back_btn, "clicked", _move_back_cb, ug_data); + elm_object_item_part_content_set(navi_it, "prev_btn", move_back_btn); + } + } +} + +static void _more_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + _create_more_ctxpopup(ug_data); +} + +static void _body_down_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + unsigned int handle; + gboolean ret = 0; + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + EmailViewerPrivate *priv = ug_data->email_data; + + /* check already downloaded */ + int body_download_status = ug_data->property->body_download; + + if (body_download_status == 0) { //EMAIL_BODY_DOWNLOAD_STATUS_NONE + debug_log("need body download"); + } else if (body_download_status == 1) { //EMAIL_BODY_DOWNLOAD_STATUS_FULLY_DOWNLOADED + debug_log("already downloaded, create body directly"); + + /* set property */ + if (viewer_get_internal_mail_info(ug_data->property, ug_data->email_data)) { + debug_log(""); + viewer_make_internal_mail(ug_data->property, ug_data->email_data); + } + + if (ug_data->b_partial_body) { + int scr_x = 0; + int scr_y = 0; + int scr_w = 0; + int scr_h = 0; + elm_scroller_region_get(ug_data->scroller, &scr_x, &scr_y, &scr_w, &scr_h); + debug_log("scroller region> x[%d] y[%d] w[%d] h[%d]", scr_x, scr_y, scr_w, scr_h); + + elm_box_unpack(ug_data->main_bx, ug_data->partial_dn_btn_bx); + if (ug_data->partial_dn_btn) { + evas_object_del(ug_data->partial_dn_btn); + ug_data->partial_dn_btn = NULL; + } + if (ug_data->partial_dn_btn_bx) { + evas_object_del(ug_data->partial_dn_btn_bx); + ug_data->partial_dn_btn_bx = NULL; + } + + if (ug_data->property->has_html) { + ug_data->webview_data->body_type = BODY_TYPE_HTML; + ug_data->webview_data->uri = ug_data->property->body_uri; + } else { + ug_data->webview_data->body_type = BODY_TYPE_TEXT; + ug_data->webview_data->text_content = ug_data->property->body; + } + + viewer_set_webview_content(ug_data, 1); + ug_data->b_partial_body = 0; + + elm_object_focus_set(ug_data->ly_subject, EINA_TRUE); + elm_scroller_region_show(ug_data->scroller, scr_x, scr_y, scr_w, scr_h); + } else { + if (ug_data->property->has_attachment) + ug_data->got_att = 1; + else + ug_data->got_att = 0; + + /* pack attachment if it exist */ + if (ug_data->got_att) { + _create_attach(ug_data); + } + + _create_body(ug_data); + } + + return; + } else if (body_download_status == 2) { //EMAILL_BODY_DOWNLOAD_STATUS_PARTIALLY_DOWNLOADED + debug_log("need full body download"); + } + + ret = email_engine_body_download(priv->account_id, priv->mail_id, &handle); + + if (ret == TRUE) { + priv->email_handle = handle; + debug_log("succeed in email_engine_body_download"); + _create_down_progress(dgettext("sys_string", "IDS_COM_POP_DOWNLOADING"), _destroy_down_progress_cb); + + /* If attachment download is in progress, first cancel to attachment download of the mail and then carry out body download */ + _cancel_download_attachment(ug_data); + + } else { + debug_log("unable to download mail body"); + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), + _("IDS_EMAIL_POP_UNABLE_TO_DOWNLOAD"), 1, + dgettext("sys_string", "IDS_COM_SK_OK"), + _popup_response_cb, NULL, NULL, NULL); + } +} + +static void _subject_favorite_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerProp *prop = ug_data->property; + int err = EMAIL_ERROR_NONE; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + debug_log("Before prop->favorite: %d", prop->favorite); + switch(prop->favorite) { + case EMAIL_FLAG_NONE: + prop->favorite = EMAIL_FLAG_FLAGED; + break; + case EMAIL_FLAG_FLAGED: + prop->favorite = EMAIL_FLAG_NONE; + break; + case EMAIL_FLAG_TASK_STATUS_CLEAR: + prop->favorite = EMAIL_FLAG_TASK_STATUS_ACTIVE; + break; + case EMAIL_FLAG_TASK_STATUS_ACTIVE: + prop->favorite = EMAIL_FLAG_TASK_STATUS_COMPLETE; + break; + case EMAIL_FLAG_TASK_STATUS_COMPLETE: + prop->favorite = EMAIL_FLAG_TASK_STATUS_CLEAR; + break; + default: + debug_log("Never here"); + } + debug_log("After prop->favorite: %d", prop->favorite); + + err = email_set_flags_field(ug_data->account_id, &ug_data->mail_id, 1, EMAIL_FLAGS_FLAGGED_FIELD, prop->favorite, 1); + if (err != EMAIL_ERROR_NONE) { + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + N_("Failed to set favourite"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + return; + } + + evas_object_del(elm_object_part_content_unset(ug_data->ly_subject, "elm.icon.favorite")); + Evas_Object *favorite_icon = elm_icon_add(ug_data->ly_subject); + switch(prop->favorite) + { + case EMAIL_FLAG_NONE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_icon_favorite_off.png", NULL); + break; + case EMAIL_FLAG_FLAGED: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_icon_favorite_on.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_CLEAR: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Clear.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_ACTIVE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Active.png", NULL); + break; + case EMAIL_FLAG_TASK_STATUS_COMPLETE: + elm_icon_file_set(favorite_icon, IMGDIR "/M02_email_Flag_Complete.png", NULL); + break; + default: + debug_log("Never here"); + } + evas_object_size_hint_aspect_set(favorite_icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + elm_icon_resizable_set(favorite_icon, 1, 1); + elm_object_part_content_set(ug_data->ly_subject, "elm.icon.favorite", favorite_icon); + evas_object_show(favorite_icon); + + /* send unread request to mailbox. */ + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MSG, EMAIL_BUNDLE_VAL_READ); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _subject_detail_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + debug_log(""); + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + Evas_Object *item = (Evas_Object *)data; + EmailViewerUGD *ug_data = _g_ug_data; + + if (!(ug_data->subject_onoff_flag)) { + edje_object_signal_emit(_EDJ(item), "elm,state,expanded", "elm"); + (ug_data->subject_onoff_flag)++; + + _create_to_addrs(_g_ug_data); + _create_cc_addrs(_g_ug_data); + _create_bcc_addrs(_g_ug_data); + } else { + edje_object_signal_emit(_EDJ(item), "elm,state,contracted", "elm"); + (ug_data->subject_onoff_flag)--; + + if (ug_data->to_ly) { + elm_box_unpack(ug_data->main_bx, ug_data->to_ly); + evas_object_del(ug_data->to_ly); + ug_data->to_ly = NULL; + } + if (ug_data->cc_ly) { + elm_box_unpack(ug_data->main_bx, ug_data->cc_ly); + evas_object_del(ug_data->cc_ly); + ug_data->cc_ly = NULL; + } + if (ug_data->bcc_ly) { + elm_box_unpack(ug_data->main_bx, ug_data->bcc_ly); + evas_object_del(ug_data->bcc_ly); + ug_data->bcc_ly = NULL; + } + + elm_object_focus_set(ug_data->ly_subject, EINA_TRUE); + } +} + +static void _attachment_item_collapse_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + debug_log(""); + if (!data || !_g_ug_data) { + debug_log("data is NULL"); + return; + } + + Evas_Object *item = (Evas_Object *)data; + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerProp *prop = ug_data->property; + int i = 0; + + debug_log("attach_onoff_flag:%d", ug_data->attach_onoff_flag); + if (!(ug_data->attach_onoff_flag)) { + debug_log("attachments expanded"); + edje_object_signal_emit(_EDJ(item), "elm,state,expanded", "elm"); + (ug_data->attach_onoff_flag)++; + + if (ug_data->attach_ex_ly == NULL) + _create_attach_ex(ug_data); + else { + for (i = 0; i < prop->real_att_len; i++) { + debug_log("index %d", i); + elm_box_pack_after(ug_data->main_bx, ug_data->attach_ex_ly[i], ug_data->attach_hd_ly); + evas_object_show(ug_data->attach_ex_ly[i]); + } + } + } else { + debug_log("attachments contracted"); + edje_object_signal_emit(_EDJ(item), "elm,state,contracted", "elm"); + ug_data->attach_onoff_flag = 0; + + for (i = 0; i < prop->real_att_len; i++) { + if (ug_data->attach_ex_ly[i] != NULL) { + debug_log("index %d", i); + elm_box_unpack(ug_data->main_bx, ug_data->attach_ex_ly[i]); + evas_object_hide(ug_data->attach_ex_ly[i]); + } + } + } +} + +static void _attachment_save_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + int att_index = (int)data; + + ug_data->display_download_result = FALSE; + + debug_log("Selected item index = %d", att_index); + _show_attachment(ug_data, att_index); +} + +static void _attachment_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + int att_index = (int)data; + + debug_log("Selected item index = %d", att_index); + ug_data->display_download_result = TRUE; + _show_attachment(ug_data, att_index); +} + +static void _attachment_save_all_cb(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + debug_log(""); + if (!_g_ug_data) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + + _save_attachment_all(ug_data); +} + +static void _attachment_bg_set_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!_g_ug_data) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerProp *prop = ug_data->property; + + int att_index = (int)data; + debug_log("att_index = %d, attachments count = %d", att_index, prop->real_att_len); + + if (prop->real_att_len > 1) { + int i = 0; + int j = 0; + GList *attachment_list = prop->attachments; + LIST_ITER_START(i, attachment_list) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, attachment_list); + if (info && !info->inline_content) { + if (att_index == i) + break; + j++; + } + } + edje_object_signal_emit(_EDJ(ug_data->attach_ex_ly[j]), "pressed", "elm.event.rect"); + } + else + edje_object_signal_emit(_EDJ(ug_data->attach_hd_ly), "pressed", "elm.event.rect"); +} + +static void _attachment_bg_unset_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!_g_ug_data) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerProp *prop = ug_data->property; + + int att_index = (int)data; + debug_log("att_index = %d, attachments count = %d", att_index, prop->real_att_len); + + if (prop->real_att_len > 1) { + int i = 0; + int j = 0; + GList *attachment_list = prop->attachments; + LIST_ITER_START(i, attachment_list) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, attachment_list); + if (info && !info->inline_content) { + if (att_index == i) + break; + j++; + } + } + edje_object_signal_emit(_EDJ(ug_data->attach_ex_ly[j]), "unpressed", "elm.event.rect"); + } + else + edje_object_signal_emit(_EDJ(ug_data->attach_hd_ly), "unpressed", "elm.event.rect"); +} + +static void _mark_as_unread_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + EmailViewerPrivate *priv = ug_data->email_data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + int err = 0; + debug_log("ug_data->mail_id(%d), priv->mail_id(%d), mail_info->mail_id(%d))", ug_data->mail_id, priv->mail_id, priv->mail_info->mail_id); + + err = email_set_flags_field(ug_data->account_id, &ug_data->mail_id, 1, EMAIL_FLAGS_SEEN_FIELD, 0, 1); + debug_log("email_set_flags_field - err(%d)", err); + + if (err != EMAIL_ERROR_NONE) { + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + _("IDS_EMAIL_POP_FAILED_TO_MARK_AS_UNREAD"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + } else { + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", _("IDS_EMAIL_POP_MARKED_AS_UNREAD")); + _show_select_info(ug_data, str); + + /* send unread request to mailbox. */ + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MSG, EMAIL_BUNDLE_VAL_UNREAD); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } +} + +static void _mark_as_read_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + EmailViewerPrivate *priv = ug_data->email_data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + int err = 0; + debug_log("ug_data->mail_id(%d), priv->mail_id(%d), mail_info->mail_id(%d))", ug_data->mail_id, priv->mail_id, priv->mail_info->mail_id); + + err = email_set_flags_field(priv->mail_info->account_id, &ug_data->mail_id, 1, EMAIL_FLAGS_SEEN_FIELD, 1, 1); + debug_log("email_set_flags_field - err(%d)", err); + + if (err != EMAIL_ERROR_NONE) { + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + _("IDS_EMAIL_POP_FAILED_TO_MARK_AS_READ"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + } else { + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", _("IDS_EMAIL_POP_MARKED_AS_READ")); + _show_select_info(ug_data, str); + + /* send unread request to mailbox. */ + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MSG, EMAIL_BUNDLE_VAL_READ); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } +} + +static void _ctxpopup_detail_contact_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (data == NULL || _g_ug_data == NULL) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + char *index = (char *)data; + char type[10] = { 0, }; + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + snprintf(type, sizeof(type), "%d", CT_UG_REQUEST_DETAIL); + + ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, type); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, CT_UG_BUNDLE_ID, index); + debug_log("service_add_extra_data: %d", ret); + + create_ug(UG_CONTACTS_DETAILS, service, ug_data); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + + debug_log("set flag for contact ug"); + ug_data->b_contact_ug_launched = TRUE; +} + +static void _ctxpopup_send_email_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data || !_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + + if (ug_data->con_popup == NULL) { + debug_log("con_popup is NULL"); + return; + } + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + debug_log("email: %s", (char *)data); + + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + char rtype[10] = { 0, }; + snprintf(rtype, sizeof(rtype), "%d", RUN_COMPOSER_EXTERNAL); + + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, rtype); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_TO, (char *)data); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_CC, NULL); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_BCC, NULL); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_SUBJECT, NULL); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_BODY, NULL); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_ATTACHMENT, NULL); + debug_log("service_add_extra_data: %d", ret); + + ug_data->ug_composer = create_ug(UG_NAME_EMAIL_COMPOSER, service, ug_data); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _ctxpopup_add_contact_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data || !_g_ug_data) { + debug_log("data is NULL"); + return; + } + + char tmp[MAX_STR_LEN] = { 0, }; + EmailViewerUGD *ug_data = _g_ug_data; + + if (ug_data->con_popup == NULL) { + debug_log("con_popup is NULL"); + return; + } + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + if (ug_data->create_contact_arg == CONTACTUI_REQ_ADD_PHONE_NUMBER) { + snprintf(tmp, sizeof(tmp), "%d", CT_UG_REQUEST_ADD_WITH_NUM); + ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, tmp); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, CT_UG_BUNDLE_NUM, (char *)data); + debug_log("service_add_extra_data: %d", ret); + } + if (ug_data->create_contact_arg == CONTACTUI_REQ_ADD_EMAIL) { + snprintf(tmp, sizeof(tmp), "%d", CT_UG_REQUEST_ADD_WITH_EMAIL); + ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, tmp); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, CT_UG_BUNDLE_EMAIL, (char *)data); + debug_log("service_add_extra_data: %d", ret); + } + if (ug_data->create_contact_arg == CONTACTUI_REQ_ADD_URL) { + snprintf(tmp, sizeof(tmp), "%d", CT_UG_REQUEST_ADD_WITH_WEB); + ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, tmp); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, CT_UG_BUNDLE_WEB, (char *)data); + debug_log("service_add_extra_data: %d", ret); + } + + create_ug(UG_CONTACTS_DETAILS, service, ug_data); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _ctxpopup_cutlink_update_contact_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data || !_g_ug_data) { + debug_log("data is NULL"); + return; + } + + char tmp[MAX_STR_LEN] = { 0, }; + EmailViewerUGD *ug_data = _g_ug_data; + + if (ug_data->con_popup == NULL) { + debug_log("con_popup is NULL"); + return; + } + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + if (ug_data->create_contact_arg == CONTACTUI_REQ_ADD_PHONE_NUMBER) { + snprintf(tmp, sizeof(tmp), "%d", CT_UG_REQUEST_ADD_WITH_NUM); + ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, tmp); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, CT_UG_BUNDLE_NUM, (char *)data); + debug_log("service_add_extra_data: %d", ret); + } + if (ug_data->create_contact_arg == CONTACTUI_REQ_ADD_EMAIL) { + snprintf(tmp, sizeof(tmp), "%d", CT_UG_REQUEST_ADD_WITH_EMAIL); + ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, tmp); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, CT_UG_BUNDLE_EMAIL, (char *)data); + debug_log("service_add_extra_data: %d", ret); + } + if (ug_data->create_contact_arg == CONTACTUI_REQ_ADD_URL) { + snprintf(tmp, sizeof(tmp), "%d", CT_UG_REQUEST_ADD_WITH_WEB); + ret = service_add_extra_data(service, CT_UG_BUNDLE_TYPE, tmp); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, CT_UG_BUNDLE_WEB, (char *)data); + debug_log("service_add_extra_data: %d", ret); + } + + ug_data->ug_contacts_search = create_ug(UG_CONTACTS_LIST, service, ug_data); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); +} + +static void _ctxpopup_select_contact_mode_email_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!data || !_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + Evas_Coord x, y; + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + ug_data->con_popup = elm_ctxpopup_add(ug_data->navi_bar); + if (ug_data->con_popup == NULL) { + debug_log("cannot create context popup"); + return; + } + + ug_data->create_contact_arg = CONTACTUI_REQ_ADD_EMAIL; + ug_data->update_contact_type = CONTACTUI_REQ_ADD_EMAIL; + + elm_ctxpopup_item_append(ug_data->con_popup, dgettext("sys_string", "IDS_COM_OPT_CREATE_CONTACT"), NULL, _ctxpopup_add_contact_cb, data); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_UPDATE_EXISTING"), NULL, _ctxpopup_cutlink_update_contact_cb, data); + + evas_pointer_canvas_xy_get(ug_data->evas, &x, &y); + evas_object_move(ug_data->con_popup, x, y); + evas_object_show(ug_data->con_popup); +} + +static void _ctxpopup_add_block_rule_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (!data || !_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerPrivate *priv = ug_data->email_data; + char *addr = (char *)data; + + debug_log("Block address: %s", addr); + + if (ug_data->con_popup) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + int ret; + email_rule_t *rule = NULL; + + /* add filtering rule */ + rule = malloc(sizeof(email_rule_t)); + rule->account_id = priv->account_id; + rule->type = EMAIL_FILTER_FROM; + rule->value = g_strdup(addr); + rule->faction = EMAIL_FILTER_BLOCK; + + int err = 0; + email_mailbox_t *mail_box = NULL; + if ((err = email_get_mailbox_by_mailbox_type(ug_data->account_id, ug_data->mailbox_type, &mail_box)) != EMAIL_ERROR_NONE) { + debug_log("email_get_mailbox_by_mailbox_type failed! - err (%d)", err); + } + + if (mail_box == NULL) { + debug_log("mail_box is NULL"); + } + + rule->target_mailbox_id = mail_box->mailbox_id; + + if (mail_box) { + debug_log("email_free_mailbox is called"); + email_free_mailbox(&mail_box, 1); + mail_box = NULL; + } + + rule->flag1 = 1; + rule->flag2 = RULE_TYPE_INCLUDES; + + ret = email_add_rule(rule); + if (ret < 0) { + debug_log("email_add_rule failed %d", ret); + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + _("IDS_EMAIL_POP_FAILED_TO_ADD_BLOCK_RULE"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + } else { + int vconf_ret = -1; + vconf_ret = vconf_set_int(EMAIL_VCONF_KEY_BLOCK_RULE_CHANGED, 1); + if (vconf_ret == -1) { + debug_log("fail to set vconf int(spam_rule_changed)"); + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + _("IDS_EMAIL_POP_FAILED_TO_ADD_BLOCK_RULE"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + } else { + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", _("IDS_EMAIL_POP_BLOCKED")); + ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + } + } + + email_free_rule(&rule, 1); +} + +static void _popup_response_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!_g_ug_data) { + debug_log("_g_ug_data is NULL"); + return; + } + + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } +} + +static void _popup_response_delete_ok_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!_g_ug_data) { + debug_log("_g_ug_data is NULL"); + return; + } + + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->notify) { + evas_object_del(ug_data->notify); + ug_data->notify = NULL; + } + + if (ug_data->mailbox_type == EMAIL_MAILBOX_TYPE_TRASH) + _delete_email(ug_data); + else + _move_email(ug_data, _find_folder_id_using_folder_type(ug_data, EMAIL_MAILBOX_TYPE_TRASH), TRUE); + + if (ug_data->isRotate == false && ug_data->b_internal) { + _notify_mailbox_size(ug_data, "MAILBOX_RESIZE_FULL"); + } + + /* close viewer */ + if (ug_data->b_internal) { + _hide_view(ug_data); + + /* send next or previous mail request to mailbox. */ + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MSG, EMAIL_BUNDLE_VAL_NEXT_MSG); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_DO_DELETE, "1"); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } else + ug_destroy_me(ug_data->ug); +} + +static void _popup_response_to_destroy_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + evas_object_del(obj); + + ug_data->b_direct_destroy = 1; + ug_destroy_me(ug_data->ug); + _g_ug_data = NULL; +} + +static void _webview_multi_up_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (_g_ug_data == NULL) + return; + + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + ug_data->m_is_multi_touch = FALSE; + + if (ug_data->scroller_locked) { + ug_data->scroller_locked = FALSE; + debug_log("<>"); + debug_log("<>"); + } +} + +static void _webview_multi_down_cb(void *data, Evas * evas, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (_g_ug_data == NULL) + return; + + if (!data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + ug_data->m_is_multi_touch = TRUE; + + if (ug_data->scroller_locked == FALSE) { + ug_data->scroller_locked = TRUE; + debug_log("<>"); + debug_log("<>"); + } +} + +static void _webview_policy_navigation_decide_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + if (ug_data->b_load_finished == EINA_TRUE) { + Ewk_Policy_Decision *policy_decision = (Ewk_Policy_Decision *)event_info; + ewk_policy_decision_ignore(policy_decision); + + debug_log("url:%s", ewk_policy_decision_url_get(policy_decision)); + debug_log("scheme:%s", ewk_policy_decision_scheme_get(policy_decision)); + debug_log("cookie:%s", ewk_policy_decision_cookie_get(policy_decision)); + debug_log("host:%s", ewk_policy_decision_host_get(policy_decision)); + debug_log("response_mime:%s", ewk_policy_decision_response_mime_get(policy_decision)); + + char *url = (char *)ewk_policy_decision_url_get(policy_decision); + + if ((strncmp(url, "http://", 7) == 0) || + (strncmp(url, "https://", 8) == 0) || + (strncmp(url, "ftp://", 6) == 0) || + (strncmp(url, "mms://", 6) == 0) || + (strncmp(url, "file://", 7) == 0) || + (strncmp(url, "rtsp://", 7) == 0) || + (strncmp(url, "wap://", 6) == 0)) { + int ret; + service_h service = NULL; + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + ret = service_set_operation(service, SERVICE_OPERATION_VIEW); + debug_log("service_set_operation: %d", ret); + ret = service_set_uri(service, url); + debug_log("service_set_uri: %d", ret); + ret = service_send_launch_request(service, NULL, NULL); + debug_log("service_send_launch_request: %d", ret); + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } + + if (strncmp(url, "tel:", 4) == 0) { + char refined_num[MAX_STR_LEN] = { 0, }; + int i = 0, j = 0; + + while (url[i] != '\0') { + if (url[i] >= '0' && url[i] <= '9') + refined_num[j++] = url[i]; + i++; + } + + char *number = refined_num; + debug_log("number: %s", number); + + int ret; + service_h service = NULL; + char telnum[255] = { 0, }; + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + ret = service_set_operation(service, SERVICE_OPERATION_CALL); + debug_log("service_set_operation: %d", ret); + snprintf(telnum, sizeof(telnum), "tel:%s", number); /* Number to make a call */ + ret = service_set_uri(service, telnum); + debug_log("service_set_uri: %d", ret); + ret = service_add_extra_data(service, "ctindex", "-1"); /* If you don't know ctindex, you don't have to add it. */ + debug_log("service_add_extra_data: %d", ret); + ret = service_send_launch_request(service, NULL, NULL); + debug_log("service_send_launch_request: %d", ret); + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } + + if (strncmp(url, "mailto:", 7) == 0) { + int ret; + service_h service = NULL; + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + char rtype[10] = { 0, }; + snprintf(rtype, sizeof(rtype), "%d", RUN_COMPOSER_EXTERNAL); + + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_RUN_TYPE, rtype); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_TO, &url[7]); + debug_log("service_add_extra_data: %d", ret); + + ug_data->ug_composer = create_ug(UG_NAME_EMAIL_COMPOSER, service, ug_data); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } + } +} + +/* Double_Scroller */ +static void _outter_scroller_bottom_hit_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + int res = email_engine_check_body_download(ug_data->email_data->mail_id); + + if (ug_data->is_main_scroller_scrolling && res != 0) { + debug_log("Main scroller hold push"); + elm_object_scroll_freeze_push(ug_data->scroller); //stop + ewk_view_vertical_panning_hold_set(ug_data->webview, EINA_FALSE); //restart + ug_data->is_main_scroller_scrolling = EINA_FALSE; + ug_data->is_webview_scrolling = EINA_TRUE; + } +} + +static void _outter_scroller_top_hit_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +static void _outter_scroller_scroll_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + ug_data->is_main_scroller_scrolling = EINA_TRUE; +} + +static void _mbe_added_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); +} + +static void _mbe_selected_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + email_address_info_t *addrs_info = NULL; + Elm_Object_Item *item = (Elm_Object_Item *) event_info; + debug_log("selected item:%s", elm_object_item_text_get(item)); + + addrs_info = elm_object_item_data_get(item); + + Evas_Coord x, y; + EMAIL_CONTACT_LIST_INFO_S *contact_list_item = NULL; + contact_list_item = (EMAIL_CONTACT_LIST_INFO_S *)_contact_search_by_email(ug_data, addrs_info->address); + + if (ug_data->con_popup != NULL) { + evas_object_del(ug_data->con_popup); + ug_data->con_popup = NULL; + } + + ug_data->con_popup = elm_ctxpopup_add(ug_data->navi_bar); + if (ug_data->con_popup == NULL) { + debug_log("cannot create context popup"); + return; + } + + if (contact_list_item) { + debug_log("Contact Item Exist: index[%d]", contact_list_item->index); + char index[10] = { 0, }; + snprintf(index, sizeof(index), "%d", contact_list_item->index); + + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_VIEW_CONTACT"), NULL, _ctxpopup_detail_contact_cb, g_strdup(index)); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_SEND_EMAIL"), NULL, _ctxpopup_send_email_cb, addrs_info->address); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_BLOCK"), NULL, _ctxpopup_add_block_rule_cb, addrs_info->address); + _delete_contacts_list(contact_list_item); + } else { + elm_ctxpopup_item_append(ug_data->con_popup, dgettext("sys_string", "IDS_COM_OPT_ADD_TO_CONTACTS"), NULL, _ctxpopup_select_contact_mode_email_cb, addrs_info->address); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_SEND_EMAIL"), NULL, _ctxpopup_send_email_cb, addrs_info->address); + elm_ctxpopup_item_append(ug_data->con_popup, _("IDS_EMAIL_OPT_BLOCK"), NULL, _ctxpopup_add_block_rule_cb, addrs_info->address); + } + + evas_pointer_canvas_xy_get(ug_data->evas, &x, &y); + evas_object_move(ug_data->con_popup, x, y); + evas_object_show(ug_data->con_popup); +} + +static void _destroy_down_progress_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerPrivate *priv = ug_data->email_data; + + email_engine_stop_working(ug_data->account_id, priv->email_handle); + + if (ug_data->pb_notify) { + evas_object_del(ug_data->pb_notify); + ug_data->pb_notify = NULL; + } + + if (ug_data->pb_notify_lb) { + evas_object_del(ug_data->pb_notify_lb); + ug_data->pb_notify_lb = NULL; + } + + if (data == NULL) { + if (priv->att_file_id) { + free(priv->att_file_id); + priv->att_file_id = NULL; + } + + priv->file_size = 0; + priv->attachment_id = -1; + priv->multi_body = FALSE; + } +} + +static void _init_viewer_data(int account_id, int mail_id, char *srv_mail_id, EmailViewerUGD *ug_data) +{ + debug_log(""); + EmailViewerPrivate *priv = NULL; + EmailViewerProp *prop = NULL; + email_address_info_list_t *addrs_info_list = NULL; + + /* Create Email Viewer Private Structure */ + if (ug_data->email_data) { + if (ug_data->email_data->mail_info) { + debug_log("mail_info freed"); + email_free_mail_data(&(ug_data->email_data->mail_info), 1); + ug_data->email_data->mail_info = NULL; + } + + if (ug_data->email_data->attachment_info && ug_data->email_data->attachment_count > 0) { + debug_log("attachment_info freed p[%p] n[%d]", ug_data->email_data->attachment_info, ug_data->email_data->attachment_count); + email_free_attachment_data(&(ug_data->email_data->attachment_info), ug_data->email_data->attachment_count); + ug_data->email_data->attachment_info = NULL; + ug_data->email_data->attachment_count = 0; + } + + memset(ug_data->email_data, 0x0, sizeof(EmailViewerPrivate)); + priv = ug_data->email_data; + } else { + priv = (EmailViewerPrivate *)malloc(sizeof(EmailViewerPrivate)); + memset(priv, 0x0, sizeof(EmailViewerPrivate)); + ug_data->email_data = priv; + } + + /* Create Email Viewer Property Structure */ + if (ug_data->property) { + if (ug_data->property->attachments) { + int i = 0; + LIST_ITER_START(i, ug_data->property->attachments) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, ug_data->property->attachments); + if (info->name) + free(info->name); + if (info->path) + free(info->path); + free(info); + } + g_list_free(ug_data->property->attachments); + } + memset(ug_data->property, 0x0, sizeof(EmailViewerProp)); + prop = ug_data->property; + } else { + prop = (EmailViewerProp *)malloc(sizeof(EmailViewerProp)); + memset(prop, 0x0, sizeof(EmailViewerProp)); + ug_data->property = prop; + } + + /* Set account ID */ + priv->account_id = account_id; + prop->account_id = account_id; + + /* Set mail ID */ + priv->mail_id = mail_id; + prop->mail_id = mail_id; + + priv->mailbox_id = ug_data->mailbox_id; + prop->src_box = ug_data->mailbox_name; + debug_log("mailbox_name [%s]", ug_data->mailbox_name); + + /* Get mail_info from service, and fill property */ + if (viewer_get_internal_mail_info(ug_data->property, ug_data->email_data)) { + viewer_make_internal_mail(ug_data->property, ug_data->email_data); + } + + email_get_address_info_list(priv->mail_id, &addrs_info_list); + + if (addrs_info_list) { + ug_data->from_list = addrs_info_list->from; + ug_data->to_list = addrs_info_list->to; + ug_data->cc_list = addrs_info_list->cc; + ug_data->bcc_list = addrs_info_list->bcc; + priv->addrs_info_list = addrs_info_list; + } + + ug_data->option_header_opened = 0; +} + +static int _init_webview_data(EmailViewerUGD *ug_data) +{ + debug_log(""); + + EmailViewerWebview *wvd; + + if (ug_data->webview_data == NULL) { + wvd = (EmailViewerWebview *)malloc(sizeof(EmailViewerWebview)); + memset(wvd, 0x0, sizeof(EmailViewerWebview)); + ug_data->webview_data = wvd; + } + + if (STR_VALID(ug_data->property->charset)) { + ug_data->webview_data->charset = g_strdup(ug_data->property->charset); + debug_log("charset:%s", ug_data->webview_data->charset); + } else { + ug_data->webview_data->charset = DEFAULT_CHARSET; + debug_log("charset:%s", ug_data->webview_data->charset); + } + + return 0; +} + +static Eina_Bool _check_body_download(void *data) +{ + debug_log(""); + if (!data) { + debug_log("data is NULL"); + return ECORE_CALLBACK_CANCEL; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + _create_tab_bar(ug_data); + + /* check mail body downloaded */ + int body_download_status = ug_data->property->body_download; + + if (body_download_status == 0) { //EMAIL_BODY_DOWNLOAD_STATUS_NONE + debug_log("need body download"); + ug_data->b_noc = 1; /* Double_Scroller */ + + if (ug_data->noc_bx) { + debug_log("no content layout exist"); + evas_object_show(ug_data->noc_bx); + elm_object_text_set(ug_data->dn_btn, _("IDS_EMAIL_BODY_DOWNLOAD_MESSAGE")); + evas_object_show(ug_data->dn_btn); + elm_box_pack_end(ug_data->main_bx, ug_data->noc_bx); + } else { + /* add body download button */ + ug_data->noc_bx = _load_edj(ug_data->navi_bar, EV_THEME_PATH, "layout.email.no_content"); + if (ug_data->noc_bx == NULL) { + debug_log("Cannot load edj"); + return ECORE_CALLBACK_CANCEL; + } + + evas_object_size_hint_align_set(ug_data->noc_bx, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(ug_data->noc_bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(ug_data->noc_bx); + elm_box_pack_end(ug_data->main_bx, ug_data->noc_bx); + + Evas_Object *dn_btn = elm_button_add(ug_data->navi_bar); + /*elm_object_theme_set(dn_btn, ug_data->theme);*/ + elm_object_style_set(dn_btn, "text_only/style2"); + elm_object_text_set(dn_btn, _("IDS_EMAIL_BODY_DOWNLOAD_MESSAGE")); + evas_object_smart_callback_add(dn_btn, "clicked", _body_down_cb, (void *)ug_data); + evas_object_show(dn_btn); + ug_data->dn_btn = dn_btn; + + elm_object_part_content_set(ug_data->noc_bx, "btn", ug_data->dn_btn); + debug_log("no content layout created"); + } + + elm_object_focus_set(ug_data->noc_bx, EINA_TRUE); + if (ug_data->timer) { + ecore_timer_del(ug_data->timer); + ug_data->timer = NULL; + } + + ug_data->timer = ecore_timer_add(0.0, viewer_send_message, ug_data); + } else if (body_download_status == 1) { //EMAIL_BODY_DOWNLOAD_STATUS_FULLY_DOWNLOADED + debug_log("check mail downloaded - ok"); + /* create body */ + _create_body(ug_data); + } else if (body_download_status == 2) { //EMAIL_BODY_DOWNLOAD_STATUS_PARTIALLY_DOWNLOADED + /* partial body */ + debug_log("Partial Body"); + ug_data->b_partial_body = 1; + _create_body(ug_data); + _create_partial_body_dn_btn(ug_data); + } + + return ECORE_CALLBACK_CANCEL; +} + +static int _update_attachment_info(EmailViewerUGD *ug_data, int index) +{ + debug_log(""); + EmailViewerProp *prop = ug_data->property; + int i = 0; + int j = 0; + int attach_index = 0; + + /* update attachment information */ + LIST_ITER_START(i, prop->attachments) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, prop->attachments); + + if (info && !info->inline_content) { + debug_log("info->index[%d] index[%d]", info->index, index); + + if (info->index == index) { + info->download_yn = TRUE; + info->path = email_engine_get_attachment_path(info->attach_id); + + attach_index = i; + + if (prop->real_att_len > 1) { + Evas_Object *thumbnail = viewer_make_thumbnail(info->path, ug_data->attach_ex_bk[j]); + Evas_Object *content = elm_object_part_content_unset(ug_data->attach_ex_bk[j], "elm.icon"); + evas_object_del(content); + elm_object_part_content_set(ug_data->attach_ex_bk[j], "elm.icon", thumbnail); + evas_object_show(thumbnail); + } else { + Evas_Object *thumbnail = viewer_make_thumbnail(info->path, ug_data->attach_hd_bk); + Evas_Object *content = elm_object_part_content_unset(ug_data->attach_hd_bk, "elm.icon"); + evas_object_del(content); + elm_object_part_content_set(ug_data->attach_hd_bk, "elm.icon", thumbnail); + evas_object_show(thumbnail); + } + + break; + } + + j++; + } + } + + debug_log("return id[%d]", attach_index); + + return attach_index; +} + +static int _get_attachment_info_index(EmailViewerUGD *ug_data, int index) +{ + debug_log(""); + + EmailViewerProp *prop = ug_data->property; + int i = 0; + int attach_index = 0; + + /* update attachment information */ + LIST_ITER_START(i, prop->attachments) { + EmailAttachmentType *info = (EmailAttachmentType *)LIST_ITER_GET_DATA(i, prop->attachments); + if (info) { + debug_log("info->index[%d] index[%d]", info->index, index); + if (info->index == index) { + attach_index = i; + break; + } + } + } + + debug_log("return id[%d]", attach_index); + + return attach_index; +} + +static void _show_select_info(EmailViewerUGD *ug_data, char *str) +{ + debug_log(""); + + if (ug_data->select_info != NULL) { + evas_object_del(ug_data->select_info); + ug_data->select_info = NULL; + } + + if (ug_data->selectioninfo_layout != NULL) { + evas_object_del(ug_data->selectioninfo_layout); + ug_data->selectioninfo_layout = NULL; + } + + ug_data->select_info = elm_notify_add(ug_data->win_main); + elm_notify_orient_set(ug_data->select_info, ELM_NOTIFY_ORIENT_BOTTOM); + + ug_data->selectioninfo_layout = elm_layout_add(ug_data->layout_main); + elm_object_content_set(ug_data->select_info, ug_data->selectioninfo_layout); + + elm_layout_theme_set(ug_data->selectioninfo_layout, "standard", "selectioninfo", "vertical/bottom_64"); + + edje_object_part_text_set(_EDJ(ug_data->selectioninfo_layout), "elm.text", str); + elm_notify_timeout_set(ug_data->select_info, 3); + evas_object_show(ug_data->select_info); +} + +static void _save_attachment(EmailViewerUGD *ug_data, int index) +{ + debug_log(""); + EmailViewerPrivate *priv = ug_data->email_data; + EmailViewerProp *prop = ug_data->property; + char newpath[MAX_STR_LEN] = { 0, }; + + RETURN_IF_FAIL(prop->attachments != NULL); + EmailAttachmentType *info = g_list_nth_data(prop->attachments, index); + + if (info == NULL) { + debug_log("EmailAttachmentType *info is NULL"); + return; + } + + if (!info->download_yn) { + unsigned handle = 0; + gboolean res = FALSE; + + if (ug_data->progress_bar[index + 1] != NULL) { + debug_log("Already getting downloaded...!"); + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), + _("IDS_EMAIL_POP_ALREADY_DOWNLOADING_T_HEADER"), 1, + dgettext("sys_string", "IDS_COM_SK_OK"), + _popup_response_cb, NULL, NULL, NULL); + return; + } + + debug_log("Need attachment download"); + /* download attachment */ + priv->b_att_save = TRUE; + + res = email_engine_attachment_download(priv->account_id, priv->mail_id, info->index, &handle); + + if (res == TRUE) { + priv->download_all_cnt++; + debug_log("Assigning Handle[%d] Index[%d] download_all_cnt[%d]", handle, index, priv->download_all_cnt); + priv->download_all_email_handle[index] = handle; + _create_down_progress_ex(index, EMAIL_VIEWER_PROGRESSBAR_ATT); + ug_data->display_download_result = TRUE; + } else { + priv->b_att_save = FALSE; + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), + _("IDS_EMAIL_POP_UNABLE_TO_OPEN_ATTACHMENT"), 1, + dgettext("sys_string", "IDS_COM_SK_OK"), _popup_response_cb, + NULL, NULL, NULL); + } + + return; + } + + if (info && STR_VALID(info->path)) { + int ret; + debug_log("path[%s]", info->path); + ret = email_attachments_save_file(info->path, newpath, NULL); + if (ret == EMAIL_EXT_SAVE_ERR_NONE) { + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", dgettext("sys_string", "IDS_COM_POP_SAVED")); + /*_show_select_info(ug_data, str);*/ + ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + } + } +} + +static void _show_attachment(EmailViewerUGD *ug_data, int index) +{ + debug_log(""); + EmailViewerPrivate *priv = ug_data->email_data; + EmailViewerProp *prop = ug_data->property; + EmailAttachmentType *info = g_list_nth_data(prop->attachments, index); + char newpath[MAX_STR_LEN] = { 0, }; + + if (info == NULL) { + debug_log("EmailAttachmentType *info is NULL"); + return; + } + + debug_log("attach_id:%d, index:%d, name(%s), path(%s), size:%d, download_yn:%d, drm:%d, inline_content:%d", + info->attach_id, info->index, info->name, info->path, (gint) info->size, info->download_yn, info->drm, info->inline_content); + + if (!info->download_yn) { + unsigned handle = 0; + gboolean res = FALSE; + debug_log("Need attachment download"); + + priv->b_att_open = TRUE; + + res = email_engine_attachment_download(priv->account_id, priv->mail_id, info->index, &handle); + + if (res == TRUE) { + priv->download_all_email_handle[index] = handle; + priv->download_all_cnt++; + _create_down_progress_ex(index, EMAIL_VIEWER_PROGRESSBAR_ATT); + } else { + priv->b_att_open = FALSE; + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), + _("IDS_EMAIL_POP_UNABLE_TO_OPEN_ATTACHMENT"), 1, + dgettext("sys_string", "IDS_COM_SK_OK"), _popup_response_cb, + NULL, NULL, NULL); + } + return; + } + + gboolean res = FALSE; + res = email_attachments_save_file(info->path, newpath, NULL); + debug_log("Result:%d, Saved Path:%s", res, newpath); + + if (res == EMAIL_EXT_SAVE_ERR_NONE) { + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", dgettext("sys_string", "IDS_COM_POP_SAVED")); + /*_show_select_info(ug_data, str);*/ + int ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + + if (g_str_has_suffix(info->path, ".vcs")) { + int nResult = -1; + int calendar_id = 1; + calendar_svc_connect(); + nResult = calendar_svc_calendar_import(newpath, calendar_id); + + debug_log("check return value of calendar_svc_util_register_vcs_file for %s - %d", newpath, nResult); + if (nResult != CAL_SUCCESS) { + debug_log("Failed to import path(%s) to id(%d)", newpath, calendar_id); + return; + } + calendar_svc_close(); + } else + media_file_register(newpath); + } else if (res == EMAIL_EXT_SAVE_ERR_ALREADY_EXIST && !ug_data->display_download_result) { + _create_notify(ug_data, _("IDS_EMAIL_POP_ALERT"), + dgettext("sys_string", "IDS_COM_POP_ALREDY_EXISTS"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + } + + debug_log("display_download_result:%d", ug_data->display_download_result); + if (ug_data->display_download_result) { + if (res == EMAIL_EXT_SAVE_ERR_NONE || res == EMAIL_EXT_SAVE_ERR_ALREADY_EXIST) { + int ret; + service_h service = NULL; + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + ret = service_set_operation(service, SERVICE_OPERATION_VIEW); + debug_log("service_set_operation: %d", ret); + ret = service_set_uri(service, newpath); + debug_log("service_set_uri: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_VIDEO_PLAYER_LAUNCH_APP, "email"); + debug_log("service_add_extra_data: %d", ret); + ret = service_send_launch_request(service, NULL, NULL); + debug_log("service_send_launch_request: %d", ret); + if (ret != SERVICE_ERROR_NONE) { + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), + _("IDS_EMAIL_POP_THIS_ATTACHMENT_CANNOT_BE_DISPLAYED"), 0, + NULL, NULL, NULL, NULL, _popup_response_cb); + } + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } else { + debug_log("EMAIL_EXT_SAVE_ERR_UNKNOWN"); + } + } +} + +static void _save_attachment_all(EmailViewerUGD *ug_data) +{ + debug_log(""); + EmailViewerPrivate *priv = ug_data->email_data; + EmailViewerProp *prop = ug_data->property; + EmailAttachmentType *info = NULL; + + int i = 0; + int att_len = g_list_length(prop->attachments); + + if (priv->b_all_att_save) + return; + + if (att_len > 0) { + if (ug_data->forward_ctr_it) + elm_object_item_disabled_set(ug_data->forward_ctr_it, EINA_TRUE); + } + + for (i = 0; i < att_len; i++) { + info = g_list_nth_data(prop->attachments, i); + + if (info && !info->inline_content) { + if (!info->download_yn) { + if (ug_data->progress_bar_ly[i + 1] == NULL) { + unsigned handle = 0; + gboolean res = FALSE; + debug_log("Need attachment [%d] download", i); + + res = email_engine_attachment_download(priv->account_id, priv->mail_id, info->index, &handle); + + if (res == TRUE) { + priv->download_all_cnt++; + priv->download_all_email_handle[i] = handle; + priv->b_all_att_save = TRUE; + + debug_log("attach_onoff_flag:%d", ug_data->attach_onoff_flag); + if (priv->b_all_att_save) { + if (ug_data->attach_onoff_flag == 0) { + _attachment_item_collapse_cb(ug_data->attach_hd_bk, NULL, NULL, NULL); + } + } + + _create_down_progress_ex(i, EMAIL_VIEWER_PROGRESSBAR_ATT); + ug_data->display_download_result = TRUE; + } else { + priv->download_all_fail_cnt++; + } + } + } + } + } + + debug_log("download [%d], failed [%d]", priv->download_all_cnt, priv->download_all_fail_cnt); +} + +static void _dbus_receiver_setup(EmailViewerUGD *ug_data) +{ + debug_log(""); + + int ret = e_dbus_init(); + debug_log("ret: %d", ret); + + DBusError derror; + + if (_g_viewer_dbus_conn == NULL) { + debug_log(""); + dbus_error_init(&derror); + _g_viewer_dbus_conn = e_dbus_bus_get(DBUS_BUS_SYSTEM); + + if (_g_viewer_dbus_conn == NULL) { + debug_log("e_dbus_bus_get return NULL"); + } + + /* storage */ + if (e_dbus_request_name(_g_viewer_dbus_conn, "User.Email.StorageChange", 0, NULL, NULL) == NULL) { + debug_critical("Failed to e_dbus_request_name()"); + return; + } + + if (_g_viewer_signal_handler_storage != NULL) { + debug_log("_g_viewer_signal_handler_storage != NULL"); + } + + _g_viewer_signal_handler_storage = e_dbus_signal_handler_add(_g_viewer_dbus_conn, NULL, + "/User/Email/StorageChange", + "User.Email.StorageChange", + "email", _on_edbus_event_email_viewer_receive, ug_data); + + if (_g_viewer_signal_handler_storage == NULL) { + debug_log("Failed to e_dbus_signal_handler_add()"); + return; + } + + /* network */ + if (e_dbus_request_name(_g_viewer_dbus_conn, "User.Email.NetworkStatus", 0, NULL, NULL) == NULL) { + debug_log("Failed to e_dbus_request_name()"); + return; + } + + if (_g_viewer_signal_handler_network != NULL) { + debug_log("_g_viewer_signal_handler_network != NULL"); + } + + _g_viewer_signal_handler_network = e_dbus_signal_handler_add(_g_viewer_dbus_conn, NULL, + "/User/Email/NetworkStatus", + "User.Email.NetworkStatus", + "email", _on_edbus_event_email_viewer_receive, ug_data); + + if (_g_viewer_signal_handler_network == NULL) { + debug_log("Failed to e_dbus_signal_handler_add()"); + return; + } + } +} + +static void _dbus_receiver_remove(EmailViewerUGD *ug_data) +{ + debug_log(""); + + if (_g_viewer_signal_handler_storage != NULL) { + e_dbus_signal_handler_del(_g_viewer_dbus_conn, _g_viewer_signal_handler_storage); + _g_viewer_signal_handler_storage = NULL; + } + + if (_g_viewer_signal_handler_network != NULL) { + e_dbus_signal_handler_del(_g_viewer_dbus_conn, _g_viewer_signal_handler_network); + _g_viewer_signal_handler_network = NULL; + } + + if (e_dbus_release_name(_g_viewer_dbus_conn, "User.Email.StorageChange", NULL, NULL) == NULL) { + debug_critical("e_dbus_release_name to failed"); + } + + if (e_dbus_release_name(_g_viewer_dbus_conn, "User.Email.NetworkStatus", NULL, NULL) == NULL) { + debug_critical("e_dbus_release_name to failed"); + } + + if (_g_viewer_dbus_conn != NULL) { + /*e_dbus_connection_close(_g_viewer_dbus_conn);*/ + _g_viewer_dbus_conn = NULL; + } +} + +static void _on_edbus_event_email_viewer_receive(void *data, DBusMessage *message) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerPrivate *priv = ug_data->email_data; + char fail_msg[MAX_STR_LEN] = { 0, }; + DBusError error; + + if (dbus_message_is_signal(message, "User.Email.StorageChange", "email")) { + debug_log("User.Email.StorageChange"); + + int subtype = 0; + int data1 = 0; + int data2 = 0; + char *data3 = NULL; + + dbus_error_init(&error); + if (dbus_message_get_args(message, &error, DBUS_TYPE_INT32, &subtype, + DBUS_TYPE_INT32, &data1, DBUS_TYPE_INT32, &data2, + DBUS_TYPE_STRING, &data3, DBUS_TYPE_INVALID)) { + debug_log("STORE_ENABLE: subtype: %d, data1: %d, data2: %d, data3: %s", subtype, data1, data2, data3); + + switch (subtype) { + case NOTI_ACCOUNT_ADD: + if (get_app_paused()) { + debug_log("account added during pause status"); + + if (ug_data->isRotate == false && ug_data->b_internal) { + /* Viewer to hide, so set left content (mailbox) size to full */ + _notify_mailbox_size(ug_data, "MAILBOX_RESIZE_FULL"); + } + + if (ug_data->b_internal != 1) { + debug_log("ug_destory_me"); + ug_destroy_me(ug_data->ug); + } else { + _hide_view(ug_data); + } + } + break; + + case NOTI_ACCOUNT_DELETE: + if (get_app_paused()) { + debug_log("account deleted during pause status"); + int account_id = 0; + + if (ug_data->isRotate == false && ug_data->b_internal) { + /* Viewer to hide, so set left content (mailbox) size to full */ + _notify_mailbox_size(ug_data, "MAILBOX_RESIZE_FULL"); + } + + if (email_engine_get_default_account(&account_id)) { + if (ug_data->b_internal != 1) { + debug_log("ug_destory_me"); + ug_destroy_me(ug_data->ug); + } else { + _hide_view(ug_data); + } + } + } + break; + + case NOTI_ACCOUNT_UPDATE: + if (get_app_paused()) { + debug_log("account updated during pause status"); + } + break; + + default: + debug_warning("unknown type"); + break; + } + } else { + debug_critical("receive data error: %s", error.message); + dbus_error_free(&error); + } + } else if (dbus_message_is_signal(message, "User.Email.NetworkStatus", "email")) { + debug_log(""); + + int subtype = 0; + int data1 = 0; + char *data2 = NULL; + int data3 = 0; + int data4 = 0; + + dbus_error_init(&error); + + if (dbus_message_get_args(message, &error, DBUS_TYPE_INT32, &subtype, + DBUS_TYPE_INT32, &data1, DBUS_TYPE_STRING, &data2, + DBUS_TYPE_INT32, &data3, DBUS_TYPE_INT32, &data4, DBUS_TYPE_INVALID)) { + debug_log("subtype: %d, data1: %d, data2: %s, data3: %d, data4: %d", subtype, data1, data2, data3, data4); + switch (subtype) { + + case NOTI_DOWNLOAD_BODY_START: + /* DATA1[mail_id] DATA2[file_id] DATA3[body_size] DATA4[received size] */ + debug_log("receive noti, DOWNLOAD_BODY"); + if (priv->mail_id == data1) { + priv->file_id = g_strdup(data2); + priv->file_size = data3; + + if (data4 == 0) { + _set_value_down_progress(0.0); + } else { + double per = (double)data4 / (double)data3; + _set_value_down_progress(per); + } + } else { + debug_log("mail_id is different"); + debug_log("expected mail_id [%d], received mail_id [%d]", priv->mail_id, data1); + } + break; + + case NOTI_DOWNLOAD_MULTIPART_BODY: + /* DATA1[mail_id] DATA2[file_id] DATA3[body_size] DATA4[received size] */ + debug_log("receive noti, DOWNLOAD_MULTIPART_BODY"); + if (priv->mail_id == data1) { + priv->file_id = g_strdup(data2); + priv->file_size = data3; + priv->multi_body = TRUE; + + if (data4 == 0) { + _set_value_down_progress(0.0); + } else { + double per = (double)data4 / (double)data3; + _set_value_down_progress(per); + } + } else { + debug_log("mail_id is different"); + debug_log("expected mail_id [%d], received mail_id [%d]", priv->mail_id, data1); + } + break; + + case NOTI_DOWNLOAD_BODY_FINISH: + /* DATA1[mail_id] DATA2[NULL] DATA3[handle_id] */ + debug_log("receive noti, DOWNLOAD_BODY_FINISH"); + if (priv->email_handle == data3 && priv->mail_id == data1) { + priv->email_handle = 0; + + ug_data->b_load_finished = EINA_FALSE; + + /* delete progress */ + if (ug_data->pb_notify) { + _set_value_down_progress(1.0); + _destroy_down_progress_cb(NULL, NULL, NULL); + } + + char str[128] = { 0, }; + snprintf(str, sizeof(str), "%s", dgettext("sys_string", "IDS_COM_BODY_DOWNLOADED")); + /*_show_select_info(ug_data, str);*/ + int ret = status_message_post(str); + if (ret) + debug_log("status_message_post failed: %d", ret); + + /* set property */ + if (viewer_get_internal_mail_info(ug_data->property, ug_data->email_data)) { + viewer_make_internal_mail(ug_data->property, ug_data->email_data); + } + /* create att and body */ + if (ug_data->b_partial_body) { + int scr_x = 0; + int scr_y = 0; + int scr_w = 0; + int scr_h = 0; + elm_scroller_region_get(ug_data->scroller, &scr_x, &scr_y, &scr_w, &scr_h); + debug_log("scroller region> x[%d] y[%d] w[%d] h[%d]", scr_x, scr_y, scr_w, scr_h); + + elm_box_unpack(ug_data->main_bx, ug_data->partial_dn_btn_bx); + if (ug_data->partial_dn_btn) { + evas_object_del(ug_data->partial_dn_btn); + ug_data->partial_dn_btn = NULL; + } + if (ug_data->partial_dn_btn_bx) { + evas_object_del(ug_data->partial_dn_btn_bx); + ug_data->partial_dn_btn_bx = NULL; + } + + if (ug_data->property->has_html) { + ug_data->webview_data->body_type = BODY_TYPE_HTML; + ug_data->webview_data->uri = ug_data->property->body_uri; + } else { + ug_data->webview_data->body_type = BODY_TYPE_TEXT; + ug_data->webview_data->text_content = ug_data->property->body; + } + + viewer_set_webview_content(ug_data, 1); + + elm_object_focus_set(ug_data->ly_subject, EINA_TRUE); + elm_scroller_region_show(ug_data->scroller, scr_x, scr_y, scr_w, scr_h); + } else { + + if (ug_data->property->has_attachment) + ug_data->got_att = 1; + else + ug_data->got_att = 0; + + /* pack attachment if it exist */ + if (ug_data->got_att) { + _create_attach(ug_data); + } + + _create_body(ug_data); + } + } else { + debug_log("email_handle or mail_id is different"); + debug_log("expected mail_id [%d], received mail_id [%d]", priv->mail_id, data1); + debug_log("expected email_handle [%d], received email_handle [%d]", priv->email_handle, data3); + } + break; + + case NOTI_DOWNLOAD_BODY_FAIL: + /* DATA1[mail_id] DATA2[NULL] DATA3[handle_id] */ + debug_log("receive noti, DOWNLOAD_BODY_FAIL"); + if (priv->email_handle == data3 && priv->mail_id == data1) { + priv->email_handle = 0; + + /* delete progress */ + if (ug_data->pb_notify) { + _destroy_down_progress_cb(NULL, NULL, NULL); + } + + char *err_msg = _get_service_fail_type(data4); + snprintf(fail_msg, sizeof(fail_msg), "%s
%s", _("IDS_EMAIL_POP_UNABLE_TO_DOWNLOAD"), err_msg); + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), + fail_msg, 1, dgettext("sys_string", "IDS_COM_SK_OK"), + _popup_response_cb, NULL, NULL, NULL); + g_free(err_msg); + } else { + debug_log("email_handle or mail_id is different"); + debug_log("expected mail_id [%d], received mail_id [%d]", priv->mail_id, data1); + debug_log("expected email_handle [%d], received email_handle [%d]", priv->email_handle, data3); + } + break; + + case NOTI_DOWNLOAD_ATTACH_START: + /* DATA1[mail_id] DATA2[file_id] DATA3[attachment_id] DATA4[percentage] */ + debug_log("receive noti, DOWNLOAD_ATTACHMENT"); + if (priv->mail_id == data1) { + priv->att_file_id = g_strdup(data2); + priv->attachment_id = data3; + + if (data4 == 0) { + /* Set the progressbar of particular attachment_id */ + _set_value_down_progress_by_index(0.0, priv->attachment_id); + } + if (data4 > 0) { + double per = (double)data4 / 100.0; + /* Set the progressbar of particular attachment_id */ + _set_value_down_progress_by_index(per, priv->attachment_id); + } + } else { + debug_log("mail_id is different"); + debug_log("expected mail_id [%d], received mail_id [%d]", priv->mail_id, data1); + } + break; + + case NOTI_DOWNLOAD_ATTACH_FINISH: + /* DATA1[mail_id] DATA2[NULL] DATA3[attachment_id] */ + debug_log("receive noti, DOWNLOAD_ATTACH_FINISH"); + + if (priv->mail_id == data1) { + int attach_index = 0; + int attachment_id = (int)data3; + debug_log("download_all_cnt [%d]", priv->download_all_cnt); + + if (priv->download_all_cnt > 0) { + _set_value_down_progress_by_index(1.0, attachment_id); + attach_index = _update_attachment_info(ug_data, attachment_id); + if (priv->b_all_att_save) { + _destroy_down_progress_ex((void *)attach_index, NULL, NULL); + _save_attachment(ug_data, attach_index); + if (priv->download_all_cnt == 0) { + priv->b_all_att_save = FALSE; + } + } else { + _destroy_down_progress_ex((void *)attach_index, NULL, NULL); + _show_attachment(ug_data, attach_index); + } + } + } else { + debug_log("mail_id or attachment_id is different"); + debug_log("expected mail_id [%d], received mail_id [%d]", priv->mail_id, data1); + } + break; + + case NOTI_DOWNLOAD_ATTACH_FAIL: + /* DATA1[mail_id] DATA2[NULL] DATA3[attachment_id] */ + debug_log("receive noti, DOWNLOAD_ATTACH_FAIL"); + if (priv->mail_id == data1) { + int attach_index = _get_attachment_info_index(ug_data, data3); + debug_log("download_all_cnt[%d]", priv->download_all_cnt); + + if (priv->download_all_cnt > 0) { + if (ug_data->progress_bar[data3] != NULL && data4 != EMAIL_ERROR_CANCELLED) + _destroy_down_progress_ex((void *)attach_index, NULL, NULL); + else + debug_log("Download already cancelled, No need to destroy again..!"); + + if (data4 != EMAIL_ERROR_CANCELLED && ug_data->ug_composer == NULL) { + char *err_msg = _get_service_fail_type(data4); + snprintf(fail_msg, sizeof(fail_msg), "%s
%s", _("IDS_EMAIL_POP_UNABLE_TO_DOWNLOAD"), err_msg); + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), fail_msg, 1, + dgettext("sys_string", "IDS_COM_SK_OK"), + _popup_response_cb, NULL, NULL, NULL); + g_free(err_msg); + } + + if (priv->b_all_att_save && priv->download_all_cnt == 0) { + priv->b_all_att_save = FALSE; + } + } + } else { + debug_log("mail_id is different"); + debug_log("expected mail_id [%d], received mail_id [%d]", priv->mail_id, data1); + } + break; + + default: + debug_log("unknown type"); + break; + } + } else { + debug_log("receive data error: %s", error.message); + dbus_error_free(&error); + } + /*return DBUS_HANDLER_RESULT_HANDLED;*/ + return; + } + /*return DBUS_HANDLER_RESULT_HANDLED;*/ + return; +} + +static void _delete_contacts_list(EMAIL_CONTACT_LIST_INFO_S *contacts_list_item) +{ + debug_log(""); + + if (contacts_list_item) { +#ifndef _NEW_CT_SVC_API + g_free(contacts_list_item->first_name); + contacts_list_item->first_name = NULL; + g_free(contacts_list_item->last_name); + contacts_list_item->last_name = NULL; +#else + g_free(contacts_list_item->display); + contacts_list_item->display = NULL; +#endif + g_free(contacts_list_item->email_address); + contacts_list_item->email_address = NULL; + g_free(contacts_list_item); + contacts_list_item = NULL; + } +} + +static void *_contact_search_by_email(EmailViewerUGD *ug_data, const char *search_word) +{ + debug_log(""); + if (!ug_data || !_g_ug_data) { + debug_log("data is NULL"); + return NULL; + } + + int ret = CTS_SUCCESS; + CTSiter *iter = NULL; + + EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = NULL; + contacts_svc_connect(); + + debug_log("search_word = %s", search_word); + + if (contacts_svc_get_list_with_str(CTS_LIST_EMAILINFOS_WITH_EMAIL, search_word, &iter) != CTS_SUCCESS) { + return NULL; + } + + ret = contacts_svc_iter_next(iter); + + if (CTS_SUCCESS == ret) { + CTSvalue *row_info = NULL; + + row_info = contacts_svc_iter_get_info(iter); + if (row_info) { + contacts_list_item = (EMAIL_CONTACT_LIST_INFO_S *)calloc(1, sizeof(EMAIL_CONTACT_LIST_INFO_S)); + + int index = contacts_svc_value_get_int(row_info, CTS_LIST_EMAIL_CONTACT_ID_INT); + + contacts_list_item->index = index; +#ifndef _NEW_CT_SVC_API + contacts_list_item->first_name = g_strdup(contacts_svc_value_get_str(row_info, CTS_LIST_EMAIL_CONTACT_FIRST_STR)); + contacts_list_item->last_name = g_strdup(contacts_svc_value_get_str(row_info, CTS_LIST_EMAIL_CONTACT_LAST_STR)); +#else + contacts_list_item->display = g_strdup(contacts_svc_value_get_str(row_info, CTS_LIST_EMAIL_CONTACT_DISPLAY_STR)); +#endif + contacts_list_item->email_address = g_strdup(contacts_svc_value_get_str(row_info, CTS_LIST_EMAIL_ADDR_STR)); + +#ifndef _NEW_CT_SVC_API + char *first = contacts_list_item->first_name; + char *last = contacts_list_item->last_name; + char *display = g_strdup(contacts_svc_value_get_str(row_info, CTS_LIST_EMAIL_CONTACT_DISPLAY_STR)); + + if (!display) { + if (first != NULL && last != NULL) { + if (CTS_ORDER_NAME_FIRSTLAST == contacts_svc_get_order(CTS_ORDER_OF_DISPLAY)) { + display = g_strconcat(first, " ", last, NULL); + } else { + display = g_strconcat(last, " ", first, NULL); + } + } else if (first != NULL || last != NULL) { + display = (first != NULL) ? g_strdup(first) : g_strdup(last); + } else { + display = g_strdup(" "); + } + } + + snprintf(contacts_list_item->display_name, sizeof(contacts_list_item->display_name), "%s", display); + g_free(display); +#else + snprintf(contacts_list_item->display_name, sizeof(contacts_list_item->display_name), "%s", contacts_list_item->display); +#endif + + } + + contacts_svc_value_free(row_info); + row_info = NULL; + + contacts_svc_iter_remove(iter); + } + + contacts_svc_disconnect(); + + return contacts_list_item; +} + +static void _set_value_down_progress(double val) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + char buf[30] = { 0, }; + EmailViewerUGD *ug_data = _g_ug_data; + + sprintf(buf, "%s: %d", dgettext("sys_string", "IDS_COM_POP_DOWNLOADING"), (int)val); + + if (ug_data->pb_notify_lb) { + elm_progressbar_value_set(ug_data->pb_notify_lb, val); + elm_object_text_set(ug_data->pb_notify_lb, buf); + } +} + +static void _set_value_down_progress_by_index(double val, int index) +{ + debug_log(""); + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + EmailViewerProp *prop = ug_data->property; + + if (val < 0.0) { + debug_log("val(%f) is MINUS"); + return; + } + + if (index < 0 || index >= ATTACH_MAX) { + debug_log("index(%d) is overflowed"); + return; + } + + if (prop == NULL) { + debug_log("prop is NULL"); + return; + } + + if (prop->attachments == NULL) { + debug_log("attachments is NULL"); + return; + } + + int per = val * 100; + int attach_index = _get_attachment_info_index(ug_data, index); + EmailAttachmentType *info = g_list_nth_data(prop->attachments, attach_index); + + if (info == NULL) { + debug_log("info is NULL"); + } + + if (ug_data->progress_bar[index] == NULL) { + debug_log("obj is NULL"); + return; + } + + char *pszTemp = NULL; + pszTemp = (char *)elm_object_style_get(ug_data->progress_bar[index]); + + if (STR_INVALID(pszTemp)) + return; + + if (g_strcmp0(pszTemp, "pending_list") == 0) { + debug_log("pending_list so return"); + return; + } + + elm_progressbar_value_set(ug_data->progress_bar[index], val); + + if (ug_data->progress_bar_ly[index] != NULL) { + char buf[30] = { 0, }; + snprintf(buf, sizeof(buf), "%d%%", per); + + Evas_Object *downloading_label2; + downloading_label2 = elm_label_add(ug_data->progress_bar_ly[index]); + elm_object_part_content_set(ug_data->progress_bar_ly[index], "elm.text.2", downloading_label2); + char *buf_tagged = g_strconcat("", buf, "", NULL); + elm_object_text_set(downloading_label2, buf_tagged); + g_free(buf_tagged); + } +} + +static void _cancel_download_attachment(EmailViewerUGD *ug_data) +{ + debug_log(""); + int i = 0; + gboolean is_cancel = FALSE; + + if (!_g_ug_data) { + debug_log("data is NULL"); + return; + } + + EmailViewerPrivate *priv = ug_data->email_data; + EmailViewerProp *prop = ug_data->property; + + if (priv && priv->download_all_cnt <= 0) { + debug_log("No attachment download to be cancelled!"); + return; + } + + for (i = 0; i <= prop->att_len; i++) { + if (ug_data->progress_bar_ly[i]) { + Evas_Object *btn = elm_object_part_content_get(ug_data->progress_bar_ly[i], "elm.icon.1"); + debug_log("Cancel btn for downloading attachment: %p", btn); + if (btn) { + evas_object_smart_callback_call(btn, "clicked", NULL); + is_cancel = TRUE; + } + } + } + + if (is_cancel == TRUE && ug_data->ug_composer == NULL) { + _create_notify(ug_data, dgettext("sys_string", "IDS_COM_POP_WARNING"), _("IDS_EMAIL_POP_CANCELLING_ATTACHMENT_DOWNLOAD_ING"), + 1, dgettext("sys_string", "IDS_COM_SK_OK"), _popup_response_cb, + NULL, NULL, NULL); + } +} + +static char *_get_service_fail_type(int type) +{ + debug_log(""); + + char *ret = NULL; + char str[MAX_STR_LEN] = { 0, }; + + if (type == -174) { + snprintf(str, sizeof(str), "%s: %s", _("IDS_EMAIL_POP_FAILED_TO_ACTIVATE_PDP"), N_("IP full")); + return g_strdup(str); + } else if (type == -176) { + ret = _("IDS_EMAIL_POP_NO_SERVICE"); + return g_strdup(ret); + } else if (type == -181) { + snprintf(str, sizeof(str), "%s: %s", _("IDS_EMAIL_POP_FAILED_TO_ACTIVATE_PDP"), N_("Transport Error")); + return g_strdup(str); + } else if (type == EMAIL_ERROR_NETWORK_TOO_BUSY) { + ret = _("IDS_EMAIL_POP_NETWORK_BUSY"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_LOGIN_ALLOWED_EVERY_15_MINS) { + snprintf(str, sizeof(str), _("IDS_EMAIL_POP_YOU_CAN_ONLY_LOG_IN_ONCE_EVERY_PD_MINUTES"), 15); + return g_strdup(str); + } else if (type == EMAIL_ERROR_CONNECTION_FAILURE) { + ret = dgettext("sys_string", "IDS_COM_POP_CONNECTION_FAILED"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_LOGIN_FAILURE) { + ret = _("IDS_EMAIL_POP_LOG_IN_FAILED"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_AUTHENTICATE) { + ret = _("IDS_EMAIL_POP_AUTHENTICATION_FAILED"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_CANCELLED) { + ret = _("IDS_EMAIL_POP_DOWNLOAD_CANCELLED"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_MAIL_NOT_FOUND_ON_SERVER) { + ret = _("IDS_EMAIL_POP_EMAIL_DELETED_FROM_SERVER"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_NO_SUCH_HOST) { + ret = _("IDS_EMAIL_POP_HOST_NOT_FOUND"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_INVALID_SERVER) { + ret = _("IDS_EMAIL_POP_SERVER_NOT_AVAILABLE"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_MAIL_MEMORY_FULL) { + ret = _("IDS_EMAIL_POP_DEVICE_STORAGE_FULL"); + return g_strdup(ret); + } else if (type == EMAIL_ERROR_FAILED_BY_SECURITY_POLICY) { + ret = _("IDS_EMAIL_POP_DOWNLOADING_ATTACHMENTS_ON_THE_MOBILE_DEVICE_IS_NOT_ALLOWED_BY_EXCHANGE_SERVER_POLICY"); + return g_strdup(ret); + } else { + snprintf(str, sizeof(str), "%s (%d)", dgettext("sys_string", "IDS_COM_POP_INTERNAL_ERROR"), type); + return g_strdup(str); + } +} + +static Evas_Object *_load_edj(Evas_Object *parent, const char *file, const char *group) +{ + debug_log(""); + Evas_Object *eo; + int r; + + eo = elm_layout_add(parent); + if (eo) { + r = elm_layout_file_set(eo, file, group); + if (!r) { + evas_object_del(eo); + return NULL; + } + + evas_object_size_hint_weight_set(eo, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + } + + return eo; +} + +/* genlist cb */ +static Eina_Bool _gl_state_get(void *data, Evas_Object *obj, const char *part) +{ + debug_log(""); + return EINA_FALSE; +} + +static void _gl_del(void *data, Evas_Object *obj) +{ + debug_log(""); + + if (_g_ug_data == NULL) { + debug_log("ug_data is NULL"); + return; + } + + EmailViewerUGD *ug_data = _g_ug_data; + + if (ug_data->move_mailbox_list) { + email_free_mailbox(&ug_data->move_mailbox_list, ug_data->move_mailbox_count); + ug_data->move_mailbox_list = NULL; + ug_data->move_mailbox_count = 0; + } + + return; +} + +static char *_gl_text_get(void *data, Evas_Object *obj, const char *part) +{ + debug_log(""); + email_mailbox_t *mailbox_list = NULL; + mailbox_list = (email_mailbox_t *) data; + + if (g_strcmp0(part, "elm.text") == 0) { + char buf[MAX_STR_LEN] = { 0, }; + if (mailbox_list && mailbox_list->alias) { + snprintf(buf, sizeof(buf), "%s", mailbox_list->alias); + return g_strdup(buf); + } + } + + return NULL; +} + +static Evas_Object *_gl_content_get(void *data, Evas_Object *obj, const char *part) +{ + debug_log(""); + + if (g_strcmp0(part, "elm.icon") == 0) { + Evas_Object *icon = elm_icon_add(obj); + elm_icon_file_set(icon, IMGDIR "/U01_icon_folder.png", NULL); + evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + + return icon; + } + + return NULL; +} + +static void _gl_sel(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + EmailViewerUGD *ug_data = _g_ug_data; + email_mailbox_t *mailbox_list = NULL; + mailbox_list = (email_mailbox_t *) data; + Elm_Object_Item *item = (Elm_Object_Item *)event_info; + elm_genlist_item_selected_set(item, EINA_FALSE); + + Elm_Object_Item *git = NULL; + Evas_Object *gl = elm_genlist_add(ug_data->navi_bar); + evas_object_show(gl); + + git = elm_genlist_item_append(gl, &(ug_data->itc3), NULL, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); + elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY); + elm_genlist_item_append(gl, &ug_data->itc2, NULL, git, ELM_GENLIST_ITEM_NONE, _gl_sub_upper_sel, NULL); + + Evas_Object *cbar = elm_toolbar_add(ug_data->navi_bar); + elm_toolbar_shrink_mode_set(cbar, ELM_TOOLBAR_SHRINK_EXPAND); + elm_object_style_set(cbar, "naviframe"); + evas_object_show(cbar); + + elm_toolbar_item_append(cbar, NULL, _("IDS_EMAIL_SK3_MOVE_HERE"), _move_here_cb, mailbox_list); + elm_object_item_disabled_set(elm_toolbar_item_append(cbar, NULL, "", NULL, NULL), EINA_TRUE); + + Elm_Object_Item *navi_it = NULL; + navi_it = elm_naviframe_item_push(ug_data->navi_bar, dgettext("sys_string", "IDS_COM_BODY_MOVE"), NULL, NULL, gl, NULL); + elm_object_item_part_content_set(navi_it, "controlbar", cbar); + ug_data->navi_move_it2 = navi_it; + + Evas_Object *move_back_btn = NULL; + if (ug_data->isRotate) { + elm_naviframe_item_title_visible_set(navi_it, EINA_FALSE); + move_back_btn = elm_object_item_part_content_get(navi_it, "prev_btn"); + if (move_back_btn) { + evas_object_del(move_back_btn); + elm_object_item_part_content_set(navi_it, "prev_btn", NULL); + } + } else { + move_back_btn = elm_object_item_part_content_get(navi_it, "prev_btn"); + if (move_back_btn) { + evas_object_del(move_back_btn); + move_back_btn = elm_button_add(ug_data->navi_bar); + elm_object_style_set(move_back_btn, "naviframe/back_btn/default"); + evas_object_smart_callback_add(move_back_btn, "clicked", _move_back_cb2, ug_data); + elm_object_item_part_content_set(navi_it, "prev_btn", move_back_btn); + } + } + return; +} + +static char *_gl_sub_upper_text_get(void *data, Evas_Object *obj, const char *part) +{ + debug_log(""); + email_mailbox_t *mailbox_list = NULL; + mailbox_list = (email_mailbox_t *) data; + + if (g_strcmp0(part, "elm.text") == 0) { + char buf[MAX_STR_LEN] = { 0, }; + snprintf(buf, sizeof(buf), "%s", _("IDS_EMAIL_MBODY_MAILBOX_LIST")); + return g_strdup(buf); + } + + return NULL; +} + +static Evas_Object *_gl_sub_upper_icon_get(void *data, Evas_Object *obj, const char *part) +{ + debug_log(""); + + if (g_strcmp0(part, "elm.icon") == 0) { + Evas_Object *icon = elm_icon_add(obj); + elm_icon_file_set(icon, IMGDIR "/U01_icon_upper_folder_focus.png", NULL); + evas_object_size_hint_aspect_set(icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); + + return icon; + } + + return NULL; +} + +static void _gl_sub_upper_sel(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + EmailViewerUGD *ug_data = _g_ug_data; + + Elm_Object_Item *item = (Elm_Object_Item *)event_info; + elm_genlist_item_selected_set(item, EINA_FALSE); + + ug_data->navi_move_it2 = NULL; + elm_naviframe_item_pop(ug_data->navi_bar); + + return; +} + +static void _move_here_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (data == NULL || _g_ug_data == NULL) { + debug_log("data is NULL"); + return; + } + + email_mailbox_t *mailbox_list = NULL; + mailbox_list = (email_mailbox_t *) data; + + EmailViewerUGD *ug_data = _g_ug_data; + int folder_id = mailbox_list->mailbox_id; + + _move_email(ug_data, folder_id, FALSE); + + ug_data->navi_move_it1 = NULL; + ug_data->navi_move_it2 = NULL; + elm_naviframe_item_pop_to(ug_data->navi_main_it); + + if (ug_data->isRotate == false && ug_data->b_internal) { + /* Viewer to hide, so set left content (mailbox) size to full */ + _notify_mailbox_size(ug_data, "MAILBOX_RESIZE_FULL"); + } + + if (ug_data->b_internal) { + _hide_view(ug_data); + + /* send next or previous mail request to mailbox. */ + int ret; + service_h service = NULL; + + ret = service_create(&service); + debug_log("service_create: %d", ret); + if (!service) { + debug_log("service create failed"); + return; + } + + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_MSG, EMAIL_BUNDLE_VAL_NEXT_MSG); + debug_log("service_add_extra_data: %d", ret); + ret = service_add_extra_data(service, EMAIL_BUNDLE_KEY_DO_DELETE, "1"); + debug_log("service_add_extra_data: %d", ret); + + ug_send_message(_g_mailbox_ug, service); + + ret = service_destroy(service); + debug_log("service_destroy: %d", ret); + } else { + ug_destroy_me(ug_data->ug); + } +} + +static void _move_back_cb(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (data == NULL || _g_ug_data == NULL) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + elm_naviframe_item_pop(ug_data->navi_bar); + ug_data->navi_move_it1 = NULL; + ug_data->navi_move_it2 = NULL; + + /*if (ug_data->b_internal) + elm_layout_theme_set(ug_data->layout_main, "layout", "controlbar", "default"); + else + elm_layout_theme_set(ug_data->layout_main, "layout", "application", "controlbar");*/ +} + +static void _move_back_cb2(void *data, Evas_Object *obj, void *event_info) +{ + debug_log(""); + + if (data == NULL || _g_ug_data == NULL) { + debug_log("data is NULL"); + return; + } + + EmailViewerUGD *ug_data = (EmailViewerUGD *)data; + + elm_naviframe_item_pop(ug_data->navi_bar); + ug_data->navi_move_it2 = NULL; +} + +/* EOF */ diff --git a/viewer/theme/_email_default.html b/viewer/theme/_email_default.html new file mode 100755 index 0000000..b67e4c6 --- /dev/null +++ b/viewer/theme/_email_default.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/viewer/theme/email-viewer-theme-macro.edc b/viewer/theme/email-viewer-theme-macro.edc new file mode 100755 index 0000000..2fe9a25 --- /dev/null +++ b/viewer/theme/email-viewer-theme-macro.edc @@ -0,0 +1,673 @@ +/* + * 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. + */ + +#define ELM_SCALE 1.0 +#define SCALE(x) (x/ELM_SCALE) + +#define GENLIST_PART_BG_COLOR_INC 239 239 239 255 +#define GENLIST_PART_BG_SELECTED_COLOR_INC 199 185 164 0 +#define GENLIST_PART_SELECT_ALL_BG_COLOR_INC 239 237 230 255 +#define GENLIST_PART_TEXT_COLOR_INC 0 0 0 255 +#define GENLIST_PART_TEXT_SELECTED_COLOR_INC 255 255 255 255 +#define GENLIST_PART_SUB_TEXT_COLOR_INC 108 108 108 255 +#define GENLIST_PART_BOTTOM_LINE_INC 199 199 199 255 +#define GENLIST_GROUP_PART_TEXT_COLOR_INC 108 108 108 255 +#define GENLIST_GROUP_PART_BASE_EVENT_INC \ + part { name: "base_event"; \ + type: RECT; \ + repeat_events: 0; \ + description { state: "default" 0.0; \ + color: 0 0 0 0; \ + } \ + } +#define GENLIST_GROUP_PART_BASE_IMAGE_INC \ + part { name: "base_image"; \ + repeat_events: 1; \ + description { state: "default" 0.0; \ + rel1.to: "rect"; \ + rel2.to: "rect"; \ + image {\ + normal: "01_list_group_title_bg.png"; \ + } \ + } \ + } +#define GENLIST_GROUP_BG_COLOR_DEFAULT_INC 0 0 0 0 +#define GENLIST_GROUP_BG_COLOR_ALPHA_OFF_INC 0 0 0 0 +//color: 190 186 171 200; +//color: 190 186 171 255; +#define GENLIST_GROUP_LEFT_BG_COLOR_INC 210 206 191 255 +#define GENLIST_EDIT_PART_LINE_INC 187 187 187 150 +#define GENLIST_EDIT_BG_COLOR_INC 234 230 217 255 +#define GENLIST_EXPANDABLE_PART_BG_COLOR_INC GENLIST_PART_BG_COLOR_INC +#define GENLIST_EXPANDABLE2_PART_BG_COLOR_INC 242 238 233 255 +#define GENLIST_EXPANDABLE3_PART_BG_COLOR_INC 218 212 205 255 +#define GENLIST_EXPANDABLE2_NOSHADOW_BG_COLOR_INC 242 238 233 255 +#define GENLIST_EXPANDABLE_PART_BG_IMAGE_INC \ + part { name: "bg_image"; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + image { \ + normal: "00_list_expandable_bg.png"; \ + border: 0 0 12 6; \ + border_scale: 1; \ + } \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + image.normal: "00_list_bar_press_1x80.png"; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } +#define GENLIST_PART_BG_EXPANDABLE3_IMAGE_INC \ + part { name: "bg_image"; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + image { \ + normal: "00_list_expandable_2_bg.png"; \ + border: 0 0 12 6; \ + border_scale: 1; \ + } \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + image.normal: "00_list_bar_press_1x80.png"; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } +#define GENLIST_EXPANDABLE3_PART_BG_IMAGE_INC \ + part { name: "bg_image"; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + image { \ + normal: "00_list_expandable_2_bg.png"; \ + border: 0 0 12 6; \ + border_scale: 1; \ + } \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + image.normal: "00_list_bar_press_1x80.png"; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } +#define GENLIST_EXPANDABLE3_NOSHADOW_PART_BG_IMAGE_INC \ + part { name: "bg_image"; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + image { \ + normal: "00_list_expandable_2_noshadow_bg.png"; \ + border: 0 0 0 6; \ + border_scale: 1; \ + } \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + image.normal: "00_list_bar_press_1x80.png"; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } + +#define BEAT_GENLIST_PART_BASE( param_item_height ) \ + part { name: "base"; \ + type: RECT; \ + repeat_events: 1; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 param_item_height; \ + color: GENLIST_PART_BG_COLOR_INC; \ + } \ + description { state: "pressed" 0.0; \ + inherit: "default" 0.0; \ + color: 42 137 194 255; \ + } \ + } + +#define BEAT_GENLIST_PART_BASE2( param_item_height, param_item_color ) \ + part { name: "base"; \ + type: RECT; \ + repeat_events: 1; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 param_item_height; \ + color: param_item_color; \ + } \ + } + +#define BEAT_GENLIST_PART_BG \ + part { name: "bg"; \ + type: RECT; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + color: GENLIST_PART_BG_COLOR_INC; \ + } \ + description { state: "hide" 0.0; \ + inherit: "default" 0.0; \ + rel1 { relative: 0.025 0.0; } \ + rel2 { relative: 1.025 1.0; } \ + } \ + description { state: "hide" 0.1; \ + inherit: "default" 0.0; \ + rel1 { relative: 0.13 0.0; } \ + rel2 { relative: 1.13 1.0; } \ + } \ + description { state: "hide" 0.2; \ + inherit: "default" 0.0; \ + rel1 { relative: 0.5 0.0; } \ + rel2 { relative: 1.5 1.0; } \ + } \ + description { state: "hide" 0.3; \ + inherit: "default" 0.0; \ + rel1 { relative: 1.0 0.0; } \ + rel2 { relative: 2.0 1.0; } \ + } \ + } + +#define BEAT_GENLIST_PART_BG_IMAGE \ + part { name: "bg_image"; \ + type: RECT; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + visible: 0; \ + color: GENLIST_PART_BG_SELECTED_COLOR_INC; \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + visible: 1; \ + } \ + } + +#define BEAT_GENLIST_PART_BOTTOM_LINE \ + part { name: "bottom_line"; \ + type: RECT; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + min: 0 1; \ + fixed: 0 1; \ + visible: 1; \ + color: GENLIST_PART_BOTTOM_LINE_INC; \ + rel1 { \ + relative: 0.0 1.0; \ + offset: 0 -1; \ + } \ + } \ + } + +#define BEAT_GENLIST_PART_BOTTOM_EFFECT_LINE \ + part { name: "bottom_line"; \ + type: RECT; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + min: 0 1; \ + fixed: 0 1; \ + visible: 1; \ + color: GENLIST_PART_BOTTOM_LINE_INC; \ + rel1 { \ + relative: 0.0 1.0; \ + offset: 0 -1; \ + } \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } + +#define BEAT_GENLIST_PART_PADDING_TOP( param_padding_size ) \ + part { name: "elm.padding.top"; \ + type: RECT; \ + scale: 1; \ + description { \ + state: "default" 0.0; \ + min: 0 param_padding_size; \ + fixed: 0 1; \ + visible: 0; \ + rel2.relative: 1.0 0.0; \ + align: 0.0 0.0; \ + } \ + } + +#define BEAT_GENLIST_PART_PADDING_TEXT_TOP( param_padding_size ) \ + part { name: "elm.padding.text.top"; \ + type: RECT; \ + scale: 1; \ + description { \ + state: "default" 0.0; \ + min: 0 param_padding_size; \ + fixed: 0 1; \ + visible: 0; \ + rel2.relative: 1.0 0.0; \ + align: 0.0 0.0; \ + } \ + } + +#define BEAT_GENLIST_PART_PADDING_BOTTOM( param_padding_size ) \ + part { name: "elm.padding.bottom"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 param_padding_size; \ + fixed: 0 1; \ + visible: 0; \ + rel1.relative: 0.0 1.0; \ + align: 0.0 1.0; \ + } \ + } + +#define BEAT_GENLIST_PART_PADDING_LEFT( param_padding_size ) \ + part { name: "elm.padding.left"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: param_padding_size 0; \ + fixed: 1 0; \ + visible: 0; \ + rel2.relative: 0.0 1.0; \ + align: 0.0 0.0; \ + } \ + } + +#define BEAT_GENLIST_PART_PADDING_RIGHT( param_padding_size ) \ + part { name: "elm.padding.right"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: param_padding_size 0; \ + fixed: 1 0; \ + visible: 0; \ + rel1.relative: 1.0 0.0; \ + align: 1.0 0.0; \ + } \ + } + +#define BEAT_GENLIST_PART_DIALOGUE_BASE( param_item_height ) \ + part { name: "base"; \ + type: RECT; \ + repeat_events: 1; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 param_item_height; \ + color: 242 238 233 255; \ + } \ + } + +#define BEAT_GENLIST_PART_DIALOGUE_PADDING_RIGHT( param_padding_size ) \ + part { name: "elm.padding.right"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: param_padding_size 0; \ + fixed: 1 0; \ + visible: 0; \ + rel1.relative: 1.0 0.0; \ + align: 1.0 0.0; \ + } \ + description { state: "editing" 0.0; \ + inherit: "default" 0.0; \ + min: 56 0; \ + visible: 1; \ + color: 242 238 233 255; \ + } \ + } + +#define BEAT_GENLIST_PART_DIALOGUE_ITEM \ + part { name: "elm.rect.dialogue"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 10 0; \ + fixed: 1 0; \ + color: 199 199 199 255; \ + rel2.relative: 0.0 1.0; \ + align: 0.0 0.0; \ + } \ + } + +#define BEAT_GENLIST_PART_SWALLOW_END( param_padding_size ) \ + part { name: "elm.padding.left.swallow.end"; \ + clip_to: "disclip"; \ + type: RECT; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: param_padding_size 0; \ + fixed: 1 0; \ + visible: 0; \ + rel1.to_x: "elm.swallow.end"; \ + rel2 { \ + relative: 0.0 1.0; \ + to_x: "elm.swallow.end"; \ + } \ + align: 1.0 0.5; \ + } \ + } \ + part { name: "elm.swallow.end"; \ + clip_to: "disclip"; \ + type: SWALLOW; \ + scale: 1; \ + description { state: "default" 0.0; \ + fixed: 1 0; \ + align: 1.0 0.5; \ + rel1.to_x: "elm.padding.right"; \ + rel2 {\ + relative: 0.0 1.0; \ + to_x: "elm.padding.right"; \ + } \ + } \ + } + +#define BEAT_GENLIST_PART_DISCLIP \ + part { name: "disclip"; \ + type: RECT; \ + description { state: "default" 0.0; \ + } \ + description { state: "disabled" 0.0; \ + inherit: "default" 0.0; \ + color: 255 255 255 64; \ + } \ + } + +#define BEAT_GENLIST_PART_LIST_PICKER_BASE( param_item_height ) \ + part { name: "base"; \ + type: RECT; \ + repeat_events: 1; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 param_item_height; \ + color: 71 61 53 255; \ + } \ + } + +#define BEAT_GENLIST_PART_LIST_PICKER_BOTTOM_LINE \ + part { name: "bottom_line"; \ + type: RECT; \ + clip_to: "disclip"; \ + mouse_events: 0; \ + description { state: "default" 0.0; \ + min: 0 1; \ + fixed: 0 1; \ + visible: 1; \ + color: 104 97 92 255; \ + rel1 { \ + relative: 0.0 1.0; \ + offset: 0 -1; \ + } \ + } \ + } + +#define GENLIST_EXPANDABLE_PART_PERSPECTIVE_POINT() \ + part { name: "point"; \ + type: RECT; \ + scale: 1; \ + description { \ + state: "default" 0.0; \ + color: 0 0 0 0; \ + rel1 { relative: 0.0 0.0; } \ + rel2 { relative: 1.0 0.0; } \ + } \ + } + +#define BEAT_GENLIST_PART_MAP_START( param_x, param_y, param_z ) \ + description { state: "map_transition" 0.0; \ + inherit: "default" 0.0; \ + map { \ + perspective: "point"; \ + on: 1; \ + smooth: 1; \ + perspective_on: 1; \ + backface_cull: 1; \ + rotation { \ + center: "point"; \ + x: param_x; \ + y: param_y; \ + z: param_z; \ + } \ + } \ + } \ + description { \ + state: "hide" 0.0; \ + inherit: "default" 0.0; \ + visible: 0; \ + } + +#define BEAT_GENLIST_PART_MAP_FINISH( param_x, param_y, param_z ) \ + description { \ + state: "map_rotate" 0.0; \ + inherit: "default" 0.0; \ + map { \ + perspective: "point"; \ + on: 1; \ + smooth: 1; \ + perspective_on: 1; \ + backface_cull: 1; \ + rotation { \ + center: "point"; \ + x: param_x; \ + y: param_y; \ + z: param_z; \ + } \ + } \ + } \ + +#define BEAT_GENLIST_PART_MAP_BASE( param_item_height ) \ + part { name: "base"; \ + type: RECT; \ + repeat_events: 1; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 param_item_height; \ + color: GENLIST_PART_BG_COLOR_INC; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } + +#define GENLIST_EXPANDABLE_PART_BASE( GE_HEIGHT, GE_COLOR ) \ + part { name: "base"; \ + type: RECT; \ + repeat_events: 1; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 GE_HEIGHT; \ + color: GE_COLOR; \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + color: GENLIST_PART_BG_SELECTED_COLOR_INC; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } + +#define BEAT_GENLIST_PROGRAM_MAP_ROTATE_START() \ + name: "rotaion_transition"; \ + signal: "flip_item"; \ + action: STATE_SET "map_transition" 0.0; \ + after: "rotation"; + +#define BEAT_GENLIST_PROGRAM_MAP_ROTATE_FINISH( second ) \ + name: "rotation"; \ + action: STATE_SET "map_rotate" 0.0; \ + transition: LINEAR second; \ + after: "rotation_end"; + +#define BEAT_GENLIST_PROGRAM_MAP_END() \ + name: "rotation_end"; \ + action: STATE_SET "default" 0.0; + +#define BEAT_GENLIST_PROGRAM_MAP_ROTATE_START2() \ + name: "rotaion_transition2"; \ + signal: "elm,state,contract_flip"; \ + action: STATE_SET "map_rotate" 0.0; \ + after: "rotation2"; + +#define BEAT_GENLIST_PROGRAM_MAP_ROTATE_FINISH2( second ) \ + name: "rotation2"; \ + action: STATE_SET "map_transition" 0.0; \ + transition: LINEAR second; \ + after: "rotation3"; + +#define BEAT_GENLIST_PROGRAM_MAP_END2() \ + name: "rotation3"; \ + action: STATE_SET "hide" 0.0; + +#define BEAT_GENLIST_PART_EXPANDABLE2_NOSHADOW_BASE( param_item_height ) \ + part { name: "base"; \ + type: RECT; \ + repeat_events: 1; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 param_item_height; \ + color: GENLIST_EXPANDABLE2_NOSHADOW_BG_COLOR_INC; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } + +#define BEAT_GENLIST_PART_EXPANDABLE_SWALLOW_PADDING \ + part { name: "elm.swallow.pad"; \ + type: SWALLOW; \ + description { state: "default" 0.0; \ + fixed: 1 0; \ + align: 0.0 0.5; \ + rel1 { \ + relative: 1.0 0.0; \ + to_x: "elm.padding.left"; \ + } \ + rel2.to_x: "elm.padding.left"; \ + } \ + BEAT_GENLIST_PART_MAP_START(-90.0, 0.0, 0.0) \ + BEAT_GENLIST_PART_MAP_FINISH(0.0, 0.0, 0.0) \ + } \ + +#define BEAT_GENLIST_PART_PADDING_LEFT_SLIDE( param_padding_size ) \ + part { name: "elm.padding.left"; \ + type: RECT; \ + scale: 1; \ + description { \ + state: "default" 0.0; \ + min: param_padding_size 0; \ + fixed: 1 0; \ + visible: 0; \ + rel1 { relative: 0.0 0.0; to: "bg"; } \ + rel2 { relative: 0.0 1.0; to: "bg"; } \ + align: 0.0 0.0; \ + } \ + } + +/* only for demo */ +#define BEAT_GENLIST_PART_BUTTON( param_name, param_text_name, param_text, param_left, param_right, param_top, param_bottom ) \ + part { name: param_name; \ + mouse_events: 1; \ + description { state: "default" 0.0; \ + visible: 1; \ + rel1 { relative: param_left param_top; offset: 0 0; } \ + rel2 { relative: param_right param_bottom; offset: -1 -1; } \ + image { \ + normal: "btn_normal.png"; \ + border: 10 10 10 10; \ + border_scale: 1; \ + } \ + image.middle: SOLID; \ + fill.smooth: 0; \ + } \ + description { state: "selected" 0.0; \ + inherit: "default" 0.0; \ + image { \ + normal: "btn_selected.png"; \ + } \ + } \ + } \ + part { name: param_text_name; \ + type: TEXT; \ + mouse_events: 0; \ + scale: 1; \ + description { \ + align: 0.0 0.0; \ + state: "default" 0.0; \ + color: 0 0 0 255; \ + rel1 { relative: 0.0 0.0; to: param_name; } \ + rel2 { relative: 1.0 1.0; to: param_name; } \ + text { \ + text: param_text; \ + font: "SLP:style=Roman"; \ + size: 24; \ + min: 1 1; \ + align: 0.5 0.5; \ + } \ + } \ + } + +/* only for demo */ +#define BEAT_GENLIST_PROGRAM_BUTTON( param_name_focused, param_name_normal, param_part_name ) \ + program { name: param_name_focused; \ + source: param_part_name; \ + signal: "mouse,down,1"; \ + action: STATE_SET "selected" 0.0; \ + target: param_part_name; \ + } \ + program { name: param_name_normal; \ + source: param_part_name; \ + signal: "mouse,up,1"; \ + action: STATE_SET "default" 0.0; \ + target: param_part_name; \ + } + +#define BEAT_GENLIST_PROGRAM_SLIDE_WITH_AFTER( param_name, param_state, param_next ) \ + program { name: param_name; \ + action: STATE_SET "hide" param_state; \ + target: "bg"; \ + transition: LINEAR 0.3; \ + after: param_next; \ + } + +#define BEAT_GENLIST_PROGRAM_SLIDE( param_name, param_state_name, param_state_value ) \ + program { name: param_name; \ + action: STATE_SET param_state_name param_state_value; \ + target: "bg"; \ + transition: LINEAR 0.3; \ + } + +#define DESC_FLIP_IMAGE( param_state_value, param_image_file_name ) \ + description { state: "flipping" param_state_value; \ + inherit: "default" 0.0; \ + image { normal: param_image_file_name; } \ + } + +#define DESC_TEXT_HIDE( param_state_value ) \ + description { state: "hide" param_state_value; \ + inherit: "default" 0.0; \ + color: 0 0 0 (255*(1-param_state_value/0.20)); \ + } + +#define BEAT_GENLIST_EDIT_PART_BASE( param_item_height ) \ + part { name: "base"; \ + type: RECT; \ + repeat_events: 0; \ + scale: 1; \ + description { state: "default" 0.0; \ + min: 0 param_item_height; \ + color: 0 0 0 0; \ + } \ + } diff --git a/viewer/theme/email-viewer-theme.edc b/viewer/theme/email-viewer-theme.edc new file mode 100755 index 0000000..a3e50e2 --- /dev/null +++ b/viewer/theme/email-viewer-theme.edc @@ -0,0 +1,1760 @@ +/* + * 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. + */ + +#include "email-viewer-theme-macro.edc" + +collections { +//#include "email-viewer-button.edc" + + group { + name: "layout.email.web_view"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + + parts { + part { + name: "bg"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + //color: 246 245 237 255; + color: 255 255 255 255; + } + } + + part { + name: "web_body"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + align: 0.5 0.0; + fixed: 0 0; + aspect: 0.0 0.0; + aspect_preference: VERTICAL; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + } + } + } + } + + group { + name: "layout.email.no_content"; + + data.item: "stacking" "above"; + data.item: "selectraise" "on"; + + parts { + part { + name: "bg"; + type: RECT; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0;} + rel2 { relative: 1.0 1.0;} + color: 239 239 239 255; + } + } + + part { + name: "btn"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + align: 0.5 0.0; + fixed: 0 0; + //rel1 { relative: 0.05 0.85; } + //rel2 { relative: 0.95 0.95; } + rel1 { relative: 0.05 0.05; } + rel2 { relative: 0.95 0.1; } + } + } +/* + part { + name: "noc"; + type: SWALLOW; + scale: 1; + mouse_events: 1; + description { + state: "default" 0.0; + align: 0.5 0.0; + fixed: 0 0; + //rel1 { relative: 0.0 0.0; } + //rel2 { relative: 1.0 0.8; } + rel1 { relative: 0.0 0.25; } + rel2 { relative: 1.0 1.0; } + } + } +*/ + } + } + + group { name: "layout.email.partial_download_btn"; + parts { + part { name: "bg"; + type: RECT; + scale: 1; + description { + state: "default" 0.0; + min: 0 SCALE(80.0); + color: 239 239 239 255; + } + } + part { name: "button"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + rel1.relative: 15/450 1/5; + rel2.relative: 435/450 4/5; + } + } + } + } + + group + { + name: "layout.email.meeting_req_btn"; + + parts + { + part + { + name: "rect"; + type: RECT; + mouse_events: 0; + + description + { + min: 0 SCALE(60.0); + state: "default" 0.0; + color: 0 0 0 0; + } + } + + part + { + name: "swl_accept_btn"; + type: SWALLOW; + mouse_events: 1; + + description + { + state: "default" 0.0; + + rel1 + { + to: "rect"; + relative: 0.01 0.0; + } + rel2 + { + to: "rect"; + relative: 0.33 1.0; + } + } + } + + part + { + name: "swl_tentative_btn"; + type: SWALLOW; + mouse_events: 1; + + description + { + state: "default" 0.0; + + rel1 + { + to: "rect"; + relative: 0.33 0.0; + } + rel2 + { + to: "rect"; + relative: 0.66 1.0; + } + } + } + + part + { + name: "swl_decline_btn"; + type: SWALLOW; + mouse_events: 1; + + description + { + state: "default" 0.0; + + rel1 + { + to: "rect"; + relative: 0.66 0.0; + } + rel2 + { + to: "rect"; + relative: 0.99 1.0; + } + } + } + } + } + + group { + name: "layout.email.detail_subject"; + + images { + image: "00_list_bar_press_1x80.png" COMP; + image: "M02_button_expand_closed.png" COMP; + image: "M02_button_expand_closed_press.png" COMP; + image: "M02_button_expand_opened.png" COMP; + image: "M02_button_expand_opened_press.png" COMP; + image: "M02_inbox_top_line.png" COMP; + image: "M02_button_expand.png" COMP; + image: "M02_button_expand_press.png" COMP; + } + + parts + { + BEAT_GENLIST_PART_BASE( SCALE(160.0) ) + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_TOP( SCALE(26.0) ) + BEAT_GENLIST_PART_PADDING_BOTTOM( SCALE(10.0) ) + BEAT_GENLIST_PART_PADDING_LEFT( SCALE(16.0) ) + BEAT_GENLIST_PART_PADDING_RIGHT( SCALE(16.0) ) + + part + { + name: "elm.topline"; + clip_to: "disclip"; + type: IMAGE; + scale: 1; + description { + state: "default" 0.0; + min: 0 SCALE(10.0); + fixed: 1 1; + align: 0.0 0.5; + rel1 { + relative: 0.0 0.0; + to: "elm.padding.top"; + } + rel2 { + relative: 1.0 0.0; + offset: 0 SCALE(10.0); + to: "elm.padding.top"; + } + image.normal: "M02_inbox_top_line.png"; + } + } + + part + { + name: "elm.text"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + min: 0 SCALE(40.0); + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: -1*SCALE(80.0) 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.top"; + } + color: 0 0 0 255; + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 255; + } + } + + part + { + name: "elm.subbox"; + clip_to: "disclip"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 0 SCALE(48.0); + fixed: 1 0; + visible: 0; + align: 0.0 0.5; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.padding.left"; + to_y: "elm.text"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + } + } + + part + { + name: "elm.text.sub"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + + rel1 { + relative: 0.0 0.0; + to: "elm.subbox"; + } + rel2 { + relative: 1.0 1.0; + offset: -1*SCALE(160.0) 0; + to: "elm.subbox"; + } + + color: 100 100 100 255; + text { + font: "SLP:style=Regular"; + size: SCALE(36.0); + min: 0 1; + align: 0.0 0.5; + } + } + description { + state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 255; + } + } + + part + { + name: "elm.icon.attach"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + min: SCALE(32.0) SCALE(32.0); + max: SCALE(32.0) SCALE(32.0); + fixed: 1 1; + align: 0.0 0.5; + visible: 1; + + rel1 { + relative: 1.0 0.0; + offset: -1*SCALE(152.0) SCALE(8.0); + to: "elm.subbox"; + } + rel2 { + relative: 1.0 1.0; + offset: -1*SCALE(120.0) -1*SCALE(8.0); + to: "elm.subbox"; + } + } + } + + part + { + name: "elm.icon.sign"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + min: SCALE(32.0) SCALE(32.0); + max: SCALE(32.0) SCALE(32.0); + fixed: 1 1; + align: 0.0 0.5; + visible: 1; + + rel1 { + relative: 1.0 0.0; + offset: -1*SCALE(152.0) SCALE(8.0); + to: "elm.subbox"; + } + rel2 { + relative: 1.0 1.0; + offset: -1*SCALE(120.0) -1*SCALE(8.0); + to: "elm.subbox"; + } + } + } + + part + { + name: "elm.icon.encrypt"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + min: SCALE(32.0) SCALE(32.0); + max: SCALE(32.0) SCALE(32.0); + fixed: 1 1; + align: 0.0 0.5; + visible: 1; + + rel1 { + relative: 1.0 0.0; + offset: -1*SCALE(112.0) SCALE(8.0); + to: "elm.subbox"; + } + rel2 { + relative: 1.0 1.0; + offset: -1*SCALE(80.0) -1*SCALE(8.0); + to: "elm.subbox"; + } + } + } + + part + { + name: "touch_favorite"; + type: RECT; + clip_to: "disclip"; + scale: 1; + description { + state: "default" 0.0; + min: SCALE(64.0) SCALE(64.0); + max: SCALE(64.0) SCALE(64.0); + fixed: 1 1; + align: 0.0 0.5; + visible: 1; + + rel1 { + relative: 1.0 0.0; + offset: -1*SCALE(72.0) SCALE(8.0); + to: "elm.subbox"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 -1*SCALE(8.0); + to: "elm.subbox"; + } + color: 0 0 0 0; + } + } + + part + { + name: "elm.icon.favorite"; + type: SWALLOW; + scale: 1; + description { + state: "default" 0.0; + min: SCALE(64.0) SCALE(64.0); + max: SCALE(64.0) SCALE(64.0); + fixed: 1 1; + align: 0.0 0.5; + visible: 1; + + rel1 { + relative: 1.0 0.0; + offset: -1*SCALE(72.0) SCALE(8.0); + to: "elm.subbox"; + } + rel2 { + relative: 1.0 1.0; + offset: 0 -1*SCALE(8.0); + to: "elm.subbox"; + } + } + } + + part + { + name: "touch_arrow"; + type: RECT; + clip_to: "disclip"; + ignore_flags: ON_HOLD; + scale: 1; + description { + state: "default" 0.0; + min: SCALE(74.0) SCALE(74.0); + fixed: 1 1; + align: 0.5 0.5; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "elm.text"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.text"; + } + color: 0 0 0 0; + } + } + + part + { + name: "arrow"; + clip_to: "disclip"; + ignore_flags: ON_HOLD; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: SCALE(64.0) SCALE(64.0); + max: SCALE(64.0) SCALE(64.0); + fixed: 1 1; + align: 0.5 0.5; + aspect: 1.0 1.0; + rel1 { + relative: 0.5 0.5; + to: "touch_arrow"; + } + rel2 { + relative: 0.5 0.5; + to: "touch_arrow"; + } + image.normal: "M02_button_expand_opened.png"; + } + description { + state: "default" 1.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand_opened_press.png"; + } + description { + state: "active" 0.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand.png"; + } + description { + state: "hide" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { + state: "active" 1.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand_press.png"; + } + } + + BEAT_GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { + name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text"; + } + program { + name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text"; + transition: LINEAR 0.1; + } + program { + name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { + name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + program { + name: "toggle_favorite"; + signal: "mouse,up,1"; + source: "touch_favorite"; + action: SIGNAL_EMIT "elm,action,toggle" "elm"; + } + program { + name: "expand"; + signal: "mouse,up,1"; + source: "touch_arrow"; + action: SIGNAL_EMIT "elm,action,expand,toggle" "elm"; + } + program { + name: "arrow_down"; + signal: "mouse,down,1"; + source: "touch_arrow"; + script { + new st[31]; + new Float:vl; + get_state(PART:"arrow", st, 30, vl) + if (vl == 0.0) + set_state(PART:"arrow", st, 1.0); + else + set_state(PART:"arrow", st, 0.0); + } + } + program { + name: "go_expanded"; + signal: "elm,state,expanded"; + source: "elm"; + action: STATE_SET "active" 0.0; + target: "arrow"; + } + program { + name: "go_contracted"; + signal: "elm,state,contracted"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "arrow"; + } + program + { + name: "hide_arrow"; + signal: "elm,state,arrow_hidden"; + source: "elm"; + action: STATE_SET "hide" 0.0; + target: "arrow"; + } + } + } + + group { + name: "layout.email.to_cc"; + + images { + image: "00_list_bar_press_1x80.png" COMP; + } + parts + { + BEAT_GENLIST_PART_BASE( 0 ) + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_LEFT( 1 ) + BEAT_GENLIST_PART_PADDING_RIGHT( 1 ) + BEAT_GENLIST_PART_PADDING_TOP( 1 ) + BEAT_GENLIST_PART_PADDING_BOTTOM( 1 ) + + part { + name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { state: "default" 0.0; + align: 0.5 0.5; + rel1 { + relative: 1 1; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0 0; + to_x: "elm.padding.right"; + to_y: "elm.padding.bottom"; + } + } + } + BEAT_GENLIST_PART_DISCLIP + } + programs { + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + } + } + + group { + name: "layout.email.attachment_downloading"; + images { + image: "00_list_bar_press_1x80.png" COMP; + } + + parts { + + BEAT_GENLIST_PART_BASE( SCALE(120.0) ) + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_TOP( SCALE(5.0) ) + BEAT_GENLIST_PART_PADDING_BOTTOM( SCALE(5.0) ) + BEAT_GENLIST_PART_PADDING_LEFT( SCALE(10.0) ) + BEAT_GENLIST_PART_PADDING_RIGHT( SCALE(10.0) ) + + part { + name: "elm.icon.1"; + type: SWALLOW; + scale: 1; + description { state: "default" 0.0; + min: SCALE(160.0) SCALE(80.0); + max: SCALE(160.0) SCALE(80.0); + fixed: 1 1; + align: 1.0 0.5; + visible: 1; + + rel1.to_x: "elm.padding.right"; + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + } + } + } + + part + { + name: "elm.padding.cancel.left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: SCALE(30.0) 0; + fixed: 1 1; + visible: 0; + rel1.to: "elm.icon.1"; + rel2 { + relative: 0.0 1.0; + to: "elm.icon.1"; + } + } + } + + part { name: "elm.text.1"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 SCALE(20.0); + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.cancel.left"; + to_y: "elm.padding.top"; + } + color: GENLIST_PART_TEXT_COLOR_INC; + /*text { + font: "SLP:style=Regular"; + size: 18; + min: 0 1; + align: 0.0 0.5; + }*/ + } + } + + part { name: "elm.icon.2"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 SCALE(30.0); + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.cancel.left"; + to_y: "elm.padding.top"; + } + } + } + + part { name: "elm.text.2"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: SCALE(235.0) SCALE(20.0); + max: SCALE(235.0) SCALE(20.0); + fixed: 1 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.icon.2"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.cancel.left"; + to_y: "elm.padding.bottom"; + } + color: GENLIST_PART_TEXT_COLOR_INC; + /*text { + font: "SLP:style=Regular"; + size: 18; + min: 0 1; + align: 0.0 0.5; + }*/ + } + } + + part { name: "elm.text.3"; + type: SWALLOW; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: SCALE(235.0) SCALE(20.0); + max: SCALE(235.0) SCALE(20.0); + fixed: 1 1; + align: 1 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.icon.2"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.cancel.left"; + to_y: "elm.padding.bottom"; + } + color: GENLIST_PART_TEXT_COLOR_INC; + /*text { + font: "SLP:style=Regular"; + size: 18; + min: 0 1; + align: 1.0 0.5; + }*/ + } + } + + BEAT_GENLIST_PART_DISCLIP + } + } + + group + { + name: "layout.email.attachment_item"; + + images { + image: "00_list_bar_press_1x80.png" COMP; + image: "M02_button_download.png" COMP; + image: "M02_button_download_press.png" COMP; + } + + parts + { + BEAT_GENLIST_PART_BASE( SCALE(120.0) ) + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_TOP( SCALE(20.0) ) + BEAT_GENLIST_PART_PADDING_BOTTOM( SCALE(20.0) ) + BEAT_GENLIST_PART_PADDING_LEFT( SCALE(20.0) ) + BEAT_GENLIST_PART_PADDING_RIGHT( SCALE(20.0) ) + + part + { + name: "elm.icon"; + clip_to: "disclip"; + type: SWALLOW; + scale: 1; + description + { + state: "default" 0.0; + min: SCALE(64.0) SCALE(64.0); + max: SCALE(64.0) SCALE(64.0); + fixed: 1 1; + align: 0.0 0.5; + color: 136 136 136 255; + + rel1 + { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 + { + relative: 1.0 0.0; + offset: 0 0; + to_x: "elm.padding.left"; + to_y: "elm.padding.bottom"; + } + } + } + + part + { + name: "elm.padding.icon.right"; + type: RECT; + scale: 1; + + description + { + state: "default" 0.0; + min: SCALE(10.0) 0; + fixed: 1 0; + visible: 0; + + rel1 + { + relative: 1.0 0.0; + to_x: "elm.icon"; + } + rel2.to_x: "elm.icon"; + align: 0.0 0.0; + } + } + + part + { + name: "elm.text.rect"; + clip_to: "disclip"; + type: RECT; + scale: 1; + ignore_flags: ON_HOLD; + + description + { + state: "default" 0.0; + align: 0 0.5; + color: 0 0 0 0; + + rel1 + { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.padding.top"; + } + rel2 + { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.down.left"; + to_y: "elm.padding.bottom"; + } + } + } + + part + { + name: "elm.text"; + clip_to: "disclip"; + type: TEXT; + scale: 1; + ignore_flags: ON_HOLD; + + description + { + state: "default" 0.0; + align: 0 0.5; + color: 0 0 0 255; + + rel1 + { + relative: 0.0 0.0; + to: "elm.text.rect"; + } + rel2 + { + relative: 1.0 1.0; + to: "elm.text.rect"; + } + text + { + font: "SLP:style=Medium"; + size: 35; + min: 0 0; + max: 1 0; + align: 0.0 0.5; + } + } + + description + { + state: "pressed" 0.0; + inherit: "default" 0.0; + color: 255 255 255 255; + } + } + + part + { + name: "elm.event.rect"; + clip_to: "disclip"; + type: RECT; + mouse_events: 1; + repeat_events: 1; + + description + { + state: "default" 0.0; + color: 0 0 0 0; + + rel1 + { + relative: 0.0 0.0; + to: "base"; + } + rel2 + { + relative: 1.0 1.0; + to: "base"; + } + visible: 1; + } + } + + part + { + name: "down"; + clip_to: "disclip"; + type: RECT; + ignore_flags: ON_HOLD; + mouse_events: 1; + scale: 1; + + description + { + state: "default" 0.0; + min: SCALE(64.0) SCALE(64.0); + max: SCALE(64.0) SCALE(64.0); + fixed: 1 1; + align: 1.0 0.5; + aspect: 1.0 1.0; // needed? + + rel1.to_x: "elm.padding.right"; + rel2 + { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + } + color: 0 0 0 0; + } + } + + part + { + name: "elm.padding.down.left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: SCALE(10.0) 0; + fixed: 1 0; + visible: 0; + align: 1.0 0.5; + rel1.to: "down"; + rel2 { + relative: 0.0 1.0; + to: "down"; + } + } + } + + part { + name: "down_image"; + type: IMAGE; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { relative: 0.0 0.0; to: "down"; } + rel2 { relative: 1.0 1.0; to: "down"; } + image.normal: "M02_button_download.png"; + } + description { + state: "default" 1.0; + rel1 { relative: 0.0 0.0; to: "down"; } + rel2 { relative: 1.0 1.0; to: "down"; } + image.normal: "M02_button_download_press.png"; + } + } + + BEAT_GENLIST_PART_DISCLIP + } + programs { + program { + name: "download_btn_down"; + signal: "mouse,down,1"; + source: "down"; + action: STATE_SET "default" 1.0; + target: "down_image"; + } + program { + name: "download_btn_up"; + signal: "mouse,up,1"; + source: "down"; + action: STATE_SET "default" 0.0; + target: "down_image"; + } + program { + name: "download_btn_clicked"; + signal: "mouse,clicked,1"; + source: "down"; + action: SIGNAL_EMIT "elm,action,download" "elm"; + } + program { + name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + } + program { + name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + transition: LINEAR 0.1; + } + program { + name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { + name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + program { + name: "elm.event.rect_clicked"; + signal: "mouse,clicked,1"; + source: "elm.event.rect"; + action: SIGNAL_EMIT "clicked" ""; + } + program { + name: "elm.event.rect_pressed"; + signal: "pressed"; + source: "elm.event.rect"; + action: STATE_SET "pressed" 0.0; + target: "base"; + target: "elm.text"; + } + + program { + name: "elm.event.rect_unpressed"; + signal: "unpressed"; + source: "elm.event.rect"; + action: STATE_SET "default" 0.0; + target: "base"; + target: "elm.text"; + } + } + } + + group { + name: "layout.email.attachment_head"; + + images { + image: "00_list_bar_press_1x80.png" COMP; + image: "M02_button_expand_closed.png" COMP; + image: "M02_button_expand_closed_press.png" COMP; + image: "M02_button_expand_opened.png" COMP; + image: "M02_button_expand_opened_press.png" COMP; + image: "M02_email_icon_attach.png" COMP; + image: "M02_button_expand.png" COMP; + image: "M02_button_expand_press.png" COMP; + } + + parts + { + BEAT_GENLIST_PART_BASE( SCALE(120.0) ) + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_TOP( SCALE(20.0) ) + BEAT_GENLIST_PART_PADDING_BOTTOM( SCALE(10.0) ) + BEAT_GENLIST_PART_PADDING_LEFT( SCALE(20.0) ) + BEAT_GENLIST_PART_PADDING_RIGHT( SCALE(20.0) ) + + part { + name: "elm.icon"; + clip_to: "disclip"; + type: IMAGE; + scale: 1; + ignore_flags: ON_HOLD; + description { state: "default" 0.0; + min: SCALE(40.0) SCALE(40.0); + max: SCALE(40.0) SCALE(40.0); + fixed: 1 1; + align: 0.0 0.5; + rel1 { + relative: 1.0 0.0; + to_x: "elm.padding.left"; + } + rel2 { + offset: 0 0; + to_x: "elm.padding.left"; + } + image.normal: "M02_email_icon_attach.png"; + } + } + part { + name: "elm.padding.icon.right"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: SCALE(13.0) 0; + fixed: 1 0; + visible: 0; + rel1 { + relative: 1.0 0.0; + to_x: "elm.icon"; + } + rel2.to_x: "elm.icon"; + align: 0.0 0.0; + } + } + + part + { + name: "touch_arrow"; + type: RECT; + clip_to: "disclip"; + ignore_flags: ON_HOLD; + scale: 1; + description { state: "default" 0.0; + min: SCALE(74.0) SCALE(74.0); + fixed: 1 1; + align: 0.5 0.5; + rel1 { + relative: 0.5 0.5; + to: "arrow"; + } + rel2 { + relative: 0.5 0.5; + to: "arrow"; + } + color: 0 0 0 0; + } + } + part + { + name: "arrow"; + clip_to: "disclip"; + ignore_flags: ON_HOLD; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: SCALE(64.0) SCALE(64.0); + max: SCALE(64.0) SCALE(64.0); + fixed: 1 1; + align: 1.0 0.5; + aspect: 1.0 1.0; // needed? + rel1.to_x: "elm.padding.right"; + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + } + image.normal: "M02_button_expand_opened.png"; + } + description { state: "default" 1.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand_opened_press.png"; + } + description { state: "active" 0.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand.png"; + } + description { state: "active" 1.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand_press.png"; + } + } + part + { + name: "elm.padding.arrow.left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: SCALE(5.0) 0; + fixed: 1 0; + visible: 0; + align: 1.0 0.5; + rel1.to: "arrow"; + rel2 { + relative: 0.0 1.0; + to: "arrow"; + } + } + } + + part + { + name: "elm.text"; + clip_to: "disclip"; + type: SWALLOW; + mouse_events: 1; + scale: 1; + description { + state: "default" 0.0; + min: 0 SCALE(30.0); + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.arrow.left"; + to_y: "elm.padding.top"; + } + color: 0 0 0 255; + /*text { + font: "SLP:style=Roman"; + size: 26; + min: 0 1; + align: 0.0 0.5; + }*/ + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 255; + } + } + + part + { + name: "elm.text.sub"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.icon.right"; + to_y: "elm.text"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.arrow.left"; + to_y: "elm.padding.bottom"; + } + color: 0 0 0 255; + text { + font: "SLP:style=Medium"; + size: SCALE(32.0); + min: 0 1; + align: 0.0 0.5; + } + } + description { + state: "selected" 0.0; + inherit: "default" 0.0; + color: 225 225 225 255; + } + } + BEAT_GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { + name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text"; + } + program { + name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text"; + transition: LINEAR 0.1; + } + program { + name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { + name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + program { + name: "expand"; + signal: "mouse,up,1"; + source: "touch_arrow"; + action: SIGNAL_EMIT "elm,action,expand,toggle" "elm"; + } + program { + name: "arrow_down"; + signal: "mouse,down,1"; + source: "touch_arrow"; + script { + new st[31]; + new Float:vl; + get_state(PART:"arrow", st, 30, vl) + if (vl == 0.0) + set_state(PART:"arrow", st, 1.0); + else + set_state(PART:"arrow", st, 0.0); + } + } + program { + name: "go_expanded"; + signal: "elm,state,expanded"; + source: "elm"; + action: STATE_SET "active" 0.0; + target: "arrow"; + } + program { + name: "go_contracted"; + signal: "elm,state,contracted"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "arrow"; + } + program { + name: "save_all"; + signal: "mouse,up,1"; + source: "elm.icon"; + action: SIGNAL_EMIT "att,icon,save,all" ""; + } + } + } + + /*group { + name: "layout.email.subject_nbeat"; + + images { + image: "00_list_bar_press_1x80.png" COMP; + image: "M02_button_expand_closed.png" COMP; + image: "M02_button_expand_closed_press.png" COMP; + image: "M02_button_expand_opened.png" COMP; + image: "M02_button_expand_opened_press.png" COMP; + } + + styles { + style { name: "genlist_textblock_sub_style"; + base: "font=SLP:style=Regular font_size=24 color=#6C6C6C wrap=char text_class=list_item"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "tab" "\t"; + } + style { name: "genlist_textblock_sub_selected_style"; + base: "font=SLP:style=Regular font_size=24 color=#FFFFFF wrap=char text_class=list_item"; + tag: "br" "\n"; + tag: "ps" "ps"; + tag: "tab" "\t"; + } + } + parts { + part { name: "base"; + type: RECT; + repeat_events: 1; + description { state: "default" 0.0; + color: 249 249 249 255; + } + } + BEAT_GENLIST_PART_BG_IMAGE + BEAT_GENLIST_PART_BOTTOM_LINE + BEAT_GENLIST_PART_PADDING_TOP( 10 ) + BEAT_GENLIST_PART_PADDING_BOTTOM( 10 ) + BEAT_GENLIST_PART_PADDING_LEFT( 20 ) + BEAT_GENLIST_PART_PADDING_RIGHT( 10 ) + BEAT_GENLIST_PART_DIALOGUE_ITEM + + part + { + name: "touch_arrow"; + type: RECT; + clip_to: "disclip"; + ignore_flags: ON_HOLD; + scale: 1; + description { state: "default" 0.0; + min: 70 80; + fixed: 1 1; + align: 0.5 0.5; + rel1 { + relative: 0.5 0.5; + to: "arrow"; + } + rel2 { + relative: 0.5 0.5; + to: "arrow"; + } + color: 0 0 0 0; + } + } + part + { + name: "arrow"; + clip_to: "disclip"; + ignore_flags: ON_HOLD; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 40 40; + max: 40 40; + fixed: 1 1; + align: 1.0 0.5; + aspect: 1.0 1.0; // needed? + rel1.to_x: "elm.padding.right"; + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.right"; + } + image.normal: "M02_button_expand_closed.png"; + } + description { state: "default" 1.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand_closed_press.png"; + } + description { state: "active" 0.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand_opened.png"; + } + description { state: "active" 1.0; + inherit: "default" 0.0; + image.normal: "M02_button_expand_opened_press.png"; + } + } + + part + { + name: "elm.padding.arrow.left"; + type: RECT; + scale: 1; + description { state: "default" 0.0; + min: 5 0; + fixed: 1 0; + visible: 0; + align: 1.0 0.5; + rel1.to: "arrow"; + rel2 { + relative: 0.0 1.0; + to: "arrow"; + } + } + } + + part { name: "elm.text.1"; + clip_to: "disclip"; + type: TEXTBLOCK; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.padding.top"; + } + rel2 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "elm.padding.arrow.left"; + to_y: "elm.padding.top"; + } + text { + style: "genlist_textblock_sub_style"; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + text.style: "genlist_textblock_sub_selected_style"; + } + } + + part { name: "elm.text.2"; + clip_to: "disclip"; + type: TEXT; + mouse_events: 0; + scale: 1; + description { state: "default" 0.0; + min: 0 38; + fixed: 0 1; + align: 0 0; + rel1 { + relative: 1.0 1.0; + to_x: "elm.padding.left"; + to_y: "elm.text.1"; + } + rel2 { + relative: 0.0 0.0; + offset: 0 0; + to_x: "elm.padding.arrow.left"; + to_y: "elm.padding.bottom"; + } + color: GENLIST_PART_TEXT_COLOR_INC; + text { + font: "SLP:style=Regular"; + size: 20; + min: 0 1; + align: 0.0 0.5; + } + } + description { state: "selected" 0.0; + inherit: "default" 0.0; + color: GENLIST_PART_TEXT_SELECTED_COLOR_INC; + } + } + + BEAT_GENLIST_PART_DISCLIP + } + programs { + // signal: elm,state,%s,active + // a "check" item named %s went active + // signal: elm,state,%s,passive + // a "check" item named %s went passive + // default is passive + program { name: "go_active"; + signal: "elm,state,selected"; + source: "elm"; + action: STATE_SET "selected" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + } + program { name: "go_passive"; + signal: "elm,state,unselected"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "bg_image"; + target: "elm.text.1"; + target: "elm.text.2"; + transition: LINEAR 0.1; + } + program { name: "go_disabled"; + signal: "elm,state,disabled"; + source: "elm"; + action: STATE_SET "disabled" 0.0; + target: "disclip"; + } + program { name: "go_enabled"; + signal: "elm,state,enabled"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "disclip"; + } + program { + name: "expand"; + signal: "mouse,up,1"; + source: "touch_arrow"; + action: SIGNAL_EMIT "elm,action,expand,toggle" "elm"; + } + program { + name: "arrow_down"; + signal: "mouse,down,1"; + source: "touch_arrow"; + script { + new st[31]; + new Float:vl; + get_state(PART:"arrow", st, 30, vl) + if (vl == 0.0) + set_state(PART:"arrow", st, 1.0); + else + set_state(PART:"arrow", st, 0.0); + } + } + program { + name: "go_expanded"; + signal: "elm,state,expanded"; + source: "elm"; + action: STATE_SET "active" 0.0; + target: "arrow"; + } + program { + name: "go_contracted"; + signal: "elm,state,contracted"; + source: "elm"; + action: STATE_SET "default" 0.0; + target: "arrow"; + } + } + }*/ + +} -- 2.7.4