diff --git a/src/bin/options_channels.c b/src/bin/options_channels.c index 2071733..453f708 100644 --- a/src/bin/options_channels.c +++ b/src/bin/options_channels.c @@ -5,7 +5,7 @@ /* local variables */ static Evas_Object *o_list = NULL; static Evas_Object *o_del = NULL; -static Evas_Object *o_name = NULL; +static Evas_Object *o_name = NULL, *o_pass = NULL; static Config_Network *_cfg_net = NULL; static void @@ -25,6 +25,23 @@ _cb_name_changed(void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUS elm_object_item_part_text_set(item, "elm.text", txt); } +static void +_cb_pass_changed(void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED) +{ + Elm_Object_Item *item; + Config_Channel *cfg_chl = NULL; + const char *txt; + + if (!(item = elm_list_selected_item_get(o_list))) return; + if (!(cfg_chl = elm_object_item_data_get(item))) return; + + txt = elm_entry_entry_get(obj); + eina_stringshare_replace(&cfg_chl->pass, txt); + _config_save(); + + elm_object_item_part_text_set(item, "elm.text", txt); +} + static void _cb_chl_sel(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED) { @@ -39,6 +56,7 @@ _cb_chl_sel(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EI elm_entry_entry_set(o_name, cfg_chl->name); elm_object_disabled_set(o_name, EINA_FALSE); + elm_object_disabled_set(o_pass, EINA_FALSE); } static void @@ -68,8 +86,10 @@ _cb_chl_add(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EI elm_list_go(o_list); elm_entry_entry_set(o_name, cfg_chl->name); + elm_entry_entry_set(o_pass, cfg_chl->pass); elm_object_disabled_set(o_name, EINA_FALSE); + elm_object_disabled_set(o_pass, EINA_FALSE); elm_object_focus_set(o_name, EINA_TRUE); elm_entry_cursor_end_set(o_name); @@ -91,6 +111,8 @@ _cb_chl_del(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EI eina_list_remove(_cfg_net->channels, cfg_chl); if (cfg_chl->name) eina_stringshare_del(cfg_chl->name); + if (cfg_chl->pass) eina_stringshare_del(cfg_chl->pass); + free(cfg_chl); _config_save(); @@ -103,6 +125,7 @@ _cb_chl_del(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EI elm_entry_entry_set(o_name, NULL); elm_object_disabled_set(o_name, EINA_TRUE); + elm_object_disabled_set(o_pass, EINA_TRUE); } } @@ -212,5 +235,27 @@ _options_channels(Evas_Object *box, Evas_Object *base EINA_UNUSED, Config_Networ elm_table_pack(tb, o_name, 1, 0, 2, 1); evas_object_show(o_name); + o = elm_label_add(box); + elm_object_text_set(o, "Password"); + evas_object_size_hint_weight_set(o, EVAS_HINT_FILL, 0.0); + evas_object_size_hint_align_set(o, 0.0, EVAS_HINT_FILL); + elm_table_pack(tb, o, 0, 1, 1, 1); + evas_object_show(o); + + o_pass = elm_entry_add(box); + elm_entry_single_line_set(o_pass, EINA_TRUE); + elm_entry_scrollable_set(o_pass, EINA_TRUE); + elm_entry_input_panel_layout_set(o_pass, ELM_INPUT_PANEL_LAYOUT_PASSWORD); + elm_scroller_policy_set(o_name, ELM_SCROLLER_POLICY_OFF, + ELM_SCROLLER_POLICY_OFF); + evas_object_size_hint_weight_set(o_pass, + EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(o_pass, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_smart_callback_add(o_pass, "changed,user", + _cb_pass_changed, NULL); + elm_table_pack(tb, o_pass, 1, 1, 2, 1); + evas_object_show(o_pass); + elm_object_disabled_set(o_name, EINA_TRUE); + elm_object_disabled_set(o_pass, EINA_TRUE); }