New API for getting state of attach panel window 30/85030/6
authorKyuho Jo <kyuho.jo@samsung.com>
Tue, 23 Aug 2016 10:13:00 +0000 (19:13 +0900)
committerKyuho Jo <kyuho.jo@samsung.com>
Mon, 29 Aug 2016 22:12:19 +0000 (07:12 +0900)
Change-Id: Id3631ead0d153d4986bbc1b1aefa3ccce20e7d54
Signed-off-by: Kyuho Jo <kyuho.jo@samsung.com>
include/attach_panel.h
include/attach_panel_internal.h
src/attach_panel.c
src/gesture.c
src/ug.c
src/ui_manager.c

index 718ea441735bcfa8e5b4b9c97be687c1056b73a7..e33f21d1b4c3b3fa8e0a9a17e27e0184f699a944 100644 (file)
@@ -73,6 +73,18 @@ typedef enum attach_panel_event {
        ATTACH_PANEL_EVENT_HIDE_FINISH, /**< Attach panel finishes the effect to hide the panel */
 } attach_panel_event_e;
 
+/**
+ * @brief Enumeration for window state
+ * @since_tizen 3.0
+ * @see attach_panel_get_state()
+ */
+typedef enum {
+       ATTACH_PANEL_STATE_HIDDEN = 0, /**< Attach panel is not visible */
+       ATTACH_PANEL_STATE_PARTIAL = 1, /**< Attach panel is in partial window mode */
+       ATTACH_PANEL_STATE_FULL = 2, /**< Attach panel is in full screen mode */
+} attach_panel_state_e;
+
+
 /**
  * @brief Attach panel handle.
  * @since_tizen 2.4
@@ -1414,6 +1426,50 @@ int attach_panel_hide(attach_panel_h attach_panel);
  */
 int attach_panel_get_visibility(attach_panel_h attach_panel, bool *visible);
 
+/**
+ * @brief Gets the state of the attach_panel.
+ * @since_tizen 3.0
+ * @remarks Users can toggle the attach panel between full screen state or partial window state.\n
+ *          Developer can get the state of attach panel by calling this function.
+ *
+ * @param[in] attach_panel The attach panel handle
+ * @param[out] state The @attach_panel window state
+ * @return #ATTACH_PANEL_ERROR_NONE on success,
+ *         otherwise a negative error value
+ * @retval #ATTACH_PANEL_ERROR_NONE Successful
+ * @retval #ATTACH_PANEL_ERROR_INVALID_PARAMETER Invalid parameter
+ * @retval #ATTACH_PANEL_ERROR_ALREADY_DESTROYED already removed
+ *
+ * @pre Call attach_panel_create() before calling this function.
+ * @see attach_panel_state_e
+ *
+ * @par Example
+ * @code
+ *
+ * int ret;
+ * attach_panel_state_e attach_panel_state;
+ *
+ * ret = attach_panel_get_state(attach_panel, &attach_panel_state);
+ * if (ATTACH_PANEL_ERROR_NONE != ret) {
+ *    // Error handling
+ * }
+ *
+ * switch (attach_panel_state) {
+ *   case ATTACH_PANEL_STATE_HIDDEN:
+ *     // attach panel is hidden
+ *     break;
+ *   case ATTACH_PANEL_STATE_PARTIAL:
+ *     // for partial window mode
+ *     break;
+ *   case ATTACH_PANEL_STATE_FULL:
+ *     // full screen mode
+ *     break;
+ * }
+ *
+ * @endcode
+ */
+int attach_panel_get_state(attach_panel_h attach_panel, attach_panel_state_e *state);
+
 /**
  * @}
  */
index 821193dda4555d607052c0c956fa3373e7b116b8..60172c7caa0267c852dc5345625cf01048e99c4d 100644 (file)
@@ -198,15 +198,6 @@ enum {
 };
 
 
