Tizen 2.4.0 rev3 SDK Public Release tizen_2.4
authorjk7744.park <jk7744.park@samsung.com>
Wed, 24 Feb 2016 10:08:32 +0000 (19:08 +0900)
committerjk7744.park <jk7744.park@samsung.com>
Wed, 24 Feb 2016 10:08:32 +0000 (19:08 +0900)
61 files changed:
CMake/email-common/CMakeLists.txt
Project-Files/common/inc/email-common-types.h
Project-Files/common/inc/email-images.h
Project-Files/common/inc/email-module-core.h
Project-Files/common/inc/email-module-dev.h
Project-Files/common/inc/email-module-launcher.h
Project-Files/common/inc/email-module.h
Project-Files/common/inc/email-utils.h
Project-Files/common/src/email-editfield-utils.c
Project-Files/common/src/email-module-core.c
Project-Files/common/src/email-module-launcher.c
Project-Files/common/src/email-utils.c
Project-Files/main/email-main.c
Project-Files/modules/composer/inc/email-composer-recipient.h
Project-Files/modules/composer/inc/email-composer-rich-text-toolbar.h
Project-Files/modules/composer/inc/email-composer-types.h
Project-Files/modules/composer/inc/email-composer.h
Project-Files/modules/composer/src/email-composer-initial-view.c
Project-Files/modules/composer/src/email-composer-predictive-search.c
Project-Files/modules/composer/src/email-composer-recipient.c
Project-Files/modules/composer/src/email-composer-rich-text-toolbar.c
Project-Files/modules/composer/src/email-composer-util.c
Project-Files/modules/composer/src/email-composer-webkit.c
Project-Files/modules/composer/src/email-composer.c
Project-Files/modules/filter/inc/email-filter-add-view.h
Project-Files/modules/filter/inc/email-filter-delete-view.h
Project-Files/modules/filter/inc/email-filter-edit-view.h
Project-Files/modules/filter/inc/email-filter-list-view.h
Project-Files/modules/filter/inc/email-filter.h
Project-Files/modules/filter/src/email-filter-add-view.c
Project-Files/modules/filter/src/email-filter-edit-view.c
Project-Files/modules/mailbox/inc/email-mailbox.h
Project-Files/modules/mailbox/src/email-mailbox-more-menu.c
Project-Files/modules/mailbox/src/email-mailbox-search.c
Project-Files/modules/mailbox/src/email-mailbox.c
Project-Files/modules/setting/src/email-setting.c
Project-Files/modules/viewer/inc/email-viewer-contents.h
Project-Files/modules/viewer/inc/email-viewer-types.h
Project-Files/modules/viewer/inc/email-viewer-util.h
Project-Files/modules/viewer/inc/email-viewer.h
Project-Files/modules/viewer/src/email-viewer-contents.c
Project-Files/modules/viewer/src/email-viewer-header.c
Project-Files/modules/viewer/src/email-viewer-more-menu.c
Project-Files/modules/viewer/src/email-viewer-noti-mgr.c
Project-Files/modules/viewer/src/email-viewer-util.c
Project-Files/modules/viewer/src/email-viewer.c
Project-Files/resources/edc/common/email-colors.edc
Project-Files/resources/edc/common/email-common-theme.edc
Project-Files/resources/edc/common/email-title-search.edc [deleted file]
Project-Files/resources/edc/composer/email-composer-recipients.edc
Project-Files/resources/edc/composer/email-composer-rich-text.edc
Project-Files/resources/edc/composer/email-composer-toolbar-buttons_defines.edc
Project-Files/resources/edc/mailbox/email-mailbox-theme.edc
Project-Files/resources/edc/setting/email-setting-two-bottom-btn-theme.edc
Project-Files/resources/edc/viewer/email-viewer-base-layout.edc
Project-Files/resources/edc/viewer/email-viewer-subject-layout.edc
Project-Files/resources/edc_images/list_icon/core_button_icon_clear.png [deleted file]
Project-Files/resources/edc_images/rich_text_bar_icon/email_icon_toolbar_contents.png [new file with mode: 0644]
Project-Files/resources/edc_images/rich_text_bar_icon/email_icon_toolbar_number.png [new file with mode: 0644]
Project-Files/resources/misc/email-composer.js
org.tizen.email.xml

index 3e7dea1..461e9ff 100755 (executable)
@@ -45,7 +45,6 @@ ADD_CUSTOM_COMMAND(
                ${EDJE_CC_DEFINITIONS}
                ${PROJECT_EDC_DIR}/common/email-common-theme.edc ${CMAKE_CURRENT_BINARY_DIR}/email-common-theme.edj
                DEPENDS ${PROJECT_EDC_DIR}/common/email-common-theme.edc
-                               ${PROJECT_EDC_DIR}/common/email-title-search.edc
                                ${PROJECT_EDC_DIR}/common/email-colors.edc
                                ${PROJECT_COMMON_INCLUDE}/email-images.h
 )
index 79bd14d..23a80d9 100755 (executable)
@@ -325,7 +325,6 @@ typedef enum {
        EF_MULTILINE = 1,
        EF_CLEAR_BTN = 2,
        EF_PASSWORD = 4,
-       EF_TITLE_SEARCH = 8,
 
 } EmailEditfieldType;
 
index 8c79134..3860b06 100755 (executable)
@@ -42,9 +42,6 @@
 #define EMAIL_IMAGE_CORE_EXPAND_CLOSED "core_icon_expand_close.png"
 #define EMAIL_IMAGE_CORE_EXPAND_OPENED "core_icon_expand_open.png"
 
-/* search_icon */
-#define EMAIL_IMAGE_CORE_CLEAR "core_button_icon_clear.png"
-
 #endif /* _EMAIL_IMAGES_H_ */
 
 /* EOF */
index 38a75ca..3e53dd6 100644 (file)
 #ifndef _EMAIL_MODULE_CORE_H_
 #define _EMAIL_MODULE_CORE_H_
 
-/**
- * Forward declaration of the email module structure
- */
 typedef struct _email_module email_module_t;
-
-/**
- * Forward declaration of the email view structure
- */
 typedef struct _email_view email_view_t;
 
-/**
- * @brief Sends a result from the module back to listener
- *
- * @param[in]  module          handle of the module from which to send a message
- * @param[in]  result          result message to send
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_send_result(email_module_t *module, app_control_h result);
-
-/**
- * @brief Makes destroy request to listener
- *
- * @param[in]  module          handle of the module from which to make a request
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_make_destroy_request(email_module_t *module);
-
-/**
- * @brief Creates child module for the specified module
- *
- * Current implementation supports only single child.
- * But new child may be created when the old has not been destroyed yet.
- *
- * @param[in]  module                  parent module
- * @param[in]  module_type             type of the module to create
- * @param[in]  params                  module create parameters (depends on concrete module)
- * @param[in]  listener                listener of the new module
- *
- * @return handle to the new module,
- *             NULL - on error
- */
 EMAIL_API email_module_h email_module_create_child(email_module_t *module, email_module_type_e module_type,
                app_control_h params, email_module_listener_t *listener);
-
-/**
- * @brief Creates view for specified module
- *
- * View object must be allocated externally before using this function.
- *
- * @param[in]  module          parent module
- * @param[in]  view            pointer to the allocated view
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_create_view(email_module_t *module, email_view_t *view);
 
-/**
- * @brief Pushes view to the naviframe and completes view creation
- *
- * This method must be called inside create() method of the concrete view
- *
- * @param[in]  view                    view to push
- * @param[in]  title_label             initial title label of the view
- * @param[in]  flags                   push flags
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API Elm_Object_Item *email_module_view_push(email_view_t *view, const char *title_label, int flags);
-
-/**
- * @brief Exits from the caller view
- *
- * @param[in]  view            view pointer
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_exit_view(email_view_t *view);
 
 #endif /* _EMAIL_MODULE_CORE_H_ */
index 0cc9903..5e6d07b 100644 (file)
 #include "email-module-core.h"
 #include "email-module-launcher.h"
 
-/**
- * Forward declaration of the attach panel handle
- */
 typedef struct _attach_panel *attach_panel_h;
 
-/**
- * Enumeration of the email module states
- */
 typedef enum _email_module_state
 {
-       /* Email module is running */
        EM_STATE_RUNNING,
-       /* Email module is paused */
        EM_STATE_PAUSED,
-       /* Email module is destroying */
        EM_STATE_DESTROYING
 
 } email_module_state_e;
 
-/**
- * Base data structure for all email modules
- */
 struct _email_module
 {
-       /**
-        * Public members
-        */
+       // Public members //
 
-       /**
-        * Core
-        */
+       // Core
 
-       /* Main widgets of the application */
        Evas_Object *win;
        Evas_Object *conform;
        Evas_Object *navi;
 
-       /* Count of views of this module */
        int views_count;
 
-       /**
-        * Protected members
-        */
-
-       /**
-        * Core
-        */
-
-       /**
-        * @brief Virtual function which is called from base implementation to create the concrete module
-        *
-        * @param[in]   self            pointer to this module
-        * @param[in]   params          create parameters
-        *
-        * @return 0 - on success,
-        *              negative value - on error
-        */
-       int (*create) (email_module_t *self, app_control_h params);
+       // Protected members //
 
-       /**
-        * @brief Virtual function which is called from base implementation to destroy the concrete module
-        *
-        * @param[in]   self            pointer to this module
-        */
-       void (*destroy) (email_module_t *self);
+       // Core
 
-       /**
-        * @brief Virtual function to handle module pause event
-        *
-        * @param[in]   self            pointer to this module
-        */
+       int (*create) (email_module_t *self, app_control_h params);
+       void (*destroy) (email_module_t *self);
        void (*pause) (email_module_t *self);
-
-       /**
-        * @brief Virtual function to handle module resume event
-        *
-        * @param[in]   self            pointer to this module
-        */
        void (*resume) (email_module_t *self);
-
-       /**
-        * @brief Virtual function to handle messages send to this module
-        *
-        * @param[in]   self            pointer to this module
-        */
        void (*on_message) (email_module_t *self, app_control_h msg);
-
-       /**
-        * @brief Virtual function to handle events from module manager
-        *
-        * @param[in]   self            pointer to this module
-        * @param[in]   self            event type to handle
-        */
        void (*on_event) (email_module_t *self, email_module_event_e event);
 
-       /**
-        * Launcher
-        */
+       // Launcher
 
-       /* Currently launched application type or
-        * EMAIL_LAUNCH_APP_NONE if no applications launched*/
        email_launch_app_type_e launched_app_type;
-       /* Status of the attach panel */
        bool is_attach_panel_launched;
-       /* Busy status of the launcher */
        bool is_launcher_busy;
 
-       /**
-        * Private members
-        */
+       // Private members //
 
-       /**
-        * Core
-        */
+       // Core
 
-       /* Current state of the module */
        email_module_state_e _state;
 
-       /* Parent of the module or NULL for root module */
        email_module_t *_parent;
-       /* Array of the module children or NULL */
        Eina_Array *_children;
-       /* Listener of the module */
        email_module_listener_t _listener;
 
-       /* Naviframe item on top of which all module view will be created */
        Elm_Object_Item *_parent_navi_item;
 
-       /**
-        * Launcher
-        */
+       // Launcher
 
-       /* Request that was used to launch an application or NULL */
        app_control_h _launched_app;
-       /* Handle of the attach panel if created, or NULL */
        attach_panel_h _attach_panel;
-       /* Timer used to reset transparent application state */
        Ecore_Timer *_app_timer;
-       /* Application launch listener */
        email_launched_app_listener_t _app_listener;
-       /* Attach panel launch listener */
        email_attach_panel_listener_t _attach_panel_listener;
-       /* true if the application was actually started by the system */
        bool _app_was_started;
-       /* true if we need to recreate attach panel on next launch */
        bool _attach_panel_bundles_changed;
 
-       /* Attach panel category extra data bundles
-        * to use when creating attach panel categories */
        bundle *_attach_panel_bundles[EMAIL_APCT_COUNT];
 };
 
-/**
- * Enumeration of the email view states
- */
 typedef enum _email_view_state
 {
-       /* View was created but is not yet active */
        EV_STATE_CREATED,
-       /* View is active - normal state of the view */
        EV_STATE_ACTIVE,
-       /* View is not active */
        EV_STATE_NOT_ACTIVE,
-       /* View is getting destroyed */
        EV_STATE_DESTROYING
 
 } email_view_state;
 
-/**
- * Collection of the view create flags
- */
 typedef enum _email_view_update_flag
 {
-       /* View orientation was changed from the last update */
        EVUF_ORIENTATION_CHANGED = 1,
-       /* System language was changed */
        EVUF_LANGUAGE_CHANGED = 2,
-       /* System region format was changed */
        EVUF_REGION_FMT_CHANGED = 4,
 
-       /* Application was in pause state after the last update */
        EVUF_WAS_PAUSED = 8,
-       /* View become topmost after popping old topmost view  */
        EVUF_POPPING = 16
 
 } email_view_update_flag;
 
-/**
- * Collection of the view push flags
- */
 typedef enum _email_view_push_flag
 {
-       /* View should be pushed without a transition if possible */
        EVPF_NO_TRANSITION = 1,
-       /* View should be pushed without a software back button */
        EVPF_NO_BACK_BUTTON = 2,
-       /* View should be pushed without title */
        EVPF_NO_TITLE = 4
 
 } email_view_push_flag;
 
-/**
- * Email view base data structure
- */
 struct _email_view
 {
-       /* Owning module of this view */
        email_module_t *module;
 
-       /* Content of the naviframe item */
        Evas_Object *content;
-       /* Naviframe item of this view */
        Elm_Object_Item *navi_item;
 
-       /* View state */
        email_view_state state;
-       /* View visibility status */
        bool visible;
 
-       /* Current orientation of the view */
        app_device_orientation_e orientation;
 
-       /**
-        * @brief Virtual function which is called from base implementation to create the concrete view
-        *
-        * @param[in]   self            pointer to this view
-        *
-        * @return 0 - on success,
-        *              negative value - on error
-        */
        int (*create)(email_view_t *self);
-
-       /**
-        * @brief Virtual function which is called from base implementation to destroy the concrete view
-        *
-        * @param[in]   self            pointer to this view
-        */
        void (*destroy) (email_view_t *self);
-
-       /**
-        * @brief Virtual function which is called from base implementation to activate the concrete view
-        *
-        * @param[in]   self                    pointer to this view
-        * @param[in]   prev_state              previous state of the view before activation
-        */
        void (*activate) (email_view_t *self, email_view_state prev_state);
-
-       /**
-        * @brief Virtual function which is called from base implementation to deactivate the concrete view
-        *
-        * @param[in]   self            pointer to this view
-        */
        void (*deactivate) (email_view_t *self);
-
-       /**
-        * @brief Virtual function to handle show event
-        *
-        * @param[in]   self            pointer to this view
-        */
        void (*show) (email_view_t *self);
-
-       /**
-        * @brief Virtual function to handle hide event
-        *
-        * @param[in]   self            pointer to this view
-        */
        void (*hide) (email_view_t *self);
-
-       /**
-        * @brief Virtual function which is called from base implementation to update the concrete view
-        *
-        * @param[in]   self            pointer to this view
-        * @param[in]   flags           view update flags
-        */
        void (*update) (email_view_t *self, int flags);
-
-       /**
-        * @brief Virtual function to back button press event (software and hardware)
-        *
-        * @param[in]   self            pointer to this view
-        */
        void (*on_back_key) (email_view_t *self);
 
-       /* Update flags that will be used in the next update */
        int _update_flags;
-       /* Push flags that was to create the view */
        int _push_flags;
-       /* Blocks popping of the view item */
        bool _allow_pop;
 };
 
index 396c262..2b7f4b3 100644 (file)
 #ifndef _EMAIL_MODULE_LAUNCHER_H_
 #define _EMAIL_MODULE_LAUNCHER_H_
 
-/**
- * Enumeration of the application type
- */
 typedef enum _email_launch_app_type
 {
-       /* Application is not specified */
        EMAIL_LAUNCH_APP_NONE = 0,
 
-       /* Used in implicit request */
        EMAIL_LAUNCH_APP_AUTO,
 
-       /* Launch ringtone application */
+       EMAIL_LAUNCH_APP_CONTACTS_DETAILS,
+       EMAIL_LAUNCH_APP_CONTACTS_LIST,
+       EMAIL_LAUNCH_APP_CONTACTS_TABUI,
+       EMAIL_LAUNCH_APP_ADD_BOOKMARK,
+       EMAIL_LAUNCH_APP_MEMO,
        EMAIL_LAUNCH_APP_RINGTONE,
-       /* Launch settings storage application */
        EMAIL_LAUNCH_APP_STORAGE_SETTINGS,
 
-       /* Count of enumeration values */
        EMAIL_LAUNCH_APP_COUNT
 } email_launch_app_type_e;
 
-/**
- * Listener of the launched application events
- */
 typedef struct _email_launch_app_listener
 {
-       /* User data to pass to each callback function */
        void *cb_data;
 
-       /**
-        * @brief Callback which is used to send result messages to the listener
-        *
-        * @param[in]   data            callback user data
-        * @param[in]   result          result status of the reply
-        * @param[in]   reply           reply message send back from the application
-        */
        void (*reply_cb) (void *data, app_control_result_e result, app_control_h reply);
-
-       /**
-        * @brief Callback which is used to signal close of the application
-        *
-        * @param[in]   data            callback user data
-        */
        void (*close_cb) (void *data);
 
 } email_launched_app_listener_t;
 
-/**
- * Enumeration of the attach panel category type
- */
 typedef enum _email_attach_panel_category_type
 {
-       /* Image files */
        EMAIL_APCT_IMAGE,
-       /* Take picture with camera */
        EMAIL_APCT_CAMERA,
-       /* Record voice with voice recorder */
        EMAIL_APCT_VOICE,
-       /* Video files */
        EMAIL_APCT_VIDEO,
-       /* Audio files */
        EMAIL_APCT_AUDIO,
-       /* Calendar events */
        EMAIL_APCT_CALENDAR,
-       /* Contact vCard files */
        EMAIL_APCT_CONTACT,
-       /* Any file from device */
        EMAIL_APCT_MYFILES,
-       /* Record video with camera */
        EMAIL_APCT_VIDEO_RECORDER,
 
-       /* Count of enumeration values */
        EMAIL_APCT_COUNT
 } email_attach_panel_category_type_e;
 
-/**
- * Listener of the attach panel events events
- */
 typedef struct _email_attach_panel_listener
 {
-       /* User data to pass to each callback function */
        void *cb_data;
 
-       /**
-        * @brief Callback which is used to send reply from attach panel to the listener
-        *
-        * @param[in]   data                    callback user data
-        * @param[in]   path_array              array with file paths
-        * @param[in]   array_len               length of the array
-        */
        void (*reply_cb) (void *data, const char **path_array, int array_len);
        void (*close_cb) (void *data);
 
 } email_attach_panel_listener_t;
 
-/**
- * Forward declaration of the email module structure
- */
 typedef struct _email_module email_module_t;
 
-/**
- * @brief Launches the application
- *
- * @param[in]  module          pointer to the module
- * @param[in]  app_type        type of the application to launch
- * @param[in]  params          application launch extra data parameters
- * @param[in]  listener        application listener
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_launch_app(email_module_t *module, email_launch_app_type_e app_type,
                app_control_h params, email_launched_app_listener_t *listener);
 
-/**
- * @brief Launches the attach panel
- *
- * Attach panel can't be launched if an application is already was launched
- *
- * @param[in]  module          pointer to the module
- * @param[in]  listener        attach panel listener
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_launch_attach_panel(email_module_t *module,
                email_attach_panel_listener_t *listener);
-
-/**
- * @brief Attaches extra data category bundle
- *
- * Attach panel can't be launched if an application is already was launched
- *
- * @param[in]  module          pointer to the module
- * @param[in]  listener        attach panel listener
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_set_attach_panel_category_bundle(email_module_t *module,
                email_attach_panel_category_type_e category_type, bundle *b);
 
-/**
- * @brief Terminates launched application and attach panel if any
- *
- * @param[in]  module                  pointer to the module
- * @param[in]  notify_close    true - notify listener on close, false - otherwise
- */
 EMAIL_API void email_module_terminate_any_launched_app(email_module_t *module, bool notify_close);
 
-/**
- * PRIVATE FUNCTIONALITY
- */
-
-/**
- * @brief Initializes launcher sub object
- *
- * This is private function. Do not call this function directly.
- *
- * @param[in]  module          pointer to the module
- */
 void _email_module_handle_launcher_initialize(email_module_t *module);
-
-/**
- * @brief Signals about module pause to the launcher sub object
- *
- * This is private function. Do not call this function directly.
- *
- * @param[in]  module          pointer to the module
- */
 void _email_module_handle_launcher_pause(email_module_t *module);
-
-/**
- * @brief Signals about module resume to the launcher sub object
- *
- * This is private function. Do not call this function directly.
- *
- * @param[in]  module          pointer to the module
- */
 void _email_module_handle_launcher_resume(email_module_t *module);
-
-/**
- * @brief Finalizes launcher sub object
- *
- * This is private function. Do not call this function directly.
- *
- * @param[in]  module          pointer to the module
- */
 void _email_module_handle_launcher_finalize(email_module_t *module);
 
 #endif /* _EMAIL_MODULE_LAUNCHER_H_ */
