Add TEST_CODE for LOCATION 70/131270/2
authorjunkyu han <junkyu.han@samsung.com>
Fri, 26 May 2017 05:29:01 +0000 (14:29 +0900)
committerjunkyu han <junkyu.han@samsung.com>
Fri, 26 May 2017 05:32:17 +0000 (14:32 +0900)
Change-Id: Ic25621ca8cae060b706a8309f4c461c5451859d1

inc/moments/moments_status_view.h
inc/moments/moments_view_edje_conf.h
res/edje/circle/moments_status_location.edc [new file with mode: 0644]
res/edje/images/Location/location_activated.png [new file with mode: 0644]
src/moments/moments_manager.c
src/moments/moments_status_view.c
test/feature_test/group_feature_moments_status_behavior.c
test/feature_test/group_feature_moments_status_view_ui.c
test/test_function.h

index 25b46ac3973992b89da356625cd93a936ab5d520..12560f1f6b0774d25e5c5fa918e871b3893dfed6 100644 (file)
@@ -30,7 +30,7 @@ typedef enum {
        STATUS_ICON_HEADSET = 3,
        STATUS_ICON_NO_SIM = 4,
        STATUS_ICON_CALL_FORWARD,
-       STATUS_ICON_GPS,
+       STATUS_ICON_LOCATION,
        STATUS_ICON_MAX_COUNT
 } status_icon_type_e;
 
@@ -46,6 +46,9 @@ void moments_status_network_icon_hide(void);
 void moments_status_simcard_icon_show(void);
 void moments_status_simcard_icon_hide(void);
 
+void moments_status_location_icon_show(void);
+void moments_status_location_icon_hide(void);
+
 void moments_status_battery_update(int percent, int converted_percent, bool is_charging);
 void moments_status_callsignal_update(int strength, bool is_roaming);
 void moments_status_network_update(int network_type, int packet_type);
index 3accce3b3b63bcf6d74eff684f475c0336776882..563c40e62abaa4d9c464a85c797776c812034d52 100755 (executable)
@@ -23,6 +23,7 @@
 #define STATUS_CALLSIGNAL_LAYOUT "status_callsignal_layout"
 #define STATUS_NETWORK_LAYOUT "status_network_layout"
 #define STATUS_SIMCARD_LAYOUT "status_simcard_layout"
+#define STATUS_LOCATION_LAYOUT "status_location_layout"
 #define SIZE_SETTER "size_setter"
 #define MOMENTS_BG "moments_bg"
 #define MOMENTS_CONTENT "moments_content"
diff --git a/res/edje/circle/moments_status_location.edc b/res/edje/circle/moments_status_location.edc
new file mode 100644 (file)
index 0000000..43a5ad0
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2013 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.
+ */
+
+#include "../../../inc/moments/moments_view_edje_conf.h"
+
+#define LOCATION_DIR_PREFIX "Location"
+
+collections {
+   group { STATUS_LOCATION_LAYOUT;
+      images {
+         image: LOCATION_DIR_PREFIX"/location_activated.png" COMP;
+      }
+      parts {
+         part {
+            name: "icon_image";
+            type: IMAGE;
+            description {
+                state: "default" 0.0;
+                align: 0.5 0.5;
+                rel1 { relative: 0.0 0.0; }
+                rel2 { relative: 1.0 1.0; }
+                image.normal: LOCATION_DIR_PREFIX"/location_activated.png";
+                color: 250 250 250 255;
+            }
+                }
+      }
+   }
+}
+
+
diff --git a/res/edje/images/Location/location_activated.png b/res/edje/images/Location/location_activated.png
new file mode 100644 (file)
index 0000000..50c371d
Binary files /dev/null and b/res/edje/images/Location/location_activated.png differ
index 7273f289cfb82c3e65db3b81316a5c96d9ae34dc..d172f1f6513981c926f4c21b316ef1e327a3ed9c 100755 (executable)
@@ -20,6 +20,7 @@
 #include <system_info.h>
 #include <telephony.h>
 #include <net_connection.h>
+#include <runtime_info.h>
 #include <vconf.h>
 
 #include "log.h"
