Change UI TEST_CODE and Fix original code according to it 74/132274/2
authorjunkyu han <junkyu.han@samsung.com>
Fri, 2 Jun 2017 05:22:27 +0000 (14:22 +0900)
committerjunkyu han <junkyu.han@samsung.com>
Fri, 2 Jun 2017 06:32:37 +0000 (15:32 +0900)
Change-Id: I22137c025ebbe5cd3873768ad50dbbd04c17f24d

src/moments/moments_manager.c
src/moments/moments_status_view.c
test/feature_test/feature_test.c
test/feature_test/group_feature_moments_status_view_ui.c

index 086fe29652140b73a6c7093575f811f27df9b18f..47503ef28984b5020e5f2be038eb96d75ec66654 100755 (executable)
@@ -38,14 +38,12 @@ static struct __manager_s {
        Evas_Object *layout;
        bool visible;
        bool on_initialization;
-       int before_wifi_state;
 } s_info = {
        .win = NULL,
        .bg_scroller = NULL,
        .layout = NULL,
        .visible = false,
        .on_initialization = false,
-       .before_wifi_state = 0,
 };
 
 static telephony_handle_list_s handle_list;
@@ -55,7 +53,9 @@ 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 __telephony_service_state_changed_cb(telephony_h handle, telephony_noti_e noti_id, void *data,  void *user_data);
+static void __callsignal_state_changed_cb(telephony_h handle, telephony_noti_e noti_id, void *data,  void *user_data);
+static void __network_packet_type_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);
@@ -69,6 +69,11 @@ static void __get_network_strength_and_packet_type(int *network_type, int *packe
 static void __get_wifi_strength_and_packet_type(int *strength, int *packet_type);
 static int __get_round_off_percent(int real_percent);
 
+static void __network_enable(void);
+static void __network_disable(void);
+static void __callsignal_disable(void);
+static void __callsignal_enable(void);
+
 bool moments_get_visible(void)
 {
        return s_info.visible;
@@ -176,11 +181,12 @@ static void __initialize_status_view(void)
                _D("This device is 3G DEVICE");
                moments_status_callsignal_icon_show();
                moments_status_network_icon_show();
-               __simcard_state_changed_cb(NULL, 0, NULL, NULL);
-               __call_network_service_state_changed_cb(NULL, 0, NULL, NULL);
+               __callsignal_state_changed_cb(NULL, 0, NULL, NULL);
+               __network_type_changed_cb(NULL, NULL);
                __location_service_state_changed_cb(0, NULL);
                __callforwarding_state_changed_cb(NULL, NULL);
        }
+       __wifi_state_changed_cb(NULL, NULL);
        __bluetooth_state_changed_cb(NULL, NULL);
        __headset_state_changed_cb(NULL, NULL);
 
@@ -201,49 +207,54 @@ static void __register_status_callback(void)
                        return;
                }
 
+               /* Sim State */
                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, __call_network_service_state_changed_cb, NULL);
+               /* Telephony service state */
+               ret = telephony_set_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_NETWORK_SERVICE_STATE, __telephony_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, __call_network_service_state_changed_cb, NULL);
+               /* CallSignal */
+               ret = telephony_set_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_NETWORK_SIGNALSTRENGTH_LEVEL, __callsignal_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, __call_network_service_state_changed_cb, NULL);
+               ret = telephony_set_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_NETWORK_ROAMING_STATUS, __callsignal_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, __call_network_service_state_changed_cb, NULL);
+               /* Network */
+               vconf_notify_key_changed(VCONFKEY_DNET_STATE, __network_type_changed_cb, NULL);
+               ret = telephony_set_noti_cb(handle_list.handle[0], TELEPHONY_NOTI_NETWORK_PS_TYPE, __network_packet_type_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, __network_type_changed_cb, NULL);
-
+               /* Location */
                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;
                }
 
+               /* Callforwarding */
                vconf_notify_key_changed(VCONFKEY_TELEPHONY_CALL_FORWARD_STATE, __callforwarding_state_changed_cb, NULL);
+
+               /* FLIGHT MODE */
+               vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, __flight_mode_changed_cb, NULL);
        }
 
-       /* FLIGHTI MODE */
-       vconf_notify_key_changed(VCONFKEY_TELEPHONY_FLIGHT_MODE, __flight_mode_changed_cb, NULL);
        /* WIFI */
        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);
@@ -336,79 +347,154 @@ static void __battery_state_changed_cb(device_callback_e type, void *value, void
        moments_status_battery_update(percent, converted_percent, is_charging);
 }
 
-static void __update_status_view_by_call_network_changed(int is_flight, int _service_state, int wifi_state)
+static void __telephony_service_state_changed_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data)
 {
+       _D("Telephony Service State Changed");
+       // Call, network, location, callforward
+       __callsignal_state_changed_cb(NULL, 0, NULL, NULL);
+       __network_type_changed_cb(NULL, NULL);
+       __location_service_state_changed_cb(0, NULL);
+       __callforwarding_state_changed_cb(NULL, NULL);
+}
+
+static void __callsignal_state_changed_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data)
+{
+       _D("Callsignal Strength or Roaming State is changed");
        int callsignal_strength = 0;
-       int network_type = 0;
-       int packet_type = 0;
        bool is_roaming = false;
-       telephony_network_service_state_e service_state = (telephony_network_service_state_e)_service_state;
 
-       if (is_flight) {
-               callsignal_strength = MOMENT_STATUS_FLIGHT_MODE;
-               network_type = MOMENT_STATUS_NETWORK_DISABLE;
-               packet_type = MOMENT_STATUS_NETWORK_PS_DISABLE;
-               moments_status_location_icon_hide();
-       } else {
-               if (service_state == TELEPHONY_NETWORK_SERVICE_STATE_IN_SERVICE) {
-                       __get_callsignal_state(&is_roaming, &callsignal_strength);
-
-                       if (wifi_state == VCONFKEY_WIFI_CONNECTED) {
-                               __get_wifi_strength_and_packet_type(&network_type, &packet_type);
-                       } else {
-                               __get_network_strength_and_packet_type(&network_type, &packet_type);
-                       }
-                       __location_service_state_changed_cb(0, NULL);
-               } else {
-                       if (wifi_state == VCONFKEY_WIFI_CONNECTED) {
-                               __get_wifi_strength_and_packet_type(&network_type, &packet_type);
-                       } else {
-                               network_type = MOMENT_STATUS_NETWORK_DISABLE;
-                               packet_type = MOMENT_STATUS_NETWORK_PS_DISABLE;
-                       }
-                       callsignal_strength = MOMENT_STATUS_CALL_DISABLE;
-                       moments_status_location_icon_hide();
-               }
-       }
+       __get_callsignal_state(&is_roaming, &callsignal_strength);
+
        moments_status_callsignal_update(callsignal_strength, is_roaming);
-       moments_status_network_update(wifi_state == VCONFKEY_WIFI_CONNECTED ? (int)network_type + MOMENT_STATUS_SIGNAL_WIFI_INDEX : (int)network_type, (int)network_type == 0 ? (int)network_type : (int)packet_type+15);
+}
+static void __callsignal_enable(void)
+{
+       _D("Callsignal enable");
+       int callsignal_strength = 0;
+       bool is_roaming = false;
 
-       moments_status_update_view();
+       __get_callsignal_state(&is_roaming, &callsignal_strength);
+
+       moments_status_callsignal_update(callsignal_strength, is_roaming);
 }
