[TSAM-9298] wifi_direct: display icon on connection 94/97294/3 accepted/tizen/mobile/20161114.010707 submit/tizen/20161113.164011
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Sun, 13 Nov 2016 14:37:00 +0000 (15:37 +0100)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Sun, 13 Nov 2016 16:34:55 +0000 (17:34 +0100)
Change-Id: I94485923f55b937493a8375323b979e007ce35bd

res/resource/icons/Bluetooth, NFC, GPS/b03_wi-fi_direct_on_not_connected.png [new file with mode: 0644]
res/resource/icons/Bluetooth, NFC, GPS/b03_wi_fi_direct_on_connected.png [new file with mode: 0644]
src/modules/connection/wifi_direct.c [new file with mode: 0644]
src/modules/modules.c

diff --git a/res/resource/icons/Bluetooth, NFC, GPS/b03_wi-fi_direct_on_not_connected.png b/res/resource/icons/Bluetooth, NFC, GPS/b03_wi-fi_direct_on_not_connected.png
new file mode 100644 (file)
index 0000000..ac733bb
Binary files /dev/null and b/res/resource/icons/Bluetooth, NFC, GPS/b03_wi-fi_direct_on_not_connected.png differ
diff --git a/res/resource/icons/Bluetooth, NFC, GPS/b03_wi_fi_direct_on_connected.png b/res/resource/icons/Bluetooth, NFC, GPS/b03_wi_fi_direct_on_connected.png
new file mode 100644 (file)
index 0000000..7581809
Binary files /dev/null and b/res/resource/icons/Bluetooth, NFC, GPS/b03_wi_fi_direct_on_connected.png differ
diff --git a/src/modules/connection/wifi_direct.c b/src/modules/connection/wifi_direct.c
new file mode 100644 (file)
index 0000000..0b43035
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2016  Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * 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.
+ */
+
+#define ICON_PRIORITY  INDICATOR_PRIORITY_FIXED8
+#define MODULE_NAME            "wifi-direct"
+
+#include <vconf.h>
+
+#include "common.h"
+#include "icon.h"
+#include "log.h"
+#include "util.h"
+
+static int register_wifi_direct_module(void *data);
+static int unregister_wifi_direct_module(void);
+
+icon_s wifi_direct = {
+       .type = INDICATOR_IMG_ICON,
+       .name = MODULE_NAME,
+       .priority = ICON_PRIORITY,
+       .always_top = EINA_FALSE,
+       .exist_in_view = EINA_FALSE,
+       .img_obj = {0,},
+       .obj_exist = EINA_FALSE,
+       .area = INDICATOR_ICON_AREA_FIXED,
+       .init = register_wifi_direct_module,
+       .fini = unregister_wifi_direct_module,
+};
+
+static const char *_wifi_direct_get_icon_for_state(int vconf_wifi_key_value)
+{
+       switch (vconf_wifi_key_value)
+       {
+               case VCONFKEY_WIFI_DIRECT_CONNECTED:
+               case VCONFKEY_WIFI_DIRECT_GROUP_OWNER:
+                       return "Bluetooth, NFC, GPS/b03_wi_fi_direct_on_connected.png";
+               case VCONFKEY_WIFI_DIRECT_ACTIVATED:
+               case VCONFKEY_WIFI_DIRECT_DISCOVERING:
+               case VCONFKEY_WIFI_DIRECT_DEACTIVATING:
+               case VCONFKEY_WIFI_DIRECT_ACTIVATING:
+               case VCONFKEY_WIFI_DIRECT_CONNECTING:
+               case VCONFKEY_WIFI_DIRECT_DISCONNECTING:
+                       return "Bluetooth, NFC, GPS/b03_wi-fi_direct_on_not_connected.png";
+               case VCONFKEY_WIFI_DIRECT_DEACTIVATED:
+                       return NULL;
+       }
+       return NULL;
+}
+
+static void _wifi_direct_update_icon(int state)
+{
+       switch (state) {
+               case VCONFKEY_WIFI_DIRECT_DEACTIVATED:
+                       _D("Wifi-Direct off");
+                       icon_hide(&wifi_direct);
+                       util_signal_emit(wifi_direct.ad, "indicator.wifidirect.hide", "indicator.prog");
+                       break;
+               default:
+                       wifi_direct.img_obj.data = _wifi_direct_get_icon_for_state(state);
+                       icon_show(&wifi_direct);
+                       util_signal_emit(wifi_direct.ad, "indicator.wifidirect.show", "indicator.prog");
+                       _D("Wifi-Direct on: %s", wifi_direct.img_obj.data);
+       }
+}
+
+static void _wifi_direct_state_changed_cb(keynode_t *node, void *user_data)
+{
+       _wifi_direct_update_icon(node->value.i);
+}
+
+static int register_wifi_direct_module(void *data)
+{
+       int state;
+
+       wifi_direct.ad = data;
+
+       int err = vconf_notify_key_changed(VCONFKEY_WIFI_DIRECT_STATE,
+                       _wifi_direct_state_changed_cb, data);
+       if (err != 0) {
+               _E("vconf_notify_key_changed failed");
+               return FAIL;
+       }
+
+       if (vconf_get_int(VCONFKEY_WIFI_DIRECT_STATE, &state) != 0) {
+               _E("vconf_get_int failed");
+               unregister_wifi_direct_module();
+               return FAIL;
+       };
+
+       _wifi_direct_update_icon(state);
+       return OK;
+}
+
+static int unregister_wifi_direct_module(void)
+{
+       vconf_ignore_key_changed(VCONFKEY_WIFI_DIRECT_STATE, _wifi_direct_state_changed_cb);
+       return OK;
+}
index b30cb4d..cf9dce0 100644 (file)
@@ -23,6 +23,7 @@ extern icon_s usb;
 extern icon_s wifi;
 extern icon_s mobile_hotspot;
 extern icon_s conn;
+extern icon_s wifi_direct;
 
 /* Processing */
 extern icon_s call;
@@ -82,6 +83,7 @@ static icon_s *modules[] = {
        &usb,
        &mobile_hotspot,
        &conn,
+       &wifi_direct,
        /* Processing */
        &call,
        &call_divert,