@@ -48,19 +49,20 @@ static struct __manager_s {
 static telephony_handle_list_s handle_list;
 
 static key_cb_ret_e __back_key_cb(void *data);
-static void __moments_initialize_status_util(void);
-static void __moments_register_status_util_callback(void);
-static void __moments_unregister_status_util_callback(void);
-static void __moments_status_battery_state_changed_cb(device_callback_e type, void *value, void *user_data);
-static void __moments_status_call_network_service_state_changed_cb(telephony_h handle, telephony_noti_e noti_id, void *data,  void *user_data);
-static void __moments_status_util_network_type_changed_cb(keynode_t *node, void *user_data);
-static void __moments_status_util_flight_mode_changed_cb(keynode_t *node, void *user_data);
-static void __moments_status_util_wifi_state_changed_cb(keynode_t *node, void *user_data);
-static void __moments_status_util_simcard_state_changed_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data);
-static int __moments_get_round_off_percent(int real_percent);
-static void __moments_get_callsignal_state(bool *is_roaming, int *strength);
-static void __moments_get_network_strength_and_packet_type(int *network_type, int *packet_type);
-static void __moments_get_wifi_strength_and_packet_type(int *strength, int *packet_type);
+static void __initialize_status_view(void);
+static void __register_status_callback(void);
+static void __unregister_status_callback(void);
+static void __battery_state_changed_cb(device_callback_e type, void *value, void *user_data);
+static void __call_network_service_state_changed_cb(telephony_h handle, telephony_noti_e noti_id, void *data,  void *user_data);
+static void __network_type_changed_cb(keynode_t *node, void *user_data);
+static void __flight_mode_changed_cb(keynode_t *node, void *user_data);
+static void __wifi_state_changed_cb(keynode_t *node, void *user_data);
+static void __simcard_state_changed_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data);
+static void __location_service_state_changed_cb(runtime_info_key_e key, void *data);
+static void __get_callsignal_state(bool *is_roaming, int *strength);
+static void __get_network_strength_and_packet_type(int *network_type, int *packet_type);
+static void __get_wifi_strength_and_packet_type(int *strength, int *packet_type);
+static int __get_round_off_percent(int real_percent);
 
 bool moments_get_visible(void)
 {
@@ -91,8 +93,8 @@ void moments_init(Evas_Object *win, Evas_Object *bg_scroller)
 
        s_info.layout = moments_create_ui(s_info.win);
 
-       __moments_register_status_util_callback();
-       __moments_initialize_status_util();
+       __register_status_callback();
+       __initialize_status_view();
 
        moments_control_init();
 }
@@ -101,7 +103,7 @@ void moments_fini(void)
 {
        moments_control_fini();
 
-       __moments_unregister_status_util_callback();
+       __unregister_status_callback();
        moments_destroy_ui();
 
        s_info.layout = NULL;
@@ -160,27 +162,28 @@ static key_cb_ret_e __back_key_cb(void *data)
        return KEY_CB_RET_STOP;
 }
 
-static void __moments_initialize_status_util(void)
+static void __initialize_status_view(void)
 {
        s_info.on_initialization = true;
 
-       __moments_status_battery_state_changed_cb(-1, NULL, NULL);
+       __battery_state_changed_cb(-1, NULL, NULL);
        if (moments_check_is_3g_device()) {
                _D("This device is 3G DEVICE");
                moments_status_callsignal_icon_show();
                moments_status_network_icon_show();
-               __moments_status_util_simcard_state_changed_cb(NULL, 0, NULL, NULL);
-               __moments_status_call_network_service_state_changed_cb(NULL, 0, NULL, NULL);
+               __simcard_state_changed_cb(NULL, 0, NULL, NULL);
+               __call_network_service_state_changed_cb(NULL, 0, NULL, NULL);
+               __location_service_state_changed_cb(0, NULL);
        }
 
        s_info.on_initialization = false;
 }
 
-static void __moments_register_status_util_callback(void)
+static void __register_status_callback(void)
 {
        /* battery */
-       device_add_callback(DEVICE_CALLBACK_BATTERY_CAPACITY, __moments_status_battery_state_changed_cb, NULL);
-       device_add_callback(DEVICE_CALLBACK_BATTERY_CHARGING, __moments_status_battery_state_changed_cb, NULL);
+       device_add_callback(DEVICE_CALLBACK_BATTERY_CAPACITY, __battery_state_changed_cb, NULL);
+       device_add_callback(DEVICE_CALLBACK_BATTERY_CHARGING, __battery_state_changed_cb, NULL);
 
        if (moments_check_is_3g_device()) {
                int ret = TELEPHONY_ERROR_NONE;
@@ -190,55 +193,66 @@ static void __moments_register_status_util_callback(void)
                        return;
                }
 
-               ret = telephony_set_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_SIM_STATUS, __moments_status_util_simcard_state_changed_cb, NULL);
+               ret = telephony_set_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_SIM_STATUS, __simcard_state_changed_cb, NULL);
                if (ret != TELEPHONY_ERROR_NONE) {
                        _E("Falied to set telephony notify sim state callback");
                        return;
                }
 