+static void __callsignal_disable(void)
+{
+       _D("Callsignal Disable");
+       int callsignal_strength = MOMENT_STATUS_FLIGHT_MODE;
+       bool is_roaming = false;
 
-static void __call_network_service_state_changed_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data)
+       moments_status_callsignal_update(callsignal_strength, is_roaming);
+}
+
+static void __network_type_changed_cb(keynode_t *node, void *user_data)
 {
-       _D("Call & network Service State is changed");
-       int is_flight = 0;
+       _D("Network type or packet type is changed");
+       int network_type = 0;
+       int packet_type = 0;
+
+       __get_network_strength_and_packet_type(&network_type, &packet_type);
+
+       moments_status_network_update(network_type, packet_type+15);
+}
+static void __network_enable(void)
+{
+       _D("Network Enable");
+       int network_type = 0;
+       int packet_type = 0;
        int wifi_state = 0;
-       telephony_network_service_state_e service_state = TELEPHONY_NETWORK_SERVICE_STATE_OUT_OF_SERVICE;
-       // is_flight, service_state, wifi_state
-       if (vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &is_flight) < 0) {
-               _E("Failed to get FLIGHT MODE VCONFKEY");
-               return;
-       }
 
-       if (telephony_network_get_service_state(handle_list.handle[0], &service_state) < 0) {
-               _E("Failed to get SERVICE STATE");
+       if (vconf_get_int(VCONFKEY_WIFI_STATE, &wifi_state) < 0) {
+               _E("Failed to get vconfkey for wifi state");
                return;
        }
 
-       if (vconf_get_int(VCONFKEY_WIFI_STATE, &wifi_state) < 0 ) {
-               _E("Failed to get wifi state");
+       if (wifi_state == VCONFKEY_WIFI_CONNECTED) {
+               __wifi_state_changed_cb(NULL, NULL);
                return;
+       } else {
+               __get_network_strength_and_packet_type(&network_type, &packet_type);
        }
 
-       __update_status_view_by_call_network_changed(is_flight, (int)service_state, wifi_state);
+       moments_status_network_update(network_type, packet_type+15);
+}
+static void __network_disable(void)
+{
+       _D("Network Disable");
+       int network_type = MOMENT_STATUS_NETWORK_DISABLE;
+       int packet_type = MOMENT_STATUS_NETWORK_PS_DISABLE;
+
+       moments_status_network_update(network_type, packet_type);
+}
+
+static void __network_packet_type_changed_cb(telephony_h handle, telephony_noti_e noti_id, void *data, void *user_data)
+{
+       __network_type_changed_cb(NULL, NULL);
 }
 
+
 static void __flight_mode_changed_cb(keynode_t *node, void *user_data)
 {
        _D("Flight Mode is changed");
+       int is_flight = 0;
+
+       if (vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &is_flight) < 0) {
+               _E("Failed to get vconfkey for flight");
+               return;
+       }
+       // on
+       if (is_flight) {
+               if (moments_check_is_3g_device()) {
+                       __callsignal_disable();
+                       __network_disable();
+               } else {
+                       moments_status_network_icon_hide();
+               }
+               moments_status_bluetooth_icon_hide(); // device will be removed in this function
+               moments_status_callforwarding_icon_hide();
+       } else {
+       // off
+               if (moments_check_is_3g_device()) {
+                       __callsignal_enable();
+               } else {
+                       moments_status_network_icon_show();
+               }
+               __network_enable();
+               __bluetooth_state_changed_cb(NULL, NULL);
+               __headset_state_changed_cb(NULL, NULL);
+               __callforwarding_state_changed_cb(NULL, NULL);
+       }
+       moments_status_update_view();
 }
 
 static void __wifi_state_changed_cb(keynode_t *node, void *user_data)
 {
        _D("Wifi State is changed");
+       int wifi_state = 0;
+       int network_type = 0;
+       int packet_type = 0;
+
+       if (vconf_get_int(VCONFKEY_WIFI_STATE, &wifi_state) < 0) {
+               _E("Failed to get vconfkey for wifi state");
+               return;
+       }
+
+       if (wifi_state == VCONFKEY_WIFI_CONNECTED) {
+               _D("WIFI CONNECTED");
+               if (!moments_check_is_3g_device()) {
+                       moments_status_network_icon_show();
+               }
+               __get_wifi_strength_and_packet_type(&network_type, &packet_type);
+               moments_status_network_update(network_type + MOMENT_STATUS_SIGNAL_WIFI_INDEX, packet_type+15);
+       } else {
+               if (moments_check_is_3g_device()) {
+               _D("WIFI DISCONNECTED, 3G");
+                       __network_enable();
+               } else {
+               _D("WIFI DISCONNECTED, NOT 3G");
+                       moments_status_network_icon_hide();
+               }
+       }
+       moments_status_update_view();
 }
 
 static void __bluetooth_state_changed_cb(keynode_t *node, void *user_data)
@@ -429,6 +515,7 @@ static void __bluetooth_state_changed_cb(keynode_t *node, void *user_data)
                }
        } else {
                // Disconnect HEADSET
+               moments_status_headset_icon_hide();
        }
 
        moments_status_bluetooth_update(on_off, connected);
@@ -485,11 +572,6 @@ static void __callforwarding_state_changed_cb(keynode_t *node, void *user_data)
        moments_status_update_view();
 }
 
