[UI] Item in the clock mode popup is selected based on the clock setting. 86/123386/5
authorMichal Skorupinski <m.skorupinsk@samsung.com>
Wed, 5 Apr 2017 09:53:45 +0000 (11:53 +0200)
committerKiseok Chang <kiso.chang@samsung.com>
Tue, 11 Apr 2017 07:15:08 +0000 (00:15 -0700)
Change-Id: I633661ae4ae6e2ac455358da9d56cfaa88275c6f
Signed-off-by: Michal Skorupinski <m.skorupinsk@samsung.com>
include/view/common/view_generic_popup.h
res/widget/radio.edc
src/view/common/view_generic_popup.c
src/view/system/view_clock_mode.c

index 82e438c..d9b892a 100644 (file)
@@ -55,4 +55,11 @@ typedef struct {
 */
 view_class *view_generic_popup_get_vclass(void);
 
+/**
+ * Sets the item selected when the given popup is displayed.
+ * @param data The popup's private data.
+ * @param item The item to select.
+ */
+void view_generic_popup_set_selected_on_show(void *data, int item);
+
 #endif /* VIEW_GENERIC_POPUP_H_ */
index 42e49b0..b723829 100644 (file)
@@ -408,7 +408,7 @@ group { name: "elm/radio/base/style.popup.list";
                        }
                        description { state: "visible" 0.0;
                                inherit: "default" 0.0;
-                               visible: 1;
+                               visible: 0;
                        }
                }
                part { name: "elm.swallow.content";
index a0baba7..8f955eb 100644 (file)
@@ -35,6 +35,7 @@ struct _priv {
        Evas_Object *box;
        Eina_List *popup_buttons;
        int (*ui_id_on_show_focus)(void);
+       int item_selected_on_show;
 };
 
 /* View class functions: */
@@ -43,7 +44,7 @@ static void _show(void *view_data);
 static void _hide(void *view_data);
 static void _destroy(void *view_data);
 
-void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev);
+static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev);
 
 static input_handler _input_handler = {
        .key_down = _key_down_cb,
@@ -107,18 +108,17 @@ static void _show(void *data)
 {
        SETTING_TRACE_BEGIN;
        struct _priv *priv = (struct _priv *)data;
-       Eina_List *children = NULL;
-       Evas_Object *first = NULL;
+       Eina_List *children = elm_box_children_get(priv->box);
+       Evas_Object *first = eina_list_data_get(children);
+       Evas_Object *selected = eina_list_nth(children, priv->item_selected_on_show);
 
        if (!priv) {
                _ERR("Invalid parameter.");
                return;
        }
 
-       children = elm_box_children_get(priv->box);
-       first = eina_list_data_get(children);
-       elm_object_focus_set(first, EINA_TRUE);
-
+       elm_object_focus_set(selected, EINA_TRUE);
+       elm_radio_value_set(first, priv->item_selected_on_show);
 
        evas_object_show(priv->popup);
        SETTING_TRACE_END;
@@ -227,6 +227,7 @@ static void _focus_chain_debug(Evas_Object *box)
 static bool _fill_items(struct _priv *priv, Evas_Object *popup, int item_count, const char **item_text, input_handler *handler)
 {
        Evas_Object *radio = NULL;
+       Evas_Object *group = NULL;
        priv->box = elm_box_add(priv->popup);
        elm_box_horizontal_set(priv->box, EINA_FALSE);
 
@@ -237,6 +238,13 @@ static bool _fill_items(struct _priv *priv, Evas_Object *popup, int item_count,
        int i;
        for (i = 0; i < item_count; i++) {
                radio = utils_add_radio(priv->box, NULL, "style.popup.list", item_text[i % item_count]);
+               elm_radio_state_value_set(radio, i);
+
+               if (i == 0)
+                       group = radio;
+               else
+                       elm_radio_group_add(radio, group);
+
                evas_object_size_hint_min_set(radio, 300, 50);
                evas_object_size_hint_weight_set(radio, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
                evas_object_size_hint_align_set(radio, EVAS_HINT_FILL, EVAS_HINT_FILL);
@@ -253,7 +261,7 @@ static bool _fill_items(struct _priv *priv, Evas_Object *popup, int item_count,
        return true;
 }
 
-void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
+static void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Key_Down *ev)
 {
        if (!obj || !ev) {
                _ERR("Invalid argument.");
@@ -265,3 +273,9 @@ void _key_down_cb(int id, void *data, Evas *e, Evas_Object *obj, Evas_Event_Key_
                viewmgr_pop_view();
        }
 }
+
+void view_generic_popup_set_selected_on_show(void *data, int item)
+{
+       struct _priv *priv = (struct _priv *)data;
+       priv->item_selected_on_show = item;
+}
index 11c3cca..cdc4297 100755 (executable)
@@ -122,8 +122,16 @@ static void _popup_item_selected_cb(int id, void *data, Evas *e, Evas_Object *ob
 static void _show(void *data)
 {
        SETTING_TRACE_BEGIN
-       generic_popup_attr *g_data = data;
+       bool automatic;
+       generic_popup_attr *g_data = (generic_popup_attr *)data;
        view_class *vc = view_generic_popup_get_vclass();
+
+       settings_clock_is_time_automatic(&automatic);
+       if (automatic)
+               view_generic_popup_set_selected_on_show(g_data->generic_popup_data, TYPE_AUTO);
+       else
+               view_generic_popup_set_selected_on_show(g_data->generic_popup_data, TYPE_MANUAL);
+
        vc->show(g_data->generic_popup_data);
        SETTING_TRACE_END
 }
@@ -131,8 +139,8 @@ static void _show(void *data)
 static void _hide(void *data)
 {
        SETTING_TRACE_BEGIN;
-       generic_popup_attr *g_data = data;
        view_class *vc = view_generic_popup_get_vclass();
+       generic_popup_attr *g_data = (generic_popup_attr *)data;
        vc->hide(g_data->generic_popup_data);
        SETTING_TRACE_END;
 }
@@ -140,8 +148,8 @@ static void _hide(void *data)
 static void _destroy(void *data)
 {
        SETTING_TRACE_BEGIN;
-       generic_popup_attr *g_data = data;
        view_class *vc = view_generic_popup_get_vclass();
+       generic_popup_attr *g_data = (generic_popup_attr *)data;
        vc->destroy(g_data->generic_popup_data);
        SETTING_TRACE_END;
 }