-               ret = telephony_set_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_NETWORK_SERVICE_STATE, __moments_status_call_network_service_state_changed_cb, NULL);
+               ret = telephony_set_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_NETWORK_SERVICE_STATE, __call_network_service_state_changed_cb, NULL);
                if (ret != TELEPHONY_ERROR_NONE) {
                        _E("Falied to set telephony notify service state callback");
                        return;
                }
 
-               ret = telephony_set_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_NETWORK_SIGNALSTRENGTH_LEVEL, __moments_status_call_network_service_state_changed_cb, NULL);
+               ret = telephony_set_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_NETWORK_SIGNALSTRENGTH_LEVEL, __call_network_service_state_changed_cb, NULL);
                if (ret != TELEPHONY_ERROR_NONE) {
                        _E("Falied to set telephony notify signal strength callback");
                        return;
                }
 
-               ret = telephony_set_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_NETWORK_ROAMING_STATUS, __moments_status_call_network_service_state_changed_cb, NULL);
+               ret = telephony_set_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_NETWORK_ROAMING_STATUS, __call_network_service_state_changed_cb, NULL);
                if (ret != TELEPHONY_ERROR_NONE) {
                        _E("Falied to set telephony notify roaming status callback");
                        return;
                }
 
-               ret = telephony_set_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_NETWORK_PS_TYPE, __moments_status_call_network_service_state_changed_cb, NULL);
+               ret = telephony_set_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_NETWORK_PS_TYPE, __call_network_service_state_changed_cb, NULL);
                if (ret != TELEPHONY_ERROR_NONE) {
                        _E("Falied to set telephony notify ps type callback");
                        return;
                }
 
-               vconf_notify_key_changed(VCONFKEY_DNET_STATE, __moments_status_util_network_type_changed_cb, NULL);
+               vconf_notify_key_changed(VCONFKEY_DNET_STATE, __network_type_changed_cb, NULL);
+
+               ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_GPS_STATUS, __location_service_state_changed_cb, NULL);
+               if (ret != RUNTIME_INFO_ERROR_NONE) {
+                       _E("Failed to set location changed cb");
+                       return;
+               }
        }
 
-       vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, __moments_status_util_flight_mode_changed_cb, NULL);
-       vconf_notify_key_changed(VCONFKEY_WIFI_STATE, __moments_status_util_wifi_state_changed_cb, NULL);
-       vconf_notify_key_changed(VCONFKEY_WIFI_TRANSFER_STATE, __moments_status_util_wifi_state_changed_cb, NULL);
-       vconf_notify_key_changed(VCONFKEY_WIFI_STRENGTH, __moments_status_util_wifi_state_changed_cb, NULL);
+       vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, __flight_mode_changed_cb, NULL);
+       vconf_notify_key_changed(VCONFKEY_WIFI_STATE, __wifi_state_changed_cb, NULL);
+       vconf_notify_key_changed(VCONFKEY_WIFI_TRANSFER_STATE, __wifi_state_changed_cb, NULL);
+       vconf_notify_key_changed(VCONFKEY_WIFI_STRENGTH, __wifi_state_changed_cb, NULL);
 }
 
-static void __moments_unregister_status_util_callback(void)
+static void __unregister_status_callback(void)
 {
        /* Battery */
-       device_remove_callback(DEVICE_CALLBACK_BATTERY_CAPACITY, __moments_status_battery_state_changed_cb);
-       device_remove_callback(DEVICE_CALLBACK_BATTERY_CHARGING, __moments_status_battery_state_changed_cb);
+       device_remove_callback(DEVICE_CALLBACK_BATTERY_CAPACITY, __battery_state_changed_cb);
+       device_remove_callback(DEVICE_CALLBACK_BATTERY_CHARGING, __battery_state_changed_cb);
 
        if (moments_check_is_3g_device()) {
                /* Call Signal */
                int ret = TELEPHONY_ERROR_NONE;
 
+               ret = runtime_info_unset_changed_cb(RUNTIME_INFO_KEY_GPS_STATUS);
+               if (ret != RUNTIME_INFO_ERROR_NONE) {
+                       _E("Failed to unregister location service state");
+               }
+
                ret = telephony_unset_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_NETWORK_PS_TYPE);
                if (ret != TELEPHONY_ERROR_NONE) {
                        _E("Failed to unregister service state");
@@ -269,15 +283,15 @@ static void __moments_unregister_status_util_callback(void)
                        _E("Failed to deinitialize telephony");
                }
 
-               vconf_ignore_key_changed(VCONFKEY_DNET_STATE, __moments_status_util_network_type_changed_cb);
+               vconf_ignore_key_changed(VCONFKEY_DNET_STATE, __network_type_changed_cb);
        }