-static void __network_type_changed_cb(keynode_t *node, void *user_data)
-{
-       __call_network_service_state_changed_cb(NULL, 0, NULL, NULL);
-}
-
 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);
@@ -636,9 +718,14 @@ void __t__moments_restore_status_battery(void)
        __battery_state_changed_cb(-1, NULL, NULL);
 }
 
+void __t__moments_restore_status_view(void)
+{
+       __initialize_status_view();
+}
+
 void __t__moments_restore_status_call_network_service_state(void)
 {
-       __call_network_service_state_changed_cb(NULL, 0, NULL, NULL);
+       __flight_mode_changed_cb(NULL, NULL);
 }
 
 void __t__moments_restore_status_bluetooth_state(void)
@@ -658,7 +745,7 @@ void __t__moments_restore_status_callforwarding_state(void)
 
 void __t__moments_manager_update_status_view(int is_flight, int service_state, int wifi_state)
 {
-       __update_status_view_by_call_network_changed(is_flight, service_state, wifi_state);
+       __flight_mode_changed_cb(NULL, NULL);
 }
 
 void __t__moments_get_callsignal_state(bool *is_roaming, int *strength)
index cf47ad9674678941391fcf8d3b289cec1f811434..a7a795c25601a71119a225253a4cffad65ecb6da 100644 (file)
@@ -47,24 +47,12 @@ static struct __status_view_s {
        Evas_Object *status_layout;
        Evas_Object *status_grid;
        Evas_Object *status_battery;
-       Evas_Object *status_callsignal;
-       Evas_Object *status_network;
-       Evas_Object *status_simcard;
-       Evas_Object *status_location;
-       Evas_Object *status_bluetooth;
-       Evas_Object *status_headset;
-       Evas_Object *status_callforwarding;
+       Evas_Object *icon_array[STATUS_ICON_MAX_COUNT];
 } s_info = {
        .status_layout = NULL,
        .status_grid = NULL,
        .status_battery = NULL,
-       .status_callsignal = NULL,
-       .status_network = NULL,
-       .status_simcard = NULL,
-       .status_location = NULL,
-       .status_bluetooth = NULL,
-       .status_headset = NULL,
-       .status_callforwarding = NULL,
+       .icon_array = { NULL, },
 };
 
 static status_icon_type_e __status_icon_priority_bt[STATUS_ICON_MAX_COUNT_BT] = {
@@ -87,6 +75,10 @@ static status_icon_type_e __status_icon_position[STATUS_ICON_MAX_COUNT + 1][2] =
        { 135, 7 }, { 104, 18 }, { 201, 7 }, { 232, 18 }, { 74, 36 }, { 262, 36 }, { 45, 59 }, { 291, 59 }
 };
 
