${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
)
EF_MULTILINE = 1,
EF_CLEAR_BTN = 2,
EF_PASSWORD = 4,
- EF_TITLE_SEARCH = 8,
} EmailEditfieldType;
#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 */
#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_ */
#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;
};
#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_ */
#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_ */
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);
#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)
{
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");
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);
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);
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 {
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, "");
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);
-}
#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);
/**
* @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);
*/
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"
};
*
* @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
*
* @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
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. */
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) {
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();
}
/* Handling application close immediately */
- _email_module_reset_app_launch_state(module, notify_close, true);
+ _email_module_reset_app_launch_state(module, notify_close);
}
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);
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;
}
/* Ignore all unexpected reply callbacks */
if (!module->_launched_app) {
debug_warning("Unexpected reply from an application!");
+ return;
}
/* Handle special result cases */
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;
}
}
}
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;
}
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();
}
/* 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();
/* 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 */
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");
}
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();
Evas_Object *win;
Evas_Object *conform;
+ Evas_Object *bg;
app_control_h launch_params;
email_module_h module;
{
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;
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;
}
*/
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__ */
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);
"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
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;
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;
int priority_option;
/* Miscellaneous */
+ COMPOSER_ROTATE_TYPE_E rotate;
Eina_Bool is_horizontal;
Eina_Bool is_load_finished;
Eina_Bool is_ewk_ready;
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);
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);
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();
}
}
+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();
/* 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);
edje_object_signal_emit(_EDJ(ugd->combined_scroller), "scroller_portrait", "");
}
- composer_util_resize_webview_height(ugd);
-
debug_leave();
}
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 */
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) {
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 {
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;
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);
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);
/* 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)) {
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)) {
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);
-}
#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"
"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[] = {
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);
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;
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:
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);
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;
{
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();
}
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);
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)
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,
¶ms->font_size,
&is_underline,
&is_italic,
¶ms->font_color.red, ¶ms->font_color.green, ¶ms->font_color.blue,
- ¶ms->bg_color.red, ¶ms->bg_color.green, ¶ms->bg_color.blue);
+ ¶ms->bg_color.red, ¶ms->bg_color.green, ¶ms->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;
}
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)
{
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
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
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);
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;
return -1;
}
+ evas_object_show(md->base.win);
+
debug_leave();
return 0;
}
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) {
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);
#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
#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
#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
#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
#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,
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;
/* 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__ */
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;
}
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;
}
email_module_t base;
EmailMailboxUGD view;
+ Ecore_Timer *start_timer;
Ecore_Thread *start_thread;
- volatile bool start_thread_done;
Evas_Object *init_pupup;
/* 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);
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();
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);
}
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);
* 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
*/
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);
} 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 {
/*
* 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
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);
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;
}
md->start_thread = NULL;
}
+ DELETE_TIMER_OBJECT(md->start_timer);
+
debug_leave();
}
debug_enter();
retm_if(!data, "data is NULL");
- EmailMailboxModule *md = data;
-
gboolean first = true;
gboolean ret = false;
if (ret) {
ecore_thread_feedback(thread, NULL);
- md->start_thread_done = true;
}
email_engine_finalize_force();
EmailMailboxModule *md = data;
+ DELETE_TIMER_OBJECT(md->start_timer);
+
if (md->start_thread) {
md->start_thread = NULL;
if (_mailbox_module_create_view(md) != 0) {
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();
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);
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);
break;
}
+ evas_object_show(ugd->base.win);
+
return 0;
}
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);
#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>"
//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);
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;
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;
/* popup */
double loading_progress;
Evas_Object *passwd_popup;
-
- /* theme */
- Elm_Theme *theme;
};
typedef struct {
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);
}
}
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);
}
}
/*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();
}
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();
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();
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();
}
}
}
- 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) {
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);
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();
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 */
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);
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) {
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();
}
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)
}
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);
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();
}
/* 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);
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;
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;
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);
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);
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();
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();
#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
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 );
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 {
+++ /dev/null
-/*
- * 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";
- }
- }
-}
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",
#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
scale: 1; \
description { \
state: "default" 0.0; \
- min: RTTB_BUTTON_LAYOUT_MIN_SIZE; \
} \
} \
part { name: "button_image"; \
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; \
scale: 1; \
description { \
state: "default" 0.0; \
- min: RTTB_BUTTON_LAYOUT_MIN_SIZE; \
} \
} \
part { name: "button_image"; \
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; \
scale: 1; \
description { \
state: "default" 0.0; \
- min: RTTB_BUTTON_LAYOUT_MIN_SIZE; \
} \
} \
part { name: "button_image"; \
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);
#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"
#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";
}
#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 {
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;
}
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;
}
}
#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",
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",
min: 0 1;
max: -1 1;
fixed: 0 1;
+ visible: 1;
align: 0.0 0.0;
}
)
}
}
+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)
#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 {
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;
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",
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;
}
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 {
} \
}
-#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; } \
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 = "";
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) {
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) {
}
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) {
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');
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);
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;
}
newBold = newBold & iBold;
newUnderline = newUnderline & iUnderline;
newItalic = newItalic & iItalic;
+ newOrderedList = newOrderedList & iOrderedList;
+ newUnorderedList = newUnorderedList & iUnorderedList;
if (newFontSize == "") {
newFontSize = iFontSize;
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 {
g_curBold = newBold;
g_curUnderline = newUnderline;
g_curItalic = newItalic;
+ g_curOrderedList = newOrderedList;
+ g_curUnorderedList = newUnorderedList;
g_curFontColor = newFontColor;
g_curBgColor = newBgColor;
return GetCurFontParamsString();
<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>