-       vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, __moments_status_util_flight_mode_changed_cb);
-       vconf_ignore_key_changed(VCONFKEY_WIFI_STATE, __moments_status_util_wifi_state_changed_cb);
-       vconf_ignore_key_changed(VCONFKEY_WIFI_TRANSFER_STATE, __moments_status_util_wifi_state_changed_cb);
-       vconf_ignore_key_changed(VCONFKEY_WIFI_STRENGTH, __moments_status_util_wifi_state_changed_cb);
+       vconf_ignore_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, __flight_mode_changed_cb);
+       vconf_ignore_key_changed(VCONFKEY_WIFI_STATE, __wifi_state_changed_cb);
+       vconf_ignore_key_changed(VCONFKEY_WIFI_TRANSFER_STATE, __wifi_state_changed_cb);
+       vconf_ignore_key_changed(VCONFKEY_WIFI_STRENGTH, __wifi_state_changed_cb);
 }
 
-static void __moments_status_battery_state_changed_cb(device_callback_e type, void *value, void *user_data)
+static void __battery_state_changed_cb(device_callback_e type, void *value, void *user_data)
 {
        int ret = -1;
        int percent = 0;
@@ -293,7 +307,7 @@ static void __moments_status_battery_state_changed_cb(device_callback_e type, vo
                _E("Failed to get battery percent");
        }
 
-       converted_percent = __moments_get_round_off_percent(percent);
+       converted_percent = __get_round_off_percent(percent);
 
        moments_status_battery_update(percent, converted_percent, is_charging);
 }
@@ -310,23 +324,26 @@ static void __moments_manager_update_status_view(int is_flight, int _service_sta
                callsignal_strength = MOMENT_STATUS_UTIL_FLIGHT_MODE;
                network_type = MOMENT_STATUS_UTIL_NETWORK_DISABLE;
                packet_type = MOMENT_STATUS_UTIL_NETWORK_PS_DISABLE;
+               moments_status_location_icon_hide();
        } else {
                if (service_state == TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE) {
-                       __moments_get_callsignal_state(&is_roaming, &callsignal_strength);
+                       __get_callsignal_state(&is_roaming, &callsignal_strength);
 
                        if (wifi_state == VCONFKEY_WIFI_CONNECTED) {
-                               __moments_get_wifi_strength_and_packet_type(&network_type, &packet_type);
+                               __get_wifi_strength_and_packet_type(&network_type, &packet_type);
                        } else {
-                               __moments_get_network_strength_and_packet_type(&network_type, &packet_type);
+                               __get_network_strength_and_packet_type(&network_type, &packet_type);
                        }
+                       moments_status_location_icon_show();
                } else {
                        if (wifi_state == VCONFKEY_WIFI_CONNECTED) {
-                               __moments_get_wifi_strength_and_packet_type(&network_type, &packet_type);
+                               __get_wifi_strength_and_packet_type(&network_type, &packet_type);
                        } else {
                                callsignal_strength = MOMENT_STATUS_UTIL_CALL_DISABLE;
                                network_type = MOMENT_STATUS_UTIL_NETWORK_DISABLE;
                                packet_type = MOMENT_STATUS_UTIL_NETWORK_PS_DISABLE;
                        }
+                       moments_status_location_icon_hide();
                }
        }
        moments_status_callsignal_update(callsignal_strength, is_roaming);
@@ -335,7 +352,7 @@ static void __moments_manager_update_status_view(int is_flight, int _service_sta
        moments_status_update_view();
 }
 