+static status_icon_type_e __status_icon_position_bt[STATUS_ICON_MAX_COUNT + 1][2] = {
+       { 201, 7 }, { 135, 7 }, { 232, 18 }, { 104, 18 }, { 262, 36 }, { 74, 36 }, { 291, 59 }, { 45, 59 }
+};
+
 static char *__status_network_type_signal[19] = {
        "hide_icon_image",
        "no_service",
@@ -119,6 +111,10 @@ static void __unregister_icon_type_from_list(status_icon_type_e type);
 static status_icon_type_e __get_prev_type_by_priority(status_icon_type_e type);
 static void __append_icon_type_to_type_list(status_icon_type_e type, status_icon_type_e prev_type);
 static void __prepend_icon_type_to_type_list(status_icon_type_e type);
+static void __unpack_all_icons_from_grid(void);
+static void __pack_all_icons_to_bt_position(void);
+static void __pack_all_icons_to_3g_position(void);
+static void __remove_all_icons(void);
 
 static Evas_Object *__create_battery(Evas_Object *parent);
 static Evas_Object *__create_callsignal(Evas_Object *parent);
@@ -141,15 +137,7 @@ Evas_Object *moments_status_view_create(Evas_Object *parent)
 void moments_status_view_destroy(void)
 {
        _D("%s", __func__);
-
-       if (s_info.status_callsignal) evas_object_del(s_info.status_callsignal);
-       s_info.status_callsignal = NULL;
-
-       if (s_info.status_network) evas_object_del(s_info.status_network);
-       s_info.status_network = NULL;
-
-       if (s_info.status_simcard) evas_object_del(s_info.status_simcard);
-       s_info.status_simcard = NULL;
+       __remove_all_icons();
 
        if (s_info.status_battery) evas_object_del(s_info.status_battery);
        s_info.status_battery = NULL;
@@ -184,9 +172,10 @@ void moments_status_battery_update(int percent, int converted_percent, bool is_c
 
 void moments_status_callsignal_icon_show(void)
 {
-       s_info.status_callsignal = __create_callsignal(s_info.status_layout);
+       s_info.icon_array[STATUS_ICON_CALLSIGNAL] = __create_callsignal(s_info.status_layout);
+
+       __status_icon_list[STATUS_ICON_CALLSIGNAL] = s_info.icon_array[STATUS_ICON_CALLSIGNAL];
 
-       __status_icon_list[STATUS_ICON_CALLSIGNAL] = s_info.status_callsignal;
        __status_icon_is_appended[STATUS_ICON_CALLSIGNAL] = true;
 
        __register_icon_type_to_list(STATUS_ICON_CALLSIGNAL);
@@ -197,8 +186,7 @@ void moments_status_callsignal_icon_hide(void)
        __unregister_icon_type_from_list(STATUS_ICON_CALLSIGNAL);
        __status_icon_is_appended[STATUS_ICON_CALLSIGNAL] = false;
 
-       if (s_info.status_callsignal) evas_object_del(s_info.status_callsignal);
-       s_info.status_callsignal = NULL;
+       if (s_info.icon_array[STATUS_ICON_CALLSIGNAL]) evas_object_del(s_info.icon_array[STATUS_ICON_CALLSIGNAL]);
        __status_icon_list[STATUS_ICON_CALLSIGNAL] = NULL;
 }
 
@@ -209,23 +197,29 @@ void moments_status_callsignal_update(int strength, bool is_roaming)
        char callsignal_buf[PATH_MAX] = {0, };
 
        if (strength < 0 && !is_roaming) {
-               elm_object_signal_emit(s_info.status_callsignal, "change_to_no_signal", "icon_image");
+               elm_object_signal_emit(s_info.icon_array[STATUS_ICON_CALLSIGNAL], "change_to_no_signal", "icon_image");
+               return;
        } else if (strength > 4 && !is_roaming) { // RSSI can't be more than 4, so this is used for flight mode
-               elm_object_signal_emit(s_info.status_callsignal, "change_to_flight_mode", "icon_image");
+               elm_object_signal_emit(s_info.icon_array[STATUS_ICON_CALLSIGNAL], "change_to_flight_mode", "icon_image");
+               return;
        } else if (is_roaming) {
                snprintf(callsignal_buf, sizeof(callsignal_buf), "change_roaming_callsignal_strength_%02d", strength);
        } else {
                snprintf(callsignal_buf, sizeof(callsignal_buf), "change_callsignal_strength_%02d", strength);
        }
 
-       elm_object_signal_emit(s_info.status_callsignal, callsignal_buf, "icon_image");
+       elm_object_signal_emit(s_info.icon_array[STATUS_ICON_CALLSIGNAL], callsignal_buf, "icon_image");
 }
 
 void moments_status_network_icon_show(void)
 {
-       s_info.status_network = __create_network(s_info.status_layout);
+       if (s_info.icon_array[STATUS_ICON_NETWORK]) {
+               return;
+       }
+
+       s_info.icon_array[STATUS_ICON_NETWORK] = __create_network(s_info.status_layout);
 
-       __status_icon_list[STATUS_ICON_NETWORK] = s_info.status_network;
+       __status_icon_list[STATUS_ICON_NETWORK] = s_info.icon_array[STATUS_ICON_NETWORK];
        __status_icon_is_appended[STATUS_ICON_NETWORK] = true;
 
        __register_icon_type_to_list(STATUS_ICON_NETWORK);
@@ -236,8 +230,8 @@ void moments_status_network_icon_hide(void)
        __unregister_icon_type_from_list(STATUS_ICON_NETWORK);
        __status_icon_is_appended[STATUS_ICON_NETWORK] = false;
 
-       if (s_info.status_network) evas_object_del(s_info.status_network);
-       s_info.status_network= NULL;
+       if (s_info.icon_array[STATUS_ICON_NETWORK]) evas_object_del(s_info.icon_array[STATUS_ICON_NETWORK]);
+       s_info.icon_array[STATUS_ICON_NETWORK] = NULL;
        __status_icon_list[STATUS_ICON_NETWORK] = NULL;
 }
 
@@ -246,21 +240,21 @@ void moments_status_network_update(int network_type, int packet_type)
        _D("Update network_type[%d], packet_type[%d]", network_type, packet_type);
 
        if (network_type >= 0) {
-               elm_object_signal_emit(s_info.status_network, __status_network_type_signal[network_type], "type_icon_image");
+               elm_object_signal_emit(s_info.icon_array[STATUS_ICON_NETWORK], __status_network_type_signal[network_type], "type_icon_image");
        }
 
        if (packet_type >= 0) {
-               elm_object_signal_emit(s_info.status_network, __status_network_type_signal[packet_type], "inout_icon_image");
+               elm_object_signal_emit(s_info.icon_array[STATUS_ICON_NETWORK], __status_network_type_signal[packet_type], "inout_icon_image");
        }
 }
 
 void moments_status_simcard_icon_show(void)
 {
-       if (s_info.status_simcard) moments_status_simcard_icon_hide();
+       if (s_info.icon_array[STATUS_ICON_NO_SIM]) moments_status_simcard_icon_hide();
 
-       s_info.status_simcard = __create_simcard(s_info.status_layout);
+       s_info.icon_array[STATUS_ICON_NO_SIM] = __create_simcard(s_info.status_layout);
 
-       __status_icon_list[STATUS_ICON_NO_SIM] = s_info.status_simcard;
+       __status_icon_list[STATUS_ICON_NO_SIM] = s_info.icon_array[STATUS_ICON_NO_SIM];
        __status_icon_is_appended[STATUS_ICON_NO_SIM] = true;
 
        __register_icon_type_to_list(STATUS_ICON_NO_SIM);
@@ -271,18 +265,18 @@ void moments_status_simcard_icon_hide(void)
        __unregister_icon_type_from_list(STATUS_ICON_NO_SIM);
        __status_icon_is_appended[STATUS_ICON_NO_SIM] = false;
 
-       if (s_info.status_simcard) evas_object_del(s_info.status_simcard);
-       s_info.status_simcard = NULL;
+       if (s_info.icon_array[STATUS_ICON_NO_SIM]) evas_object_del(s_info.icon_array[STATUS_ICON_NO_SIM]);
+       s_info.icon_array[STATUS_ICON_NO_SIM] = NULL;
        __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();
+       if (s_info.icon_array[STATUS_ICON_LOCATION]) moments_status_location_icon_hide();
 
-       s_info.status_location = __create_location(s_info.status_layout);
+       s_info.icon_array[STATUS_ICON_LOCATION] = __create_location(s_info.status_layout);
 
-       __status_icon_list[STATUS_ICON_LOCATION] = s_info.status_location;
+       __status_icon_list[STATUS_ICON_LOCATION] = s_info.icon_array[STATUS_ICON_LOCATION];
        __status_icon_is_appended[STATUS_ICON_LOCATION] = true;
 
        __register_icon_type_to_list(STATUS_ICON_LOCATION);
@@ -293,18 +287,18 @@ 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;
+       if (s_info.icon_array[STATUS_ICON_LOCATION]) evas_object_del(s_info.icon_array[STATUS_ICON_LOCATION]);
+       s_info.icon_array[STATUS_ICON_LOCATION] = NULL;
        __status_icon_list[STATUS_ICON_LOCATION] = NULL;
 }
 
 void moments_status_bluetooth_icon_show(void)
 {
-       if (s_info.status_bluetooth) moments_status_bluetooth_icon_hide();
+       if (s_info.icon_array[STATUS_ICON_BLUETOOTH]) moments_status_bluetooth_icon_hide();
 
-       s_info.status_bluetooth = __create_bluetooth(s_info.status_layout);
+       s_info.icon_array[STATUS_ICON_BLUETOOTH] = __create_bluetooth(s_info.status_layout);
 
-       __status_icon_list[STATUS_ICON_BLUETOOTH] = s_info.status_bluetooth;
+       __status_icon_list[STATUS_ICON_BLUETOOTH] = s_info.icon_array[STATUS_ICON_BLUETOOTH];
        __status_icon_is_appended[STATUS_ICON_BLUETOOTH] = true;
 
        __register_icon_type_to_list(STATUS_ICON_BLUETOOTH);
@@ -315,8 +309,8 @@ void moments_status_bluetooth_icon_hide(void)
        __unregister_icon_type_from_list(STATUS_ICON_BLUETOOTH);
        __status_icon_is_appended[STATUS_ICON_BLUETOOTH] = false;
 
-       if (s_info.status_bluetooth) evas_object_del(s_info.status_bluetooth);
-       s_info.status_bluetooth = NULL;
+       if (s_info.icon_array[STATUS_ICON_BLUETOOTH]) evas_object_del(s_info.icon_array[STATUS_ICON_BLUETOOTH]);
+       s_info.icon_array[STATUS_ICON_BLUETOOTH] = NULL;
        __status_icon_list[STATUS_ICON_BLUETOOTH] = NULL;
 }
 
@@ -327,25 +321,25 @@ void moments_status_bluetooth_update(int on_off, int connected)
        if (!on_off) {
                moments_status_bluetooth_icon_hide();
        } else {
-               if (!s_info.status_bluetooth) {
+               if (!s_info.icon_array[STATUS_ICON_BLUETOOTH]) {
                        moments_status_bluetooth_icon_show();
                }
 
                if (!connected) {
-                       elm_object_signal_emit(s_info.status_bluetooth, "bt_disconnected", "bluetooth");
+                       elm_object_signal_emit(s_info.icon_array[STATUS_ICON_BLUETOOTH], "bt_disconnected", "bluetooth");
                } else {
-                       elm_object_signal_emit(s_info.status_bluetooth, "bt_connected", "bluetooth");
+                       elm_object_signal_emit(s_info.icon_array[STATUS_ICON_BLUETOOTH], "bt_connected", "bluetooth");
                }
        }
 }
 
 void moments_status_headset_icon_show(void)
 {
-       if (s_info.status_headset) moments_status_headset_icon_hide();
+       if (s_info.icon_array[STATUS_ICON_HEADSET]) moments_status_headset_icon_hide();
 
-       s_info.status_headset = __create_headset(s_info.status_layout);
+       s_info.icon_array[STATUS_ICON_HEADSET] = __create_headset(s_info.status_layout);
 
-       __status_icon_list[STATUS_ICON_HEADSET] = s_info.status_headset;
+       __status_icon_list[STATUS_ICON_HEADSET] = s_info.icon_array[STATUS_ICON_HEADSET];
        __status_icon_is_appended[STATUS_ICON_HEADSET] = true;
 
        __register_icon_type_to_list(STATUS_ICON_HEADSET);
@@ -356,18 +350,18 @@ void moments_status_headset_icon_hide(void)
        __unregister_icon_type_from_list(STATUS_ICON_HEADSET);
        __status_icon_is_appended[STATUS_ICON_HEADSET] = false;
 
-       if (s_info.status_headset) evas_object_del(s_info.status_headset);
-       s_info.status_headset = NULL;
+       if (s_info.icon_array[STATUS_ICON_HEADSET]) evas_object_del(s_info.icon_array[STATUS_ICON_HEADSET]);
+       s_info.icon_array[STATUS_ICON_HEADSET] = NULL;
        __status_icon_list[STATUS_ICON_HEADSET] = NULL;
 }
 
 void moments_status_callforwarding_icon_show(void)
 {
-       if (s_info.status_callforwarding) moments_status_callforwarding_icon_hide();
+       if (s_info.icon_array[STATUS_ICON_CALLFORWARDING]) moments_status_callforwarding_icon_hide();
 
-       s_info.status_callforwarding = __create_callforwarding(s_info.status_layout);
+       s_info.icon_array[STATUS_ICON_CALLFORWARDING] = __create_callforwarding(s_info.status_layout);
 
-       __status_icon_list[STATUS_ICON_CALLFORWARDING] = s_info.status_callforwarding;
+       __status_icon_list[STATUS_ICON_CALLFORWARDING] = s_info.icon_array[STATUS_ICON_CALLFORWARDING];
        __status_icon_is_appended[STATUS_ICON_CALLFORWARDING] = true;
 
        __register_icon_type_to_list(STATUS_ICON_CALLFORWARDING);
@@ -378,28 +372,43 @@ void moments_status_callforwarding_icon_hide(void)
        __unregister_icon_type_from_list(STATUS_ICON_CALLFORWARDING);
        __status_icon_is_appended[STATUS_ICON_CALLFORWARDING] = false;
 
-       if (s_info.status_callforwarding) evas_object_del(s_info.status_callforwarding);
-       s_info.status_callforwarding = NULL;
+       if (s_info.icon_array[STATUS_ICON_CALLFORWARDING]) evas_object_del(s_info.icon_array[STATUS_ICON_CALLFORWARDING]);
+       s_info.icon_array[STATUS_ICON_CALLFORWARDING] = NULL;
        __status_icon_list[STATUS_ICON_CALLFORWARDING] = NULL;
 }
 
 void moments_status_update_view(void)
 {
        _D("Update status icon list");
-       int i;
+
+       __unpack_all_icons_from_grid();
+
+       if (moments_check_is_3g_device()) {
+               __pack_all_icons_to_3g_position();
+       } else {
+               __pack_all_icons_to_bt_position();
+       }
+}
+
+static void __pack_all_icons_to_bt_position(void)
+{
+       int i = 0;
        void *data = NULL;
-       for (i = 0; i < STATUS_ICON_MAX_COUNT; i++)
-       {
-               Evas_Object *icon = __status_icon_list[i];
-               if (icon) {
-                       elm_grid_unpack(s_info.status_grid, icon);
-                       evas_object_move(icon, OUTSIDE_X, OUTSIDE_Y);
-               }
+       Eina_List *list = NULL;
+
+       EINA_LIST_FOREACH(__status_icon_type_list, list, data) {
+               status_icon_type_e type = (status_icon_type_e)data;
+               elm_grid_pack(s_info.status_grid, __status_icon_list[type], __status_icon_position_bt[i][0], __status_icon_position_bt[i][1], MOMENTS_STATUS_ICON_W, MOMENTS_STATUS_ICON_H);
+               i++;
        }
+}
 
+static void __pack_all_icons_to_3g_position(void)
+{
+       int i = 0;
+       void *data = NULL;
        Eina_List *list = NULL;
 
-       i = 0;
        EINA_LIST_FOREACH(__status_icon_type_list, list, data) {
                status_icon_type_e type = (status_icon_type_e)data;
                elm_grid_pack(s_info.status_grid, __status_icon_list[type], __status_icon_position[i][0], __status_icon_position[i][1], MOMENTS_STATUS_ICON_W, MOMENTS_STATUS_ICON_H);
@@ -407,6 +416,19 @@ void moments_status_update_view(void)
        }
 }
 
+static void __unpack_all_icons_from_grid(void)
+{
+       int i = 0;
+       for (i = 0; i < STATUS_ICON_MAX_COUNT; i++)
+       {
+               Evas_Object *icon = __status_icon_list[i];
+               if (icon) {
+                       elm_grid_unpack(s_info.status_grid, icon);
+                       evas_object_move(icon, OUTSIDE_X, OUTSIDE_Y);
+               }
+       }
+}
+
 static status_icon_type_e __get_prev_type_by_priority(status_icon_type_e type)
 {
        int i;
@@ -657,6 +679,26 @@ static int __get_icon_position_index(status_icon_type_e type)
        return -1;
 }
 
+static void __remove_all_icons(void)
+{
+       Eina_List *list = NULL;
+       void *data = NULL;
+       int i = 0;
+
+       EINA_LIST_FOREACH(__status_icon_type_list, list, data) {
+               __status_icon_type_list = eina_list_remove_list(__status_icon_type_list, list);
+       }
+       for (i = 0; i < STATUS_ICON_MAX_COUNT; i++)
+       {
+               if (s_info.icon_array[i]) {
+                       evas_object_del(s_info.icon_array[i]);
+                       __status_icon_is_appended[i] = false;
+                       __status_icon_list[i] = NULL;
+                       s_info.icon_array[i] = NULL;
+               }
+       }
+}
+
 #include <test.h>
 #if TEST_MODE
 Evas_Object *__t__get_moments_status_layout(void)
@@ -676,41 +718,46 @@ Evas_Object *__t__get_moments_status_battery(void)
 
 Evas_Object *__t__get_moments_status_callsignal(void)
 {
-       return s_info.status_callsignal;
+       return s_info.icon_array[STATUS_ICON_CALLSIGNAL];
 }
 
 Evas_Object *__t__get_moments_status_network(void)
 {
-       return s_info.status_network;
+       return s_info.icon_array[STATUS_ICON_NETWORK];
 }
 
 Evas_Object *__t__get_moments_status_simcard(void)
 {
-       return s_info.status_simcard;
+       return s_info.icon_array[STATUS_ICON_NO_SIM];
 }
 
 Evas_Object *__t__get_moments_status_location(void)
 {
-       return s_info.status_location;
+       return s_info.icon_array[STATUS_ICON_LOCATION];
 }
 
 Evas_Object *__t__get_moments_status_bluetooth(void)
 {
-       return s_info.status_bluetooth;
+       return s_info.icon_array[STATUS_ICON_BLUETOOTH];
 }
 
 Evas_Object *__t__get_moments_status_headset(void)
 {
-       return s_info.status_headset;
+       return s_info.icon_array[STATUS_ICON_HEADSET];
 }
 
 Evas_Object *__t__get_moments_status_callforwarding(void)
 {
-       return s_info.status_callforwarding;
+       return s_info.icon_array[STATUS_ICON_CALLFORWARDING];
 }
 
 int __t__get_moments_status_icon_index(int type)
 {
        return __get_icon_position_index(type);
 }
+
+void __t__remove_all_icons(void)
+{
+       __remove_all_icons();
+}
 #endif
index 2077e7acd8272c81e658afe05e8562d1f37b8303..783415a7ef2613824a1d4415926f36f295cbe5f9 100755 (executable)
@@ -30,7 +30,7 @@ void feature_test(void)
 
        TEST_GROUP_ADD("group_feature_moments_default_ui", group_feature_moments_default_ui);
        TEST_GROUP_ADD("group_feature_moments_status_view_ui", group_feature_moments_status_view_ui);
-       TEST_GROUP_ADD("group_feature_moments_status_behavior", group_feature_moments_status_behavior);
+       //TEST_GROUP_ADD("group_feature_moments_status_behavior", group_feature_moments_status_behavior);
        TEST_GROUP_ADD("group_feature_status_area_layer_show", group_feature_status_area_layer_show);
        TEST_GROUP_ADD("group_feature_moments_show", group_feature_moments_show);
        TEST_GROUP_ADD("group_feature_moments_pull_down", group_feature_moments_pull_down);
index d85d5f2262b948af354ce999c9d1005dc57c82d7..8b4190eff91d5d177a0a269e43d3e21aeb2ed7b0 100755 (executable)
@@ -29,12 +29,15 @@ static void __status_restore_icons(void);
 
 static struct {
        unit_group_t * group;
+       int is_3g;
 } s_info = {
        .group = NULL,
+       .is_3g = 0,
 };
 
-static int __t_status_icon_position[STATUS_ICON_MAX_COUNT + 1][2] = {
-       { 135, 7 }, { 104, 18 }, { 201, 7 }, { 232, 18 }, { 74, 36 }, { 262, 36 }, { 45, 59 }, { 291, 59 }
+static int __t_status_icon_position[2][STATUS_ICON_MAX_COUNT + 1][2] = {
+       { { 201, 7 }, { 135, 7 }, { 232, 18 }, { 104, 18 }, { 262, 36 }, { 74, 36 }, { 291, 59 }, { 45, 59 } },
+       { { 135, 7 }, { 104, 18 }, { 201, 7 }, { 232, 18 }, { 74, 36 }, { 262, 36 }, { 45, 59 }, { 291, 59 } }
 };
 
 static char *__callsignal_type[13] = {
@@ -81,6 +84,12 @@ static void __group_set_up(void)
        if (moments_get_visible() == false) {
                main_s * info = main_get_info();
 
+               if (moments_check_is_3g_device() == true) {
+                       __T("THIS TEST IS FOR 3G DEVICE");
+                       s_info.is_3g = 1;
+               }
+               __t__remove_all_icons();
+
                __t__layout_mouse_down(info->layout, 180, 50);
 
                TEST_GROUP_SET_UP_DONE(0.6, s_info.group);
@@ -91,6 +100,7 @@ static void __group_set_up(void)
 
 static void __group_tear_down(void)
 {
+       __t__remove_all_icons();
        __status_restore_icons();
 
        if (moments_get_visible()) {
@@ -176,7 +186,6 @@ static unit_case_func_t __continue_check_status_battery_icon_change(void *data)
 static bool is_roaming = false;
 static int call_strength = -1;
 static int call_signal_index = 0;
-static bool call_is_for_test = false;
 static unit_case_func_t __continue_check_status_callsignal_icon_change(void *data);
 
 static unit_case_func_t __case_check_status_view_callsignal(void *data)
@@ -185,16 +194,18 @@ static unit_case_func_t __case_check_status_view_callsignal(void *data)
        if (!callsignal) {
                moments_status_callsignal_icon_show();
                moments_status_update_view();
-               call_is_for_test = true;
                TEST_CASE_CONTINUE(0.1, __case_check_status_view_callsignal, NULL);
        }
 
        TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(callsignal));
 
+       int index = __t__get_moments_status_icon_index(STATUS_ICON_CALLSIGNAL);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(STATUS_ICON_CALLSIGNAL, index);
+
        int x, y, w, h;
        evas_object_geometry_get(callsignal, &x, &y, &w, &h);
-       TEST_ASSERT_EQUAL_INT_UPGRADE(135, x);
-       TEST_ASSERT_EQUAL_INT_UPGRADE(7, y);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(__t_status_icon_position[s_info.is_3g][index][0], x);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(__t_status_icon_position[s_info.is_3g][index][1], y);
        TEST_ASSERT_EQUAL_INT_UPGRADE(MOMENTS_STATUS_ICON_W, w);
        TEST_ASSERT_EQUAL_INT_UPGRADE(MOMENTS_STATUS_ICON_H, h);
 
@@ -244,23 +255,24 @@ static network_state_t network_state = {
        .network_type = 0,
        .packet_type = -1
 };
-static int network_is_for_test = false;
 static unit_case_func_t __case_check_status_view_network(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;
                TEST_CASE_CONTINUE(0.1, __case_check_status_view_network, NULL);
        }
 
        TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(network));
 
+       int index = __t__get_moments_status_icon_index(STATUS_ICON_NETWORK);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(STATUS_ICON_NETWORK, index);
+
        int x, y, w, h;
        evas_object_geometry_get(network, &x, &y, &w, &h);
-       TEST_ASSERT_EQUAL_INT_UPGRADE(104, x);
-       TEST_ASSERT_EQUAL_INT_UPGRADE(18, y);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(__t_status_icon_position[s_info.is_3g][index][0], x);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(__t_status_icon_position[s_info.is_3g][index][1], y);
        TEST_ASSERT_EQUAL_INT_UPGRADE(MOMENTS_STATUS_ICON_W, w);
        TEST_ASSERT_EQUAL_INT_UPGRADE(MOMENTS_STATUS_ICON_H, h);
 
@@ -300,83 +312,6 @@ static unit_case_func_t __continue_check_status_network_icon_change(void *data)
        TEST_CASE_CONTINUE(0.1, __continue_check_status_network_icon_change, data);
 }
 
-static int simcard_is_for_test = false;
-static unit_case_func_t __continue_check_status_simcard_icon_change(void *data);
-static unit_case_func_t __case_check_status_view_simcard(void *data)
-{
-       Evas_Object *simcard = __t__get_moments_status_simcard();
-       if (!simcard) {
-               moments_status_simcard_icon_show();
-               moments_status_update_view();
-               simcard_is_for_test = true;
-               TEST_CASE_CONTINUE(0.6, __case_check_status_view_simcard, NULL);
-       }
-
-       TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(simcard));
-
-       int index = __t__get_moments_status_icon_index(STATUS_ICON_NO_SIM);
-       TEST_ASSERT_TRUE_UPGRADE(index >= 0);
-
-       int x, y, w, h;
-       evas_object_geometry_get(simcard, &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_simcard_icon_hide();
-       moments_status_update_view();
-
-       TEST_CASE_CONTINUE(0.6, __continue_check_status_simcard_icon_change, simcard);
-}
-
-static unit_case_func_t __continue_check_status_simcard_icon_change(void *data)
-{
-       Evas_Object *simcard = (Evas_Object *)data;
-       TEST_ASSERT_TRUE_UPGRADE(!evas_object_visible_get(simcard));
-
-       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);
-       TEST_CASE_DONE(s_info.group);
-}
-
-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);
-}
-
 static int bt_on_off = 1;
 static int bt_connected = 0;
 static unit_case_func_t __continue_check_status_bluetooth_icon_change(void *data);
@@ -392,12 +327,12 @@ static unit_case_func_t __case_check_status_view_bluetooth(void *data)
        TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(bluetooth));
 
        int index = __t__get_moments_status_icon_index(STATUS_ICON_BLUETOOTH);
