--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ *******************************************************************************/
+/**
+ * @file tbt-radio-view.c
+ * @brief retrieves radio info
+ *
+ * @author Nibha Sharma(nibha.sharma@samsung.com)
+ * @date June, 2016
+ * @bug none
+ * @credit
+ *
+ */
+#include "utils/app_module_config.h"
+#ifdef TBT_MODULE_RADIO
+
+#include <Elementary.h>
+#include <locations.h>
+
+#include "utils/logger.h"
+#include "utils/config.h"
+#include "utils/ui-utils.h"
+#include "view/tbt-radio-view.h"
+#include "view/tbt-common-view.h"
+
+struct _radio_view
+{
+ common_view* view;
+
+ Evas_Object *radio_label;
+};
+
+static void _app_destroy_cb(void* this);
+static void _radio_interrupted_cb(radio_interrupted_code_e code, void *user_data);
+
+radio_h g_pstRadio;
+bool is_not_supported = false;
+
+/**
+ * @function get_radio_type_error
+ * @since_tizen 3.0
+ * @description Get radio Error
+ * @parameter int: Int
+ * @return char*
+ */
+char* get_radio_type_error(int ret)
+{
+ char* err_msg = NULL;
+ switch (ret) {
+ case RADIO_ERROR_NONE:
+ err_msg = "RADIO_ERROR_NONE";
+ break;
+ case RADIO_ERROR_INVALID_PARAMETER:
+ err_msg = "RADIO_ERROR_INVALID_PARAMETER";
+ break;
+ case RADIO_ERROR_INVALID_OPERATION:
+ err_msg = "RADIO_ERROR_INVALID_OPERATION";
+ break;
+ case RADIO_ERROR_OUT_OF_MEMORY:
+ err_msg = "RADIO_ERROR_OUT_OF_MEMORY";
+ break;
+ case RADIO_ERROR_INVALID_STATE:
+ err_msg = "RADIO_ERROR_INVALID_STATE";
+ break;
+ case RADIO_ERROR_SOUND_POLICY:
+ err_msg = "RADIO_ERROR_SOUND_POLICY";
+ break;
+ default:
+ err_msg = "Unknown Error";
+ break;
+ }
+
+ return err_msg;
+}
+
+/**
+ * @function radio_view_add
+ * @since_tizen 3.0
+ * @description Radio View Add
+ * @parameter Evas_Object*: Evas Object Pointer, tbt_info*: Tbt Info Pointer, Elm_Object_Item*: Elm Object Item Pointer
+ * @return radio_view*
+ */
+radio_view *radio_view_add(Evas_Object *navi, tbt_info *tbt_info, Elm_Object_Item *item)
+{
+ RETVM_IF(NULL == navi, NULL, "navi is null");
+ int ret;
+ radio_view *this = NULL;
+ this = calloc(1, sizeof(radio_view));
+ RETVM_IF(!this, NULL, "calloc failed");
+
+
+ this->view = calloc(1, sizeof(common_view));
+ RETVM_IF(!this->view, NULL, "calloc failed");
+
+ tbt_info->layout_group = "radio_viewer";
+ tbt_info->layout_file = get_edje_path("radio_viewer.edj");
+
+ common_view_add(navi, tbt_info, item, this->view, _app_destroy_cb, this);
+ RETVM_IF(NULL == this->view, NULL, "navi is null");
+
+ ret = radio_create(&g_pstRadio);
+ RETVM_IF(ret != RADIO_ERROR_NONE && ret != RADIO_ERROR_NOT_SUPPORTED, NULL, "radio_create failed : %s", get_radio_type_error(ret));
+
+ ret = radio_start(g_pstRadio);
+ RETVM_IF(ret != RADIO_ERROR_NONE && ret != RADIO_ERROR_NOT_SUPPORTED, NULL, "radio_start failed : %s", get_radio_type_error(ret));
+
+ ret = radio_set_interrupted_cb(g_pstRadio,_radio_interrupted_cb, this);
+ RETVM_IF(ret != RADIO_ERROR_NONE && ret != RADIO_ERROR_NOT_SUPPORTED, NULL, "radio_set_interrupted_cb failed : %s", get_radio_type_error(ret));
+
+ this->radio_label = ui_utils_label_add(this->view->layout, "Latitude: ");
+ elm_label_line_wrap_set(this->radio_label, ELM_WRAP_WORD);
+
+ if(ret == RADIO_ERROR_NOT_SUPPORTED)
+ {
+ is_not_supported = true;
+ Evas_Object *popup = ui_utils_popup_add(this->view->navi, "Message");
+ elm_object_text_set(popup, "Radio is not supported");
+ RETVM_IF(!this->view, NULL,"Radio is not supported");
+ }
+
+ radio_state_e estate;
+ ret = radio_get_state (g_pstRadio, &estate);
+ RETVM_IF(ret != RADIO_ERROR_NONE && ret != RADIO_ERROR_NOT_SUPPORTED, NULL, "radio_set_interrupted_cb failed : %s", get_radio_type_error(ret));
+
+ if(estate == RADIO_STATE_PLAYING)
+ {
+ ui_utils_label_set_text(this->radio_label, "RADIO is Playing", "left");
+ }
+
+ elm_object_part_content_set(this->view->layout, "radio_text", this->radio_label);
+
+ return this;
+}
+
+
+/**
+ * @function _app_destroy_cb
+ * @since_tizen 2.3
+ * @description App Destroy Cb
+ * @parameter void*: Void Pointer
+ * @return static void
+ */
+static void _app_destroy_cb(void* this)
+{
+
+ RETM_IF(NULL == this, "data is NULL");
+
+ int result;
+ radio_view *view = NULL;
+ view = (radio_view*)this;
+ RETM_IF(NULL == view, "view is NULL");
+
+ if(is_not_supported == true)
+ {
+ view->view->tbt_info->result = TBT_INFO_RESULT_NOT_SUPPORTED;
+ elm_genlist_item_update(view->view->item);
+ }
+
+ result = radio_unset_interrupted_cb(g_pstRadio);
+ RETM_IF(result != RADIO_ERROR_NONE, "radio_unset_interrupted_cb fail > Error = %s", get_radio_type_error(result));
+
+ result = radio_stop(g_pstRadio);
+ RETM_IF(result != RADIO_ERROR_NONE, "radio_stop fail > Error = %s", get_radio_type_error(result));
+
+ result = radio_destroy(g_pstRadio);
+ RETM_IF(result != RADIO_ERROR_NONE, "radio_destroy fail > Error = %s", get_radio_type_error(result));
+
+ SAFE_DELETE(view->view);
+ SAFE_DELETE(view);
+}
+
+
+/**
+ * @function _radio_interrupted_cb
+ * @since_tizen 3.0
+ * @description radio interrupted Cb
+ * @parameter radio_interrupted_code_e code, void *user_data
+ * @return void
+ */
+static void _radio_interrupted_cb(radio_interrupted_code_e code, void *user_data)
+{
+
+ RETM_IF(NULL == user_data, "user_data is null");
+ radio_view *this = NULL;
+ this = (radio_view*) user_data;
+ RETM_IF(NULL == this, "view is NULL");
+
+ DBG("value: %d", code);
+
+ switch (code)
+ {
+ case RADIO_INTERRUPTED_COMPLETED:
+ ui_utils_label_set_text(this->radio_label, "Interrupt completed", "left");
+ break;
+ case RADIO_INTERRUPTED_BY_MEDIA:
+ ui_utils_label_set_text(this->radio_label, "Interrupted by a non-resumable media application", "left");
+ break;
+ case RADIO_INTERRUPTED_BY_CALL:
+ ui_utils_label_set_text(this->radio_label, "Interrupted by an incoming call", "left");
+ break;
+ case RADIO_INTERRUPTED_BY_EARJACK_UNPLUG :
+ ui_utils_label_set_text(this->radio_label, "Interrupted by unplugging headphones", "left");
+ break;
+ case RADIO_INTERRUPTED_BY_RESOURCE_CONFLICT :
+ ui_utils_label_set_text(this->radio_label, "Interrupted by a resource conflict", "left");
+ break;
+ case RADIO_INTERRUPTED_BY_ALARM :
+ ui_utils_label_set_text(this->radio_label, "Interrupted by an alarm", "left");
+ break;
+ case RADIO_INTERRUPTED_BY_EMERGENCY :
+ ui_utils_label_set_text(this->radio_label, "Interrupted by a resumable media application", "left");
+ break;
+ case RADIO_INTERRUPTED_BY_NOTIFICATION :
+ ui_utils_label_set_text(this->radio_label, "Interrupted by a notification", "left");
+ break;
+ default:
+ ui_utils_label_set_text(this->radio_label, "unknown state", "left");
+ break;
+ }
+ return ;
+}
+
+#endif
common_view* view;
Evas_Object *info_label;
+ Evas_Object *vibrate_label;
+ Evas_Object *battery_label;
+ Evas_Object *gps_label;
+ Evas_Object *usb_label;
+ Evas_Object *bluetooth_label;
+ Evas_Object *rotate_label;
+ Evas_Object *location_label;
+ Evas_Object *wifi_label;
};
static void _app_destroy_cb(void* this);
void _runtime_info_changed_cb(runtime_info_key_e key, void *user_data);
-
+static void _vibrate_state_changed_cb(runtime_info_key_e key, void *user_data);
+static void _battery_state_changed_cb(runtime_info_key_e key, void *user_data);
+static void _usb_state_changed_cb(runtime_info_key_e key, void *user_data);
+static void _gps_state_changed_cb(runtime_info_key_e key, void *user_data);
+static void _bluetooth_state_changed_cb(runtime_info_key_e key, void *user_data);
+static void _rotate_state_changed_cb(runtime_info_key_e key, void *user_data);
+static void _location_state_changed_cb(runtime_info_key_e key, void *user_data);
+static void _wifi_state_changed_cb(runtime_info_key_e key, void *user_data);
+
+static bool is_audiojack_not_supported = false;
+static bool is_gps_not_supported = false;
+static bool is_bluetooth_not_supported = false;
+static bool is_vibrate_not_supported = false;
+static bool is_battery_not_supported = false;
+static bool is_usb_not_supported = false;
+static bool is_autorotate_not_supported = false;
+static bool is_location_not_supported = false;
+static bool is_wifi_not_supported = false;
/**
* @function get_runtime_info_error
{
RETVM_IF(NULL == navi, NULL, "navi is null");
int ret, value;
- runtimeinfo_view *this = NULL;
- this = calloc(1, sizeof(runtimeinfo_view));
- RETVM_IF(!this, NULL, "calloc failed");
+ runtimeinfo_view *this = NULL;
+ this = calloc(1, sizeof(runtimeinfo_view));
+ RETVM_IF(!this, NULL, "calloc failed");
- this->view = calloc(1, sizeof(common_view));
- RETVM_IF(!this->view, NULL, "calloc failed");
+ this->view = calloc(1, sizeof(common_view));
+ RETVM_IF(!this->view, NULL, "calloc failed");
- tbt_info->layout_group = "runtimeinfo_viewer";
- tbt_info->layout_file = get_edje_path("runtimeinfo_viewer.edj");
+ tbt_info->layout_group = "runtimeinfo_viewer";
+ tbt_info->layout_file = get_edje_path("runtimeinfo_viewer.edj");
- common_view_add(navi, tbt_info, item, this->view, _app_destroy_cb, this);
+ common_view_add(navi, tbt_info, item, this->view, _app_destroy_cb, this);
RETVM_IF(NULL == this->view, NULL, "navi is null");
ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_AUDIO_JACK_STATUS, _runtime_info_changed_cb, this);
if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
{
+ is_audiojack_not_supported = true;
ui_utils_label_set_text(this->info_label, "Audio Jack is not supported", "left");
elm_object_part_content_set(this->view->layout, "info_text", this->info_label);
- return this;
+ }
+ else
+ {
+ ret = runtime_info_get_value_int(RUNTIME_INFO_KEY_AUDIO_JACK_STATUS, &value);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_get_value_int failed: %s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ is_audiojack_not_supported = true;
+ ui_utils_label_set_text(this->info_label, "Audio Jack is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "info_text", this->info_label);
+ }
+ else
+ {
+ DBG("value: %d", value);
+ switch(value)
+ {
+ case 0:
+ ui_utils_label_set_text(this->info_label, "Audio Jack Not connected", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->info_label, "Audio Jack Connected with 3 wire earjack", "left");
+ break;
+
+ case 2:
+ ui_utils_label_set_text(this->info_label, "Audio Jack Connected with 4 wire earjack", "left");
+ break;
+
+ default:
+ ui_utils_label_set_text(this->info_label, "Unknown status", "left");
+ break;
+
+ }
+ }
}
- ret = runtime_info_get_value_int(RUNTIME_INFO_KEY_AUDIO_JACK_STATUS, &value);
- RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_get_value_int failed: %s",get_runtime_info_error(ret));
+ bool bvalue;
+
+ ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_VIBRATION_ENABLED, _vibrate_state_changed_cb, this);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_set_changed_cb failed : %s", get_runtime_info_error(ret));
+
+ this->vibrate_label = ui_utils_label_add(this->view->layout, "Longitude: ");
+ elm_label_line_wrap_set(this->vibrate_label, ELM_WRAP_WORD);
+
if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
{
- ui_utils_label_set_text(this->info_label, "Audio Jack is not supported", "left");
- elm_object_part_content_set(this->view->layout, "info_text", this->info_label);
- return this;
+ is_vibrate_not_supported = true;
+ ui_utils_label_set_text(this->vibrate_label, "Vibration Mode is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "vibrate_text", this->vibrate_label);
+ }
+ else
+ {
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_VIBRATION_ENABLED, &bvalue);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_get_value_int failed: %s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ is_vibrate_not_supported = true;
+ ui_utils_label_set_text(this->vibrate_label, "Vibration Mode is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "vibrate_text", this->vibrate_label);
+ }
+ else
+ {
+ DBG("value: %d", bvalue);
+
+ switch(bvalue)
+ {
+ case 0:
+ ui_utils_label_set_text(this->vibrate_label, "Vibrate Mode is Not Enabled", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->vibrate_label, "Vibrate Mode is Enabled", "left");
+ break;
+ }
+ }
}
- DBG("value: %d", value);
+ ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_BATTERY_IS_CHARGING, _battery_state_changed_cb, this);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_set_changed_cb failed : %s", get_runtime_info_error(ret));
-switch(value)
-{
- case 0:
- ui_utils_label_set_text(this->info_label, "Audio Jack Not connected", "left");
- break;
+ this->battery_label = ui_utils_label_add(this->view->layout, "Percentage: ");
+ elm_label_line_wrap_set(this->battery_label, ELM_WRAP_WORD);
- case 1:
- ui_utils_label_set_text(this->info_label, "Audio Jack Connected with 3 wire earjack", "left");
- break;
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ is_battery_not_supported = true;
+ ui_utils_label_set_text(this->battery_label, "Battery Charging is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "battery_text", this->battery_label);
+ }
+ else
+ {
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_BATTERY_IS_CHARGING, &bvalue);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_get_value_int failed: %s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ is_battery_not_supported = true;
+ ui_utils_label_set_text(this->battery_label, "Battery Charging is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "battery_text", this->battery_label);
+ }
+ else
+ {
+ DBG("value: %d", bvalue);
+ switch(bvalue)
+ {
+ case 0:
+ ui_utils_label_set_text(this->battery_label, " Battery Not Charging", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->battery_label, "Battery Charging Started", "left");
+ break;
+ }
+ }
+ }
- case 2:
- ui_utils_label_set_text(this->info_label, "Audio Jack Connected with 4 wire earjack", "left");
- break;
+ bool is_gps_supported = does_feature_exist("tizen.org/feature/location.gps");
+ if(is_gps_supported == false)
+ {
+ is_gps_not_supported = true;
+ ui_utils_label_set_text(this->gps_label, "Feature:location.gps is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "gps_text", this->gps_label);
+ }
+ else
+ {
- default:
- ui_utils_label_set_text(this->info_label, "Unknown status", "left");
- break;
+ ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_GPS_STATUS , _gps_state_changed_cb, this);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_set_changed_cb failed : %s", get_runtime_info_error(ret));
+
+ this->gps_label = ui_utils_label_add(this->view->layout, "GPS: ");
+ elm_label_line_wrap_set(this->gps_label, ELM_WRAP_WORD);
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ is_gps_not_supported = true;
+ ui_utils_label_set_text(this->gps_label, "GPS is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "gps_text", this->gps_label);
+ }
+ else
+ {
+
+ ret = runtime_info_get_value_int(RUNTIME_INFO_KEY_GPS_STATUS , &value);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_get_value_int failed: %s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ is_gps_not_supported = true;
+ ui_utils_label_set_text(this->gps_label, "GPS is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "gps_text", this->gps_label);
+ }
+ else
+ {
+ DBG("value: %d", value);
+ switch(value)
+ {
+ case 0:
+ ui_utils_label_set_text(this->gps_label, "GPS is disabled", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->gps_label, "GPS is searching for satellites", "left");
+ break;
+
+ case 2:
+ ui_utils_label_set_text(this->gps_label, "GPS connection is established", "left");
+ break;
+
+ default:
+ ui_utils_label_set_text(this->gps_label, "Unknown status", "left");
+ break;
+
+ }
+ }
}
+ }
+
+ ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_USB_CONNECTED , _usb_state_changed_cb, this);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_set_changed_cb failed : %s", get_runtime_info_error(ret));
+ this->usb_label = ui_utils_label_add(this->view->layout, "usb: ");
+ elm_label_line_wrap_set(this->usb_label, ELM_WRAP_WORD);
+
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+
+ is_usb_not_supported = true;
+ ui_utils_label_set_text(this->usb_label, "USB is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "usb_text", this->usb_label);
+ }
+ else
+ {
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_USB_CONNECTED , &bvalue);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_get_value_int failed: %s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ is_usb_not_supported = true;
+ ui_utils_label_set_text(this->usb_label, "USB is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "usb_text", this->usb_label);
+ }
+ else
+ {
+ DBG("value: %d", bvalue);
+
+ switch(bvalue)
+ {
+ case 0:
+ ui_utils_label_set_text(this->usb_label, "USB Not Connected", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->usb_label, "USB is Connected", "left");
+ break;
+ }
+ }
+ }
+
+ bool is_bluetooth_supported = does_feature_exist("tizen.org/feature/network.bluetooth");
+ if(is_bluetooth_supported == false)
+ {
+ is_bluetooth_not_supported = true;
+ ui_utils_label_set_text(this->bluetooth_label, "Feature:network.bluetooth is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "bluetooth_text", this->bluetooth_label);
+ }
+ else
+ {
+ ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_BLUETOOTH_ENABLED , _bluetooth_state_changed_cb, this);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_set_changed_cb failed : %s", get_runtime_info_error(ret));
+
+ this->bluetooth_label = ui_utils_label_add(this->view->layout, "bluetooth: ");
+ elm_label_line_wrap_set(this->bluetooth_label, ELM_WRAP_WORD);
+
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+
+ is_bluetooth_not_supported = true;
+ ui_utils_label_set_text(this->bluetooth_label, "Bluetooth is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "bluetooth_text", this->bluetooth_label);
+ }
+ else
+ {
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_BLUETOOTH_ENABLED , &bvalue);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_get_value_int failed: %s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+
+ is_bluetooth_not_supported = true;
+ ui_utils_label_set_text(this->bluetooth_label, "Bluetooth is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "bluetooth_text", this->bluetooth_label);
+ }
+ else
+ {
+ DBG("value: %d", bvalue);
+ switch(bvalue)
+ {
+ case 0:
+ ui_utils_label_set_text(this->bluetooth_label, "Bluetooth Not Enabled", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->bluetooth_label, "Bluetooth is Enabled", "left");
+ break;
+ }
+ }
+ }
+ }
+
+ bool is_orientation_supported = does_feature_exist("tizen.org/feature/screen.auto_rotation");
+ if(is_orientation_supported == false)
+ {
+
+ is_autorotate_not_supported = true;
+ ui_utils_label_set_text(this->rotate_label, "Feature:screen.auto_rotation is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "rotate_text", this->rotate_label);
+ }
+ else
+ {
+
+ ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_AUTO_ROTATION_ENABLED , _rotate_state_changed_cb, this);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_set_changed_cb failed : %s", get_runtime_info_error(ret));
+
+ this->rotate_label = ui_utils_label_add(this->view->layout, "rotate: ");
+ elm_label_line_wrap_set(this->rotate_label, ELM_WRAP_WORD);
+
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ is_autorotate_not_supported = true;
+ ui_utils_label_set_text(this->rotate_label, "AUTO_ROTATION is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "rotate_text", this->rotate_label);
+ }
+ else
+ {
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_AUTO_ROTATION_ENABLED , &bvalue);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_get_value_int failed: %s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ is_autorotate_not_supported = true;
+ ui_utils_label_set_text(this->rotate_label, "AUTO_ROTATION is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "rotate_text", this->rotate_label);
+ }
+ else
+ {
+ DBG("value: %d", bvalue);
+
+ switch(bvalue)
+ {
+ case 0:
+ ui_utils_label_set_text(this->rotate_label, "Auto Rotate Not Enabled", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->rotate_label, "Auto Rotate is Enabled", "left");
+ break;
+ }
+ }
+ }
+ }
+
+ bool is_location_supported = does_feature_exist("tizen.org/feature/location");
+ if(is_location_supported == false)
+ {
+
+ is_location_not_supported = true;
+ ui_utils_label_set_text(this->location_label, "Feature:location is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "location_text", this->location_label);
+ }
+ else
+ {
+ ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_LOCATION_SERVICE_ENABLED , _location_state_changed_cb, this);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_set_changed_cb failed : %s", get_runtime_info_error(ret));
+
+ this->location_label = ui_utils_label_add(this->view->layout, "location: ");
+ elm_label_line_wrap_set(this->location_label, ELM_WRAP_WORD);
+
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ is_location_not_supported = true;
+ ui_utils_label_set_text(this->location_label, "Location is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "location_text", this->location_label);
+ }
+ else
+ {
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_LOCATION_SERVICE_ENABLED , &bvalue);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_get_value_int failed: %s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ is_location_not_supported = true;
+ ui_utils_label_set_text(this->location_label, "Location is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "location_text", this->location_label);
+ }
+ else
+ {
+ DBG("value: %d", bvalue);
+ switch(bvalue)
+ {
+ case 0:
+ ui_utils_label_set_text(this->location_label, "Location Not Enabled", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->location_label, "Location is Enabled", "left");
+ break;
+ }
+ }
+ }
+ }
+
+ bool is_wifi_supported = does_feature_exist("tizen.org/feature/network.wifi");
+ if(is_wifi_supported == false)
+ {
+ is_wifi_not_supported = true;
+ ui_utils_label_set_text(this->wifi_label, "Feature:network.wifi is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "wifi_text", this->wifi_label);
+ }
+ else
+ {
+ ret = runtime_info_set_changed_cb(RUNTIME_INFO_KEY_WIFI_HOTSPOT_ENABLED , _wifi_state_changed_cb, this);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_set_changed_cb failed : %s", get_runtime_info_error(ret));
+
+ this->wifi_label = ui_utils_label_add(this->view->layout, "wifi: ");
+ elm_label_line_wrap_set(this->wifi_label, ELM_WRAP_WORD);
+
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ is_wifi_not_supported = true;
+ ui_utils_label_set_text(this->wifi_label, "Wifi Hotspot is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "wifi_text", this->wifi_label);
+ }
+ else
+ {
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_WIFI_HOTSPOT_ENABLED , &bvalue);
+ RETVM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED, NULL, "runtime_info_get_value_int failed: %s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ is_wifi_not_supported = true;
+ ui_utils_label_set_text(this->wifi_label, "Wifi Hotspot is not supported", "left");
+ elm_object_part_content_set(this->view->layout, "wifi_text", this->wifi_label);
+ }
+ else
+ {
+ DBG("value: %d", bvalue);
+ switch(bvalue)
+ {
+ case 0:
+ ui_utils_label_set_text(this->wifi_label, "Wifi Hotspot Not Enabled", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->wifi_label, "Wifi Hotspot is Enabled", "left");
+ break;
+ }
+ }
+ }
+ }
elm_object_part_content_set(this->view->layout, "info_text", this->info_label);
+ elm_object_part_content_set(this->view->layout, "vibrate_text", this->vibrate_label);
+ elm_object_part_content_set(this->view->layout, "battery_text", this->battery_label);
+ elm_object_part_content_set(this->view->layout, "gps_text", this->gps_label);
+ elm_object_part_content_set(this->view->layout, "usb_text", this->usb_label);
+ elm_object_part_content_set(this->view->layout, "bluetooth_text", this->bluetooth_label);
+ elm_object_part_content_set(this->view->layout, "rotate_text", this->rotate_label);
+ elm_object_part_content_set(this->view->layout, "location_text", this->location_label);
+ elm_object_part_content_set(this->view->layout, "wifi_text", this->wifi_label);
return this;
view = (runtimeinfo_view*)this;
RETM_IF(NULL == view, "view is NULL");
+ if((is_audiojack_not_supported == true) && (is_gps_not_supported == true) && (is_bluetooth_not_supported == true) && (is_vibrate_not_supported == true) && (is_battery_not_supported == true) && (is_usb_not_supported == true) && (is_autorotate_not_supported == true) && (is_location_not_supported == true) && (is_wifi_not_supported == true))
+ {
+ view->view->tbt_info->result = TBT_INFO_RESULT_NOT_SUPPORTED;
+ elm_genlist_item_update(view->view->item);
+ }
+
SAFE_DELETE(view->view);
SAFE_DELETE(view);
}
}
}
+/**
+ * @function _vibrate_state_changed_cb
+ * @since_tizen 2.3
+ * @description vibrate State Changed Cb
+ * @parameter runtime_info_key_e key, void *user_data
+ * @return static void
+ */
+static void _vibrate_state_changed_cb(runtime_info_key_e key, void *user_data)
+{
+ RETM_IF(NULL == user_data, "user_data is null");
+ int ret;
+ bool bvalue;
+ runtimeinfo_view *this = NULL;
+ this = (runtimeinfo_view*) user_data;
+
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_VIBRATION_ENABLED, &bvalue);
+ RETM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED,"runtime_info_get_value_int failed :%s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ ui_utils_label_set_text(this->vibrate_label, "Device Vibration is not supported", "left");
+ return;
+ }
+
+ DBG("value: %d", bvalue);
+
+switch(bvalue)
+{
+ case 0:
+ ui_utils_label_set_text(this->vibrate_label, "Device Vibration is Not Enabled", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->vibrate_label, "Device Vibration is Enabled", "left");
+ break;
+ }
+}
+
+/**
+ * @function _battery_state_changed_cb
+ * @since_tizen 2.3
+ * @description battery State Changed Cb
+ * @parameter runtime_info_key_e key, void *user_data
+ * @return static void
+ */
+static void _battery_state_changed_cb(runtime_info_key_e key, void *user_data)
+{
+ RETM_IF(NULL == user_data, "user_data is null");
+ int ret;
+ bool bvalue;
+ runtimeinfo_view *this = NULL;
+ this = (runtimeinfo_view*) user_data;
+
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_BATTERY_IS_CHARGING, &bvalue);
+ RETM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED,"runtime_info_get_value_int failed :%s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ ui_utils_label_set_text(this->vibrate_label, "Battery Charging is not supported", "left");
+ return;
+ }
+
+ DBG("value: %d", bvalue);
+
+ switch(bvalue)
+ {
+ case 0:
+ ui_utils_label_set_text(this->battery_label, "Battery Not Charging", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->battery_label, "Battery Charging Started", "left");
+ break;
+ }
+
+}
+
+/**
+ * @function _gps_state_changed_cb
+ * @since_tizen 2.3
+ * @description gps state Changed Cb
+ * @parameter runtime_info_key_e key, void *user_data
+ * @return void
+ */
+void _gps_state_changed_cb(runtime_info_key_e key, void *user_data)
+{
+
+ RETM_IF(NULL == user_data, "user_data is null");
+ int ret, value;
+ runtimeinfo_view *this = NULL;
+ this = (runtimeinfo_view*) user_data;
+
+ ret = runtime_info_get_value_int(RUNTIME_INFO_KEY_GPS_STATUS, &value);
+ RETM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED,"runtime_info_get_value_int failed :%s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ ui_utils_label_set_text(this->gps_label, "GPS is not supported", "left");
+ return;
+ }
+
+ DBG("value: %d", value);
+
+ switch(value)
+ {
+ case 0:
+ ui_utils_label_set_text(this->gps_label, "GPS is disabled", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->gps_label, "GPS is searching for satellites", "left");
+ break;
+
+ case 2:
+ ui_utils_label_set_text(this->gps_label, "GPS connection is established", "left");
+ break;
+
+ default:
+ ui_utils_label_set_text(this->gps_label, "Unknown status", "left");
+ break;
+
+ }
+}
+
+/**
+ * @function _usb_state_changed_cb
+ * @since_tizen 2.3
+ * @description usb State Changed Cb
+ * @parameter runtime_info_key_e key, void *user_data
+ * @return static void
+ */
+static void _usb_state_changed_cb(runtime_info_key_e key, void *user_data)
+{
+ RETM_IF(NULL == user_data, "user_data is null");
+ int ret;
+ bool bvalue;
+ runtimeinfo_view *this = NULL;
+ this = (runtimeinfo_view*) user_data;
+
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_USB_CONNECTED, &bvalue);
+ RETM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED,"runtime_info_get_value_int failed :%s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ ui_utils_label_set_text(this->usb_label, "USB is not supported", "left");
+ return;
+ }
+
+ DBG("value: %d", bvalue);
+
+ switch(bvalue)
+ {
+ case 0:
+ ui_utils_label_set_text(this->usb_label, "USB Not Connected", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->usb_label, "USB is Connected", "left");
+ break;
+ }
+
+}
+
+/**
+ * @function _bluetooth_state_changed_cb
+ * @since_tizen 2.3
+ * @description bluetooth State Changed Cb
+ * @parameter runtime_info_key_e key, void *user_data
+ * @return static void
+ */
+static void _bluetooth_state_changed_cb(runtime_info_key_e key, void *user_data)
+{
+ RETM_IF(NULL == user_data, "user_data is null");
+ int ret;
+ bool bvalue;
+ runtimeinfo_view *this = NULL;
+ this = (runtimeinfo_view*) user_data;
+
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_BLUETOOTH_ENABLED , &bvalue);
+ RETM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED,"runtime_info_get_value_int failed :%s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ ui_utils_label_set_text(this->bluetooth_label, "Bluetooth is not supported", "left");
+ return;
+ }
+
+ DBG("value: %d", bvalue);
+
+ switch(bvalue)
+ {
+ case 0:
+ ui_utils_label_set_text(this->bluetooth_label, "Bluetooth Not Enabled", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->bluetooth_label, "Bluetooth is Enabled", "left");
+ break;
+ }
+
+}
+
+/**
+ * @function _rotate_state_changed_cb
+ * @since_tizen 2.3
+ * @description rotate State Changed Cb
+ * @parameter runtime_info_key_e key, void *user_data
+ * @return static void
+ */
+static void _rotate_state_changed_cb(runtime_info_key_e key, void *user_data)
+{
+ RETM_IF(NULL == user_data, "user_data is null");
+ int ret;
+ bool bvalue;
+ runtimeinfo_view *this = NULL;
+ this = (runtimeinfo_view*) user_data;
+
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_AUTO_ROTATION_ENABLED , &bvalue);
+ RETM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED,"runtime_info_get_value_int failed :%s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ ui_utils_label_set_text(this->rotate_label, "Auto Rotate is not supported", "left");
+ return;
+ }
+
+ DBG("value: %d", bvalue);
+
+ switch(bvalue)
+ {
+ case 0:
+ ui_utils_label_set_text(this->rotate_label, "Auto Rotate Not Enabled", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->rotate_label, "Auto Rotate is Enabled", "left");
+ break;
+ }
+
+
+}
+
+/**
+ * @function _location_state_changed_cb
+ * @since_tizen 2.3
+ * @description location State Changed Cb
+ * @parameter runtime_info_key_e key, void *user_data
+ * @return static void
+ */
+static void _location_state_changed_cb(runtime_info_key_e key, void *user_data)
+{
+ RETM_IF(NULL == user_data, "user_data is null");
+ int ret;
+ bool bvalue;
+ runtimeinfo_view *this = NULL;
+ this = (runtimeinfo_view*) user_data;
+
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_LOCATION_SERVICE_ENABLED , &bvalue);
+ RETM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED,"runtime_info_get_value_int failed :%s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ ui_utils_label_set_text(this->location_label, "Location is not supported", "left");
+ return;
+ }
+
+ DBG("value: %d", bvalue);
+
+ switch(bvalue)
+ {
+ case 0:
+ ui_utils_label_set_text(this->location_label, "Location Not Enabled", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->location_label, "Location is Enabled", "left");
+ break;
+ }
+
+
+}
+
+/**
+ * @function _wifi_state_changed_cb
+ * @since_tizen 2.3
+ * @description wifi State Changed Cb
+ * @parameter runtime_info_key_e key, void *user_data
+ * @return static void
+ */
+static void _wifi_state_changed_cb(runtime_info_key_e key, void *user_data)
+{
+ RETM_IF(NULL == user_data, "user_data is null");
+ int ret;
+ bool bvalue;
+ runtimeinfo_view *this = NULL;
+ this = (runtimeinfo_view*) user_data;
+
+ ret = runtime_info_get_value_bool(RUNTIME_INFO_KEY_WIFI_HOTSPOT_ENABLED , &bvalue);
+ RETM_IF(ret != RUNTIME_INFO_ERROR_NONE && ret != RUNTIME_INFO_ERROR_NOT_SUPPORTED,"runtime_info_get_value_int failed :%s",get_runtime_info_error(ret));
+ if(ret == RUNTIME_INFO_ERROR_NOT_SUPPORTED)
+ {
+ ui_utils_label_set_text(this->wifi_label, "Wifi Hotspot is not supported", "left");
+ return;
+ }
+
+ DBG("value: %d", bvalue);
+
+ switch(bvalue)
+ {
+ case 0:
+ ui_utils_label_set_text(this->wifi_label, "Wifi Hotspot Not Enabled", "left");
+ break;
+
+ case 1:
+ ui_utils_label_set_text(this->wifi_label, "Wifi Hotspot is Enabled", "left");
+ break;
+ }
+
+
+}
+
+
#endif
--- /dev/null
+/*******************************************************************************
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * 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.
+ *******************************************************************************/
+/**
+ * @file tbt-runtimeinfo-view.c
+ * @brief retrieves runtime info
+ *
+ * @author Nibha Sharma(nibha.sharma@samsung.com)
+ * @date June, 2016
+ * @bug none
+ * @credit
+ *
+ */
+#include "utils/app_module_config.h"
+#ifdef TBT_MODULE_STORAGE
+
+#include <Elementary.h>
+#include <locations.h>
+
+#include "utils/logger.h"
+#include "utils/config.h"
+#include "utils/ui-utils.h"
+#include "view/tbt-storage-view.h"
+#include "view/tbt-common-view.h"
+
+struct _storage_view
+{
+ common_view* view;
+
+ Evas_Object *info_label;
+};
+
+static void _app_destroy_cb(void* this);
+static void _storage_state_changed_cb(int storage_id, storage_state_e state, void *user_data);
+bool storage_device_supported_cb_p(int storage_id, storage_type_e type, storage_state_e state, const char *path, void *user_data);
+
+static int StorageID;
+static bool is_not_supported = false;
+
+/**
+ * @function get_storage_error
+ * @since_tizen 3.0
+ * @description Get Storage Error
+ * @parameter int: Int
+ * @return char*
+ */
+char* get_storage_type_error(int ret)
+{
+ char* err_msg = NULL;
+ switch (ret) {
+ case STORAGE_ERROR_NONE:
+ err_msg = "STORAGE_ERROR_NONE";
+ break;
+ case STORAGE_ERROR_INVALID_PARAMETER:
+ err_msg = "STORAGE_ERROR_INVALID_PARAMETER";
+ break;
+ case STORAGE_ERROR_OUT_OF_MEMORY:
+ err_msg = "STORAGE_ERROR_OUT_OF_MEMORY";
+ break;
+ case STORAGE_ERROR_NOT_SUPPORTED:
+ err_msg = "STORAGE_ERROR_NOT_SUPPORTED";
+ break;
+ case STORAGE_ERROR_OPERATION_FAILED:
+ err_msg = "STORAGE_ERROR_OPERATION_FAILED";
+ break;
+ default:
+ err_msg = "Unknown Error";
+ break;
+ }
+
+ return err_msg;
+}
+
+
+
+/**
+* @function storage_device_supported_cb_p
+* @description callback for supported devices
+* @parameter storage_id : storage id, type : storage type, state : state, path : storage path, user_data : user data passed to callback
+* @return bool
+*/
+bool storage_device_supported_cb_p(int storage_id, storage_type_e type, storage_state_e state, const char *path, void *user_data)
+{
+ StorageID = 0;
+ storage_view *this = NULL;
+ this = (storage_view*) user_data;
+ if(type == STORAGE_TYPE_EXTERNAL)
+ {
+ StorageID=storage_id;
+ return false;
+ }
+ return true;
+}
+
+/**
+ * @function storage_view_add
+ * @since_tizen 3.0
+ * @description storage View Add
+ * @parameter Evas_Object*: Evas Object Pointer, tbt_info*: Tbt Info Pointer, Elm_Object_Item*: Elm Object Item Pointer
+ * @return storage_view*
+ */
+storage_view *storage_view_add(Evas_Object *navi, tbt_info *tbt_info, Elm_Object_Item *item)
+{
+ RETVM_IF(NULL == navi, NULL, "navi is null");
+ int ret;
+ storage_view *this = NULL;
+ this = calloc(1, sizeof(storage_view));
+ RETVM_IF(!this, NULL, "calloc failed");
+
+ this->view = calloc(1, sizeof(common_view));
+ RETVM_IF(!this->view, NULL, "calloc failed");
+
+ tbt_info->layout_group = "storage_viewer";
+ tbt_info->layout_file = get_edje_path("storage_viewer.edj");
+
+ common_view_add(navi, tbt_info, item, this->view, _app_destroy_cb, this);
+ RETVM_IF(NULL == this->view, NULL, "navi is null");
+
+ ret = storage_foreach_device_supported(storage_device_supported_cb_p, this);
+ RETVM_IF(ret != STORAGE_ERROR_NONE && ret != STORAGE_ERROR_NOT_SUPPORTED, NULL, "storage_foreach_device_supported failed : %s", get_storage_type_error(ret));
+ if(ret == STORAGE_ERROR_NOT_SUPPORTED)
+ {
+ is_not_supported = true;
+ Evas_Object *popup = ui_utils_popup_add(this->view->navi, "Message");
+ elm_object_text_set(popup, "Storage is not supported");
+ RETVM_IF(!this->view, NULL,"Storage is not supported");
+ }
+
+ ret = storage_set_state_changed_cb(StorageID, _storage_state_changed_cb, this);
+ RETVM_IF(ret != STORAGE_ERROR_NONE, NULL, "storage_set_state_changed_cb failed : %s", get_storage_type_error(ret));
+
+ this->info_label = ui_utils_label_add(this->view->layout, "Please Change SD Card state[Remove/Insert]");
+ elm_label_line_wrap_set(this->info_label, ELM_WRAP_WORD);
+
+ elm_object_part_content_set(this->view->layout, "info_text", this->info_label);
+
+ return this;
+}
+
+
+/**
+ * @function _app_destroy_cb
+ * @since_tizen 2.3
+ * @description App Destroy Cb
+ * @parameter void*: Void Pointer
+ * @return static void
+ */
+static void _app_destroy_cb(void* this)
+{
+
+ RETM_IF(NULL == this, "data is NULL");
+
+ storage_view *view = NULL;
+ view = (storage_view*)this;
+ RETM_IF(NULL == view, "view is NULL");
+
+ if(is_not_supported == true)
+ {
+ view->view->tbt_info->result = TBT_INFO_RESULT_NOT_SUPPORTED;
+ elm_genlist_item_update(view->view->item);
+ }
+
+ int ret = storage_unset_state_changed_cb( StorageID, _storage_state_changed_cb);
+ RETM_IF(ret != STORAGE_ERROR_NONE, "storage_unset_state_changed_cb fail > Error = %s", get_storage_type_error(ret));
+
+ SAFE_DELETE(view->view);
+ SAFE_DELETE(view);
+}
+
+
+/**
+ * @function storage_state_changed_cb
+ * @since_tizen 3.0
+ * @description storage Info Changed Cb
+ * @parameter int storage_id, storage_state_e state, void *user_data
+ * @return void
+ */
+static void _storage_state_changed_cb(int storage_id, storage_state_e state, void *user_data)
+{
+
+ RETM_IF(NULL == user_data, "user_data is null");
+ int ret;
+ storage_view *this = NULL;
+ this = (storage_view*) user_data;
+
+ DBG("value: %d", state);
+
+ switch (state)
+ {
+ case STORAGE_STATE_UNMOUNTABLE:
+ ui_utils_label_set_text(this->info_label, "STORAGE_STATE_UNMOUNTABLE", "left");
+ break;
+ case STORAGE_STATE_REMOVED:
+ ui_utils_label_set_text(this->info_label, "STORAGE_STATE_REMOVED", "left");
+ break;
+ case STORAGE_STATE_MOUNTED:
+ ui_utils_label_set_text(this->info_label, "STORAGE_STATE_MOUNTED", "left");
+ break;
+ case STORAGE_STATE_MOUNTED_READ_ONLY:
+ ui_utils_label_set_text(this->info_label, "STORAGE_STATE_MOUNTED_READ_ONLY", "left");
+ break;
+ default:
+ ui_utils_label_set_text(this->info_label, "unknown state", "left");
+ break;
+ }
+}
+
+#endif