-
-typedef enum {
-       ATTACH_PANEL_STATE_HIDE,
-       ATTACH_PANEL_STATE_HALF,
-       ATTACH_PANEL_STATE_FULL,
-} attach_panel_state_e;
-
-
-
 struct _attach_panel {
        Evas_Object *win;
        Evas_Object *attach_panel_rect;
index a7e20a0d0d47ff284dbe6abe4874cb50e4a58a93..9d8b65f61eefbc927c9b1238ced71ff769ace9f9 100644 (file)
@@ -213,9 +213,9 @@ static void __rotate_cb(void *data, Evas_Object *obj, void *event)
                w = h;
                attach_panel->rotate = EINA_TRUE;
 
-               if (ATTACH_PANEL_STATE_HIDE == attach_panel->attach_panel_port_state) {
-                       attach_panel->attach_panel_land_state = ATTACH_PANEL_STATE_HIDE;
-               } else if (ATTACH_PANEL_STATE_HALF == attach_panel->attach_panel_port_state) {
+               if (ATTACH_PANEL_STATE_HIDDEN == attach_panel->attach_panel_port_state) {
+                       attach_panel->attach_panel_land_state = ATTACH_PANEL_STATE_HIDDEN;
+               } else if (ATTACH_PANEL_STATE_PARTIAL == attach_panel->attach_panel_port_state) {
                        attach_panel->attach_panel_land_state = ATTACH_PANEL_STATE_FULL;
                        _gesture_set_state(ATTACH_PANEL_STATE_FULL);
                        _content_list_send_message(attach_panel->content_list, APP_CONTROL_DATA_SELECTION_MODE, SELECTION_MODE_MULTIPLE, ATTACH_PANEL_CONTENT_CATEGORY_UG);
@@ -235,11 +235,11 @@ static void __rotate_cb(void *data, Evas_Object *obj, void *event)
 
                attach_panel->rotate = EINA_FALSE;
 
-               if (ATTACH_PANEL_STATE_HIDE == attach_panel->attach_panel_land_state) {
-                       attach_panel->attach_panel_port_state = ATTACH_PANEL_STATE_HIDE;
+               if (ATTACH_PANEL_STATE_HIDDEN == attach_panel->attach_panel_land_state) {
+                       attach_panel->attach_panel_port_state = ATTACH_PANEL_STATE_HIDDEN;
                } else {
-                       if (ATTACH_PANEL_STATE_HALF == attach_panel->attach_panel_port_state) {
-                               _gesture_set_state(ATTACH_PANEL_STATE_HALF);
+                       if (ATTACH_PANEL_STATE_PARTIAL == attach_panel->attach_panel_port_state) {
+                               _gesture_set_state(ATTACH_PANEL_STATE_PARTIAL);
                                _content_list_send_message(attach_panel->content_list, APP_CONTROL_DATA_SELECTION_MODE, SELECTION_MODE_SINGLE, ATTACH_PANEL_CONTENT_CATEGORY_UG);
                                elm_object_signal_emit(attach_panel->conformant, "elm,state,attach_panel,show,half", "");
                        } else {
@@ -390,7 +390,7 @@ EXPORT_API int attach_panel_destroy(attach_panel_h attach_panel)
        }
 
        attach_panel->is_delete = EINA_TRUE;
-       if (ATTACH_PANEL_STATE_HIDE == _gesture_get_state()) {
+       if (ATTACH_PANEL_STATE_HIDDEN == _gesture_get_state()) {
                _attach_panel_del(attach_panel);
        } else {
                attach_panel_hide(attach_panel);
@@ -725,7 +725,7 @@ EXPORT_API int attach_panel_show(attach_panel_h attach_panel)
                return ATTACH_PANEL_ERROR_ALREADY_DESTROYED;
        }
 
-       if (ATTACH_PANEL_STATE_HIDE != _gesture_get_state()) {
+       if (ATTACH_PANEL_STATE_HIDDEN != _gesture_get_state()) {
                _D("Attach panel is already shown");
                return ATTACH_PANEL_ERROR_NONE;
        }
@@ -797,13 +797,13 @@ EXPORT_API int attach_panel_get_visibility(attach_panel_h attach_panel, bool *vi
        }
 
        if (attach_panel->rotate) {
-               if (ATTACH_PANEL_STATE_HIDE == attach_panel->attach_panel_land_state) {
+               if (ATTACH_PANEL_STATE_HIDDEN == attach_panel->attach_panel_land_state) {
                        *visible = false;
                } else {
                        *visible = true;
                }
        } else {
-               if (ATTACH_PANEL_STATE_HIDE == attach_panel->attach_panel_port_state) {
+               if (ATTACH_PANEL_STATE_HIDDEN == attach_panel->attach_panel_port_state) {
                        *visible = false;
                } else {
                        *visible = true;
@@ -812,3 +812,23 @@ EXPORT_API int attach_panel_get_visibility(attach_panel_h attach_panel, bool *vi
 
        return ATTACH_PANEL_ERROR_NONE;
 }
+
+EXPORT_API int attach_panel_get_state(attach_panel_h attach_panel, attach_panel_state_e *state)
+{
+       retv_if(!attach_panel, ATTACH_PANEL_ERROR_INVALID_PARAMETER);
+       retv_if(!state, ATTACH_PANEL_ERROR_INVALID_PARAMETER);
+
+       if (EINA_TRUE == attach_panel->is_delete) {
+               _E("Attach panel is already removed");
+               return ATTACH_PANEL_ERROR_ALREADY_DESTROYED;
+       }
+
+       if (attach_panel->rotate == EINA_TRUE) {
+               *state = attach_panel->attach_panel_land_state;
+       }
+       else {
+               *state = attach_panel->attach_panel_port_state;
+       }
+
+       return ATTACH_PANEL_ERROR_NONE;
+}
index 89da596920b367c30414244876c7f2ab19095625..2fec0b28d80412c302291a619453c1abf9b7255d 100644 (file)
@@ -35,7 +35,7 @@ static struct {
        attach_panel_state_e attach_panel_state;
 } gesture_info_s = {
        .transit = NULL,
-       .attach_panel_state = ATTACH_PANEL_STATE_HIDE,
+       .attach_panel_state = ATTACH_PANEL_STATE_HIDDEN,
 };
 
 typedef struct custom_effect {
@@ -112,7 +112,7 @@ static void __attach_panel_transit_del_cb(void *data, Elm_Transit *transit)
        _D("%s : transit is ended", __func__);
 
        gesture_info_s.transit = NULL;
-       if (gesture_info_s.attach_panel_state == ATTACH_PANEL_STATE_HIDE) {
+       if (gesture_info_s.attach_panel_state == ATTACH_PANEL_STATE_HIDDEN) {
                elm_object_signal_emit(attach_panel->conformant, "elm,state,attach_panel,hide,finished", "");
                if (attach_panel->event_cb) {
                        attach_panel->event_cb(attach_panel, ATTACH_PANEL_EVENT_HIDE_FINISH, NULL, attach_panel->event_data);
@@ -137,14 +137,14 @@ static void __attach_panel_transit_set(attach_panel_h attach_panel, Evas_Coord f
        if (gesture_info_s.transit) {
                _E("Transit is already activating");
                if (attach_panel->cur_event_state == ATTACH_PANEL_EVENT_HIDE_START) {
-                       if (gesture_info_s.attach_panel_state != ATTACH_PANEL_STATE_HIDE) {
+                       if (gesture_info_s.attach_panel_state != ATTACH_PANEL_STATE_HIDDEN) {
                                if (attach_panel->event_cb) {
                                        attach_panel->event_cb(attach_panel, ATTACH_PANEL_EVENT_HIDE_FINISH, NULL, attach_panel->event_data);
                                        attach_panel->event_cb(attach_panel, ATTACH_PANEL_EVENT_SHOW_START, NULL, attach_panel->event_data);
                                }
                        }
                } else {
-                       if (gesture_info_s.attach_panel_state == ATTACH_PANEL_STATE_HIDE) {
+                       if (gesture_info_s.attach_panel_state == ATTACH_PANEL_STATE_HIDDEN) {
                                if (attach_panel->event_cb) {
                                        attach_panel->event_cb(attach_panel, ATTACH_PANEL_EVENT_SHOW_FINISH, NULL, attach_panel->event_data);
                                        attach_panel->event_cb(attach_panel, ATTACH_PANEL_EVENT_HIDE_START, NULL, attach_panel->event_data);
@@ -157,7 +157,7 @@ static void __attach_panel_transit_set(attach_panel_h attach_panel, Evas_Coord f
        custom_effect = __custom_effect_new(from_h, to_h);
        ret_if(!custom_effect);
 
-       if (gesture_info_s.attach_panel_state == ATTACH_PANEL_STATE_HIDE) {
+       if (gesture_info_s.attach_panel_state == ATTACH_PANEL_STATE_HIDDEN) {
                elm_object_signal_emit(attach_panel->conformant, "elm,state,attach_panel,hide,started", "");
                attach_panel->cur_event_state = ATTACH_PANEL_EVENT_HIDE_START;
                if (attach_panel->event_cb) {
@@ -190,7 +190,7 @@ static void __attach_panel_transit_set(attach_panel_h attach_panel, Evas_Coord f
 
 void _gesture_show(attach_panel_h attach_panel)
 {
-       gesture_info_s.attach_panel_state = ATTACH_PANEL_STATE_HALF;
+       gesture_info_s.attach_panel_state = ATTACH_PANEL_STATE_PARTIAL;
        _D("gesture show start");
        elm_config_focus_autoscroll_mode_set(ELM_FOCUS_AUTOSCROLL_MODE_NONE);
 
@@ -205,8 +205,8 @@ void _gesture_show(attach_panel_h attach_panel)
        } else {
                _content_list_send_message(attach_panel->content_list, APP_CONTROL_DATA_SELECTION_MODE, SELECTION_MODE_SINGLE, ATTACH_PANEL_CONTENT_CATEGORY_UG);
                elm_scroller_movement_block_set(attach_panel->grid, ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL);
-               attach_panel->attach_panel_port_state = ATTACH_PANEL_STATE_HALF;
-               gesture_info_s.attach_panel_state = ATTACH_PANEL_STATE_HALF;
+               attach_panel->attach_panel_port_state = ATTACH_PANEL_STATE_PARTIAL;
+               gesture_info_s.attach_panel_state = ATTACH_PANEL_STATE_PARTIAL;
                __attach_panel_transit_set(attach_panel, 0, attach_panel->transit_height, TRANSIT_DURATION);
        }
 }
@@ -219,15 +219,15 @@ void _gesture_hide(attach_panel_h attach_panel)
        elm_config_focus_autoscroll_mode_set(ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN);
 
        if (attach_panel->rotate) {
-               attach_panel->attach_panel_land_state = ATTACH_PANEL_STATE_HIDE;
+               attach_panel->attach_panel_land_state = ATTACH_PANEL_STATE_HIDDEN;
                elm_object_signal_emit(attach_panel->conformant, "elm,state,attach_panel,show,half", "");
        } else {
                if (ATTACH_PANEL_STATE_FULL == attach_panel->attach_panel_port_state) {
                        elm_object_signal_emit(attach_panel->conformant, "elm,state,attach_panel,show,half", "");
                }
-               attach_panel->attach_panel_port_state = ATTACH_PANEL_STATE_HIDE;
+               attach_panel->attach_panel_port_state = ATTACH_PANEL_STATE_HIDDEN;
        }
-       gesture_info_s.attach_panel_state = ATTACH_PANEL_STATE_HIDE;
+       gesture_info_s.attach_panel_state = ATTACH_PANEL_STATE_HIDDEN;
        _content_list_set_flick(attach_panel->content_list, EINA_TRUE);
        __attach_panel_transit_set(attach_panel, attach_panel->transit_height, 0, TRANSIT_DURATION);
 }
@@ -239,7 +239,7 @@ void _gesture_set_full_mode(attach_panel_h attach_panel)
        if (attach_panel->rotate) {
                return;
        }
-       if (attach_panel->attach_panel_port_state == ATTACH_PANEL_STATE_HALF) {
+       if (attach_panel->attach_panel_port_state == ATTACH_PANEL_STATE_PARTIAL) {
                attach_panel->attach_panel_port_state = ATTACH_PANEL_STATE_FULL;
                gesture_info_s.attach_panel_state = ATTACH_PANEL_STATE_FULL;
                elm_scroller_movement_block_set(attach_panel->grid, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
@@ -290,7 +290,7 @@ static Evas_Event_Flags __flick_end_cb(void *data, void *event_info)
                if (attach_panel->rotate) {
                        return EVAS_EVENT_FLAG_ON_HOLD;
                }
-               if (attach_panel->attach_panel_port_state == ATTACH_PANEL_STATE_HALF) {
+               if (attach_panel->attach_panel_port_state == ATTACH_PANEL_STATE_PARTIAL) {
                        attach_panel->attach_panel_port_state = ATTACH_PANEL_STATE_FULL;
                        gesture_info_s.attach_panel_state = ATTACH_PANEL_STATE_FULL;
                        elm_scroller_movement_block_set(attach_panel->grid, ELM_SCROLLER_MOVEMENT_NO_BLOCK);
@@ -306,12 +306,12 @@ static Evas_Event_Flags __flick_end_cb(void *data, void *event_info)
                        }
                } else {
                        if (attach_panel->attach_panel_port_state == ATTACH_PANEL_STATE_FULL) {
-                               attach_panel->attach_panel_port_state = ATTACH_PANEL_STATE_HALF;
-                               gesture_info_s.attach_panel_state = ATTACH_PANEL_STATE_HALF;
+                               attach_panel->attach_panel_port_state = ATTACH_PANEL_STATE_PARTIAL;
+                               gesture_info_s.attach_panel_state = ATTACH_PANEL_STATE_PARTIAL;
                                elm_scroller_movement_block_set(attach_panel->grid, ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL);
                                elm_object_signal_emit(attach_panel->conformant, "elm,state,attach_panel,show,half", "");
                                _content_list_send_message(attach_panel->content_list, APP_CONTROL_DATA_SELECTION_MODE, SELECTION_MODE_SINGLE, ATTACH_PANEL_CONTENT_CATEGORY_UG);
-                       } else if (attach_panel->attach_panel_port_state == ATTACH_PANEL_STATE_HALF) {
+                       } else if (attach_panel->attach_panel_port_state == ATTACH_PANEL_STATE_PARTIAL) {
                                _gesture_hide(attach_panel);
                                _content_list_send_message(attach_panel->content_list, APP_CONTROL_DATA_SELECTION_MODE, SELECTION_MODE_SINGLE, ATTACH_PANEL_CONTENT_CATEGORY_UG);
                        }
index 43cf8f682173b85ed4ed45fce384ef9a4e2defad..113689ddddde95bb94ef5f4a8df6e1b08e4714f4 100644 (file)
--- a/src/ug.c
+++ b/src/ug.c
@@ -40,7 +40,7 @@ static void __result_cb(ui_gadget_h ui_gadget, app_control_h result, void *priv)
 
        ret_if(!content_info);
 
-       if (ATTACH_PANEL_STATE_HIDE == _gesture_get_state())
+       if (ATTACH_PANEL_STATE_HIDDEN == _gesture_get_state())
                return;
 
        ret = app_control_get_extra_data(result, "__ATTACH_PANEL_FLICK_DOWN__", &enable);
@@ -79,14 +79,14 @@ static void __result_cb(ui_gadget_h ui_gadget, app_control_h result, void *priv)
 
                _D("attach panel show panel %s", enable);
                if (!strcmp(enable, MODE_TRUE)) {
-                       if (ATTACH_PANEL_STATE_HIDE == _gesture_get_state()) {
+                       if (ATTACH_PANEL_STATE_HIDDEN == _gesture_get_state()) {
                                /* This is same with attach_panel_show() */
                                _content_list_set_resume(content_info->attach_panel->content_list, ATTACH_PANEL_CONTENT_CATEGORY_UG);
                                _content_list_send_message(content_info->attach_panel->content_list, "__ATTACH_PANEL_INITIALIZE__", MODE_ENABLE, ATTACH_PANEL_CONTENT_CATEGORY_UG);
                                _gesture_show(content_info->attach_panel);
                        }
                } else {
-                       if (ATTACH_PANEL_STATE_HIDE != _gesture_get_state()) {
+                       if (ATTACH_PANEL_STATE_HIDDEN != _gesture_get_state()) {
                                /* This is same with attach_panel_hide() */
                                _content_list_set_pause(content_info->attach_panel->content_list, ATTACH_PANEL_CONTENT_CATEGORY_UG);
                                _gesture_hide(content_info->attach_panel);
index b27b2af315b9d3757ab2ce3581cc6d9ed5459eae..2b898b13ba234bc94455309d5d85a4e4c3270c17 100644 (file)
@@ -290,7 +290,7 @@ static void _change_tab_cb(Evas_Object *toolbar, int event_type, void *event_inf
                return;
        }
 
-       if (ATTACH_PANEL_STATE_HIDE == _gesture_get_state()) {
+       if (ATTACH_PANEL_STATE_HIDDEN == _gesture_get_state()) {
                _D("state of attach_panel is hide state");
                return;
        }
@@ -347,7 +347,7 @@ static void __window_resume_cb(void *data, Evas_Object *scroller, void *event_in
        attach_panel_h attach_panel = data;
        ret_if(!attach_panel);
 
-       if (ATTACH_PANEL_STATE_HIDE == _gesture_get_state()) {
+       if (ATTACH_PANEL_STATE_HIDDEN == _gesture_get_state()) {
                _D("attach panel is already hide");
                return;
        }
@@ -366,7 +366,7 @@ static void __window_pause_cb(void *data, Evas_Object *scroller, void *event_inf
        attach_panel_h attach_panel = data;
        ret_if(!attach_panel);
 
-       if (ATTACH_PANEL_STATE_HIDE == _gesture_get_state()) {
+       if (ATTACH_PANEL_STATE_HIDDEN == _gesture_get_state()) {
                _D("attach panel is already hide");
                return;
        }
@@ -392,7 +392,7 @@ static void __keypad_on_cb(void *data, Evas_Object *obj, void *event_info)
 
        _D("keypad state on");
 
-       if (ATTACH_PANEL_STATE_HIDE == _gesture_get_state()) {
+       if (ATTACH_PANEL_STATE_HIDDEN == _gesture_get_state()) {
                _D("attach panel is already hide");
                return;
        }
@@ -408,7 +408,7 @@ static void __key_back_cb(void *data, Evas_Object *obj, void *event_info)
        attach_panel_h attach_panel = data;
        ret_if(!attach_panel);
 
-       if (ATTACH_PANEL_STATE_HIDE == _gesture_get_state()) {
+       if (ATTACH_PANEL_STATE_HIDDEN == _gesture_get_state()) {
                _D("attach panel is already hide");
                return;
        }