-       TEST_ASSERT_TRUE_UPGRADE(index >= 0);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(STATUS_ICON_BLUETOOTH, index);
 
        int x, y, w, h;
        evas_object_geometry_get(bluetooth, &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(__t_status_icon_position[s_info.is_3g][index][0], x);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(__t_status_icon_position[s_info.is_3g][index][1], y);
        TEST_ASSERT_EQUAL_INT_UPGRADE(MOMENTS_STATUS_ICON_W, w);
        TEST_ASSERT_EQUAL_INT_UPGRADE(MOMENTS_STATUS_ICON_H, h);
 
@@ -423,13 +358,21 @@ static unit_case_func_t __continue_check_status_bluetooth_icon_change(void *data
                moments_status_bluetooth_update(bt_on_off, bt_connected);
 
                TEST_CASE_CONTINUE(0.3, __continue_check_status_bluetooth_icon_change, bluetooth);
+       } else if (bt_connected == 2) { // Show again
+               bt_connected++;
+
+               moments_status_bluetooth_update(1, 1);
+
+               TEST_CASE_CONTINUE(0.3, __continue_check_status_bluetooth_icon_change, NULL);
        }
 
-       TEST_ASSERT_TRUE_UPGRADE(!evas_object_visible_get(bluetooth));
+       bluetooth = __t__get_moments_status_bluetooth();
+       TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(bluetooth));
 
        TEST_CASE_DONE(s_info.group);
 }
 