index be9311c..76c7f6d 100644 (file)
 
 #include "email-common-types.h"
 
-/**
- * Opaque handle of the email module
- */
 typedef struct {} *email_module_h;
 
-/**
- * Enumeration of the email module types
- */
 typedef enum _email_module_type
 {
-       /* Represents absence of module */
        EMAIL_MODULE_NONE = 0,
 
-       /* Mail box module to display list of email by different folders */
        EMAIL_MODULE_MAILBOX,
-       /* Viewer module to read emails */
        EMAIL_MODULE_VIEWER,
-       /* Composer module to compose and send new emails */
        EMAIL_MODULE_COMPOSER,
-       /* Account module to manage account folders */
        EMAIL_MODULE_ACCOUNT,
-       /* Setting module to configure account settings */
        EMAIL_MODULE_SETTING,
-       /* Filter module to configure priority senders */
        EMAIL_MODULE_FILTER,
 
-       /* Count of enumeration values */
        EMAIL_MODULE_COUNT
 } email_module_type_e;
 
-/**
- * Enumeration of the email module events
- */
 typedef enum _email_module_event
 {
-       /* System is almost out of memory */
        EM_EVENT_LOW_MEMORY_SOFT,
-       /* System is out of memory */
        EM_EVENT_LOW_MEMORY_HARD,
-       /* Device battery level is low */
        EM_EVENT_LOW_BATTERY,
-       /* Device locale language was changed */
        EM_EVENT_LANG_CHANGE,
-       /* Device orientation change events */
        EM_EVENT_ROTATE_PORTRAIT,
        EM_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN,
        EM_EVENT_ROTATE_LANDSCAPE,
        EM_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN,
-       /* Region format information was changed */
        EM_EVENT_REGION_CHANGE
 
 } email_module_event_e;
 
-/**
- * Listener of the email module events
- */
 typedef struct _email_module_listener
 {
-       /* User data to pass to each callback function */
        void *cb_data;
 
-       /**
-        * @brief Callback which is used to send result messages to the listener
-        *
-        * @param[in]   data            callback user data
-        * @param[in]   module          sender module
-        * @param[in]   result          result message send back to the listener
-        */
        void (*result_cb) (void *data, email_module_h module, app_control_h result);
-
-       /**
-        * @brief Callback which is used to send destroy request to the listener
-        *
-        * Module can't destroy itself. It must make a destroy request.
-        * Because only the creator of the module can destroy it.
-        *
-        * @param[in]   data            callback user data
-        * @param[in]   module          sender module
-        */
        void (*destroy_request_cb) (void *data, email_module_h module);
-
-       /**
-        * @brief Callback  which is called when module is actually destroyed
-        *
-        * @param[in]   data            callback user data
-        * @param[in]   module          sender module
-        */
        void (*destroy_cb) (void *data, email_module_h module);
 
 } email_module_listener_t;
 
-/**
- * email_module_mgr
- */
+// email_module_mgr //
 
-/**
- * @brief Initializes module manager global object
- *
- * This function must be called before any other function related to email modules.
- *
- * @param[in]  win                     application main window widget
- * @param[in]  conform         application conformant widget
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_mgr_init(Evas_Object *win, Evas_Object *conform);
-
-/**
- * @brief Immediately finalazes module manager and all remaining modules
- *
- * Use this function when application terminates.
- * If you simply need to restart the application with different root module
- * you may simply destroy root module and create new one again.
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_mgr_finalize();
 
-/**
- * @brief Pauses email module manager and modules
- *
- * Call this function in application pause callback
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_mgr_pause();
-
-/**
- * @brief Resumes email module manager and modules
- *
- * Call this function in application resume callback
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_mgr_resume();
-
-/**
- * @brief Sends event to module manager and modules
- *
- * Call this function in application event callbacks
- *
- * @param[in]  event   event type to send
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_mgr_send_event(email_module_event_e event);
 
-/**
- * @brief Creates new root module
- *
- * To create child module you must use method of the parent module.
- * See "email-module-core.h" for details.
- *
- * @param[in]  module_type             type of the module to create
- * @param[in]  params                  module create parameters (depends on concrete module)
- * @param[in]  listener                listener of the new module
- *
- * @return handle to the new module,
- *             NULL - on error
- */
 EMAIL_API email_module_h email_module_mgr_create_root_module(email_module_type_e module_type,
                app_control_h params, email_module_listener_t *listener);
 
-/**
- * @brief Checks weather the module manager is in the middle of switching views
- *
- * @return true - switching of views is currently in progress,
- *             false - otherwise
- */
 EMAIL_API bool email_module_mgr_is_in_transiton();
-
-/**
- * @brief Checks weather the application is in compressed mode (e.g. keyboard is shown)
- *
- * @return true - if in compressed mode
- *             false - otherwise
- */
 EMAIL_API bool email_module_mgr_is_in_compressed_mode();
 
-/**
- * email_module
- */
+// email_module //
 
-/**
- * @brief Destroys the module
- *
- * Destruction of the module is asynchronous process.
- * To know the actual time of the destruction use destroy_cb().
- * Root module always get destroyed immediately.
- *
- * @param[in]  module          handle of the module to destroy
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_destroy(email_module_h module);
-
-/**
- * @brief Same as email_module_destroy() but no using naviframe pop
- *
- * When module manager is in transition pop will e used anyway for non root modules.
- * For the root module this function has the same effect as email_module_destroy().
- *
- * @param[in]  module          handle of the module to destroy
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_destroy_no_pop(email_module_h module);
-
-/**
- * @brief Sends a message to the spceified module
- *
- * @param[in]  module          handle of the module to send message
- * @param[in]  msg                     message to send
- *
- * @return 0 - on success,
- *             negative value - on error
- */
 EMAIL_API int email_module_send_message(email_module_h module, app_control_h msg);
 
 #endif /* _EMAIL_MODULE_H_ */
index 07bdb1c..ca0b766 100755 (executable)
@@ -435,9 +435,6 @@ EMAIL_API void email_feedback_init(void);
 EMAIL_API void email_feedback_deinit(void);
 EMAIL_API void email_feedback_play_tap_sound(void);
 
-EMAIL_API int email_register_language_changed_callback(system_settings_changed_cb func, void *data);
-EMAIL_API int email_unregister_language_changed_callback(system_settings_changed_cb func);
-
 EMAIL_API int email_register_timezone_changed_callback(system_settings_changed_cb func, void *data);
 EMAIL_API int email_unregister_timezone_changed_callback(system_settings_changed_cb func);
 
index 2b89dfe..97f595f 100644 (file)
 #include "email-debug.h"
 #include "email-utils.h"
 #include "email-editfield-utils.h"
-#include "email-locale.h"
 
-#define SEARCH_TITLE_COLOR_GUIDE_TEXT_FOCUSED "<font_size=40><color=#EAEAEA91>"
-#define SEARCH_TITLE_COLOR_GUIDE_TEXT_UNFOCUSED "<font_size=40><color=#EAEAEA6D>"
-#define SEARCH_TITLE_COLOR_GUIDE_TEXT_END_TEXT_TAG "</color></font_size>"
-#define SEARCH_ENTRY_GUIDE_TEXT_SIZE 512
 
 static void _editfield_focused_cb(void *data, Evas_Object *obj, void *event_info);
 static void _editfield_unfocused_cb(void *data, Evas_Object *obj, void *event_info);
 static void _editfield_with_clear_btn_focused_cb(void *data, Evas_Object *obj, void *event_info);
 static void _editfield_with_clear_btn_unfocused_cb(void *data, Evas_Object *obj, void *event_info);
-static void _editfield_search_title_focused_cb(void *data, Evas_Object *obj, void *event_info);
-static void _editfield_search_title_unfocused_cb(void *data, Evas_Object *obj, void *event_info);
 static void _editfield_with_clear_btn_changed_cb(void *data, Evas_Object *obj, void *event_info);
 static void _clear_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