-static void __moments_status_call_network_service_state_changed_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data)
+static void __call_network_service_state_changed_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data)
 {
        _D("Call & network Service State is changed");
        int is_flight = 0;
@@ -360,22 +377,22 @@ static void __moments_status_call_network_service_state_changed_cb(telephony_h h
        __moments_manager_update_status_view(is_flight, (int)service_state, wifi_state);
 }
 
-static void __moments_status_util_flight_mode_changed_cb(keynode_t *node, void *user_data)
+static void __flight_mode_changed_cb(keynode_t *node, void *user_data)
 {
        _D("Flight Mode is changed");
 }
 
-static void __moments_status_util_wifi_state_changed_cb(keynode_t *node, void *user_data)
+static void __wifi_state_changed_cb(keynode_t *node, void *user_data)
 {
        _D("Wifi State is changed");
 }
 
-static void __moments_status_util_network_type_changed_cb(keynode_t *node, void *user_data)
+static void __network_type_changed_cb(keynode_t *node, void *user_data)
 {
-       __moments_status_call_network_service_state_changed_cb(NULL, 0, NULL, NULL);
+       __call_network_service_state_changed_cb(NULL, 0, NULL, NULL);
 }
 
-static void __moments_status_util_simcard_state_changed_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data)
+static void __simcard_state_changed_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data)
 {
        _D("SIM STATE CHANGED[%d]", (int)data);
        telephony_sim_state_e sim_state = TELEPHONY_SIM_STATE_UNAVAILABLE;
@@ -397,7 +414,27 @@ static void __moments_status_util_simcard_state_changed_cb(telephony_h handle, t
        moments_status_update_view();
 }
 
-static void __moments_get_callsignal_state(bool *is_roaming, int *strength)
+static void __location_service_state_changed_cb(runtime_info_key_e key, void *data)
+{
+       _D("LOCATION SERVICE STATE CHANGED");
+       runtime_info_gps_status_e gps_status = 0;
+
+       if (runtime_info_get_value_int(RUNTIME_INFO_KEY_GPS_STATUS, (int *)&gps_status) < 0) {
+               _E("Failed to get location service state");
+               return;
+       }
+
+       if (gps_status == RUNTIME_INFO_GPS_STATUS_CONNECTED) {
+               _D("Location is available, Show LOCATION icon");
+               moments_status_location_icon_show();
+       } else {
+               _D("Location is unavailable, Hide LOCATION icon");
+               moments_status_location_icon_hide();
+       }
+       moments_status_update_view();
+}
+
+static void __get_callsignal_state(bool *is_roaming, int *strength)
 {
        telephony_network_rssi_e callsignal_strength = TELEPHONY_NETWORK_RSSI_0;
 
@@ -413,7 +450,7 @@ static void __moments_get_callsignal_state(bool *is_roaming, int *strength)
        *strength = (int)callsignal_strength;
 }
 
-static void __moments_get_network_strength_and_packet_type(int *network_type, int *packet_type)
+static void __get_network_strength_and_packet_type(int *network_type, int *packet_type)
 {
        telephony_network_type_e n_type = TELEPHONY_NETWORK_TYPE_UNKNOWN;
        telephony_network_ps_type_e p_type = TELEPHONY_NETWORK_PS_TYPE_UNKNOWN;
@@ -431,7 +468,7 @@ static void __moments_get_network_strength_and_packet_type(int *network_type, in
        *packet_type = (int)p_type;
 }
 
-static void __moments_get_wifi_strength_and_packet_type(int *strength, int *packet_type)
+static void __get_wifi_strength_and_packet_type(int *strength, int *packet_type)
 {
        int wifi_transfer = 0;
 
@@ -464,7 +501,7 @@ static void __moments_get_wifi_strength_and_packet_type(int *strength, int *pack
        }
 }
 
-static int __moments_get_round_off_percent(int real_percent)
+static int __get_round_off_percent(int real_percent)
 {
        if (real_percent >= 100) return 100;
        else if (real_percent < 5) return 0;
@@ -485,17 +522,17 @@ static int __moments_get_round_off_percent(int real_percent)
 #if TEST_MODE
 int __t__get_round_off_percent(int real_percent)
 {
-       return __moments_get_round_off_percent(real_percent);
+       return __get_round_off_percent(real_percent);
 }
 
 void __t__moments_restore_status_battery(void)
 {
-       __moments_status_battery_state_changed_cb(-1, NULL, NULL);
+       __battery_state_changed_cb(-1, NULL, NULL);
 }
 
 void __t__moments_restore_status_call_network_service_state(void)
 {
-       __moments_status_call_network_service_state_changed_cb(NULL, 0, NULL, NULL);
+       __call_network_service_state_changed_cb(NULL, 0, NULL, NULL);
 }
 
 void __t__moments_manager_update_status_view(int is_flight, int service_state, int wifi_state)
@@ -505,16 +542,16 @@ void __t__moments_manager_update_status_view(int is_flight, int service_state, i
 
 void __t__moments_get_callsignal_state(bool *is_roaming, int *strength)
 {
-       __moments_get_callsignal_state(is_roaming, strength);
+       __get_callsignal_state(is_roaming, strength);
 }
 
 void __t__moments_get_wifi_strength_and_packet_type(int *strength, int *packet_type)
 {
-       __moments_get_wifi_strength_and_packet_type(strength, packet_type);
+       __get_wifi_strength_and_packet_type(strength, packet_type);
 }
 
 void __t__moments_get_network_strength_and_packet_type(int *network_type, int *packet_type)
 {
-       __moments_get_network_strength_and_packet_type(network_type, packet_type);
+       __get_network_strength_and_packet_type(network_type, packet_type);
 }
 #endif
index f2b919709cb9bd1f28f0d94eb2c1559ca00089b7..bd1916cb7cf6a823f125823918ab15238ba77355 100644 (file)
@@ -38,6 +38,7 @@
 #define STATUS_CALLSIGNAL_EDJE EDJE_DIR"/circle/moments_status_callsignal.edj"
 #define STATUS_NETWORK_EDJE EDJE_DIR"/circle/moments_status_network.edj"
 #define STATUS_SIMCARD_EDJE EDJE_DIR"/circle/moments_status_simcard.edj"
+#define STATUS_LOCATION_EDJE EDJE_DIR"/circle/moments_status_location.edj"
 
 static struct __status_view_s {
        Evas_Object *status_layout;
@@ -46,6 +47,7 @@ static struct __status_view_s {
        Evas_Object *status_callsignal;
        Evas_Object *status_network;
        Evas_Object *status_simcard;
+       Evas_Object *status_location;
 } s_info = {
        .status_layout = NULL,
        .status_grid = NULL,
@@ -53,6 +55,7 @@ static struct __status_view_s {
        .status_callsignal = NULL,
        .status_network = NULL,
        .status_simcard = NULL,
+       .status_location = NULL,
 };
 
 static status_icon_type_e __status_icon_priority_bt[STATUS_ICON_MAX_COUNT_BT] = {
@@ -68,7 +71,7 @@ static status_icon_type_e __status_icon_priority_3g[STATUS_ICON_MAX_COUNT_3G] =
        STATUS_ICON_HEADSET,
        STATUS_ICON_NO_SIM,
        STATUS_ICON_CALL_FORWARD,
-       STATUS_ICON_GPS
+       STATUS_ICON_LOCATION
 };
 
 static status_icon_type_e __status_icon_position[STATUS_ICON_MAX_COUNT + 1][2] = {
@@ -112,6 +115,7 @@ static Evas_Object *__create_battery(Evas_Object *parent);
 static Evas_Object *__create_callsignal(Evas_Object *parent);
 static Evas_Object *__create_network(Evas_Object *parent);
 static Evas_Object *__create_simcard(Evas_Object *parent);
+static Evas_Object *__create_location(Evas_Object *parent);
 
 Evas_Object *moments_status_view_create(Evas_Object *parent)
 {
@@ -240,6 +244,8 @@ void moments_status_network_update(int network_type, int packet_type)
 
 void moments_status_simcard_icon_show(void)
 {
+       if (s_info.status_simcard) moments_status_simcard_icon_hide();
+
        s_info.status_simcard = __create_simcard(s_info.status_layout);
 
        __status_icon_list[STATUS_ICON_NO_SIM] = s_info.status_simcard;
@@ -258,6 +264,28 @@ void moments_status_simcard_icon_hide(void)
        __status_icon_list[STATUS_ICON_NO_SIM] = NULL;
 }
 
+void moments_status_location_icon_show(void)
+{
+       if (s_info.status_location) moments_status_location_icon_hide();
+
+       s_info.status_location = __create_location(s_info.status_layout);
+
+       __status_icon_list[STATUS_ICON_LOCATION] = s_info.status_location;
+       __status_icon_is_appended[STATUS_ICON_LOCATION] = true;
+
+       __register_icon_type_to_list(STATUS_ICON_LOCATION);
+}
+
+void moments_status_location_icon_hide(void)
+{
+       __unregister_icon_type_from_list(STATUS_ICON_LOCATION);
+       __status_icon_is_appended[STATUS_ICON_LOCATION] = false;
+
+       if (s_info.status_location) evas_object_del(s_info.status_location);
+       s_info.status_location = NULL;
+       __status_icon_list[STATUS_ICON_LOCATION] = NULL;
+}
+
 void moments_status_update_view(void)
 {
        _D("Update status icon list");
@@ -454,6 +482,22 @@ static Evas_Object *__create_simcard(Evas_Object *parent)
        return simcard;
 }
 
+static Evas_Object *__create_location(Evas_Object *parent)
+{
+       Evas_Object *location = elm_layout_add(parent);
+       if (!location || !elm_layout_file_set(location, util_get_res_file_path(STATUS_LOCATION_EDJE), STATUS_LOCATION_LAYOUT)) {
+               _E("Failed to create location layout");
+               return NULL;
+       }
+       evas_object_size_hint_min_set(location, MOMENTS_STATUS_ICON_W, MOMENTS_STATUS_ICON_H);
+       evas_object_size_hint_align_set(location, EVAS_HINT_FILL, EVAS_HINT_FILL);
+       evas_object_size_hint_weight_set(location, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_move(location, OUTSIDE_X, OUTSIDE_Y);
+       evas_object_show(location);
+
+       return location;
+}
+
 static int __get_icon_position_index(status_icon_type_e type)
 {
        Eina_List *list = NULL;
@@ -500,6 +544,11 @@ Evas_Object *__t__get_moments_status_simcard(void)
        return s_info.status_simcard;
 }
 
+Evas_Object *__t__get_moments_status_location(void)
+{
+       return s_info.status_location;
+}
+
 int __t__get_moments_status_icon_index(int type)
 {
        return __get_icon_position_index(type);
index 859a95359d21e6d3a52cc34b4c39f69c0230aff2..9b8a59b14a0d63717c4ddc097028f4c616595cd6 100755 (executable)
@@ -95,6 +95,7 @@ static void __group_tear_down(void)
 
 static bool call_is_for_test = false;
 static bool network_is_for_test = false;
+static bool location_is_for_test = false;
 static unit_case_func_t __continue_check_status_flight_on(void *data);
 static unit_case_func_t __case_check_status_flight_on(void *data)
 {
@@ -113,8 +114,14 @@ static unit_case_func_t __case_check_status_flight_on(void *data)
        Evas_Object *network = __t__get_moments_status_network();
        if (!network) {
                moments_status_network_icon_show();
-               moments_status_update_view();
                network_is_for_test = true;
+       }
+
+       Evas_Object *location = __t__get_moments_status_location();
+       if (!location) {
+               moments_status_location_icon_show();
+               moments_status_update_view();
+               location_is_for_test = true;
                TEST_CASE_CONTINUE(0.1, __case_check_status_flight_on, NULL);
        }
 
@@ -123,6 +130,7 @@ static unit_case_func_t __case_check_status_flight_on(void *data)
 
        TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(callsignal));
        TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(network));
+       TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(location));
 
        TEST_CASE_CONTINUE(0.6, __continue_check_status_flight_on, NULL);
 }
@@ -143,6 +151,9 @@ static unit_case_func_t __continue_check_status_flight_on(void *data)
        TEST_ASSERT_EQUAL_STRING_UPGRADE("hide", edje_object_part_state_get(elm_layout_edje_get(network), "type_icon_image", &val));
        TEST_ASSERT_EQUAL_STRING_UPGRADE("hide", edje_object_part_state_get(elm_layout_edje_get(network), "inout_icon_image", &val));
 
+       Evas_Object *location = __t__get_moments_status_location();
+       TEST_ASSERT_TRUE_UPGRADE(!location);
+
        TEST_CASE_DONE(s_info.group);
 }
 
@@ -163,6 +174,9 @@ static unit_case_func_t __continue_check_status_flightoff_serviceoff_wifioff(voi
        TEST_ASSERT_EQUAL_STRING_UPGRADE("hide", edje_object_part_state_get(elm_layout_edje_get(network), "type_icon_image", &val));
        TEST_ASSERT_EQUAL_STRING_UPGRADE("hide", edje_object_part_state_get(elm_layout_edje_get(network), "inout_icon_image", &val));
 
+       Evas_Object *location = __t__get_moments_status_location();
+       TEST_ASSERT_TRUE_UPGRADE(!location);
+
        TEST_CASE_DONE(s_info.group);
 }
 
@@ -190,6 +204,9 @@ static unit_case_func_t __continue_check_status_flightoff_serviceon_wifioff(void
        TEST_ASSERT_EQUAL_STRING_UPGRADE(__t__network_type[network_type], edje_object_part_state_get(elm_layout_edje_get(network), "type_icon_image", &val));
        TEST_ASSERT_EQUAL_STRING_UPGRADE(__t__network_type[network_type == 0 ? network_type : packet_type+15], edje_object_part_state_get(elm_layout_edje_get(network), "inout_icon_image", &val));
 
+       Evas_Object *location = __t__get_moments_status_location();
+       TEST_ASSERT_TRUE_UPGRADE(location);
+
        TEST_CASE_DONE(s_info.group);
 }
 
@@ -217,6 +234,9 @@ static unit_case_func_t __continue_check_status_flightoff_serviceon_wifion(void
        TEST_ASSERT_EQUAL_STRING_UPGRADE(__t__network_type[network_type+10], edje_object_part_state_get(elm_layout_edje_get(network), "type_icon_image", &val));
        TEST_ASSERT_EQUAL_STRING_UPGRADE(__t__network_type[packet_type+15], edje_object_part_state_get(elm_layout_edje_get(network), "inout_icon_image", &val));
 
+       Evas_Object *location = __t__get_moments_status_location();
+       TEST_ASSERT_TRUE_UPGRADE(location);
+
        TEST_CASE_DONE(s_info.group);
 }
 
@@ -245,6 +265,9 @@ static void __status_restore_icons(void)
        if (network_is_for_test) {
                moments_status_network_icon_hide();
        }
+       if (location_is_for_test) {
+               moments_status_location_icon_hide();
+       }
        if (!call_is_for_test && !network_is_for_test) {
                __t__moments_restore_status_call_network_service_state();
        }
index 277a883d278dc2d716cb6eff3557ceb1c0e8dd9f..9cf50f4693572675580d3f31d8fcfdf08b4e283a 100755 (executable)
@@ -21,6 +21,7 @@ static unit_case_func_t __case_check_status_view_battery(void *data);
 static unit_case_func_t __case_check_status_view_callsignal(void *data);
 static unit_case_func_t __case_check_status_view_network(void *data);
 static unit_case_func_t __case_check_status_view_simcard(void *data);
+static unit_case_func_t __case_check_status_view_location(void *data);
 
 static void __status_restore_icons(void);
 
@@ -333,6 +334,44 @@ static unit_case_func_t __continue_check_status_simcard_icon_change(void *data)
        TEST_CASE_DONE(s_info.group);
 }
 
+static bool location_is_for_test = false;
+static unit_case_func_t __continue_check_status_location_icon_change(void *data);
+static unit_case_func_t __case_check_status_view_location(void *data)
+{
+       Evas_Object *location = __t__get_moments_status_location();
+       if (!location) {
+               moments_status_location_icon_show();
+               moments_status_update_view();
+               location_is_for_test = true;
+               TEST_CASE_CONTINUE(0.6, __case_check_status_view_location, NULL);
+       }
+
+       TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(location));
+
+       int index = __t__get_moments_status_icon_index(STATUS_ICON_LOCATION);
+       TEST_ASSERT_TRUE_UPGRADE(index >= 0);
+
+       int x, y, w, h;
+       evas_object_geometry_get(location, &x, &y, &w, &h);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(__t_status_icon_position[index][0], x);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(__t_status_icon_position[index][1], y);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(MOMENTS_STATUS_ICON_W, w);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(MOMENTS_STATUS_ICON_H, h);
+
+       moments_status_location_icon_hide();
+       moments_status_update_view();
+
+       TEST_CASE_CONTINUE(0.6, __continue_check_status_location_icon_change, location);
+}
+
+static unit_case_func_t __continue_check_status_location_icon_change(void *data)
+{
+       Evas_Object *location = (Evas_Object *)data;
+       TEST_ASSERT_TRUE_UPGRADE(!evas_object_visible_get(location));
+
+       TEST_CASE_DONE(s_info.group);
+}
+
 void group_feature_moments_status_view_ui(unit_group_t * group)
 {
        s_info.group = group;
@@ -344,6 +383,7 @@ void group_feature_moments_status_view_ui(unit_group_t * group)
        TEST_CASE_ADD(s_info.group, __case_check_status_view_callsignal, NULL);
        TEST_CASE_ADD(s_info.group, __case_check_status_view_network, NULL);
        TEST_CASE_ADD(s_info.group, __case_check_status_view_simcard, NULL);
+       TEST_CASE_ADD(s_info.group, __case_check_status_view_location, NULL);
        TEST_GROUP_TEAR_DOWN(s_info.group, __group_tear_down);
 
        TEST_GROUP_RUN(s_info.group);
@@ -360,6 +400,9 @@ static void __status_restore_icons(void)
        if (!simcard_is_for_test) {
                moments_status_simcard_icon_show();
        }
+       if (!location_is_for_test) {
+               moments_status_location_icon_show();
+       }
        if (!call_is_for_test && !network_is_for_test) {
                __t__moments_restore_status_call_network_service_state();
        }
index 53f718f42e10c6f9e8ffc2d0e7d3b518a88c300c..f9f5e0709f3921c491ed70ba953ea643307d3ba4 100755 (executable)
@@ -44,6 +44,7 @@ extern Evas_Object *__t__get_moments_status_battery(void);
 extern Evas_Object *__t__get_moments_status_callsignal(void);
 extern Evas_Object *__t__get_moments_status_network(void);
 extern Evas_Object *__t__get_moments_status_simcard(void);
+extern Evas_Object *__t__get_moments_status_location(void);
 extern void __t__moments_restore_status_battery(void);
 extern void __t__moments_restore_status_call_network_service_state(void);
 extern void __t__moments_manager_update_status_view(int is_flight, int service_state, int wifi_state);