+static unit_case_func_t __continue_check_status_headset_icon_change(void *data);
 static unit_case_func_t __case_check_status_view_headset(void *data)
 {
        Evas_Object *headset = __t__get_moments_status_headset();
@@ -442,17 +385,88 @@ static unit_case_func_t __case_check_status_view_headset(void *data)
        TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(headset));
 
        int index = __t__get_moments_status_icon_index(STATUS_ICON_HEADSET);
-       TEST_ASSERT_TRUE_UPGRADE(index >= 0);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(STATUS_ICON_HEADSET, index);
 
        int x, y, w, h;
        evas_object_geometry_get(headset, &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(__t_status_icon_position[s_info.is_3g][index][0], x);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(__t_status_icon_position[s_info.is_3g][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_update_view();
+
+       moments_status_headset_icon_hide();
+
+       TEST_CASE_CONTINUE(0.3, __continue_check_status_headset_icon_change, headset);
+}
+
+static unit_case_func_t __continue_check_status_headset_icon_change(void *data)
+{
+       if (data != NULL) {
+               Evas_Object *headset = (Evas_Object *)data;
+
+               TEST_ASSERT_TRUE_UPGRADE(!evas_object_visible_get(headset));
+
+               moments_status_headset_icon_show();
+               moments_status_update_view();
+
+               TEST_CASE_CONTINUE(0.3, __continue_check_status_headset_icon_change, NULL);
+       } else {
+               Evas_Object *headset = __t__get_moments_status_headset();
+
+               TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(headset));
+
+               TEST_CASE_DONE(s_info.group);
+       }
+}
+
+static int simcard_is_for_test = false;
+static unit_case_func_t __continue_check_status_simcard_icon_change(void *data);
+static unit_case_func_t __case_check_status_view_simcard(void *data)
+{
+       Evas_Object *simcard = __t__get_moments_status_simcard();
+       if (!simcard) {
+               moments_status_simcard_icon_show();
+               moments_status_update_view();
+               simcard_is_for_test = true;
+               TEST_CASE_CONTINUE(0.6, __case_check_status_view_simcard, NULL);
+       }
+
+       TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(simcard));
+
+       int index = __t__get_moments_status_icon_index(STATUS_ICON_NO_SIM);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(STATUS_ICON_NO_SIM, index);
+
+       int x, y, w, h;
+       evas_object_geometry_get(simcard, &x, &y, &w, &h);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(__t_status_icon_position[s_info.is_3g][index][0], x);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(__t_status_icon_position[s_info.is_3g][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_simcard_icon_hide();
        moments_status_update_view();
 
+       TEST_CASE_CONTINUE(0.6, __continue_check_status_simcard_icon_change, simcard);
+}
+
+static unit_case_func_t __continue_check_status_simcard_icon_change(void *data)
+{
+       if (data != NULL) {
+               Evas_Object *simcard = (Evas_Object *)data;
+               TEST_ASSERT_TRUE_UPGRADE(!evas_object_visible_get(simcard));
+
+               moments_status_simcard_icon_show();
+               moments_status_update_view();
+
+               TEST_CASE_CONTINUE(0.6, __continue_check_status_simcard_icon_change, NULL);
+       } else {
+               Evas_Object *simcard = __t__get_moments_status_simcard();
+               TEST_ASSERT_TRUE_UPGRADE(simcard != NULL);
+               TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(simcard));
+       }
+
        TEST_CASE_DONE(s_info.group);
 }
 
@@ -468,12 +482,12 @@ static unit_case_func_t __case_check_status_view_callforwarding(void *data)
        TEST_ASSERT_TRUE_UPGRADE(evas_object_visible_get(callforwarding));
 
        int index = __t__get_moments_status_icon_index(STATUS_ICON_CALLFORWARDING);
-       TEST_ASSERT_TRUE_UPGRADE(index >= 0);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(STATUS_ICON_CALLFORWARDING, index);
 
        int x, y, w, h;
        evas_object_geometry_get(callforwarding, &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(__t_status_icon_position[s_info.is_3g][index][0], x);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(__t_status_icon_position[s_info.is_3g][index][1], y);
        TEST_ASSERT_EQUAL_INT_UPGRADE(MOMENTS_STATUS_ICON_W, w);
        TEST_ASSERT_EQUAL_INT_UPGRADE(MOMENTS_STATUS_ICON_H, h);
 
@@ -482,6 +496,56 @@ static unit_case_func_t __case_check_status_view_callforwarding(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_EQUAL_INT_UPGRADE(index, STATUS_ICON_LOCATION);
+
+       int x, y, w, h;
+       evas_object_geometry_get(location, &x, &y, &w, &h);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(__t_status_icon_position[s_info.is_3g][index][0], x);
+       TEST_ASSERT_EQUAL_INT_UPGRADE(__t_status_icon_position[s_info.is_3g][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);
+       TEST_CASE_DONE(s_info.group);
+}
+
+static unit_case_func_t __continue_check_status_location_icon_change(void *data)
+{
+       if (data != NULL) {
+               Evas_Object *location = (Evas_Object *)data;
+               TEST_ASSERT_TRUE_UPGRADE(!evas_object_visible_get(location));
+
+               moments_status_location_icon_show();
+               moments_status_update_view();
+
+               TEST_CASE_CONTINUE(0.6, __continue_check_status_location_icon_change, NULL);
+       } else {
+               Evas_Object *location = __t__get_moments_status_location();
+               TEST_ASSERT_TRUE_UPGRADE(location != NULL);
+               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;
@@ -492,11 +556,11 @@ void group_feature_moments_status_view_ui(unit_group_t * group)
        TEST_CASE_ADD(s_info.group, __case_check_status_view_battery, NULL);
        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_CASE_ADD(s_info.group, __case_check_status_view_bluetooth, NULL);
        TEST_CASE_ADD(s_info.group, __case_check_status_view_headset, NULL);
+       TEST_CASE_ADD(s_info.group, __case_check_status_view_simcard, NULL);
        TEST_CASE_ADD(s_info.group, __case_check_status_view_callforwarding, 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);
@@ -504,24 +568,7 @@ void group_feature_moments_status_view_ui(unit_group_t * group)
 
 static void __status_restore_icons(void)
 {
-       if (call_is_for_test) {
-               moments_status_callsignal_icon_hide();
-       }
-       if (network_is_for_test) {
-               moments_status_network_icon_hide();
-       }
-       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();
-       }
-       __t__moments_restore_status_bluetooth_state();
-       __t__moments_restore_status_headset_state();
-       __t__moments_restore_status_callforwarding_state();
+       __t__moments_restore_status_view();
 }
 
 #endif