forked from enlightenment/enlightenment
add options for hiding service types in wireless gadget
fix T5975
This commit is contained in:
parent
340350fbbc
commit
2b7bfe657c
|
@ -1,4 +1,4 @@
|
|||
#include "e.h"
|
||||
#include "wireless.h"
|
||||
|
||||
EINTERN void wireless_gadget_init(void);
|
||||
EINTERN void wireless_gadget_shutdown(void);
|
||||
|
@ -7,6 +7,8 @@ EINTERN void connman_init(void);
|
|||
EINTERN void connman_shutdown(void);
|
||||
|
||||
EINTERN Eldbus_Connection *dbus_conn;
|
||||
static E_Config_DD *edd;
|
||||
EINTERN Wireless_Config *wireless_config;
|
||||
|
||||
E_API E_Module_Api e_modapi =
|
||||
{
|
||||
|
@ -20,6 +22,16 @@ e_modapi_init(E_Module *m)
|
|||
dbus_conn = eldbus_connection_get(ELDBUS_CONNECTION_TYPE_SYSTEM);
|
||||
connman_init();
|
||||
wireless_gadget_init();
|
||||
|
||||
edd = E_CONFIG_DD_NEW("Wireless_Config", Wireless_Config);
|
||||
#undef T
|
||||
#undef D
|
||||
#define T Wireless_Config
|
||||
#define D edd
|
||||
|
||||
E_CONFIG_VAL(D, T, disabled_types, UINT);
|
||||
wireless_config = e_config_domain_load("module.wireless", edd);
|
||||
if (!wireless_config) wireless_config = E_NEW(Wireless_Config, 1);
|
||||
return m;
|
||||
}
|
||||
|
||||
|
@ -29,5 +41,14 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
|
|||
wireless_gadget_shutdown();
|
||||
connman_shutdown();
|
||||
E_FREE_FUNC(dbus_conn, eldbus_connection_unref);
|
||||
E_CONFIG_DD_FREE(edd);
|
||||
E_FREE(wireless_config);
|
||||
return 1;
|
||||
}
|
||||
|
||||
E_API int
|
||||
e_modapi_save(E_Module *m EINA_UNUSED)
|
||||
{
|
||||
e_config_domain_save("module.wireless", edd, wireless_config);
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -587,6 +587,96 @@ _wireless_gadget_edit_dnstime(void)
|
|||
evas_object_hide(elm_table_child_get(tb, 0, 6));
|
||||
}
|
||||
|
||||
static void
|
||||
_wireless_gadget_edit_services_type(Evas_Object *obj, Wireless_Service_Type type)
|
||||
{
|
||||
Eina_Bool state = elm_check_state_get(obj);
|
||||
|
||||
if (state)
|
||||
wireless_config->disabled_types |= (1 << type);
|
||||
else
|
||||
wireless_config->disabled_types &= ~(1 << type);
|
||||
e_config_save_queue();
|
||||
}
|
||||
|
||||
static void
|
||||
_wireless_gadget_edit_services_wifi(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||
{
|
||||
_wireless_gadget_edit_services_type(obj, WIRELESS_SERVICE_TYPE_WIFI);
|
||||
}
|
||||
|
||||
static void
|
||||
_wireless_gadget_edit_services_bluetooth(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||
{
|
||||
_wireless_gadget_edit_services_type(obj, WIRELESS_SERVICE_TYPE_BLUETOOTH);
|
||||
}
|
||||
|
||||
static void
|
||||
_wireless_gadget_edit_services_cellular(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||
{
|
||||
_wireless_gadget_edit_services_type(obj, WIRELESS_SERVICE_TYPE_CELLULAR);
|
||||
}
|
||||
|
||||
static void
|
||||
_wireless_gadget_edit_services(void)
|
||||
{
|
||||
Evas_Object *tb, *bx, *ck, *fr, *r;
|
||||
int row = 0;
|
||||
|
||||
wireless_popup.content = tb = elm_table_add(wireless_popup.popup);
|
||||
elm_table_homogeneous_set(tb, 1);
|
||||
E_FILL(tb);
|
||||
E_EXPAND(tb);
|
||||
evas_object_show(tb);
|
||||
elm_box_pack_end(wireless_popup.box, tb);
|
||||
|
||||
fr = elm_frame_add(tb);
|
||||
E_EXPAND(fr);
|
||||
E_FILL(fr);
|
||||
evas_object_show(fr);
|
||||
elm_object_text_set(fr, _("Hide Service Types"));
|
||||
elm_table_pack(tb, fr, 0, row++, 2, 1);
|
||||
|
||||
bx = elm_box_add(fr);
|
||||
E_EXPAND(bx);
|
||||
E_FILL(bx);
|
||||
evas_object_show(bx);
|
||||
elm_object_content_set(fr, bx);
|
||||
|
||||
ck = elm_check_add(tb);
|
||||
E_EXPAND(ck);
|
||||
E_FILL(ck);
|
||||
elm_object_text_set(ck, _("Hide Wifi"));
|
||||
elm_check_state_set(ck, (wireless_config->disabled_types &
|
||||
(1 << WIRELESS_SERVICE_TYPE_WIFI)) == (1 << WIRELESS_SERVICE_TYPE_WIFI));
|
||||
evas_object_smart_callback_add(ck, "changed", _wireless_gadget_edit_services_wifi, NULL);
|
||||
evas_object_show(ck);
|
||||
elm_box_pack_end(bx, ck);
|
||||
|
||||
ck = elm_check_add(tb);
|
||||
E_EXPAND(ck);
|
||||
E_FILL(ck);
|
||||
elm_object_text_set(ck, _("Hide Bluetooth"));
|
||||
elm_check_state_set(ck, (wireless_config->disabled_types &
|
||||
(1 << WIRELESS_SERVICE_TYPE_BLUETOOTH)) == (1 << WIRELESS_SERVICE_TYPE_BLUETOOTH));
|
||||
evas_object_smart_callback_add(ck, "changed", _wireless_gadget_edit_services_bluetooth, NULL);
|
||||
evas_object_show(ck);
|
||||
elm_box_pack_end(bx, ck);
|
||||
|
||||
ck = elm_check_add(tb);
|
||||
E_EXPAND(ck);
|
||||
E_FILL(ck);
|
||||
elm_object_text_set(ck, _("Hide Cellular"));
|
||||
elm_check_state_set(ck, (wireless_config->disabled_types &
|
||||
(1 << WIRELESS_SERVICE_TYPE_CELLULAR)) == (1 << WIRELESS_SERVICE_TYPE_CELLULAR));
|
||||
evas_object_smart_callback_add(ck, "changed", _wireless_gadget_edit_services_cellular, NULL);
|
||||
evas_object_show(ck);
|
||||
elm_box_pack_end(bx, ck);
|
||||
|
||||
r = evas_object_rectangle_add(e_comp->evas);
|
||||
elm_table_pack(tb, r, 0, row++, 2, 1);
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_wireless_gadget_edit_basic(void)
|
||||
{
|
||||
|
@ -693,6 +783,13 @@ _wireless_gadget_edit_select_dnstime(void *data EINA_UNUSED, Evas_Object *obj EI
|
|||
_wireless_gadget_edit_dnstime();
|
||||
}
|
||||
|
||||
static void
|
||||
_wireless_gadget_edit_select_services(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
_wireless_gadget_edit_select_pre();
|
||||
_wireless_gadget_edit_services();
|
||||
}
|
||||
|
||||
static void
|
||||
_wireless_gadget_edit(int type)
|
||||
{
|
||||
|
@ -798,6 +895,7 @@ _wireless_gadget_edit(int type)
|
|||
elm_list_item_selected_set(it, 1);
|
||||
elm_list_item_append(list, _("Proxy"), NULL, NULL, _wireless_gadget_edit_select_proxy, NULL);
|
||||
elm_list_item_append(list, _("DNS/Time"), NULL, NULL, _wireless_gadget_edit_select_dnstime, NULL);
|
||||
elm_list_item_append(list, _("Services"), NULL, NULL, _wireless_gadget_edit_select_services, NULL);
|
||||
elm_list_go(list);
|
||||
evas_object_show(list);
|
||||
|
||||
|
@ -1124,6 +1222,7 @@ _wireless_gadget_refresh(Instance *inst)
|
|||
for (type = WIRELESS_SERVICE_TYPE_WIFI; type < WIRELESS_SERVICE_TYPE_LAST; type++)
|
||||
{
|
||||
if (!inst->icon[type]) continue;
|
||||
if ((wireless_config->disabled_types & (1U << type)) == (1U << type)) continue;
|
||||
if (wireless_type_enabled[type] && (!wireless_network_count[type])) continue;
|
||||
|
||||
elm_box_pack_end(inst->box, inst->icon[type]);
|
||||
|
|
|
@ -66,6 +66,11 @@ typedef struct Wireless_Network Wireless_Network;
|
|||
|
||||
typedef Eina_Bool (*Wireless_Network_Connect_Cb)(Wireless_Network *);
|
||||
|
||||
typedef struct Wireless_Config
|
||||
{
|
||||
unsigned int disabled_types;
|
||||
} Wireless_Config;
|
||||
|
||||
struct Wireless_Network
|
||||
{
|
||||
Eina_Stringshare *path;//dbus path
|
||||
|
@ -112,6 +117,7 @@ typedef struct Wireless_Connection
|
|||
typedef void (*Wireless_Auth_Cb)(void *data, const Eina_Array *fields);
|
||||
|
||||
extern Eldbus_Connection *dbus_conn;
|
||||
extern Wireless_Config *wireless_config;
|
||||
|
||||
EINTERN void wireless_service_type_available_set(Eina_Bool *avail);
|
||||
EINTERN void wireless_service_type_enabled_set(Eina_Bool *enabled);
|
||||
|
|
Loading…
Reference in New Issue