-static void _editfield_search_title_entry_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
-static void _on_system_settings_change_cb(system_settings_key_e key, void *user_data);
 
 void email_common_util_editfield_create(Evas_Object *parent, int flags, email_editfield_t *editfield)
 {
@@ -51,9 +42,7 @@ void email_common_util_editfield_create(Evas_Object *parent, int flags, email_ed
                return;
        }
 
-       if (flags & EF_TITLE_SEARCH) {
-               elm_layout_file_set(editfield_ly, email_get_common_theme_path(), "title_search_editfield");
-       } else if (flags & EF_MULTILINE) {
+       if (flags & EF_MULTILINE) {
                elm_layout_theme_set(editfield_ly, "layout", "editfield", "multiline");
        } else {
                elm_layout_theme_set(editfield_ly, "layout", "editfield", "singleline");
@@ -81,27 +70,6 @@ void email_common_util_editfield_create(Evas_Object *parent, int flags, email_ed
                elm_entry_autocapital_type_set(entry, ELM_AUTOCAPITAL_TYPE_NONE);
        }
 
-       if (flags & EF_TITLE_SEARCH) {
-
-               /* default entry text color */
-               elm_entry_text_style_user_push(entry, "DEFAULT='color=#FAFAFAFF font_size=40'");
-
-               /* register callback on language change for updating guide text */
-               email_register_language_changed_callback(_on_system_settings_change_cb, editfield);
-
-               /* register callback on font size change for updating guide text */
-               email_register_accessibility_font_size_changed_callback(_on_system_settings_change_cb, editfield);
-
-               /* needed for unregistering on language change callback when entry is deleted */
-               evas_object_event_callback_add(entry, EVAS_CALLBACK_DEL, _editfield_search_title_entry_del_cb, editfield);
-
-               /* additional callback for changing guide text color on focus event */
-               evas_object_smart_callback_add(entry, "focused", _editfield_search_title_focused_cb, editfield);
-
-               /* additional callback for changing guide text color on unfocus event */
-               evas_object_smart_callback_add(entry, "unfocused", _editfield_search_title_unfocused_cb, editfield);
-       }
-
        if (flags & EF_PASSWORD) {
                elm_entry_prediction_allow_set(entry, EINA_FALSE);
                elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_PASSWORD);
@@ -120,15 +88,7 @@ void email_common_util_editfield_create(Evas_Object *parent, int flags, email_ed
                        return;
                }
 
-               if (flags & EF_TITLE_SEARCH) {
-                       elm_object_style_set(button, "transparent");
-                       Evas_Object *icon = elm_layout_add(button);
-                       elm_layout_file_set(icon, email_get_common_theme_path(), EMAIL_IMAGE_CORE_CLEAR);
-                       elm_object_part_content_set(button, "elm.swallow.content", icon);
-                       evas_object_show(icon);
-               } else {
-                       elm_object_style_set(button, "editfield_clear");
-               }
+               elm_object_style_set(button, "editfield_clear");
                evas_object_smart_callback_add(button, "clicked", _clear_button_clicked_cb, entry);
                evas_object_smart_callback_add(entry, "focused", _editfield_with_clear_btn_focused_cb, editfield_ly);
                evas_object_smart_callback_add(entry, "unfocused", _editfield_with_clear_btn_unfocused_cb, editfield_ly);
@@ -173,38 +133,13 @@ static void _editfield_with_clear_btn_unfocused_cb(void *data, Evas_Object *obj,
        debug_leave();
 }
 
-static void _editfield_search_title_focused_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       debug_enter();
-       retm_if(!data, "Invalid parameter: data is NULL!");
-
-       email_editfield_t *editfield = (email_editfield_t *)data;
-       char temp[SEARCH_ENTRY_GUIDE_TEXT_SIZE] = { 0 };
-       snprintf(temp, sizeof(temp), "%s%s%s", SEARCH_TITLE_COLOR_GUIDE_TEXT_FOCUSED, _("IDS_EMAIL_OPT_SEARCH"), SEARCH_TITLE_COLOR_GUIDE_TEXT_END_TEXT_TAG);
-       elm_object_part_text_set(editfield->entry, "elm.guide", temp);
-
-       debug_leave();
-}
-
-static void _editfield_search_title_unfocused_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       debug_enter();
-       retm_if(!data, "Invalid parameter: data is NULL!");
-
-       email_editfield_t *editfield = (email_editfield_t *)data;
-       char temp[SEARCH_ENTRY_GUIDE_TEXT_SIZE] = { 0 };
-       snprintf(temp, sizeof(temp), "%s%s%s", SEARCH_TITLE_COLOR_GUIDE_TEXT_UNFOCUSED, _("IDS_EMAIL_OPT_SEARCH"), SEARCH_TITLE_COLOR_GUIDE_TEXT_END_TEXT_TAG);
-       elm_object_part_text_set(editfield->entry, "elm.guide", temp);
-
-       debug_leave();
-}
-
 static void _editfield_with_clear_btn_changed_cb(void *data, Evas_Object *obj, void *event_info)
 {
        debug_enter();
        retm_if(!data, "Invalid parameter: data is NULL!");
 
        Evas_Object *editfield_ly = (Evas_Object *)data;
+
        if (!elm_entry_is_empty(obj) && elm_object_focus_get(obj)) {
                elm_object_signal_emit(editfield_ly, "elm,action,show,button", "");
        } else {
@@ -218,10 +153,6 @@ static void _clear_button_clicked_cb(void *data, Evas_Object *obj, void *event_i
        debug_enter();
        retm_if(!data, "Invalid parameter: data is NULL!");
 
-       if (!strcmp(elm_object_style_get(obj), "transparent")) {
-               email_feedback_play_tap_sound();
-       }
-
        Evas_Object *entry = (Evas_Object *)data;
 
        elm_entry_entry_set(entry, "");
@@ -248,32 +179,3 @@ static void _editfield_unfocused_cb(void *data, Evas_Object *obj, void *event_in
        elm_object_signal_emit(editfield_ly, "elm,state,unfocused", "");
        debug_leave();
 }
-
-static void _editfield_search_title_entry_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
-       email_editfield_t *editfield = (email_editfield_t *)data;
-       editfield->entry = NULL;
-
-       email_unregister_accessibility_font_size_changed_callback(_on_system_settings_change_cb);
-       email_unregister_language_changed_callback(_on_system_settings_change_cb);
-}
-
-static void _on_system_settings_change_cb(system_settings_key_e key, void *data)
-{
-       email_editfield_t *editfield = (email_editfield_t *)data;
-
-       if (!editfield->entry) {
-               return;
-       }
-
-       char temp[SEARCH_ENTRY_GUIDE_TEXT_SIZE] = { 0 };
-       const char *start_tag_string = NULL;
-
-       if (elm_object_focus_get(editfield->entry)) {
-               start_tag_string = SEARCH_TITLE_COLOR_GUIDE_TEXT_FOCUSED;
-       } else {
-               start_tag_string = SEARCH_TITLE_COLOR_GUIDE_TEXT_UNFOCUSED;
-       }
-       snprintf(temp, sizeof(temp), "%s%s%s", start_tag_string, _("IDS_EMAIL_OPT_SEARCH"), SEARCH_TITLE_COLOR_GUIDE_TEXT_END_TEXT_TAG);
-       elm_object_part_text_set(editfield->entry, "elm.guide", temp);
-}
index c86b9d2..68592d2 100644 (file)
 #define EMAIL_MODULE_ALLOC_FUNC_NAME "email_module_alloc"
 
 /**
- * @brief Prototype of the entry point function
- *
- * @return pointer to the allocated module object, or NULL on error
+ * Prototype of the entry point function
  */
 typedef email_module_t *(*alloc_func_t)();
 
 /**
- * @brief Callback prototype which is used to iterate on through the tree of modules
- *
- * @param[in]  module          pointer to the module
- * @param[in]  cb_data         pointer to the callback data
+ * Callback prototype which is used to iterate on through the tree of modules
  */
 typedef void (*email_module_each_cb_t)(email_module_t *module, void *cb_data);
 
@@ -65,9 +60,7 @@ typedef struct {
 
 /**
  * @brief Gets module .so file name from module type enumeration
- *
  * @param[in]  module_type             type of the module
- *
  * @return name of the .so file or NULL on error
  */
 static const char *_get_module_lib_name(email_module_type_e module_type);
index f3544d2..b2696fc 100644 (file)
  */
 static const char *EMAIL_LAUNCH_APP_NAMES[EMAIL_LAUNCH_APP_COUNT] = {
                NULL, /* auto */
+               "contacts-details-efl",
+               "contacts-list-efl",
+               "contacts-tabui-efl",
+               "bookmark-add-efl",
+               "memo-efl",
                "setting-ringtone-efl",
                "setting-storage-efl"
 };
@@ -39,9 +44,8 @@ static void _email_module_terminate_any_launched_app(email_module_t *module, boo
  *
  * @param[in]  module                  pointer to the module
  * @param[in]  notify_close    true - need to notify listener, false - otherwise
- * @param[in]  reset_listener  true - need to reset listener, false - otherwise
  */
-static void _email_module_reset_app_launch_state(email_module_t *module, bool notify_close, bool reset_listener);
+static void _email_module_reset_app_launch_state(email_module_t *module, bool notify_close);
 
 /**
  * @brief Frees attach panel if it was created
@@ -102,9 +106,8 @@ static int _email_module_create_attach_panel(email_module_t *module);
  *
  * @param[in]  module                  pointer to the module
  * @param[in]  notify_close    true - need to notify listener, false - otherwise
- * @param[in]  reset_listener  true - need to reset listener, false - otherwise
  */
-static void _email_module_close_attach_panel(email_module_t *module, bool notify_close, bool reset_listener);
+static void _email_module_close_attach_panel(email_module_t *module, bool notify_close);
 
 /**
  * @brief Handler method of the attach panel reply callback
@@ -150,9 +153,6 @@ int email_module_launch_app(email_module_t *module, email_launch_app_type_e app_
                return -1;
        }
 
-       /* Reset previous listener */
-       memset(&module->_app_listener, 0, sizeof(module->_app_listener));
-
        /* Dummy loop to handle exceptions and cleanup */
        while (1) {
                /* Compile-time warning is preferred over undefined behaviour in run-time. */
@@ -232,9 +232,6 @@ int email_module_launch_attach_panel(email_module_t *module, email_attach_panel_
        retvm_if(module->is_attach_panel_launched, -1, "Attach panel is running");
        retvm_if(module->is_launcher_busy, -1, "Launcher is busy");
 
-       /* Reset previous listener */
-       memset(&module->_attach_panel_listener, 0, sizeof(module->_attach_panel_listener));
-
        /* We should create attach panel if not created.
         * Or recreate if bundles changes */
        if (!module->_attach_panel || module->_attach_panel_bundles_changed) {
@@ -341,7 +338,7 @@ void _email_module_handle_launcher_resume(email_module_t *module)
                debug_log("Email was resumed while there was launched app. Reset app state...");
 
                /* Handle application close with notify callback */
-               _email_module_reset_app_launch_state(module, true, false);
+               _email_module_reset_app_launch_state(module, true);
        }
 
        debug_leave();
@@ -378,7 +375,7 @@ void _email_module_terminate_any_launched_app(email_module_t *module, bool notif
                }
 
                /* Handling application close immediately */
-               _email_module_reset_app_launch_state(module, notify_close, true);
+               _email_module_reset_app_launch_state(module, notify_close);
 
        }
 
@@ -387,14 +384,14 @@ void _email_module_terminate_any_launched_app(email_module_t *module, bool notif
                debug_log("Closing attach panel");
 
                /* Close it before freeing */
-               _email_module_close_attach_panel(module, notify_close, true);
+               _email_module_close_attach_panel(module, notify_close);
        }
 
        /* Free the attach panel in any case */
        _email_module_free_attach_panel(module);
 }
 
-void _email_module_reset_app_launch_state(email_module_t *module, bool notify_close, bool reset_listener)
+void _email_module_reset_app_launch_state(email_module_t *module, bool notify_close)
 {
        /* Destroy launch request */
        app_control_destroy(module->_launched_app);
@@ -413,19 +410,14 @@ void _email_module_reset_app_launch_state(email_module_t *module, bool notify_cl
        module->is_launcher_busy = false;
 
        /* Notify listener about close if needed */
-       if (module->_app_listener.close_cb) {
-               if (notify_close) {
-                       module->_app_listener.close_cb(module->_app_listener.cb_data);
-               }
-               module->_app_listener.close_cb = NULL;
+       if (notify_close && module->_app_listener.close_cb) {
+               module->_app_listener.close_cb(module->_app_listener.cb_data);
        }
 
        /* Inside close callback a new application may be launched.
-        * Reset rest of the state if this not happened. */
+        * Reset rest of the state if this not hapend. */
        if (!module->_launched_app) {
-               if (reset_listener) {
-                       memset(&module->_app_listener, 0, sizeof(module->_app_listener));
-               }
+               memset(&module->_app_listener, 0, sizeof(module->_app_listener));
 
                module->launched_app_type = EMAIL_LAUNCH_APP_NONE;
        }
@@ -472,6 +464,7 @@ void _email_module_app_reply_cb(app_control_h request, app_control_h reply,
        /* Ignore all unexpected reply callbacks */
        if (!module->_launched_app) {
                debug_warning("Unexpected reply from an application!");
+               return;
        }
 
        /* Handle special result cases */
@@ -502,13 +495,12 @@ void _email_module_app_reply_cb(app_control_h request, app_control_h reply,
        case APP_CONTROL_RESULT_CANCELED:
                /* Reset state immediately */
                debug_log("App launch was cancelled by framework.");
-               _email_module_reset_app_launch_state(module, true, true);
+               _email_module_reset_app_launch_state(module, true);
                break;
        default:
                /* In other cases - forward reply to listener */
                if (module->_app_listener.reply_cb) {
                        module->_app_listener.reply_cb(module->_app_listener.cb_data, result, reply);
-                       module->_app_listener.reply_cb = NULL;
                }
        }
 }
@@ -523,7 +515,7 @@ Eina_Bool _email_module_app_timer_cb(void *data)
        module->_app_timer = NULL;
 
        /* Assuming termination of the transparent application */
-       _email_module_reset_app_launch_state(module, true, false);
+       _email_module_reset_app_launch_state(module, true);
 
        return ECORE_CALLBACK_CANCEL;
 }
@@ -590,7 +582,7 @@ int _email_module_create_attach_panel(email_module_t *module)
        return 0;
 }
 
-void _email_module_close_attach_panel(email_module_t *module, bool notify_close, bool reset_listener)
+void _email_module_close_attach_panel(email_module_t *module, bool notify_close)
 {
        debug_enter();
 
@@ -603,16 +595,13 @@ void _email_module_close_attach_panel(email_module_t *module, bool notify_close,
        }
 
        /* Notify listener */
-       if (module->_attach_panel_listener.close_cb) {
-               if (notify_close) {
-                       module->_attach_panel_listener.close_cb(module->_attach_panel_listener.cb_data);
-               }
-               module->_attach_panel_listener.close_cb = NULL;
+       if (notify_close && module->_attach_panel_listener.close_cb) {
+               module->_attach_panel_listener.close_cb(module->_attach_panel_listener.cb_data);
        }
 
        /* Reset listener */
-       if (reset_listener && !module->is_attach_panel_launched ) {
-               memset(&module->_attach_panel_listener, 0, sizeof(module->_attach_panel_listener));
+       if (!module->is_attach_panel_launched) {
+               memset(&module->_app_listener, 0, sizeof(module->_app_listener));
        }
 
        debug_leave();
@@ -649,22 +638,17 @@ void _email_module_attach_panel_result_cb(attach_panel_h attach_panel,
 
        /* TODO: add error about wrong data */
 
-       /* If listener assigned */
-       if (module->_attach_panel_listener.reply_cb) {
-               /* If success */
-               if (r == APP_CONTROL_ERROR_NONE) {
-                       /* This callback may be called in thread so we must sync with GUI thread */
-                       ecore_thread_main_loop_begin();
-
-                       /* Invoke reply callback */
-                       module->_attach_panel_listener.reply_cb(
-                                       module->_attach_panel_listener.cb_data, (const char **)path_array, array_len);
+       /* If success and listener assigned */
+       if ((r == APP_CONTROL_ERROR_NONE) && module->_attach_panel_listener.reply_cb) {
+               /* This callback may be called in thread so we must sync with GUI thread */
+               ecore_thread_main_loop_begin();
 
-                       /* We must unlock GUI thread */
-                       ecore_thread_main_loop_end();
-               }
+               /* Invoke reply callback */
+               module->_attach_panel_listener.reply_cb(
+                               module->_attach_panel_listener.cb_data, (const char **)path_array, array_len);
 
-               module->_attach_panel_listener.reply_cb = NULL;
+               /* We must unlock GUI thread */
+               ecore_thread_main_loop_end();
        }
 
        /* Free path array and items */
@@ -692,7 +676,7 @@ void _email_module_attach_panel_event_cb(attach_panel_h attach_panel,
                if (module->is_attach_panel_launched) {
                        /* Reset state so we do not hide attach panel twice (it was already hidden) */
                        module->is_attach_panel_launched = false;
-                       _email_module_close_attach_panel(module, true, false);
+                       _email_module_close_attach_panel(module, true);
                } else {
                        debug_log("event ignored");
                }
index 4aa7da3..7475901 100755 (executable)
@@ -2304,30 +2304,6 @@ EMAIL_API int email_unregister_accessibility_font_size_changed_callback(system_s
        return 0;
 }
 
-EMAIL_API int email_register_language_changed_callback(system_settings_changed_cb func, void *data)
-{
-       debug_enter();
-       if (_email_register_changed_callback(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, func, data) != SYSTEM_SETTINGS_ERROR_NONE) {
-               debug_error("system_setting callback registration is failed");
-               return -1;
-       }
-       debug_leave();
-
-       return 0;
-}
-
-EMAIL_API int email_unregister_language_changed_callback(system_settings_changed_cb func)
-{
-       debug_enter();
-       if (_email_unregister_changed_callback(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, func) != SYSTEM_SETTINGS_ERROR_NONE) {
-               debug_error("system_setting callback removal is failed");
-               return -1;
-       }
-       debug_leave();
-
-       return 0;
-}
-
 EMAIL_API int email_register_timezone_changed_callback(system_settings_changed_cb func, void *data)
 {
        debug_enter();
index fc822a7..9b3e0cb 100644 (file)
@@ -44,6 +44,7 @@ typedef struct _app_data {
 
        Evas_Object *win;
        Evas_Object *conform;
+       Evas_Object *bg;
 
        app_control_h launch_params;
        email_module_h module;
@@ -359,7 +360,7 @@ bool _app_init_main_layouts(app_data_t *ad)
 {
        elm_app_base_scale_set(APP_BASE_SCALE);
 
-       ad->win = elm_win_util_standard_add(APP_WIN_NAME, APP_WIN_NAME);
+       ad->win = elm_win_add(NULL, APP_WIN_NAME, ELM_WIN_BASIC);
        if (!ad->win) {
                debug_error("elm_win_add(): failed");
                return false;
@@ -379,7 +380,15 @@ bool _app_init_main_layouts(app_data_t *ad)
        elm_win_resize_object_add(ad->win, ad->conform);
        evas_object_show(ad->conform);
 
-       evas_object_show(ad->win);
+       ad->bg = elm_bg_add(ad->conform);
+       if (!ad->bg) {
+               debug_error("elm_bg_add(): failed");
+               return false;
+       }
+
+       evas_object_size_hint_weight_set(ad->bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_object_part_content_set(ad->conform, "elm.swallow.bg", ad->bg);
+       evas_object_show(ad->bg);
 
        return true;
 }
index 1f29ec1..9911c9f 100755 (executable)
@@ -374,13 +374,4 @@ void _recipient_entry_keydown_cb(void *data, Evas *e, Evas_Object *obj, void *ev
  */
 void _recipient_entry_keyup_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
 
-/**
- * @brief Set text into recipient label according to label type
- *
- * @param[in]  obj                             Evas_Object label
- * @param[in]  recp_type               Label type: TO, CC, BCC, FROM, etc
- *
- */
-void composer_recipient_label_text_set(Evas_Object *obj, COMPOSER_RECIPIENT_TYPE_E recp_type);
-
 #endif /* __EMAIL_COMPOSER_RECIPIENT_H__ */
index fa81df1..16c9c37 100755 (executable)
@@ -27,6 +27,8 @@ typedef struct {
        Eina_Bool is_underline;
        EmailRGBA font_color;
        EmailRGBA bg_color;
+       Eina_Bool is_ordered_list;
+       Eina_Bool is_unordered_list;
 } FontStyleParams;
 
 EMAIL_API Evas_Object *composer_rich_text_create_toolbar(EmailComposerUGD *ugd);
index cb0b3f4..cd1c5dd 100755 (executable)
@@ -85,7 +85,9 @@
        "underline=%d&" \
        "italic=%d&" \
        "font_color=rgb(%d, %d, %d)&" \
-       "bg_color=rgb(%d, %d, %d)"
+       "bg_color=rgb(%d, %d, %d)&" \
+       "ordered_list=%d&" \
+       "unordered_list=%d"
 
 #define EMAIL_COMPOSER_TMP_FOLDER_PERMISSION 0775
 
@@ -220,6 +222,14 @@ typedef enum {
        COMPOSER_ERROR_ATTACHMENT_DUPLICATE                             = -805,
 } COMPOSER_ERROR_TYPE_E;
 
+typedef enum {
+       COMPOSER_ROTATE_UNKNOWN = 0,
+       COMPOSER_ROTATE_PORTRAIT = EM_EVENT_ROTATE_PORTRAIT,
+       COMPOSER_ROTATE_PORTRAIT_UPSIDEDOWN = EM_EVENT_ROTATE_PORTRAIT_UPSIDEDOWN,
+       COMPOSER_ROTATE_LANDSCAPE = EM_EVENT_ROTATE_LANDSCAPE,
+       COMPOSER_ROTATE_LANDSCAPE_UPSIDEDOWN = EM_EVENT_ROTATE_LANDSCAPE_UPSIDEDOWN,
+} COMPOSER_ROTATE_TYPE_E;
+
 typedef struct _EmailComposerAccount EmailComposerAccount;
 typedef struct _EmailComposerMail EmailComposerMail;
 typedef struct _ComposerAttachmentItemData ComposerAttachmentItemData;
@@ -292,6 +302,8 @@ typedef enum {
        RICH_TEXT_TYPE_UNDERLINE,
        RICH_TEXT_TYPE_FONT_COLOR,
        RICH_TEXT_TYPE_BACKGROUND_COLOR,
+       RICH_TEXT_TYPE_ORDERED_LIST,
+       RICH_TEXT_TYPE_UNORDERED_LIST,
        RICH_TEXT_TYPE_COUNT
 } RichTextTypes;
 
index 4bb1634..689a73d 100755 (executable)
@@ -327,6 +327,7 @@ struct ug_data {
        int priority_option;
 
        /* Miscellaneous */
+       COMPOSER_ROTATE_TYPE_E rotate;
        Eina_Bool is_horizontal;
        Eina_Bool is_load_finished;
        Eina_Bool is_ewk_ready;
index e080d73..6ff157a 100755 (executable)
@@ -73,10 +73,14 @@ static Eina_Bool _initial_view_cs_animator_cb(void *data, double pos);
 
 static Evas_Object *_initial_view_create_combined_scroller_layout(Evas_Object *parent);
 
+static void _initial_view_window_resized_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+
+static void _initial_view_main_scroller_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void _initial_view_main_scroller_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void _initial_view_main_scroller_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void _initial_view_main_scroller_mouse_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void _initial_view_main_scroller_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _initial_view_main_scroller_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
 
 static void _initial_view_composer_layout_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
 
@@ -538,7 +542,7 @@ static void _initial_view_cs_handle_caret_pos_change(EmailComposerUGD *ugd, int
                        new_scroll_pos = ugd->cs_edge_scroll_pos;
                }
 
-               if (ugd->cs_has_selection || ugd->cs_has_magnifier) {
+               if (ugd->cs_has_magnifier) {
                        composer_initial_view_cs_show(ugd, new_scroll_pos);
                } else {
                        composer_initial_view_cs_bring_in(ugd, new_scroll_pos);
@@ -648,6 +652,22 @@ static Evas_Object *_initial_view_create_combined_scroller_layout(Evas_Object *p
        return layout;
 }
 
+static void _initial_view_window_resized_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       debug_enter();
+       EmailComposerUGD *ugd = data;
+
+       composer_util_resize_webview_height(ugd);
+}
+
+static void _initial_view_main_scroller_move_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       debug_enter();
+       EmailComposerUGD *ugd = data;
+
+       composer_util_resize_webview_height(ugd);
+}
+
 static void _initial_view_main_scroller_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
        debug_enter();
@@ -724,6 +744,14 @@ static void _initial_view_main_scroller_up_cb(void *data, Evas *e, Evas_Object *
        }
 }
 
+static void _initial_view_main_scroller_del_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+       debug_enter();
+       EmailComposerUGD *ugd = data;
+
+       evas_object_event_callback_del(ugd->base.module->win, EVAS_CALLBACK_RESIZE, _initial_view_window_resized_cb);
+}
+
 static void _initial_view_composer_layout_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
 {
        debug_enter();
@@ -937,10 +965,14 @@ void composer_initial_view_create_combined_scroller(void *data)
 
        /* set callbacks for scrolling */
 
+       evas_object_event_callback_add(ugd->base.module->win, EVAS_CALLBACK_RESIZE, _initial_view_window_resized_cb, ugd);
+
+       evas_object_event_callback_add(ugd->main_scroller, EVAS_CALLBACK_MOVE, _initial_view_main_scroller_move_cb, ugd);
        evas_object_event_callback_add(ugd->main_scroller, EVAS_CALLBACK_RESIZE, _initial_view_main_scroller_resize_cb, ugd);
        evas_object_event_callback_add(ugd->main_scroller, EVAS_CALLBACK_MOUSE_DOWN, _initial_view_main_scroller_down_cb, ugd);
        evas_object_event_callback_add(ugd->main_scroller, EVAS_CALLBACK_MOUSE_MOVE, _initial_view_main_scroller_mouse_move_cb, ugd);
        evas_object_event_callback_add(ugd->main_scroller, EVAS_CALLBACK_MOUSE_UP, _initial_view_main_scroller_up_cb, ugd);
+       evas_object_event_callback_add(ugd->main_scroller, EVAS_CALLBACK_DEL, _initial_view_main_scroller_del_cb, ugd);
 
        evas_object_event_callback_add(ugd->composer_layout, EVAS_CALLBACK_RESIZE, _initial_view_composer_layout_resize_cb, ugd);
 
@@ -973,8 +1005,6 @@ void composer_initial_view_set_combined_scroller_rotation_mode(void *data)
                edje_object_signal_emit(_EDJ(ugd->combined_scroller), "scroller_portrait", "");
        }
 
-       composer_util_resize_webview_height(ugd);
-
        debug_leave();
 }
 
index 15b6f91..3806afe 100755 (executable)
@@ -86,18 +86,18 @@ static Eina_Bool __composer_ps_mouse_down_cb(void *data, int type, void *event)
        evas_object_geometry_get(ugd->base.module->win, NULL, NULL, &eWidth, &eHeight);
        debug_log("eWidth : %d, eHeight : %d", eWidth, eHeight);
 
-       if (ugd->base.orientation == APP_DEVICE_ORIENTATION_0 || ugd->base.orientation ==  APP_DEVICE_ORIENTATION_180) {
+       if (ugd->rotate == COMPOSER_ROTATE_PORTRAIT || ugd->rotate == COMPOSER_ROTATE_PORTRAIT_UPSIDEDOWN) {
                mouse_x = ev->x;
                mouse_y = ev->y;
-       } else if (ugd->base.orientation == APP_DEVICE_ORIENTATION_270) {
+       } else if (ugd->rotate == COMPOSER_ROTATE_LANDSCAPE) {
                mouse_x = ev->y;
                mouse_y = eHeight - ev->x;
-       } else if (ugd->base.orientation ==  APP_DEVICE_ORIENTATION_90) {
+       } else if (ugd->rotate == COMPOSER_ROTATE_LANDSCAPE_UPSIDEDOWN) {
                mouse_x = eWidth - ev->y;
                mouse_y = ev->x;
        }
 
-       debug_secure("Rotation: [%d] ", ugd->base.orientation);
+       debug_secure("Rotation: [%d] ", ugd->rotate);
        debug_secure("Final mouse down point: [x:%d,y:%d]", mouse_x, mouse_y);
 
        evas_object_geometry_get(ugd->ps_layout, &x, &y, &w, &h); /* it retrurns geometry position base on combination window and rotation */
index 8bb743c..ba8778e 100755 (executable)
@@ -101,8 +101,6 @@ static void _recipient_get_header_string(COMPOSER_RECIPIENT_TYPE_E recp_type, ch
        char *header = NULL;
        if (recp_type == COMPOSER_RECIPIENT_TYPE_FROM) {
                header = email_get_email_string("IDS_EMAIL_BODY_FROM_MSENDER");
-               snprintf(buf, buf_len, TEXT_STYLE_ENTRY_FROM_ADDRESS, COLOR_BLUE, header);
-               return;
        } else if (recp_type == COMPOSER_RECIPIENT_TYPE_TO) {
                header = email_get_email_string("IDS_EMAIL_BODY_TO_M_RECIPIENT");
        } else if (recp_type == COMPOSER_RECIPIENT_TYPE_CC) {
@@ -225,6 +223,7 @@ static void _recipient_from_button_update_text(EmailComposerUGD *ugd, email_acco
        retm_if(!account, "account is NULL!");
 
        char from_display_name[BUF_LEN_L] = { 0, };
+       char text[BUF_LEN_L] = { 0, };
        if (account->account_name && (g_strcmp0(account->account_name, account->user_email_address) != 0)) {
                snprintf(from_display_name, sizeof(from_display_name), "%s <%s>", account->account_name, account->user_email_address);
        } else {
@@ -234,7 +233,8 @@ static void _recipient_from_button_update_text(EmailComposerUGD *ugd, email_acco
        EmailRecpInfo *ri = composer_util_recp_make_recipient_info_with_from_address(account->user_email_address, from_display_name);
        if (ri) {
                char *markup_name = elm_entry_utf8_to_markup(ri->display_name);
-               elm_object_part_text_set(ugd->recp_from_btn, "elm.text", markup_name);
+               snprintf(text, sizeof(text), TEXT_STYLE_ENTRY_FROM_ADDRESS, COLOR_BLACK, markup_name);
+               elm_object_part_text_set(ugd->recp_from_btn, "elm.text", text);
                FREE(markup_name);
 
                EmailAddressInfo *ai = NULL;
@@ -503,7 +503,10 @@ static Evas_Object *_recipient_create_mbe(Evas_Object *parent, COMPOSER_RECIPIEN
        elm_multibuttonentry_editable_set(mbe, EINA_FALSE);
        elm_multibuttonentry_expanded_set(mbe, EINA_TRUE);
 
-       composer_recipient_label_text_set(mbe, recp_type);
+       char recp_string[BUF_LEN_M] = { 0, };
+       _recipient_get_header_string(recp_type, recp_string, sizeof(recp_string));
+       elm_object_text_set(mbe, recp_string);
+
        elm_multibuttonentry_item_filter_append(mbe, _recipient_mbe_filter_cb, ugd);
        evas_object_smart_callback_add(mbe, "item,added", _recipient_mbe_added_cb, ugd);
        evas_object_smart_callback_add(mbe, "item,deleted", _recipient_mbe_deleted_cb, ugd);
@@ -555,7 +558,9 @@ static Evas_Object *_recipient_create_entry_label(Evas_Object *parent, COMPOSER_
        elm_layout_theme_set(label, "multibuttonentry", "label", "default");
        evas_object_show(label);
 
-       composer_recipient_label_text_set(label, recp_type);
+       char recp_string[BUF_LEN_M] = { 0, };
+       _recipient_get_header_string(recp_type, recp_string, sizeof(recp_string));
+       elm_object_part_text_set(label, "elm.text", recp_string);
 
        debug_leave();
        email_profiling_end(_recipient_create_entry_label);
@@ -831,7 +836,9 @@ void composer_recipient_show_bcc_field(EmailComposerUGD *ugd)
 
        /* XXX; need to update this? */
        if (ugd->recp_cc_mbe) {
-               composer_recipient_label_text_set(ugd->recp_cc_mbe, COMPOSER_RECIPIENT_TYPE_CC);
+               char recp_string[BUF_LEN_M] = { 0, };
+               _recipient_get_header_string(COMPOSER_RECIPIENT_TYPE_CC, recp_string, sizeof(recp_string));
+               elm_object_text_set(ugd->recp_cc_mbe, recp_string);
        }
 
        if (composer_util_is_object_packed_in(ugd->recp_cc_box, ugd->recp_cc_label_cc_bcc)) {
@@ -854,7 +861,9 @@ void composer_recipient_hide_bcc_field(EmailComposerUGD *ugd)
        debug_enter();
 
        if (ugd->recp_cc_mbe) {
-               composer_recipient_label_text_set(ugd->recp_cc_mbe, COMPOSER_RECIPIENT_TYPE_CC_BCC);
+               char recp_string[BUF_LEN_M] = { 0, };
+               _recipient_get_header_string(COMPOSER_RECIPIENT_TYPE_CC_BCC, recp_string, sizeof(recp_string));
+               elm_object_text_set(ugd->recp_cc_mbe, recp_string);
        }
 
        if (composer_util_is_object_packed_in(ugd->recp_cc_box, ugd->recp_cc_label_cc)) {
@@ -1349,10 +1358,3 @@ void composer_recipient_remove_myaddress(Evas_Object *mbe, const char *myaddress
        debug_leave();
 }
 #endif
-
-void composer_recipient_label_text_set(Evas_Object *obj, COMPOSER_RECIPIENT_TYPE_E recp_type) {
-
-       char recp_string[BUF_LEN_M] = { 0, };
-       _recipient_get_header_string(recp_type, recp_string, sizeof(recp_string));
-       elm_object_text_set(obj, recp_string);
-}
index 019cb69..0b6438a 100755 (executable)
@@ -22,6 +22,8 @@
 #define DEFAULT_ALFA_CHANNEL_VALUE 255
 #define MAX_COLOR_VALUE 255
 
+#define RICHTEXT_TOOLBAR_ICON_HEIGHT ELM_SCALE_SIZE(48)
+#define RICHTEXT_TOOLBAR_ICON_WIDTH ELM_SCALE_SIZE(48)
 #define RICHTEXT_TOOLBAR_SIDE_PADDING_WIDTH ELM_SCALE_SIZE(32)
 
 #define RICHTEXT_TOOLBAR_DATA_NAME "toolbar_data"
@@ -61,7 +63,9 @@ static char *_rich_text_button_list[RICH_TEXT_TYPE_COUNT] = {
                "ec/toolbar/button/italic",
                "ec/toolbar/button/underline",
                "ec/toolbar/button/fontcolor",
-               "ec/toolbar/button/fontbgcolor"
+               "ec/toolbar/button/fontbgcolor",
+               "ec/toolbar/button/ordered_list",
+               "ec/toolbar/button/unordered_list"
 };
 
 static EmailRGBA _default_font_colors[] = {
@@ -83,6 +87,8 @@ const char *_get_font_properties      = TO_STR(GetCurrentFontStyle(););
 const char *_set_bold_state                    = TO_STR(ExecCommand("bold", null););
 const char *_set_italic_state          = TO_STR(ExecCommand("italic", null););
 const char *_set_underline_state       = TO_STR(ExecCommand("underline", null););
+const char *_set_ordered_list_state    = TO_STR(ExecCommand("orderedList", null););
+const char *_set_unordered_list_state = TO_STR(ExecCommand("unorderedList", null););
 
 typedef void (*button_click_cb) (void *data, Evas_Object *obj, void *event_info);
 
@@ -419,6 +425,12 @@ static void _update_button_state(EmailComposerUGD *ugd, RichTextTypes type)
        case RICH_TEXT_TYPE_UNDERLINE:
                command = _set_underline_state;
                break;
+       case RICH_TEXT_TYPE_ORDERED_LIST:
+               command = _set_ordered_list_state;
+               break;
+       case RICH_TEXT_TYPE_UNORDERED_LIST:
+               command = _set_unordered_list_state;
+               break;
        default:
                debug_error("unsupported button type");
                return;
@@ -564,6 +576,8 @@ static void _button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
        case RICH_TEXT_TYPE_UNDERLINE:
        case RICH_TEXT_TYPE_BOLD:
        case RICH_TEXT_TYPE_ITALIC:
+       case RICH_TEXT_TYPE_ORDERED_LIST:
+       case RICH_TEXT_TYPE_UNORDERED_LIST:
                _update_button_state(ugd, type);
                break;
        default:
@@ -684,6 +698,11 @@ static Evas_Object *_create_button(EmailComposerUGD *ugd, Evas_Object *parent, R
 
        Evas_Object *btn = elm_button_add(parent);
        elm_object_style_set(btn, _rich_text_button_list[type]);
+
+       /* TODO: Not needed. Need to remove in future.
+        * Particle solve Z1 button resize artifact
+        */
+       evas_object_size_hint_max_set(btn, RICHTEXT_TOOLBAR_ICON_WIDTH, RICHTEXT_TOOLBAR_ICON_HEIGHT);
        elm_object_focus_allow_set(btn, EINA_FALSE);
 
        evas_object_smart_callback_add(btn, "clicked", _button_clicked_cb, ugd);
@@ -856,6 +875,8 @@ EMAIL_API void composer_rich_text_font_style_params_set(EmailComposerUGD *ugd, F
        ugd->richtext_button_list[RICH_TEXT_TYPE_BOLD].state = params->is_bold;
        ugd->richtext_button_list[RICH_TEXT_TYPE_UNDERLINE].state = params->is_underline;
        ugd->richtext_button_list[RICH_TEXT_TYPE_ITALIC].state = params->is_italic;
+       ugd->richtext_button_list[RICH_TEXT_TYPE_ORDERED_LIST].state = params->is_ordered_list;
+       ugd->richtext_button_list[RICH_TEXT_TYPE_UNORDERED_LIST].state = params->is_unordered_list;
 
        ugd->richtext_font_color = params->font_color;
        ugd->richtext_bg_color = params->bg_color;
index 03f19d2..b490980 100755 (executable)
@@ -1018,25 +1018,17 @@ void composer_util_resize_webview_height(EmailComposerUGD *ugd)
 {
        debug_enter();
 
-       int ewk_width = 0;
        int ewk_height = 0;
-       int win_w = 0;
        int win_h = 0;
+       int scroll_y = 0;
 
-       elm_win_screen_size_get(ugd->base.module->win, NULL, NULL, &win_w, &win_h);
+       evas_object_geometry_get(ugd->base.module->win, NULL, NULL, NULL, &win_h);
+       evas_object_geometry_get(ugd->main_scroller, NULL, &scroll_y, NULL, NULL);
 
-       if ((ugd->base.orientation == APP_DEVICE_ORIENTATION_0) ||
-               (ugd->base.orientation == APP_DEVICE_ORIENTATION_180)) {
-               ewk_width = win_w;
-               ewk_height = win_h;
-       } else {
-               ewk_width = win_h;
-               ewk_height = win_w;
-       }
+       ewk_height = win_h - scroll_y;
        debug_log("ewk_height: %d", ewk_height);
 
-       evas_object_size_hint_max_set(ugd->ewk_view, ewk_width, ewk_height);
-       evas_object_size_hint_min_set(ugd->ewk_view, ewk_width, ewk_height);
+       evas_object_size_hint_min_set(ugd->ewk_view, 0, ewk_height);
 
        debug_leave();
 }
index 04f6ec1..6f0a424 100755 (executable)
@@ -65,6 +65,7 @@ static void _ewk_view_policy_navigation_decide_cb(void *data, Evas_Object *obj,
 static void _ewk_view_contextmenu_customize_cb(void *data, Evas_Object *webview, void *event_info);
 static void _ewk_view_contextmenu_selected_cb(void *data, Evas_Object *webview, void *event_info);
 
+static void _ewk_view_clipboard_opened_cb(void *data, Evas_Object *obj, void *event_info);
 /*static void _ewk_view_console_message(void *data, Evas_Object *obj, void *event_info);*/
 
 static Evas_Object *_webkit_create_ewk_view(Evas_Object *parent, EmailComposerUGD *ugd);
@@ -421,8 +422,6 @@ static void _ewk_view_focus_out_cb(void *data, Evas *e, Evas_Object *obj, void *
        EmailComposerUGD *ugd = (EmailComposerUGD *)data;
 
        ugd->cs_in_selection_mode = false;
-
-       debug_leave();
 }
 
 static void _ewk_view_load_progress_cb(void *data, Evas_Object *obj, void *event_info)
@@ -505,6 +504,8 @@ static Eina_Bool _webkit_parse_text_style_changed_data(const char *res_string, F
        int is_bold = 0;
        int is_italic = 0;
        int is_underline = 0;
+       int is_ordered_list = 0;
+       int is_unordered_list = 0;
 
        int res = sscanf(res_string, COMPOSER_TEXT_STYLE_CHANGE_MESSAGE,
                        &params->font_size,
@@ -512,13 +513,16 @@ static Eina_Bool _webkit_parse_text_style_changed_data(const char *res_string, F
                        &is_underline,
                        &is_italic,
                        &params->font_color.red, &params->font_color.green, &params->font_color.blue,
-                       &params->bg_color.red, &params->bg_color.green, &params->bg_color.blue);
+                       &params->bg_color.red, &params->bg_color.green, &params->bg_color.blue,
+                       &is_ordered_list, &is_unordered_list);
 
        retvm_if(res < 0, EINA_FALSE, "sscanf failed!");
 
        params->is_bold = is_bold;
        params->is_underline = is_underline;
        params->is_italic = is_italic;
+       params->is_ordered_list = is_ordered_list;
+       params->is_unordered_list = is_unordered_list;
 
        return EINA_TRUE;
 }
@@ -813,6 +817,19 @@ static void _ewk_view_contextmenu_selected_cb(void *data, Evas_Object *obj, void
        debug_leave();
 }
 
+static void _ewk_view_clipboard_opened_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       debug_enter();
+
+       retm_if(data == NULL, "Invalid parameter: data is NULL!");
+
+       EmailComposerUGD *ugd = (EmailComposerUGD *)data;
+
+       composer_util_focus_set_focus(ugd, ugd->selected_entry);
+
+       debug_leave();
+}
+
 #if (_WEBKIT_CONSOLE_MESSAGE_LOG)
 static void _ewk_view_console_message(void *data, Evas_Object *obj, void *event_info)
 {
@@ -839,7 +856,6 @@ static Evas_Object *_webkit_create_ewk_view(Evas_Object *parent, EmailComposerUG
        ewk_view_vertical_panning_hold_set(ewk_view, EINA_TRUE);
        /*evas_object_propagate_events_set(ewkview, EINA_FALSE);*/
        ewk_view_split_scroll_overflow_enabled_set(ewk_view, EINA_TRUE);
-       ewk_view_orientation_send(ewk_view, 90);
 
        /* To modify background color of webkit, following parts should be modified as well.
         * 1. here / 2. background-color in css / 3. color_class of webview_bg part in edc file
@@ -934,6 +950,8 @@ void composer_webkit_add_callbacks(Evas_Object *ewk_view, void *data)
        evas_object_smart_callback_add(ewk_view, "contextmenu,customize", _ewk_view_contextmenu_customize_cb, ugd);
        evas_object_smart_callback_add(ewk_view, "contextmenu,selected", _ewk_view_contextmenu_selected_cb, ugd);
 
+       evas_object_smart_callback_add(ugd->base.module->conform, "clipboard,state,on", _ewk_view_clipboard_opened_cb, ugd);
+
 #if (_WEBKIT_CONSOLE_MESSAGE_LOG)
        evas_object_smart_callback_add(ewk_view, "console,message", _ewk_view_console_message, ugd);
 #endif
@@ -960,6 +978,7 @@ void composer_webkit_del_callbacks(Evas_Object *ewk_view, void *data)
        evas_object_smart_callback_del_full(ewk_view, "policy,navigation,decide", _ewk_view_policy_navigation_decide_cb, ugd);
        evas_object_smart_callback_del_full(ewk_view, "contextmenu,customize", _ewk_view_contextmenu_customize_cb, ugd);
        evas_object_smart_callback_del_full(ewk_view, "contextmenu,selected", _ewk_view_contextmenu_selected_cb, ugd);
+       evas_object_smart_callback_del_full(ugd->base.module->conform, "clipboard,state,on", _ewk_view_clipboard_opened_cb, ugd);
 
 #if (_WEBKIT_CONSOLE_MESSAGE_LOG)
        evas_object_smart_callback_del_full(ewk_view, "console,message", _ewk_view_console_message, ugd);
index 4be0ca1..e5af2bf 100755 (executable)
@@ -557,6 +557,7 @@ static COMPOSER_ERROR_TYPE_E _composer_initialize_composer_data(void *data)
        ugd->priority_option = EMAIL_MAIL_PRIORITY_NORMAL;
 
        ugd->need_to_set_focus_with_js = EINA_TRUE;
+       ugd->rotate = COMPOSER_ROTATE_PORTRAIT;
 
        ugd->with_original_message = EINA_FALSE;
        ugd->is_focus_on_new_message_div = EINA_TRUE;
@@ -1092,6 +1093,8 @@ static int _composer_module_create(email_module_t *self, app_control_h params)
                return -1;
        }
 
+       evas_object_show(md->base.win);
+
        debug_leave();
        return 0;
 }
@@ -1329,21 +1332,21 @@ static void _composer_language_change_update(EmailComposerUGD *ugd)
        debug_enter();
        retm_if(!ugd, "Invalid parameter: self is NULL!");
 
-       if (ugd->recp_from_label) { composer_recipient_label_text_set(ugd->recp_from_label, COMPOSER_RECIPIENT_TYPE_FROM); }
-       if (ugd->recp_to_label) { composer_recipient_label_text_set(ugd->recp_to_label, COMPOSER_RECIPIENT_TYPE_TO); }
-       if (ugd->recp_cc_label_cc) { composer_recipient_label_text_set(ugd->recp_cc_label_cc, COMPOSER_RECIPIENT_TYPE_CC); }
-       if (ugd->recp_cc_label_cc_bcc) { composer_recipient_label_text_set(ugd->recp_cc_label_cc_bcc, COMPOSER_RECIPIENT_TYPE_CC_BCC); }
-       if (ugd->recp_bcc_label) { composer_recipient_label_text_set(ugd->recp_bcc_label, COMPOSER_RECIPIENT_TYPE_BCC); }
+       if (ugd->recp_from_label) { elm_object_part_text_set(ugd->recp_from_label, "elm.text", email_get_email_string("IDS_EMAIL_BODY_FROM_MSENDER")); }
+       if (ugd->recp_to_label) { elm_object_part_text_set(ugd->recp_to_label, "elm.text", email_get_email_string("IDS_EMAIL_BODY_TO_M_RECIPIENT")); }
+       if (ugd->recp_cc_label_cc) { elm_object_part_text_set(ugd->recp_cc_label_cc, "elm.text", email_get_email_string("IDS_EMAIL_BODY_CC")); }
+       if (ugd->recp_cc_label_cc_bcc) { elm_object_part_text_set(ugd->recp_cc_label_cc_bcc, "elm.text", email_get_email_string("IDS_EMAIL_BODY_CC_BCC")); }
+       if (ugd->recp_bcc_label) { elm_object_part_text_set(ugd->recp_bcc_label, "elm.text", email_get_email_string("IDS_EMAIL_BODY_BCC")); }
 
-       if (ugd->recp_to_mbe) { composer_recipient_label_text_set(ugd->recp_to_mbe, COMPOSER_RECIPIENT_TYPE_TO); }
+       if (ugd->recp_to_mbe) { elm_object_text_set(ugd->recp_to_mbe, email_get_email_string("IDS_EMAIL_BODY_TO_M_RECIPIENT")); }
        if (ugd->recp_cc_mbe) {
                if (ugd->bcc_added) {
-                       composer_recipient_label_text_set(ugd->recp_cc_mbe, COMPOSER_RECIPIENT_TYPE_CC);
+                       elm_object_text_set(ugd->recp_cc_mbe, email_get_email_string("IDS_EMAIL_BODY_CC"));
                } else {
-                       composer_recipient_label_text_set(ugd->recp_cc_mbe, COMPOSER_RECIPIENT_TYPE_CC_BCC);
+                       elm_object_text_set(ugd->recp_cc_mbe, email_get_email_string("IDS_EMAIL_BODY_CC_BCC"));
                }
        }
-       if (ugd->recp_bcc_mbe) { composer_recipient_label_text_set(ugd->recp_bcc_mbe, COMPOSER_RECIPIENT_TYPE_BCC); }
+       if (ugd->recp_bcc_mbe) { elm_object_text_set(ugd->recp_bcc_mbe, email_get_email_string("IDS_EMAIL_BODY_BCC")); }
        if (ugd->attachment_group_layout) { composer_attachment_ui_group_update_text(ugd); }
 
        if (ugd->with_original_message) {
@@ -1372,22 +1375,22 @@ static void _composer_orientation_change_update(EmailComposerUGD *ugd)
        switch (ugd->base.orientation) {
        case APP_DEVICE_ORIENTATION_0:
                ugd->is_horizontal = EINA_FALSE;
+               ugd->rotate = COMPOSER_ROTATE_PORTRAIT;
                break;
        case APP_DEVICE_ORIENTATION_90:
                ugd->is_horizontal = EINA_TRUE;
+               ugd->rotate = COMPOSER_ROTATE_LANDSCAPE_UPSIDEDOWN;
                break;
        case APP_DEVICE_ORIENTATION_180:
                ugd->is_horizontal = EINA_FALSE;
+               ugd->rotate = COMPOSER_ROTATE_PORTRAIT_UPSIDEDOWN;
                break;
        case APP_DEVICE_ORIENTATION_270:
                ugd->is_horizontal = EINA_TRUE;
+               ugd->rotate = COMPOSER_ROTATE_LANDSCAPE;
                break;
        }
 
-       if (ugd->recp_from_ctxpopup) {
-               DELETE_EVAS_OBJECT(ugd->recp_from_ctxpopup);
-       }
-
        composer_recipient_update_display_string(ugd, ugd->recp_to_mbe, ugd->recp_to_entry.entry, ugd->recp_to_display_entry.entry, ugd->to_recipients_cnt);
        composer_recipient_update_display_string(ugd, ugd->recp_cc_mbe, ugd->recp_cc_entry.entry, ugd->recp_cc_display_entry.entry, ugd->cc_recipients_cnt);
        composer_recipient_update_display_string(ugd, ugd->recp_bcc_mbe, ugd->recp_bcc_entry.entry, ugd->recp_bcc_display_entry.entry, ugd->bcc_recipients_cnt);
index 2755d0c..9acc20d 100644 (file)
 #ifndef _email_filter_add_H_
 #define _email_filter_add_H_
 
-/**
- * @brief Create filter add new item view
- * @param[in]  ugd             Email Filter data
- *
- */
 void create_filter_add_view(EmailFilterUGD *ugd);
 
 #endif
index d525d2c..ffe27c0 100644 (file)
 #ifndef _email_filter_delete_H_
 #define _email_filter_delete_H_
 
-/**
- * @brief Create filter delete view
- * @param[in]  ugd             Email Filter data
- *
- */
 void create_filter_delete_view(EmailFilterUGD *ugd);
 
 #endif
index c27898c..c4e4616 100644 (file)
 #ifndef _email_filter_edit_H_
 #define _email_filter_edit_H_
 
-/**
- * @brief Create filter edit view
- *
- * @param[in]  ugd                     Email Filter data
- * @param[in]  filter_id       id of filter rule which should be modified
- *
- */
 void create_filter_edit_view(EmailFilterUGD *ugd, int filter_id);
 
 #endif
index ed9aa5d..177145b 100644 (file)
 #ifndef _email_filter_list_H_
 #define _email_filter_list_H_
 
-/**
- * @brief Create filter addresses list view
- *
- * @param[in]  ugd                     Email Filter data
- *
- */
 void create_filter_list_view(EmailFilterUGD *ugd);
 
 #endif
index 4a1cb14..5036026 100755 (executable)
 
 #define _EDJ(o) elm_layout_edje_get(o)
 
-/**
- * @brief Localized string resource data which contains string domain and string id
- *
- */
 typedef struct _email_filter_string_t {
        const char *domain;
        const char *id;
 } email_filter_string_t;
 
-/**
- * @brief Email Filter supported operations enumeration
- *
- */
 typedef enum _FilterOperationType {
        EMAIL_FILTER_OPERATION_FILTER = 1001,
        EMAIL_FILTER_OPERATION_BLOCK,
        EMAIL_FILTER_OPERATION_PRIORITY_SERNDER
 } FilterOperationType;
 
-/**
- * @brief Email Filter View supported types enumeration
- *
- */
 typedef enum _EmailFilterViewType {
        EMAIL_FILTER_VIEW_FILTER_LIST = 1001,
        EMAIL_FILTER_VIEW_ADD_FILTER,
@@ -65,15 +53,12 @@ typedef enum _EmailFilterViewType {
        EMAIL_FILTER_VIEW_INVALID
 } EmailFilterViewType;
 
-/**
- * @brief Email Filter view data
- *
- */
-typedef struct ug_data
+typedef struct ug_data EmailFilterUGD;
+
+struct ug_data
 {
        email_module_t base;
 
-       /*Filter operation type*/
        FilterOperationType op_type;
 
        char *param_filter_addr;
@@ -82,51 +67,17 @@ typedef struct ug_data
        /* base layout variable */
        Evas_Object *more_btn;
 
-       /* keypad management variables*/
+       /* keypad management */
        int is_keypad;
        int is_conformant;
 
-} EmailFilterUGD;
+};
 
-/**
- * @brief elm util function
- *
- * @return path to the edc file where theme is described
- *
- */
 EMAIL_API const char *email_get_filter_theme_path();
 
-/**
- * @brief Provide functionality to notify email service about filter rule changes
- * @param[in]  ugd             email filter module data
- *
- */
 void email_filter_publish_changed_noti(EmailFilterUGD *ugd);
-
-/**
- * @brief util function which set callbacks on conformant object about keyboard and clipboard events
- * @param[in]  ugd             email filter module data
- *
- */
 void email_filter_add_conformant_callback(EmailFilterUGD *ugd);
-
-/**
- * @brief util function which unset callbacks on conformant object about keyboard and clipboard events
- * @param[in]  ugd             email filter module data
- *
- */
 void email_filter_del_conformant_callback(EmailFilterUGD *ugd);
-
-/**
- * @brief function which set limit on amount for inputted characters into entry
- * @param[in]  vd                                      email filter view data
- * @param[in]  entry                           Entry object
- * @param[in]  max_char_count          limits by character count (disabled if 0)
- * @param[in]  max_byte_count          limits by bytes count (disabled if 0)
- *
- * @return     pointer to Elm_Entry_Filter_Limit_Size structure which was setted as entry filter limit
- *
- */
 Elm_Entry_Filter_Limit_Size *email_filter_set_input_entry_limit(email_view_t *vd, Evas_Object *entry, int max_char_count, int max_byte_count);
 
 #endif                         /* _EDF_email_filter_H__ */
index ada6d03..54f5acb 100755 (executable)
@@ -460,7 +460,7 @@ static void _contact_app_reply_cb(void *data, app_control_result_e result, app_c
        free(filter_addr_id_arr);
 
        filter_addr = _get_filter_address_by_id(id);
-       if (!filter_addr) {
+       if (filter_addr) {
                debug_error("filter address is NULL");
                return;
        }
index 2965ee3..0f8c226 100755 (executable)
@@ -467,7 +467,7 @@ static void _contact_app_reply_cb(void *data, app_control_result_e result, app_c
        free(filter_addr_id_arr);
 
        filter_addr = _get_filter_address_by_id(id);
-       if (!filter_addr) {
+       if (filter_addr) {
                debug_error("filter address is NULL");
                return;
        }
index 0909dad..61438d4 100755 (executable)
@@ -243,8 +243,8 @@ typedef struct {
        email_module_t base;
        EmailMailboxUGD view;
 
+       Ecore_Timer *start_timer;
        Ecore_Thread *start_thread;
-       volatile bool start_thread_done;
 
        Evas_Object *init_pupup;
 
index 93c21e0..02e5c42 100755 (executable)
@@ -36,7 +36,6 @@
 /* others */
 static void _settings_cb(void *data, Evas_Object *obj, void *event_info);
 static void _more_ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
-static void _more_ctxpopup_back_cb(void *data, Evas_Object *obj, void *event_info);
 static void _move_more_ctxpopup(Evas_Object *ctxpopup, Evas_Object *win);
 static void _resize_more_ctxpopup_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
 static void _delete_more_ctxpopup_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
@@ -167,17 +166,6 @@ static void _settings_cb(void *data, Evas_Object *obj, void *event_info)
        app_control_destroy(service);
 }
 
-static void _more_ctxpopup_back_cb(void *data, Evas_Object *obj, void *event_info)
-{
-       debug_enter();
-
-       if (obj) {
-               elm_ctxpopup_dismiss(obj);
-       }
-
-       debug_leave();
-}
-
 static void _more_ctxpopup_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
 {
        debug_enter();
@@ -229,8 +217,8 @@ static void _delete_more_ctxpopup_cb(void *data, Evas *e, Evas_Object *obj, void
        EmailMailboxUGD *mailbox_ugd = (EmailMailboxUGD *)data;
 
        evas_object_event_callback_del(mailbox_ugd->base.module->navi, EVAS_CALLBACK_RESIZE, _resize_more_ctxpopup_cb);
-       eext_object_event_callback_del(mailbox_ugd->more_ctxpopup, EEXT_CALLBACK_BACK, _more_ctxpopup_back_cb);
-       eext_object_event_callback_del(mailbox_ugd->more_ctxpopup, EEXT_CALLBACK_MORE, _more_ctxpopup_back_cb);
+       eext_object_event_callback_del(mailbox_ugd->more_ctxpopup, EEXT_CALLBACK_BACK, _more_ctxpopup_dismissed_cb);
+       eext_object_event_callback_del(mailbox_ugd->more_ctxpopup, EEXT_CALLBACK_MORE, _more_ctxpopup_dismissed_cb);
        evas_object_smart_callback_del(mailbox_ugd->more_ctxpopup, "dismissed", _more_ctxpopup_dismissed_cb);
        evas_object_event_callback_del(mailbox_ugd->more_ctxpopup, EVAS_CALLBACK_DEL, _delete_more_ctxpopup_cb);
 }
@@ -342,8 +330,8 @@ static void _more_toolbar_clicked_cb(void *data, Evas_Object *obj, void *event_i
 
        elm_ctxpopup_auto_hide_disabled_set(mailbox_ugd->more_ctxpopup, EINA_TRUE);
        elm_object_style_set(mailbox_ugd->more_ctxpopup, "more/default");
-       eext_object_event_callback_add(mailbox_ugd->more_ctxpopup, EEXT_CALLBACK_BACK, _more_ctxpopup_back_cb, mailbox_ugd);
-       eext_object_event_callback_add(mailbox_ugd->more_ctxpopup, EEXT_CALLBACK_MORE, _more_ctxpopup_back_cb, mailbox_ugd);
+       eext_object_event_callback_add(mailbox_ugd->more_ctxpopup, EEXT_CALLBACK_BACK, _more_ctxpopup_dismissed_cb, mailbox_ugd);
+       eext_object_event_callback_add(mailbox_ugd->more_ctxpopup, EEXT_CALLBACK_MORE, _more_ctxpopup_dismissed_cb, mailbox_ugd);
        evas_object_smart_callback_add(mailbox_ugd->more_ctxpopup, "dismissed", _more_ctxpopup_dismissed_cb, mailbox_ugd);
 
        evas_object_event_callback_add(mailbox_ugd->more_ctxpopup, EVAS_CALLBACK_DEL, _delete_more_ctxpopup_cb, mailbox_ugd);
index b346e2c..39e13c5 100755 (executable)
  * Definitions
  */
 
+#define EMAIL_INDICATOR_HEIGHT 60
+#define MAILBOX_LOAD_MORE_MAX_BUTTON_SIZE_W 450
+#define MAILBOX_LOAD_MORE_MAX_BUTTON_SIZE_H 56
+
 /*
  * Globals
  */
@@ -187,15 +191,20 @@ void _mailbox_create_searchbar(EmailMailboxUGD *mailbox_ugd)
        debug_enter();
        mailbox_ugd->searchbar_ly = elm_layout_add(mailbox_ugd->base.module->navi);
        elm_layout_file_set(mailbox_ugd->searchbar_ly, email_get_mailbox_theme_path(), "email/layout/searchbar");
-
        Evas_Object *back_button = elm_button_add(mailbox_ugd->searchbar_ly);
-       elm_object_style_set(back_button, "naviframe/back_btn/default");
+       elm_object_style_set(back_button, "transparent");
+
+       Evas_Object *icon = elm_layout_add(back_button);
+       elm_layout_file_set(icon, email_get_common_theme_path(), EMAIL_IMAGE_SEARCH_BACK_BUTTON);
+       evas_object_show(icon);
+       evas_object_color_set(icon, COLOR_BACK_BTN);
+       elm_object_part_content_set(back_button, "elm.swallow.content", icon);
        evas_object_smart_callback_add(back_button, "clicked", _searchbar_back_key_cb_clicked, mailbox_ugd);
        evas_object_smart_callback_add(back_button, "pressed", _searchbar_back_key_cb_pressed, mailbox_ugd);
        evas_object_smart_callback_add(back_button, "unpressed", _searchbar_back_key_cb_unpressed, mailbox_ugd);
        elm_object_part_content_set(mailbox_ugd->searchbar_ly, "elm.swallow.button", back_button);
 
-       email_common_util_editfield_create(mailbox_ugd->searchbar_ly, EF_TITLE_SEARCH | EF_CLEAR_BTN, &mailbox_ugd->search_editfield);
+       email_common_util_editfield_create(mailbox_ugd->searchbar_ly, EF_CLEAR_BTN, &mailbox_ugd->search_editfield);
        elm_entry_input_panel_layout_set(mailbox_ugd->search_editfield.entry, ELM_INPUT_PANEL_LAYOUT_NORMAL);
        elm_entry_input_panel_return_key_type_set(mailbox_ugd->search_editfield.entry, ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH);
        elm_entry_autocapital_type_set(mailbox_ugd->search_editfield.entry, ELM_AUTOCAPITAL_TYPE_NONE);
@@ -308,6 +317,7 @@ void mailbox_change_search_layout_state(EmailMailboxUGD *mailbox_ugd, bool show_
                        } else {
                                elm_entry_entry_set(mailbox_ugd->search_editfield.entry, "");
                        }
+                       elm_object_domain_translatable_part_text_set(mailbox_ugd->search_editfield.entry, "elm.guide", PACKAGE, "IDS_EMAIL_OPT_SEARCH");
                        mailbox_ugd->search_entry_focus_idler = ecore_idler_add(_mailbox_searchbar_entry_set_focus, mailbox_ugd);
                }
        } else {
index dbe70d8..e1055ea 100755 (executable)
@@ -40,9 +40,6 @@
 /*
  * Definitions
  */
-
-#define EMAIL_SERIVE_PING_CHECK_INTERVAL_SEC 0.005
-#define EMAIL_SERIVE_PING_CHECK_INTERVAL_USEC ((int)1000000 * EMAIL_SERIVE_PING_CHECK_INTERVAL_SEC + 0.5)
 #define EMAIL_SERIVE_PING_TIMEOUT_SEC 0.1
 #define EMAIL_SERIVE_PING_RETRY_DELAY_SEC 3
 
@@ -66,6 +63,7 @@ static void _mailbox_on_message(email_module_t *self, app_control_h msg);
 
 static void _mailbox_email_service_ping_thread_heavy_cb(void *data, Ecore_Thread *thread);
 static void _mailbox_email_service_ping_thread_notify_cb(void *data, Ecore_Thread *thread, void *msg_data);
+static Eina_Bool _mailbox_email_service_ping_timeout_cb(void *data);
 
 static int _mailbox_module_create_view(EmailMailboxModule *md);
 static int _mailbox_create_account_setting_module(EmailMailboxUGD *mailbox_ugd);
@@ -117,27 +115,20 @@ static int _mailbox_module_create(email_module_t *self, app_control_h params)
                md->view.start_mail_id = _mailbox_params_get_mail_id(params);
        }
 
+       md->start_timer = ecore_timer_add(EMAIL_SERIVE_PING_TIMEOUT_SEC, _mailbox_email_service_ping_timeout_cb, md);
+       if (!md->start_timer) {
+               debug_error("Start timer create failed!");
+               return -1;
+       }
+
        md->start_thread = ecore_thread_feedback_run(_mailbox_email_service_ping_thread_heavy_cb,
                        _mailbox_email_service_ping_thread_notify_cb, NULL, NULL, md, EINA_TRUE);
        if (!md->start_thread) {
                debug_error("Start thread create failed!");
+               DELETE_TIMER_OBJECT(md->start_timer);
                return -1;
        }
 
-       double wait_time = 0.0;
-
-       while (!md->start_thread_done) {
-               usleep(EMAIL_SERIVE_PING_CHECK_INTERVAL_USEC);
-               wait_time += EMAIL_SERIVE_PING_CHECK_INTERVAL_SEC;
-               if (wait_time >= EMAIL_SERIVE_PING_TIMEOUT_SEC) {
-                       _mailbox_module_show_initialising_popup(md);
-                       debug_leave();
-                       return 0;
-               }
-       }
-
-       _mailbox_email_service_ping_thread_notify_cb(md, NULL, NULL);
-
        debug_leave();
        return 0;
 }
@@ -154,6 +145,8 @@ static void _mailbox_module_destroy(email_module_t *self)
                md->start_thread = NULL;
        }
 
+       DELETE_TIMER_OBJECT(md->start_timer);
+
        debug_leave();
 }
 
@@ -162,8 +155,6 @@ static void _mailbox_email_service_ping_thread_heavy_cb(void *data, Ecore_Thread
        debug_enter();
        retm_if(!data, "data is NULL");
 
-       EmailMailboxModule *md = data;
-
        gboolean first = true;
        gboolean ret = false;
 
@@ -182,7 +173,6 @@ static void _mailbox_email_service_ping_thread_heavy_cb(void *data, Ecore_Thread
 
                if (ret) {
                        ecore_thread_feedback(thread, NULL);
-                       md->start_thread_done = true;
                }
 
                email_engine_finalize_force();
@@ -198,6 +188,8 @@ static void _mailbox_email_service_ping_thread_notify_cb(void *data, Ecore_Threa
 
        EmailMailboxModule *md = data;
 
+       DELETE_TIMER_OBJECT(md->start_timer);
+
        if (md->start_thread) {
                md->start_thread = NULL;
                if (_mailbox_module_create_view(md) != 0) {
@@ -206,11 +198,28 @@ static void _mailbox_email_service_ping_thread_notify_cb(void *data, Ecore_Threa
                        return;
                }
                DELETE_EVAS_OBJECT(md->init_pupup);
+               evas_object_show(md->base.win);
        }
 
        debug_leave();
 }
 
+static Eina_Bool _mailbox_email_service_ping_timeout_cb(void *data)
+{
+       debug_enter();
+       retvm_if(!data, ECORE_CALLBACK_CANCEL, "data is NULL");
+
+       EmailMailboxModule *md = data;
+
+       md->start_timer = NULL;
+
+       _mailbox_module_show_initialising_popup(md);
+       evas_object_show(md->base.win);
+
+       debug_leave();
+       return ECORE_CALLBACK_CANCEL;
+}
+
 static int _mailbox_module_create_view(EmailMailboxModule *md)
 {
        debug_enter();
@@ -709,6 +718,11 @@ int mailbox_handle_next_msg_bundle(EmailMailboxUGD *mailbox_ugd, app_control_h m
                g_free(s_current_mail_index);
        }
 
+       if (first == last) {
+               debug_log("only one mail exist.");
+               return -1;
+       }
+
        GList *opened_mail = g_list_find_custom(mailbox_ugd->mail_list, GINT_TO_POINTER(mailbox_ugd->opened_mail_id), mailbox_compare_mailid_in_list);
        if (!opened_mail && current_mail_index > -1 && current_mail_index < cnt) {
                opened_mail = g_list_nth(first, current_mail_index);
@@ -769,6 +783,11 @@ int mailbox_handle_prev_msg_bundle(EmailMailboxUGD *mailbox_ugd, app_control_h m
                g_free(s_current_mail_index);
        }
 
+       if (first == last) {
+               debug_log("only one mail exist.");
+               return -1;
+       }
+
        GList *opened_mail = g_list_find_custom(mailbox_ugd->mail_list, GINT_TO_POINTER(mailbox_ugd->opened_mail_id), mailbox_compare_mailid_in_list);
        if (!opened_mail && current_mail_index > -1 && current_mail_index < cnt) {
                opened_mail = g_list_nth(first, current_mail_index);
index 1e8817e..e88d1a4 100755 (executable)
@@ -141,6 +141,8 @@ static int _setting_create(email_module_t *self, app_control_h params)
                break;
        }
 
+       evas_object_show(ugd->base.win);
+
        return 0;
 }
 
index 1a0022f..eab3086 100755 (executable)
@@ -32,6 +32,7 @@ void viewer_webkit_del_callbacks(void *data);
 Evas_Object *viewer_get_webview(EmailViewerUGD *ug_data);
 void viewer_set_webview_content(EmailViewerUGD *ug_data);
 Evas_Object *viewer_create_show_image_btn(void *data);
+void viewer_set_initial_webview_height(void *data);
 void viewer_hide_webview(void *data);
 void viewer_show_webview(void *data);
 void viewer_webview_handle_mem_warning(EmailViewerUGD *ug_data, bool hard);
index 5d5e3e5..083efd6 100755 (executable)
@@ -56,7 +56,6 @@
 #define HEAD_SUBJ_ICON_WIDTH 44
 #define HEAD_SUBJ_ICON_HEIGHT HEAD_SUBJ_ICON_WIDTH
 
-#define HEAD_SUBJ_TEXT_MAX_HEIGHT ELM_SCALE_SIZE(88)
 #define HEAD_SUBJ_ICON_STYLE "<item size=%dx%d href=file://%s/list_icon/%s></item> "
 #define HEAD_SUBJ_TEXT_STYLE "<font_size=%d><color=#%02x%02x%02x%02x>%s</color></font_size>"
 #define HEAD_TEXT_STYLE_ELLIPSISED_FONT_COLOR "<ellipsis=%f><font_size=%d><color=#%02x%02x%02x%02x>%s (%s)</color></font_size></ellipsis>"
index afaf1f9..88790db 100755 (executable)
@@ -87,6 +87,8 @@ void viewer_delete_body_button(EmailViewerUGD *ug_data);
 
 //TODO After changing Attachment viewer menu this function can be set as static
 Evas_Object *viewer_create_toolbar_btn(Evas_Object *parent, const char *text, const char *domain);
+Evas_Object * viewer_create_toolbar_btn_layout(Evas_Object *parent);
+
 
 int viewer_create_temp_folder(EmailViewerUGD *ug_data);
 void viewer_remove_temp_folders(EmailViewerUGD *ug_data);
index 9f18c69..e72b00a 100755 (executable)
@@ -185,6 +185,12 @@ struct ug_data
        float scale_factor;
        int webview_width;
        int webview_height;
+       int webview_intial_height;
+       int webview_intial_landscape_height;
+       float webview_intial_scale;
+       int webview_width_landscape;
+       int webview_height_landscape;
+       double webview_old_scale;
 
        /* rotation */
        int isLandscape;
@@ -233,6 +239,7 @@ struct ug_data
        Evas_Object *pb_notify;
        Evas_Object *pb_notify_lb;
        Evas_Object *dn_btn;
+       Evas_Object *dn_btn_box;
 
        /* more context popup */
        Elm_Object_Item *cancel_sending_ctx_item;
@@ -290,9 +297,6 @@ struct ug_data
        /* popup */
        double loading_progress;
        Evas_Object *passwd_popup;
-
-       /* theme */
-       Elm_Theme *theme;
 };
 
 typedef struct {
index 0483c59..c4da618 100755 (executable)
@@ -91,11 +91,13 @@ static void _create_combined_scroller_and_resize_webview(EmailViewerUGD *ug_data
        viewer_create_combined_scroller(ug_data);
 
        /*resize webview*/
-       double scale = ewk_view_scale_get(ug_data->webview);
-       int content_height = 0;
-       ewk_view_contents_size_get(ug_data->webview, NULL, &content_height);
-       if (content_height) {
-               viewer_resize_webview(ug_data, content_height * scale);
+       viewer_resize_webview(ug_data, ug_data->total_height - ug_data->header_height - ug_data->trailer_height);
+       if (!ug_data->webview_intial_height || !ug_data->webview_intial_scale) {
+               ug_data->webview_intial_height = ug_data->webview_height;
+               ug_data->webview_intial_landscape_height = ug_data->webview_height_landscape;
+               ug_data->webview_intial_scale = ewk_view_scale_get(ug_data->webview);
+               debug_log("ug_data->webview_intial_height:%d", ug_data->webview_intial_height);
+               debug_log("ug_data->webview_intial_scale:%f", ug_data->webview_intial_scale);
        }
 }
 
@@ -153,6 +155,9 @@ static void _show_image_cb(void *data, Evas_Object *obj, void *event_info)
                viewer_delete_body_button(ug_data);
                ug_data->b_show_remote_images = EINA_TRUE;
 
+               /*ewk_settings_loads_images_automatically_set is called in '_check_show_image_cb' callback*/
+               viewer_set_initial_webview_height(ug_data);
+
                create_body_progress(ug_data);
                _create_body(ug_data);
        }
@@ -480,15 +485,22 @@ static void _webview_zoom_finished_cb(void *data, Evas_Object *obj, void *event_
        }
 
        /*changing webview size based on scale change*/
+       int webview_height = 0;
        double scale = ewk_view_scale_get(ug_data->webview);
-       int content_height = 0;
-       ewk_view_contents_size_get(ug_data->webview, NULL, &content_height);
-       if (content_height) {
-               viewer_resize_webview(ug_data, content_height * scale);
+       if (scale >= ug_data->webview_intial_scale) {
+               if (ug_data->isLandscape)
+                       webview_height = (int)((ug_data->webview_intial_landscape_height * scale) / ug_data->webview_intial_scale);
+               else
+                       webview_height = (int)((ug_data->webview_intial_height * scale) / ug_data->webview_intial_scale);
+
+               viewer_resize_webview(ug_data, webview_height);
        }
+       debug_log("scale:%f", ewk_view_scale_get(ug_data->webview));
+       debug_log("webview_height:%d", webview_height);
+       debug_log("ug_data->webview_intial_landscape_height:%d", ug_data->webview_intial_landscape_height);
+       debug_log("ug_data->webview_intial_height:%d", ug_data->webview_intial_height);
 
-       debug_log("scale:%f", scale);
-       debug_log("content_height:%d", content_height);
+       ug_data->webview_old_scale = scale;
 
        debug_leave();
 }
@@ -1294,6 +1306,32 @@ static char *_viewer_convert_plain_text_body(EmailViewerWebview *wvd)
        return html;
 }
 
+void viewer_set_initial_webview_height(void *data)
+{
+       debug_enter();
+       retm_if(data == NULL, "Invalid parameter: data[NULL]");
+       EmailViewerUGD *ug_data = (EmailViewerUGD *)data;
+
+       int navi_h = 0;
+       int win_w = 0;
+       int win_h = 0;
+       evas_object_geometry_get(ug_data->base.module->navi, NULL, NULL, NULL, &navi_h);
+       elm_win_screen_size_get(ug_data->base.module->win, NULL, NULL, &win_w, &win_h);
+       retm_if((navi_h == 0) || (win_w == 0) || (win_h == 0), "0 size!");
+
+       debug_log("==> window [win_w, h] = [%d, %d]", win_w, win_h);
+       if (ug_data->isLandscape) {
+               ug_data->webview_intial_height = navi_h;
+               ug_data->webview_intial_landscape_height = win_h;
+       } else {
+               ug_data->webview_intial_height = navi_h;
+               ug_data->webview_intial_landscape_height = win_w;
+       }
+
+       debug_log("==> webview_intial_height [%d]", ug_data->webview_intial_height);
+       debug_leave();
+}
+
 void viewer_hide_webview(void *data)
 {
        debug_enter();
index c5a2530..fa03ed7 100755 (executable)
@@ -98,6 +98,32 @@ static void _header_back_key_cb_clicked(void *data, Evas_Object *obj, void *even
        debug_leave();
 }
 
+static void _header_back_key_cb_pressed(void *data, Evas_Object *obj, void *event_info)
+{
+       debug_enter();
+       if (!data) {
+               debug_error("data is NULL");
+               return;
+       }
+
+       EmailViewerUGD *ug_data = (EmailViewerUGD *)data;
+       edje_object_signal_emit(_EDJ(ug_data->subject_ly), "btn.pressed", "elm");
+       debug_leave();
+}
+
+static void _header_back_key_cb_unpressed(void *data, Evas_Object *obj, void *event_info)
+{
+       debug_enter();
+       if (!data) {
+               debug_error("data is NULL");
+               return;
+       }
+
+       EmailViewerUGD *ug_data = (EmailViewerUGD *)data;
+       edje_object_signal_emit(_EDJ(ug_data->subject_ly), "btn.unpressed", "elm");
+       debug_leave();
+}
+
 static void _header_update_subject(EmailViewerUGD *ug_data, email_mail_data_t *mail_info)
 {
        debug_enter();
@@ -168,18 +194,21 @@ static void _header_create_subject(EmailViewerUGD *ug_data)
 
        ug_data->en_subject = elm_label_add(ug_data->subject_ly);
        elm_label_line_wrap_set(ug_data->en_subject, ELM_WRAP_MIXED);
-       elm_label_ellipsis_set(ug_data->en_subject, EINA_TRUE);
-       elm_object_style_set(ug_data->en_subject, "subject_text");
-
-
        evas_object_show(ug_data->en_subject);
        elm_object_part_content_set(ug_data->subject_ly, "ev.swallow.subject_label", ug_data->en_subject);
 
        Evas_Object *back_btn = elm_button_add(ug_data->subject_ly);
-       elm_object_style_set(back_btn, "naviframe/back_btn/default");
-       evas_object_smart_callback_add(back_btn, "clicked", _header_back_key_cb_clicked, ug_data);
+       elm_object_style_set(back_btn, "transparent");
 
+       Evas_Object *icon = elm_layout_add(back_btn);
+       elm_layout_file_set(icon, email_get_common_theme_path(), EMAIL_IMAGE_SEARCH_BACK_BUTTON);
+       evas_object_show(icon);
+       elm_object_part_content_set(back_btn, "elm.swallow.content", icon);
+       evas_object_smart_callback_add(back_btn, "clicked", _header_back_key_cb_clicked, ug_data);
+       evas_object_smart_callback_add(back_btn, "pressed", _header_back_key_cb_pressed, ug_data);
+       evas_object_smart_callback_add(back_btn, "unpressed", _header_back_key_cb_unpressed, ug_data);
        elm_object_part_content_set(ug_data->subject_ly, "ev.swallow.back_button", back_btn);
+
        elm_object_part_content_set(ug_data->base.content, "ev.swallow.subject", ug_data->subject_ly);
        debug_leave();
 }
index 778b783..19edb00 100755 (executable)
@@ -272,22 +272,19 @@ void viewer_create_more_ctxpopup(EmailViewerUGD *ug_data)
                }
        }
 
-       if (mail_info != NULL && mail_info->save_status != EMAIL_MAIL_STATUS_SENDING && mail_info->save_status != EMAIL_MAIL_STATUS_SEND_WAIT) {
-               EMAIL_CONTACT_LIST_INFO_S *contact_list_item = email_contact_search_by_email(ug_data, ug_data->sender_address);
-                       if (contact_list_item) {
-                               debug_log("Sender address is listed in contacts DB, person ID:%d", contact_list_item->person_id);
-                               int index = contact_list_item->person_id;;
-                               char index_str[BUF_LEN_T] = { 0, };
-                               index = contact_list_item->person_id;
-                               snprintf(index_str, sizeof(index_str), "%d", index);
-                               ctx_menu_item = elm_ctxpopup_item_append(ug_data->con_popup, "IDS_EMAIL_OPT_VIEW_CONTACT_DETAILS_ABB", icon, viewer_ctxpopup_detail_contact_cb, g_strdup(index_str));
-                       } else {
-                               debug_log("Sender address is not listed in contacts DB");
-                               ctx_menu_item = elm_ctxpopup_item_append(ug_data->con_popup, "IDS_EMAIL_OPT_ADD_TO_CONTACTS_ABB2", icon, viewer_ctxpopup_add_contact_cb, ug_data);
-                       }
-               email_delete_contacts_list(&contact_list_item);
+       EMAIL_CONTACT_LIST_INFO_S *contact_list_item = email_contact_search_by_email(ug_data, ug_data->sender_address);
+       if (contact_list_item) {
+               debug_log("Sender address is listed in contacts DB, person ID:%d", contact_list_item->person_id);
+               int index = contact_list_item->person_id;;
+               char index_str[BUF_LEN_T] = { 0, };
+               index = contact_list_item->person_id;
+               snprintf(index_str, sizeof(index_str), "%d", index);
+               ctx_menu_item = elm_ctxpopup_item_append(ug_data->con_popup, "IDS_EMAIL_OPT_VIEW_CONTACT_DETAILS_ABB", icon, viewer_ctxpopup_detail_contact_cb, g_strdup(index_str));
+       } else {
+               debug_log("Sender address is not listed in contacts DB");
+               ctx_menu_item = elm_ctxpopup_item_append(ug_data->con_popup, "IDS_EMAIL_OPT_ADD_TO_CONTACTS_ABB2", icon, viewer_ctxpopup_add_contact_cb, ug_data);
        }
-
+       email_delete_contacts_list(&contact_list_item);
        elm_object_item_domain_text_translatable_set(ctx_menu_item, PACKAGE, EINA_TRUE);
 
        if (ug_data->mailbox_type != EMAIL_MAILBOX_TYPE_OUTBOX) {
index eb81ab3..b211265 100755 (executable)
@@ -680,6 +680,7 @@ static void _noti_mgr_on_gdbus_event_receive(GDBusConnection *connection,
                                        viewer_check_body_download(ug_data);
                                        header_update_view(ug_data);
                                }
+                               viewer_set_initial_webview_height(ug_data);
                        } else {
                                debug_log("email_handle or mail_id is different");
                                debug_log("expected mail_id [%d], received mail_id [%d]", ug_data->mail_id, data1);
index 5ed8271..ab88b1d 100755 (executable)
@@ -1489,6 +1489,20 @@ Eina_Bool viewer_check_body_download_status(int body_download_status, int status
        return ((body_download_status & status) == status);
 }
 
+Evas_Object *viewer_create_toolbar_btn_layout(Evas_Object *parent)
+{
+       debug_enter();
+
+       retvm_if(!parent, NULL, "Invalid parameter: parent is NULL!");
+       Evas_Object *btn_ly = NULL;
+       btn_ly = elm_layout_add(parent);
+
+       elm_layout_file_set(btn_ly, email_get_viewer_theme_path(), "ev/layout/box_single_button");
+
+       debug_leave();
+       return btn_ly;
+}
+
 Evas_Object *viewer_create_toolbar_btn(Evas_Object *parent, const char *text, const char *domain)
 {
        debug_enter();
@@ -1565,25 +1579,23 @@ void viewer_create_body_button(EmailViewerUGD *ug_data, const char *button_title
        retm_if(!cb, "Callback is NULL");
        retm_if(!button_title, "Button text is button");
        viewer_delete_body_button(ug_data);
-
-       ug_data->dn_btn = elm_button_add(ug_data->base.content);
-       elm_object_style_set(ug_data->dn_btn, "body_button");
-       evas_object_size_hint_align_set(ug_data->dn_btn, EVAS_HINT_FILL, EVAS_HINT_FILL);
-       evas_object_size_hint_weight_set(ug_data->dn_btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-       elm_object_domain_translatable_text_set(ug_data->dn_btn, PACKAGE, button_title);
-       evas_object_show(ug_data->dn_btn);
-
-       if (ug_data->dn_btn) {
-               elm_box_pack_end(ug_data->main_bx, ug_data->dn_btn);
+       ug_data->dn_btn_box = viewer_create_toolbar_btn_layout(ug_data->base.content);
+       ug_data->dn_btn = viewer_create_toolbar_btn(ug_data->dn_btn_box, button_title, PACKAGE);
+       elm_layout_content_set(ug_data->dn_btn_box, "ev.swallow.box_single_button", ug_data->dn_btn);
+       evas_object_size_hint_align_set(ug_data->dn_btn_box, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_size_hint_weight_set(ug_data->dn_btn_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_show(ug_data->dn_btn_box);
+       if (ug_data->dn_btn_box && ug_data->dn_btn) {
+               elm_box_pack_end(ug_data->main_bx, ug_data->dn_btn_box);
        }
-
        evas_object_smart_callback_add(ug_data->dn_btn, "clicked", cb, (void *)ug_data);
 }
 
 void viewer_delete_body_button(EmailViewerUGD *ug_data)
 {
        debug_enter();
-       elm_box_unpack(ug_data->main_bx, ug_data->dn_btn);
+       elm_box_unpack(ug_data->main_bx, ug_data->dn_btn_box);
        DELETE_EVAS_OBJECT(ug_data->dn_btn);
+       DELETE_EVAS_OBJECT(ug_data->dn_btn_box);
 }
 /* EOF */
index 9003bb2..29a47a8 100755 (executable)
@@ -82,10 +82,6 @@ static void _viewer_hide(email_view_t *self);
 static void _viewer_update(email_view_t *self, int flags);
 static void _viewer_on_back_key(email_view_t *self);
 
-/* viewer theme */
-static void _viewer_initialize_theme(EmailViewerUGD *ug_data);
-static void _viewer_deinitialize_theme(EmailViewerUGD *ug_data);
-
 /*event update functions*/
 static void _viewer_update_on_orientation_change(EmailViewerUGD *ug_data, bool isLandscape);
 static void _viewer_update_on_region_change(EmailViewerUGD *ug_data);
@@ -147,21 +143,31 @@ static void _viewer_set_webview_size(EmailViewerUGD *ug_data, int height)
        debug_enter();
 
        retm_if(ug_data->loaded_module, "Viewer module in background");
-       int min_height = 0, max_height = 0;
+       int min_height, min_land_height, max_height, max_land_height;
 
        int win_h = 0, win_w = 0;
        elm_win_screen_size_get(ug_data->base.module->win, NULL, NULL, &win_w, &win_h);
        debug_log("==> main layout [w, h] = [%d, %d]", win_w, win_h);
-       debug_log("ug_data->header_height : %d", ug_data->header_height);
+       debug_log("ug_data->header_height : %d ug_data->trailer_height :%d", ug_data->header_height, ug_data->trailer_height);
 
        if (ug_data->isLandscape) {
+               min_land_height = win_w - ug_data->header_height;
+               max_land_height = win_w;
                min_height = win_w - ug_data->header_height;
                max_height = win_w;
-               ug_data->webview_width = win_h;
        } else {
+               min_land_height = win_w - ug_data->header_height;
+               max_land_height = win_w;
                min_height = win_h - ug_data->header_height;
                max_height = win_h;
-               ug_data->webview_width = win_w;
+       }
+
+       if (height <= min_land_height) {
+               debug_log("min");
+               ug_data->webview_height_landscape = min_land_height;
+       } else {
+               debug_log("max");
+               ug_data->webview_height_landscape = max_land_height;
        }
 
        if (height <= min_height) {
@@ -172,8 +178,9 @@ static void _viewer_set_webview_size(EmailViewerUGD *ug_data, int height)
                ug_data->webview_height = max_height;
        }
 
-       debug_log("min_height: %d height :%d max_height :%d ", min_height, height, max_height);
+       debug_log("min_height: %d height :%d max_height :%d min_land_height :%d max_land_height :%d", min_height, height, max_height, min_land_height, max_land_height);
        debug_log("ug_data->webview_height: %d", ug_data->webview_height);
+       debug_log("ug_data->webview_height_landscape: %d", ug_data->webview_height_landscape);
 
        debug_leave();
 }
@@ -184,8 +191,11 @@ void viewer_resize_webview(EmailViewerUGD *ug_data, int height)
        retm_if(ug_data == NULL, "Invalid parameter: ug_data[NULL]");
        _viewer_set_webview_size(ug_data, height);
 
-       evas_object_size_hint_min_set(ug_data->webview, ug_data->webview_width, ug_data->webview_height);
-       evas_object_size_hint_max_set(ug_data->webview, ug_data->webview_width, ug_data->webview_height);
+       if (ug_data->isLandscape) {
+               evas_object_size_hint_min_set(ug_data->webview, 0, ug_data->webview_height_landscape);
+       } else {
+               evas_object_size_hint_min_set(ug_data->webview, 0, ug_data->webview_height);
+       }
 }
 
 void viewer_back_key_press_handler(EmailViewerUGD *ug_data)
@@ -334,7 +344,6 @@ int _viewer_create(email_view_t *self)
        }
 
        ug_data->create_contact_arg = CONTACTUI_REQ_ADD_EMAIL;
-       _viewer_initialize_theme(ug_data);
        _viewer_create_base_view(ug_data);
        _create_webview_layout(ug_data);
        viewer_get_webview(ug_data);
@@ -679,15 +688,15 @@ static void _viewer_update_on_orientation_change(EmailViewerUGD *ug_data, bool i
 
        ug_data->isLandscape = isLandscape;
        viewer_set_vertical_scroller_position(ug_data);
+
        /* resize webview */
        double scale = ewk_view_scale_get(ug_data->webview);
-       int content_height = 0;
-       ewk_view_contents_size_get(ug_data->webview, NULL, &content_height);
-       if (content_height) {
-               viewer_resize_webview(ug_data, content_height * scale);
-       }
+       int webview_height = 0;
+       ewk_view_contents_size_get(ug_data->webview, NULL, &webview_height);
+       if (webview_height)
+               viewer_resize_webview(ug_data, webview_height * scale);
 
-       debug_log("content_height :%d scale :%f", content_height, scale);
+       debug_log("webview_height :%d scale :%f", webview_height, scale);
 
        debug_leave();
 }
@@ -930,10 +939,6 @@ static VIEWER_ERROR_TYPE_E _viewer_create_base_view(EmailViewerUGD *ug_data)
 
        /* add container layout */
        ug_data->base.content = viewer_load_edj(ug_data->base.module->navi, email_get_viewer_theme_path(), "ev/viewer/base", EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
-       if (ug_data->theme) {
-               elm_object_theme_set(ug_data->base.content, ug_data->theme);
-       }
        retvm_if(ug_data->base.content == NULL, VIEWER_ERROR_FAIL, "Cannot load edj!");
        evas_object_show(ug_data->base.content);
 
@@ -1124,6 +1129,12 @@ Eina_Bool viewer_initialize_data(EmailViewerUGD *ug_data)
        ug_data->scale_factor = 0.0;
        ug_data->webview_width = 0;
        ug_data->webview_height = 0;
+       ug_data->webview_intial_height = 0;
+       ug_data->webview_intial_landscape_height = 0;
+       ug_data->webview_intial_scale = 0.0;
+       ug_data->webview_width_landscape = 0;
+       ug_data->webview_height_landscape = 0;
+       ug_data->webview_old_scale = 0.0;
 
        /* rotation */
        ug_data->isLandscape = 0;
@@ -1149,6 +1160,7 @@ Eina_Bool viewer_initialize_data(EmailViewerUGD *ug_data)
        ug_data->pb_notify = NULL;
        ug_data->pb_notify_lb = NULL;
        ug_data->dn_btn = NULL;
+       ug_data->dn_btn_box = NULL;
        ug_data->to_mbe = NULL;
        ug_data->to_ly = NULL;
        ug_data->cc_mbe = NULL;
@@ -1342,8 +1354,8 @@ void viewer_delete_evas_objects(EmailViewerUGD *ug_data, Eina_Bool isHide)
 
        if (isHide) {
                DELETE_EVAS_OBJECT(ug_data->combined_scroller);
+
                DELETE_EVAS_OBJECT(ug_data->subject_ly);
-               DELETE_EVAS_OBJECT(ug_data->en_subject);
                DELETE_EVAS_OBJECT(ug_data->sender_ly);
                DELETE_EVAS_OBJECT(ug_data->to_ly);
                DELETE_EVAS_OBJECT(ug_data->cc_ly);
@@ -1352,7 +1364,7 @@ void viewer_delete_evas_objects(EmailViewerUGD *ug_data, Eina_Bool isHide)
                DELETE_EVAS_OBJECT(ug_data->priority_sender_image);
                DELETE_EVAS_OBJECT(ug_data->details_button);
                DELETE_EVAS_OBJECT(ug_data->attachment_ly);
-               DELETE_EVAS_OBJECT(ug_data->dn_btn);
+               DELETE_EVAS_OBJECT(ug_data->dn_btn_box);
                DELETE_EVAS_OBJECT(ug_data->webview_ly);
                DELETE_EVAS_OBJECT(ug_data->webview_button);
                DELETE_EVAS_OBJECT(ug_data->list_progressbar);
@@ -1864,32 +1876,6 @@ void viewer_delete_account_data(EmailViewerUGD *ug_data)
        debug_leave();
 }
 
-static void _viewer_initialize_theme(EmailViewerUGD *ug_data)
-{
-       debug_enter();
-       retm_if(!ug_data, "Invalid parameter, ug_data is NULL");
-
-       ug_data->theme = elm_theme_new();
-       elm_theme_ref_set(ug_data->theme, NULL);
-       elm_theme_extension_add(ug_data->theme, email_get_viewer_theme_path());
-
-       debug_leave();
-
-}
-
-static void _viewer_deinitialize_theme(EmailViewerUGD *ug_data)
-{
-       debug_enter();
-       retm_if(!ug_data, "Invalid parameter, ug_data is NULL");
-
-       elm_theme_extension_del(ug_data->theme, email_get_viewer_theme_path());
-       elm_theme_free(ug_data->theme);
-       ug_data->theme = NULL;
-
-       debug_leave();
-
-}
-
 static void _destroy_viewer(EmailViewerUGD *ug_data)
 {
        debug_enter();
@@ -1911,7 +1897,7 @@ static void _destroy_viewer(EmailViewerUGD *ug_data)
        email_engine_finalize();
        int ct_ret = contacts_disconnect();
        debug_warning_if(ct_ret != CONTACTS_ERROR_NONE, "contacts_disconnect() failed! ct_ret:[%d]", ct_ret);
-       _viewer_deinitialize_theme(ug_data);
+
        _g_md = NULL;
 
        debug_leave();
index 510bbbf..c62a746 100644 (file)
 #define ATO007_HEX     "#3db9ccff"
 #define ATO008_HEX     ATO007_HEX
 
-#define ATO015_HEX     "#3DB9CCFF"
-#define ATO015P_HEX    "#236873FF"
-#define ATO015D_HEX    "#3DB9CC4D"
-
 #define ATO009         250 250 250 255
 #define ATO010         0 0 0 255
 #define ATO011         128 128 128 255
index b4b1c90..7b0ae35 100755 (executable)
@@ -59,8 +59,6 @@
 collections {
        base_scale: 2.6;                // multi scale for HD resolution
 
-       #include "../common/email-title-search.edc"
-
 /* composer_icon */
        RESOURCE_IMAGE_SQUARE( EMAIL_IMAGE_COMPOSER_EXPAND_OPEN, 60, AO006 );
        RESOURCE_IMAGE_SQUARE( EMAIL_IMAGE_COMPOSER_EXPAND_CLOSE, 60, AO006 );
@@ -85,9 +83,6 @@ collections {
        RESOURCE_IMAGE_SQUARE( EMAIL_IMAGE_CORE_EXPAND_OPENED, 36, AO006 );
        RESOURCE_IMAGE_SQUARE( EMAIL_IMAGE_CORE_EXPAND_CLOSED, 36, AO006 );
 
-/* search_icon */
-       RESOURCE_IMAGE_SQUARE( EMAIL_IMAGE_CORE_CLEAR, 80, COLOR_WHITE );
-
 /* processing popup */
        group { name: "processing_view";
                styles {
diff --git a/Project-Files/resources/edc/common/email-title-search.edc b/Project-Files/resources/edc/common/email-title-search.edc
deleted file mode 100755 (executable)
index 0bb37aa..0000000
+++ /dev/null
@@ -1,297 +0,0 @@
-/*
- * Copyright (c) 2009-2015 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.
- *
- */
-
-/* editfield layout */
-
-#define EDITFIELD_BASE_HEIGHT_INC 110
-#define EDITFIELD_TOP_LEFT_PADDING_MIN_INC 32 28
-#define EDITFIELD_BOTTOM_RIGHT_PADDING_MIN_INC 32 28
-#define EDITFIELD_LINE_LEFT_PADDING_MIN_INC 32 0
-#define EDITFIELD_LINE_RIGHT_PADDING_MIN_INC 32 0
-#define EDITFIELD_BUTTON_FIELD_MIN_INC 80 80
-#define EDITFIELD_BUTTON_FIELD_LEFT_PADDING_MIN_INC 17 0
-#define EDITFIELD_BUTTON_FIELD_RIGHT_PADDING_MIN_INC 17 0
-#define EDITFIELD_ENTRY_FIELD_MIN_INC 0 54
-#define EDITFIELD_ENTRY_FIELD_LEFT_PADDING_MIN_INC 10 0
-#define EDITFIELD_ENTRY_FIELD_RIGHT_PADDING_MIN_INC 10 0
-#define EDITFIELD_LINE_BOTTOM_PADDING_MIN_INC 0 20
-#define EDITFIELD_LINE_RECT_MIN_INC 0 2
-#define EDITFIELD_ENTRY_SWALLOW_ALIGN 0.5 0.5
-
-#define EDITFIELD_ENTRY_DEFAULT_LINE_COLOR 250 250 250 255
-#define EDITFIELD_ENTRY_FOCUS_LINE_COLOR 250 250 250 255
-
-group { name: "title_search_editfield";
-       parts {
-               part { name: "bg";
-                       type: SPACER;
-                               scale: 1;
-                               description { state: "default" 0.0;
-                               min: 0 EDITFIELD_BASE_HEIGHT_INC;
-                       }
-               }
-               part { name: "top_left_padding";
-                       type: SPACER;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               min: EDITFIELD_TOP_LEFT_PADDING_MIN_INC;
-                               fixed: 1 1;
-                               align: 0.0 0.0;
-                               rel1.to: "bg";
-                               rel2.to: "bg";
-                               rel2.relative: 0.0 0.0;
-                       }
-               }
-               part { name: "bottom_right_padding";
-                       type: SPACER;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               min: EDITFIELD_BOTTOM_RIGHT_PADDING_MIN_INC;
-                               fixed: 1 1;
-                               align: 1.0 1.0;
-                               rel1.to: "bg";
-                               rel1.relative: 1.0 1.0;
-                               rel2.to: "bg";
-                       }
-               }
-               part { name: "line_left_padding";
-                       type: SPACER;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               min: EDITFIELD_LINE_LEFT_PADDING_MIN_INC;
-                               fixed: 1 0;
-                               align: 0.0 0.5;
-                               rel1.to: "bg";
-                               rel2.to: "bg";
-                               rel2.relative: 0.0 1.0;
-                       }
-               }
-               part { name: "line_right_padding";
-                       type: SPACER;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               min: EDITFIELD_LINE_RIGHT_PADDING_MIN_INC;
-                               fixed: 1 0;
-                               align: 1.0 0.5;
-                               rel1.to: "bg";
-                               rel1.relative: 1.0 0.0;
-                               rel2.to: "bg";
-                       }
-               }
-               part { name: "line_bottom_padding";
-                       type: SPACER;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               min: EDITFIELD_LINE_BOTTOM_PADDING_MIN_INC;
-                               fixed: 0 1;
-                               align: 0.5 1.0;
-                               rel1.to: "bg";
-                               rel1.relative: 0.0 1.0;
-                               rel2.to: "bg";
-                       }
-               }
-               part { name: "line_rect";
-                       type: RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               min: EDITFIELD_LINE_RECT_MIN_INC;
-                               fixed: 1 1;
-                               align: 0.5 1.0;
-                               rel1 {
-                                       to_x: "line_left_padding";
-                                       to_y: "line_bottom_padding";
-                                       relative: 1.0 0.0;
-                               }
-                               rel2 {
-                                       to_x: "line_right_padding";
-                                       to_y: "line_bottom_padding";
-                                       relative: 0.0 0.0;
-                               }
-                               color: EDITFIELD_ENTRY_DEFAULT_LINE_COLOR;
-                       }
-                       description { state: "focused" 0.0;
-                               inherit: "default" 0.0;
-                               color: EDITFIELD_ENTRY_FOCUS_LINE_COLOR;
-                       }
-               }
-               part { name: "button_field_right_padding";
-                       type: SPACER;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               min: EDITFIELD_BUTTON_FIELD_RIGHT_PADDING_MIN_INC;
-                               fixed: 1 0;
-                               align: 1.0 0.5;
-                               rel1 {
-                                       to: "bg";
-                                       relative: 1.0 0.0;
-                               }
-                               rel2 {
-                                       to: "bg";
-                                       relative: 1.0 1.0;
-                               }
-                       }
-               }
-               part { name: "button_field";
-                       type: SPACER;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               min: EDITFIELD_BUTTON_FIELD_MIN_INC;
-                               fixed: 1 1;
-                               align: 1.0 0.5;
-                               rel1 {
-                                       to_x: "button_field_right_padding";
-                                       to_y: "bg";
-                                       relative: 0.0 0.5;
-                               }
-                               rel2 {
-                               to_x: "button_field_right_padding";
-                                       to_y: "bg";
-                                       relative: 0.0 0.5;
-                               }
-                       }
-               }
-               part { name: "button_field_left_padding";
-                       type: SPACER;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               min: EDITFIELD_BUTTON_FIELD_LEFT_PADDING_MIN_INC;
-                               fixed: 1 0;
-                               align: 1.0 0.5;
-                               rel1 {
-                                       to_x: "button_field";
-                                       to_y: "bg";
-                                       relative: 0.0 0.0;
-                               }
-                               rel2 {
-                                       to_x: "button_field";
-                                       to_y: "bg";
-                                       relative: 0.0 1.0;
-                               }
-                       }
-               }
-               part { name: "entry_field_left_padding";
-                       type: SPACER;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               fixed: 1 0;
-                               min: EDITFIELD_ENTRY_FIELD_LEFT_PADDING_MIN_INC;
-                               align: 0.0 0.5;
-                               rel1 {
-                                       to: "top_left_padding";
-                                       relative: 1.0 1.0;
-                               }
-                               rel2 {
-                                       to_x: "top_left_padding";
-                                       to_y: "bottom_right_padding";
-                                       relative: 1.0 0.0;
-                               }
-                       }
-               }
-               part { name: "entry_field_right_padding";
-                       type: SPACER;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               fixed: 1 0;
-                               min: EDITFIELD_ENTRY_FIELD_RIGHT_PADDING_MIN_INC;
-                               align: 1.0 0.5;
-                               rel1 {
-                               to_x: "bottom_right_padding";
-                               to_y: "top_left_padding";
-                                       relative: 0.0 1.0;
-                               }
-                               rel2 {
-                                       to: "bottom_right_padding";
-                                       relative: 0.0 0.0;
-                               }
-                       }
-               }
-               part { name: "entry_field";
-                       type: SPACER;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               min: EDITFIELD_ENTRY_FIELD_MIN_INC;
-                               rel1 {
-                                       to: "entry_field_left_padding";
-                                       relative: 1.0 0.0;
-                               }
-                               rel2 {
-                                       to: "entry_field_right_padding";
-                                       relative: 0.0 1.0;
-                               }
-                       }
-                       description { state: "show_button" 0.0;
-                               inherit: "default" 0.0;
-                               rel2 {
-                                       to_x: "button_field_left_padding";
-                                       to_y: "entry_field_right_padding";
-                                       relative: 0.0 1.0;
-                               }
-                       }
-               }
-               part { name: "elm.swallow.content";
-                       type: SWALLOW;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                       align: EDITFIELD_ENTRY_SWALLOW_ALIGN;
-                               rel1.to: "entry_field";
-                               rel2.to: "entry_field";
-                       }
-               }
-               part { name: "elm.swallow.button";
-                       type: SWALLOW;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               fixed: 1 0;
-                               rel1.to: "button_field";
-                               rel2.to: "button_field";
-                               visible: 0;
-                       }
-                       description { state: "show_button" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 1;
-                       }
-               }
-       }
-       programs {
-               program { name: "focused";
-                       signal: "elm,state,focused";
-                       source: "";
-                       action: STATE_SET "focused" 0.0;
-                       target: "line_rect";
-               }
-               program { name: "unfocused";
-                       signal: "elm,state,unfocused";
-                       source: "";
-                       action: STATE_SET "default" 0.0;
-                       target: "line_rect";
-               }
-               program { name: "show_button";
-                       signal: "elm,action,show,button";
-                       source: "";
-                       action: STATE_SET "show_button" 0.0;
-                       target: "entry_field";
-                       target: "elm.swallow.button";
-               }
-               program { name: "hide_button";
-                       signal: "elm,action,hide,button";
-                       source: "";
-                       action: STATE_SET "default" 0.0;
-                       target: "entry_field";
-                       target: "elm.swallow.button";
-               }
-       }
-}
index 392ca45..3771996 100755 (executable)
@@ -161,8 +161,8 @@ group {
        name: "ec/recipient/layout/from";
        parts {
                E_PART_BASE
-               E_PART_PADDING_LEFT(32)
-               E_PART_PADDING_RIGHT(32)
+               E_PART_PADDING_LEFT(15)
+               E_PART_PADDING_RIGHT(15)
                E_PART_PADDING_TOP(13)
                E_PART_PADDING_BOTTOM(14)
                E_PART_SWALLOW("ec.swallow.content",
index 372c340..a99e5ff 100644 (file)
@@ -17,8 +17,6 @@
 
 #define RICHTEXT_TOOLBAR_HEIGHT 96
 
-#define RTTB_BUTTON_LAYOUT_MIN_SIZE 92 92
-
 #define BTN_IMAGE_MIN_MAX_WIDTH  48
 #define BTN_IMAGE_MIN_MAX_HEIGHT 48
 
@@ -38,7 +36,6 @@ group { name: "elm/button/base/"style_name; \
                        scale: 1; \
                        description { \
                                state: "default" 0.0; \
-                               min: RTTB_BUTTON_LAYOUT_MIN_SIZE; \
                        } \
                } \
                part { name: "button_image"; \
@@ -46,7 +43,6 @@ group { name: "elm/button/base/"style_name; \
                        scale: 1; \
                        description { state: "default" 0.0; \
                                min: sizeMinMaxWidth sizeMinMaxHeight; \
-                               max: sizeMinMaxWidth sizeMinMaxHeight; \
                                aspect: sizeMinMaxWidth/sizeMinMaxHeight sizeMinMaxWidth/sizeMinMaxHeight; \
                                aspect_preference: BOTH; \
                                fixed : 1.0 1.0; \
@@ -148,7 +144,6 @@ group { name: "elm/button/base/"style_name; \
                        scale: 1; \
                        description { \
                                state: "default" 0.0; \
-                               min: RTTB_BUTTON_LAYOUT_MIN_SIZE; \
                        } \
             } \
                part { name: "button_image"; \
@@ -156,7 +151,6 @@ group { name: "elm/button/base/"style_name; \
                        scale: 1; \
                        description { state: "default" 0.0; \
                                min: sizeMinMaxWidth sizeMinMaxHeight; \
-                               max: sizeMinMaxWidth sizeMinMaxHeight; \
                                aspect: sizeMinMaxWidth/sizeMinMaxHeight sizeMinMaxWidth/sizeMinMaxHeight; \
                                aspect_preference: BOTH; \
                                fixed : 1.0 1.0; \
@@ -267,7 +261,6 @@ group { name: "elm/button/base/"style_name; \
                        scale: 1; \
                        description { \
                                state: "default" 0.0; \
-                               min: RTTB_BUTTON_LAYOUT_MIN_SIZE; \
                        } \
                } \
                part { name: "button_image"; \
@@ -473,3 +466,5 @@ BUTTON_TOOGLE_STYLES("ec/toolbar/button/italic", EC_IMAGE_TOOLBAR_ITALIC, BTN_IM
 BUTTON_TOOGLE_STYLES("ec/toolbar/button/underline", EC_IMAGE_TOOLBAR_UNDERLINE, BTN_IMAGE_MIN_MAX_WIDTH, BTN_IMAGE_MIN_MAX_HEIGHT);
 BUTTON_FONTCOLOR_STYLES("ec/toolbar/button/fontcolor", EC_IMAGE_TOOLBAR_FONTCOLOR, BTN_IMAGE_MIN_MAX_WIDTH, BTN_IMAGE_MIN_MAX_HEIGHT);
 BUTTON_FONTCOLOR_STYLES("ec/toolbar/button/fontbgcolor", EC_IMAGE_TOOLBAR_FONTBGCOLOR, BTN_IMAGE_MIN_MAX_WIDTH, BTN_IMAGE_MIN_MAX_HEIGHT);
+BUTTON_TOOGLE_STYLES("ec/toolbar/button/ordered_list", EC_IMAGE_TOOLBAR_NUMBERING, BTN_IMAGE_MIN_MAX_WIDTH, BTN_IMAGE_MIN_MAX_HEIGHT);
+BUTTON_TOOGLE_STYLES("ec/toolbar/button/unordered_list", EC_IMAGE_TOOLBAR_ALEADSYMBOL, BTN_IMAGE_MIN_MAX_WIDTH, BTN_IMAGE_MIN_MAX_HEIGHT);
index 6a16780..1bd660d 100755 (executable)
@@ -23,3 +23,5 @@
 #define EC_IMAGE_TOOLBAR_FONTSIZE                      DIR_ICON_TOOLBAR"email_icon_toolbar_text.png"
 #define EC_IMAGE_TOOLBAR_FONTCOLOR                     DIR_ICON_TOOLBAR"email_icon_toolbar_color.png"
 #define EC_IMAGE_TOOLBAR_FONTBGCOLOR           DIR_ICON_TOOLBAR"email_icon_toolbar_font_background_color.png"
+#define EC_IMAGE_TOOLBAR_NUMBERING                     DIR_ICON_TOOLBAR"email_icon_toolbar_number.png"
+#define EC_IMAGE_TOOLBAR_ALEADSYMBOL           DIR_ICON_TOOLBAR"email_icon_toolbar_contents.png"
index 5827593..d4fc3de 100755 (executable)
 #define TITLE_MAIN_FONT_SIZE   42
 #define TITLE_SUB_FONT_SIZE    28
 
-#define SEARCH_BAR_PADDING_RIGHT_WIDTH 32
-#define SEARCH_BAR_PADDING_LEFT_WIDTH  10
-#define SEARCH_BAR_BACK_BUTTON_PADDING_RIGHT_WIDTH     68 // 10 + 80 + 10 - 32
-#define SEARCH_BAR_BACK_BUTTON_SIZE    80 80
-
        group
        {
                name: "layout.email.mailbox.hd";
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       color: NAVIFRAME_TITLE_BG;
+                                       color: 255 255 255 255;
+                                       min: 0 120;
                                }
                        }
-                       E_PART_PADDING_LEFT(SEARCH_BAR_PADDING_LEFT_WIDTH);
-                       E_PART_SPACER("padding.button.right",
+
+                       part {
+                               name: "padding_left";
+                               type: SPACER;
+                               scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       min: SEARCH_BAR_BACK_BUTTON_PADDING_RIGHT_WIDTH 0;
                                        fixed: 1 0;
-                                       rel2.relative: 0.0 1.0;
-                                       align: 0.0 0.0;
+                                       min: 10 0;
+                                       max: 10 -1;
+                                       rel1 { relative: 0.0 0.0; to: "base"; }
+                                       rel2 { relative: 0.0 1.0; to: "base"; }
+                                       align: 0 0.5;
                                }
-                       )
+
+                       }
+
                        part {
-                               name: "elm.swallow.content";
-                               type: SWALLOW;
+                               name: "padding_right";
+                               type: SPACER;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       rel1 { relative: 1.0 0.0; to_x: "padding.button.right"; }
-                                       rel2 { relative: 1.0 1.0;}
+                                       fixed: 1 0;
+                                       min: 10 0;
+                                       max: 10 -1;
+                                       rel1 { relative: 1.0 0.0; to: "base"; }
+                                       rel2 { relative: 1.0 1.0; to: "base"; }
+                                       align: 1 0.5;
                                }
+       
                        }
+
+                       part {
+                               name: "elm.button.selection";
+                               type: RECT;
+                               scale: 1;
+                               repeat_events: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       fixed: 1 0;
+                                       min: 80 80;
+                                       max: 80 80;
+                                       rel1 { relative: 1.0 0.0; to_x: "padding_left"; }
+                                       rel2 { relative: 1.0 1.0; to_x: "padding_left"; }
+                                       align: 0 0.5;
+                                       color: 0 0 0 0;
+                               }
+                               description {
+                                       state: "pressed" 0.0;
+                                       inherit: "default" 0.0;
+                                       color: 130 130 130 130;
+                               }
+                       }
+
                        part {
                                name: "elm.swallow.button";
                                type: SWALLOW;
                                scale: 1;
                                description {
                                        state: "default" 0.0;
-                                       fixed: 1 1;
-                                       min: SEARCH_BAR_BACK_BUTTON_SIZE;
-                                       max: SEARCH_BAR_BACK_BUTTON_SIZE;
-                                       rel1 { relative: 1.0 0.0; to_x: "padding.left"; }
-                                       rel2 { relative: 1.0 1.0; to_x: "padding.left"; }
+                                       fixed: 1 0;
+                                       min: 80 80;
+                                       max: 80 80;
+                                       rel1 { relative: 1.0 0.0; to_x: "padding_left"; }
+                                       rel2 { relative: 1.0 1.0; to_x: "padding_left"; }
                                        align: 0 0.5;
+
                                }
                        }
+
+                       part {
+                               name: "elm.swallow.content";
+                               type: SWALLOW;
+                               scale: 1;
+                               description {
+                                       state: "default" 0.0;
+                                       rel1 { relative: 1.0 0.0; to_x: "elm.swallow.button"; }
+                                       rel2 { relative: 0.0 1.0; to_x: "padding_right"; }
+                                       align: 0 1;
+                               }
+                       }
+               }
+
+               programs {
+                       program { name: "btn_pressed";
+                                       signal: "btn.pressed";
+                                       source: "elm";
+                                       script {
+                                               set_state(PART:"elm.button.selection", "pressed", 0.0);
+                                       }
+                               }
+
+                       program { name: "btn_unpressed";
+                                       signal: "btn.unpressed";
+                                       source: "elm";
+                                       script {
+                                               set_state(PART:"elm.button.selection", "default", 0.0);
+                                       }
+                               }
                }
        }
 
                styles {
 
                        style { name: "mailbox_title";
-                               base: "font=Tizen:style=Condensed font_size="TITLE_FONT_SIZE" color=#ffffff ellipsis=0.5 text_class=tizen";
+                               base: "font=Tizen:style=Regular font_size="TITLE_FONT_SIZE" color=#ffffff ellipsis=0.5";
                                tag:  "br" "\n";
                                tag:  "tab" "\t";
                        }
 
                        style { name: "mailbox_title_main";
-                               base: "font=Tizen:style=Condensed font_size="TITLE_MAIN_FONT_SIZE" color=#ffffff ellipsis=0.5 text_class=tizen";
+                               base: "font=Tizen:style=Regular font_size="TITLE_MAIN_FONT_SIZE" color=#ffffff ellipsis=0.5";
                                tag:  "br" "\n";
                                tag:  "tab" "\t";
                        }
 
                        style { name: "mailbox_title_sub";
-                               base: "font=Tizen:style=Condensed font_size="TITLE_SUB_FONT_SIZE" color=#ffffff ellipsis=0.5 text_class=tizen";
+                               base: "font=Tizen:style=Regular font_size="TITLE_SUB_FONT_SIZE" color=#ffffff ellipsis=0.5";
                                tag:  "br" "\n";
                                tag:  "tab" "\t";
                        }
index 24c765b..3f82b96 100644 (file)
 
 #define ES_BOTTOM_BAR_MAX_HEIGHT 152
 #define ES_BOTTOM_BAR_BUTTON_MAX_HEIGHT 104
-#define ES_BOTTOM_BAR_HOR_BORDER_PADDING_WIDTH 32
 #define ES_BOTTOM_BAR_CENTER_PADDING_WIDTH 32
 
 group {
        name: "two_bottom_btn";
        parts {
                part {
-                       name: "bg";
-                       type: RECT;
+                       name: "base";
+                       type: SPACER;
                        mouse_events: 1;
                        scale: 1;
                        description {
                                state: "default" 0.0;
                                min: 0 ES_BOTTOM_BAR_MAX_HEIGHT;
-                               color: 255 255 255 255;
-                       }
-               }
-               part {
-                       name: "left.padding";
-                       type: SPACER;
-                       mouse_events: 0;
-                       scale: 1;
-                       description {
-                       state: "default" 0.0;
-                               fixed: 1 0;
-                               min: ES_BOTTOM_BAR_HOR_BORDER_PADDING_WIDTH 0;
-                               max: ES_BOTTOM_BAR_HOR_BORDER_PADDING_WIDTH -1;
-                               rel1 { relative: 0.0 0.0; }
-                               rel2 { relative: 0.0 1.0; }
-                               align: 0.0 0.0;
-                       }
-               }
-               part {
-                       name: "right.padding";
-                       type: SPACER;
-                       mouse_events: 0;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: ES_BOTTOM_BAR_HOR_BORDER_PADDING_WIDTH 0;
-                               max: ES_BOTTOM_BAR_HOR_BORDER_PADDING_WIDTH -1;
-                               fixed: 1 0;
-                               rel1 { relative: 1.0 0.0; }
-                               rel2 { relative: 1.0 1.0; }
-                               align: 1.0 0.0;
                        }
                }
                part {
@@ -85,7 +53,7 @@ group {
                        description {
                                state: "default" 0.0;
                                max: -1 ES_BOTTOM_BAR_BUTTON_MAX_HEIGHT;
-                               rel1 {relative: 1.0 0.0; to_x: "left.padding";}
+                               rel1 { relative: 0.0 0.0; to_x: "base";}
                                rel2 { relative: 0.0 1.0; to_x: "center.padding";}
                                align: 0.0 0.5;
                        }
@@ -99,7 +67,7 @@ group {
                                state: "default" 0.0;
                                max: -1 ES_BOTTOM_BAR_BUTTON_MAX_HEIGHT;
                                rel1 { relative: 1.0 0.0; to_x: "center.padding";}
-                               rel2 { relative: 0.0 1.0; to_x: "right.padding";}
+                               rel2 { relative: 1.0 1.0; to_x: "base";}
                                align: 0.0 0.5;
                        }
                }
index 3b43f22..27a293d 100755 (executable)
 #define BOX_SNGL_BUTTON_HEIGHT_PADDING 21
 #define TOOLBAR_SNGL_BUTTON_HEIGHT 104
 #define TOOLBAR_SNGL_BUTTON_HEIGHT_PADDING 24
-#define OPEN_EMAIL_PROGRESS_TOP_PADDING 461
-#define OPEN_EMAIL_PROGRESS_SIZE 102 102
 
 group {
        name: "ev/viewer/base";
        parts {
                E_PART_BASE
-               E_PART_PADDING_TOP(OPEN_EMAIL_PROGRESS_TOP_PADDING);
                E_PART_SWALLOW("ev.swallow.subject",
                        mouse_events: 1;
                        description {
                                state: "default" 0.0;
+                               fixed: 0 1;
                                align: 0.5 0.0;
-                               fixed: 1 1;
                                rel2.relative: 1.0 0.0;
-                       }
-               )
-               E_PART_RECT("ev.content.bg",
-                       mouse_events: 1;
-                       description {
-                               state: "default" 0.0;
-                               rel1 {relative: 0 1; to_y: "ev.swallow.subject"; }
-                               rel2 {relative: 1 1; }
-                               color: 255 255 255 255;
+                               visible: 1;
                        }
                )
                E_PART_SWALLOW("ev.swallow.content",
                        description {
                                state: "default" 0.0;
                                align: 0.5 0.0;
-                               rel1 {relative: 0 0; to: "ev.content.bg"; }
-                               rel2 {relative: 1 1; to: "ev.content.bg"; }
+                               rel1 {relative: 0 1; to_y: "ev.swallow.subject"; }
+                               rel2 {relative: 1 1; to_y: "base"; }
+                               visible: 1;
                        }
                )
                E_PART_SWALLOW("ev.swallow.progress",
@@ -64,18 +54,15 @@ group {
                        repeat_events: 1;
                        description {
                                state: "default" 0.0;
-                               min: OPEN_EMAIL_PROGRESS_SIZE;
-                               max: OPEN_EMAIL_PROGRESS_SIZE;
-                               rel1 {relative: 0 1; to_y: "padding.top"; }
-                               align: 0.5 0.0;
                        }
                )
                E_PART_SWALLOW("ev.swallow.scroller",
                        description {
                                state: "default" 0.0;
                                align: 0.5 0.0;
-                               rel1 {relative: 0 0; to: "ev.content.bg"; }
-                               rel2 {relative: 1 1; to: "ev.content.bg"; }
+                               rel1 {relative: 0 1; to_y: "ev.swallow.subject"; }
+                               rel2 {relative: 1 1; to_y: "base"; }
+                               visible: 1;
                        }
                )
                E_PART_SWALLOW("ev.swallow.webview_button",
@@ -84,6 +71,7 @@ group {
                                min: 0 1;
                                max: -1 1;
                                fixed: 0 1;
+                               visible: 1;
                                align: 0.0 0.0;
                        }
                )
@@ -191,4 +179,5 @@ group {
        }
 }
 
+SINGLE_BUTTON_LAYOUT("ev/layout/box_single_button", "ev.swallow.box_single_button", LIST_BG_COLOR, BOX_SNGL_BUTTON_HEIGHT, BOX_SNGL_BUTTON_HEIGHT_PADDING)
 SINGLE_BUTTON_LAYOUT("ev/layout/toolbar_single_button", "ev.swallow.toolbar_single_button", TRANSPARENT, TOOLBAR_SNGL_BUTTON_HEIGHT, TOOLBAR_SNGL_BUTTON_HEIGHT_PADDING)
index dbc3047..5ef9fe3 100755 (executable)
@@ -47,8 +47,7 @@
 #define SUBJECT_BACK_BUTTON_PADDING_RIGHT 10.0
 #define SUBJECT_BACK_BTN_SIZE 80.0
 #define SUBJECT_PADDING_RIGHT 32.0
-#define SUBJECT_TEXT_MIN_HEIGHT 44.0
-#define SUBJECT_TEXT_MAX_HEIGHT 88.0
+#define SUBJECT_HEIGHT_ONE_LINE 44.0
 
 //attachment layout
 #define ATTACHMENT_LAYOUT_HEIGHT       80
 #define ATTACHMENT_RIGHT_PADDING       17
 #define ATTACHMENT_TEXT_SIZE   36
 
-//body button
-#define DOWNLOAD_BUTTON_MIN_HEIGHT     96
-#define DOWNLOAD_BUTTON_TEXT_SIZE      32
-#define DOWNLOAD_BUTTON_TEXTBLOCK_HEIGHT_MIN 44
-#define DOWNLOAD_BUTTON_TEXTBLOCK_PADDING_BOTTOM_HEIGHT 32
-#define TRANSPARENT_COLOR_VALUE 0 0 0 0
-
 #define EVENT_PART(NAME, SRC)  \
                part { name: NAME; \
                        type: SWALLOW; \
                                color: 0 0 0 0; \
                        } \
                }
-
-
-styles {
-       style { name: "subject_label_style";
-               base: "font=Tizen:style=Condensed font_size=32 color=#ffffff ellipsis=1.0";
-               tag:  "br" "\n";
-               tag:  "ps" "ps";
-               tag:  "b" "+ font_weight=Bold";
-               tag:  "tab" "\t";
-         }
-}
-
-group {
-       name: "elm/label/base/subject_text";
-       parts {
-               part { name: "label.text.clip";
-               type: RECT;
-               description { state: "default" 0.0;
-               }
-       }
-               part { name: "elm.text";
-                       type: TEXTBLOCK;
-                       scale: 1;
-                       clip_to: "label.text.clip";
-                       description { state: "default" 0.0;
-                               text {
-                                       style: "subject_label_style";
-                                       min: 0 1;
-                                       max: 0 1;
-                                       align: 0 0.5;
-                               }
-                       }
-               }
-         }
-}
-
 group {
        name: "ev/subject/base";
        parts {
@@ -136,6 +92,34 @@ group {
                                max: -1 SUBJECT_BACK_BTN_PADDING_TOP;
                        }
                )
+               E_PART_RECT("ev.rect.button_selection",
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+
+                               align: 0.0 0.0;
+                               fixed: 1 1;
+                               rel1 {
+                                       relative: 1.0 1.0;
+                                       to_x: "padding.left";
+                                       to_y: "ev.back_btn.padding.top";
+                               }
+                               rel2 {
+                                       relative: 1.0 1.0;
+                                       to_x: "padding.left";
+                                       to_y: "ev.back_btn.padding.top";
+                               }
+                               min: SUBJECT_BACK_BTN_SIZE SUBJECT_BACK_BTN_SIZE;
+                               max: SUBJECT_BACK_BTN_SIZE SUBJECT_BACK_BTN_SIZE;
+                               color: 0 0 0 0;
+                       }
+                       description {
+                               state: "pressed" 0.0;
+                               inherit: "default" 0.0;
+                               color: NAVI_BTN_SELECT_BG;
+                       }
+               )
                E_PART_SWALLOW("ev.swallow.back_button",
                        mouse_events: 1;
                        repeat_events: 1;
@@ -178,26 +162,31 @@ group {
                                max: SUBJECT_BACK_BUTTON_PADDING_RIGHT -1;
                        }
                )
-
+               E_PART_SPACER("ev.center.reference_line",
+                       mouse_events: 1;
+                       scale: 1;
+                       description {
+                               state: "default" 0.0;
+                               rel1.relative: 0.0 0.5;
+                               rel2.relative: 1.0 0.5;
+                       }
+               )
                E_PART_SWALLOW("ev.swallow.subject_label",
                        mouse_events: 1;
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               fixed: 0 1;
                                align: 0 0.5;
                                rel1 {
-                                       relative: 1.0 1.0;
+                                       relative: 1.0 0.0;
                                        to_x: "ev.back_btn.padding.right";
-                                       to_y: "ev.entry.padding_top";
+                                       to_y: "ev.center.reference_line";
                                }
                                rel2 {
-                                       relative: 0.0 0.0;
+                                       relative: 0.0 1.0;
                                        to_x: "padding.right";
-                                       to_y: "ev.entry.padding_bottom";
+                                       to_y: "ev.center.reference_line";
                                }
-                               min: 0  SUBJECT_TEXT_MIN_HEIGHT;
-                               max: -1 SUBJECT_TEXT_MAX_HEIGHT;
                        }
                )
                E_PART_SPACER("ev.entry.padding_top",
@@ -205,9 +194,15 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               fixed: 0 1;
-                               align: 0.5 0.0;
-                               rel2.relative: 1.0 0.0;
+                               align: 0.5 1.0;
+                               rel1 {
+                                       relative: 0.0 0.0;
+                                       to_y: "ev.swallow.subject_label";
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                                       to_y: "ev.swallow.subject_label";
+                               }
                                min: 0 SUBJECT_PADDING_TOP_MIN;
                                max: -1 SUBJECT_PADDING_TOP_MIN;
                        }
@@ -217,14 +212,37 @@ group {
                        scale: 1;
                        description {
                                state: "default" 0.0;
-                               fixed: 0 1;
-                               rel1.relative: 0.0 1.0;
-                               align: 0.5 1.0;
+                               align: 0.5 0;
+                               rel1 {
+                                       relative: 0.0 1.0;
+                                       to_y: "ev.swallow.subject_label";
+                               }
+                               rel2 {
+                                       relative: 1.0 0.0;
+                                       to_y: "ev.swallow.subject_label";
+                               }
                                min: 0 SUBJECT_PADDING_BOTTOM_MIN;
                                max: -1 SUBJECT_PADDING_BOTTOM_MIN;
                        }
                )
        }
+       programs {
+               program { name: "btn_pressed";
+                               signal: "btn.pressed";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"ev.rect.button_selection", "pressed", 0.0);
+                               }
+                       }
+
+               program { name: "btn_unpressed";
+                               signal: "btn.unpressed";
+                               source: "elm";
+                               script {
+                                       set_state(PART:"ev.rect.button_selection", "default", 0.0);
+                               }
+                       }
+       }
 }
 
 group {
@@ -811,144 +829,6 @@ group { name: "elm/layout/list/C/type.2.custom/default";
                        } \
                }
 
-#define BODY_BUTTON_STYLE(_name, _color) \
-       style { \
-               name: _name; \
-               base: "align=center color="_color" font=Tizen:style=Regular font_size="DOWNLOAD_BUTTON_TEXT_SIZE" text_class=tizen ellipsis=1.0"; \
-               tag:  "br" "\n"; \
-               tag:  "tab" "\t"; \
-       }
-
-group { name: "elm/button/base/body_button";
-       styles {
-               BODY_BUTTON_STYLE("body_button_style_default", ATO015_HEX);
-               BODY_BUTTON_STYLE("body_button_style_press", ATO015P_HEX);
-               BODY_BUTTON_STYLE("body_button_style_dim", ATO015D_HEX);
-       }
-       parts {
-               part { name : "bg";
-                       type : RECT;
-                       scale: 1;
-                       description {
-                               state: "default" 0.0;
-                               min: 0 DOWNLOAD_BUTTON_MIN_HEIGHT;
-                               color: COLOR_WHITE;
-                       }
-               }
-               E_PART_PADDING_BOTTOM(DOWNLOAD_BUTTON_TEXTBLOCK_PADDING_BOTTOM_HEIGHT);
-               part {
-                       name: "button_image";
-               }
-               part { name: "elm.text";
-                       type: TEXTBLOCK;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               min: 0 DOWNLOAD_BUTTON_TEXTBLOCK_HEIGHT_MIN;
-                               text {
-                                       style: "body_button_style_default";
-                                       max: 1 0;
-                               }
-                       }
-                       description { state: "clicked" 0.0;
-                               inherit: "default" 0.0;
-                               text {
-                                       style: "body_button_style_press";
-                                       max: 1 0;
-                               }
-                       }
-                       description { state: "disabled" 0.0;
-                               inherit: "default" 0.0;
-                               text {
-                                       style: "body_button_style_dim";
-                                       max: 1 0;
-                               }
-                       }
-               }
-               part { name: "over1";
-                       type: RECT;
-                       scale: 1;
-                       ignore_flags: ON_HOLD;
-                       description { state: "default" 0.0;
-                               color: TRANSPARENT_COLOR_VALUE;
-                       }
-               }
-               part { name: "over2";
-                       type: RECT;
-                       scale: 1;
-                       repeat_events: 1;
-                       description { state: "default" 0.0;
-                               color: TRANSPARENT_COLOR_VALUE;
-                       }
-               }
-               part { name: "disabler";
-                       type: RECT;
-                       scale: 1;
-                       description { state: "default" 0.0;
-                               color: TRANSPARENT_COLOR_VALUE;
-                               visible: 0;
-                       }
-                       description { state: "disabled" 0.0;
-                               inherit: "default" 0.0;
-                               visible: 1;
-                       }
-               }
-       }
-       programs {
-               program { name: "pressed";
-                       signal: "mouse,down,1";
-                       source: "over1";
-                       action: SIGNAL_EMIT "elm,action,press" "";
-                       after: "button_press";
-               }
-               program { name: "button_press";
-                       action: STATE_SET "clicked" 0.0;
-                       target: "elm.text";
-               }
-               program { name: "clicked";
-                       signal: "mouse,clicked,1";
-                       source: "over1";
-                       action: SIGNAL_EMIT "elm,action,click" "";
-                       after: "button_unpress";
-                       after: "touch_sound";
-               }
-               program { name: "touch_sound";
-                       action: RUN_PLUGIN "touch_sound";
-               }
-               program { name: "unpressed";
-                       signal: "mouse,up,1";
-                       source: "over2";
-                       action: SIGNAL_EMIT "elm,action,unpress" "";
-                       after: "button_unpress";
-               }
-               program { name: "button_unpress";
-                       action: STATE_SET "default" 0.0;
-                       target: "elm.text";
-               }
-               program { name: "button_disable_set";
-                       action: STATE_SET "disabled" 0.0;
-                       target: "elm.text";
-               }
-               program { name: "button_enable_set";
-                       action: STATE_SET "default" 0.0;
-                       target: "elm.text";
-               }
-               program {
-                       signal: "button_disable";
-                       source: "";
-                       action: STATE_SET "disabled" 0.0;
-                       target: "disabler";
-                       after : "button_disable_set";
-               }
-               program {
-                       signal: "button_enable";
-                       source: "";
-                       action: STATE_SET "default" 0.0;
-                       target: "disabler";
-                       after : "button_enable_set";
-               }
-       }
-}
-
 #define ICON_BUTTON(NAME, IMG, PAD_L, PAD_T, WIDTH, HEIGHT, COLOR, PROG) \
        group { name: NAME; \
                images { image: IMG COMP; } \
diff --git a/Project-Files/resources/edc_images/list_icon/core_button_icon_clear.png b/Project-Files/resources/edc_images/list_icon/core_button_icon_clear.png
deleted file mode 100644 (file)
index f2ee958..0000000
Binary files a/Project-Files/resources/edc_images/list_icon/core_button_icon_clear.png and /dev/null differ
diff --git a/Project-Files/resources/edc_images/rich_text_bar_icon/email_icon_toolbar_contents.png b/Project-Files/resources/edc_images/rich_text_bar_icon/email_icon_toolbar_contents.png
new file mode 100644 (file)
index 0000000..38db535
Binary files /dev/null and b/Project-Files/resources/edc_images/rich_text_bar_icon/email_icon_toolbar_contents.png differ
diff --git a/Project-Files/resources/edc_images/rich_text_bar_icon/email_icon_toolbar_number.png b/Project-Files/resources/edc_images/rich_text_bar_icon/email_icon_toolbar_number.png
new file mode 100644 (file)
index 0000000..b57025f
Binary files /dev/null and b/Project-Files/resources/edc_images/rich_text_bar_icon/email_icon_toolbar_number.png differ
index 41cb870..6c3040a 100755 (executable)
@@ -88,6 +88,8 @@ var g_curFontSize = 0;
 var g_curBold = 0;
 var g_curUnderline = 0;
 var g_curItalic = 0;
+var g_curOrderedList = 0;
+var g_curUnorderedList = 0;
 var g_curFontColor = "";
 var g_curBgColor = "";
 
@@ -951,7 +953,8 @@ function GetCurFontParamsString() {
 
        return "font_size=" + g_curFontSize + "&bold=" + g_curBold +
        "&underline=" + g_curUnderline + "&italic=" + g_curItalic +
-       "&font_color=" + g_curFontColor + "&bg_color=" + temp;
+       "&font_color=" + g_curFontColor + "&bg_color=" + temp +
+       "&ordered_list=" +  g_curOrderedList + "&unordered_list=" + g_curUnorderedList;
 }
 
 function HexToRgb(hex) {
@@ -984,6 +987,24 @@ function ExecCommand(type, value) {
                        g_curUnderline = (g_curUnderline == 1) ? 0 : 1;
                }
                break;
+       case "orderedList":
+               document.execCommand('insertOrderedList', false, null);
+               if (!selectionState) {
+                       g_curOrderedList = (g_curOrderedList == 1) ? 0 : 1;
+                       if (g_curOrderedList == 1 && g_curUnorderedList == 1) {
+                               g_curUnorderedList = 0;
+                       }
+               }
+               break;
+       case "unorderedList":
+               document.execCommand('insertUnorderedList', false, null);
+               if (!selectionState) {
+                       g_curUnorderedList = (g_curUnorderedList == 1) ? 0 : 1;
+                       if (g_curUnorderedList == 1 && g_curOrderedList == 1) {
+                               g_curOrderedList = 0;
+                       }
+               }
+               break;
        case "fontColor":
                document.execCommand('ForeColor', false, value);
                if (!selectionState) {
@@ -1299,7 +1320,7 @@ function GetCurrentFontStyleProperties(force) {
        }
 
        var containerEl = null;
-       var newFontSize = "", newBold = 1, newUnderline = 1, newItalic = 1;
+       var newFontSize = "", newBold = 1, newUnderline = 1, newItalic = 1, newOrderedList = 1, newUnorderedList = 1;
        var newFontColor = "", newBgColor = "";
 
        if (nodeArray.length == 1 && nodeArray[0].nodeType != G_VAL_TEXT_NODE_TYPE) {
@@ -1307,6 +1328,8 @@ function GetCurrentFontStyleProperties(force) {
                newBold = document.queryCommandState('bold') ? 1 : 0;
                newUnderline = document.queryCommandState('underline') ? 1 : 0;
                newItalic = document.queryCommandState('italic') ? 1 : 0;
+               newOrderedList = document.queryCommandState('insertOrderedList') ? 1 : 0;
+               newUnorderedList = document.queryCommandState('insertUnorderedList') ? 1 : 0;
                newFontColor = document.queryCommandValue('forecolor');
                newBgColor = document.queryCommandValue('backcolor');
 
@@ -1323,7 +1346,7 @@ function GetCurrentFontStyleProperties(force) {
                                containerEl = containerEl.parentNode;
                        }
 
-                       var iFontSize = "", iBold = 0, iUnderline = 0, iItalic = 0;
+                       var iFontSize = "", iBold = 0, iUnderline = 0, iItalic = 0, iOrderedList = 0, iUnorderedList = 0;
                        var iFontColor = "", iBgColor = "";
 
                        var computedStyle = GetComputedStyle(containerEl);
@@ -1342,6 +1365,18 @@ function GetCurrentFontStyleProperties(force) {
                                case "strong":
                                        iBold = 1;
                                        break;
+                               case "ol":
+                                       if (iOrderedList == 0 && iUnorderedList == 0) {
+                                               iOrderedList = 1;
+                                               iUnorderedList = 0;
+                                       }
+                                       break;
+                               case "ul":
+                                       if (iOrderedList == 0 && iUnorderedList == 0) {
+                                               iOrderedList = 0;
+                                               iUnorderedList = 1;
+                                       }
+                                       break;
                                default:
                                        break;
                                }
@@ -1358,6 +1393,8 @@ function GetCurrentFontStyleProperties(force) {
                        newBold = newBold & iBold;
                        newUnderline = newUnderline & iUnderline;
                        newItalic = newItalic & iItalic;
+                       newOrderedList = newOrderedList & iOrderedList;
+                       newUnorderedList = newUnorderedList & iUnorderedList;
 
                        if (newFontSize == "") {
                                newFontSize = iFontSize;
@@ -1382,6 +1419,7 @@ function GetCurrentFontStyleProperties(force) {
        if ((force == false &&
                g_curFontSize == newFontSize && g_curBold == newBold &&
                g_curUnderline == newUnderline && g_curItalic == newItalic &&
+               g_curOrderedList == newOrderedList && g_curUnorderedList == newUnorderedList &&
                g_curFontColor == newFontColor && g_curBgColor == newBgColor) || newFontSize == 0) {
                return null;
        } else {
@@ -1389,6 +1427,8 @@ function GetCurrentFontStyleProperties(force) {
                g_curBold = newBold;
                g_curUnderline = newUnderline;
                g_curItalic = newItalic;
+               g_curOrderedList = newOrderedList;
+               g_curUnorderedList = newUnorderedList;
                g_curFontColor = newFontColor;
                g_curBgColor = newBgColor;
                return GetCurFontParamsString();
index cfa42e6..fb0281d 100755 (executable)
                <privilege>http://tizen.org/privilege/appmanager.launch</privilege>
                <privilege>http://tizen.org/privilege/camera</privilege>
                <privilege>http://tizen.org/privilege/recorder</privilege>
-               <privilege>http://tizen.org/privilege/notification</privilege>
        </privileges>
 </manifest>