/*
* setting
- * Copyright (c) 2012 Samsung Electronics Co., Ltd.
*
- * Licensed under the Flora License, Version 1.1 (the License);
+ * Copyright (c) 2000 - 2011 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://floralicense.org/license/
+ * 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,
+ * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
+ *
*/
-#include <setting-storage-main.h>
-#include <Ecore_X.h>
-#include <package-manager.h>
-#include <pkgmgr-info.h>
-#include <ail.h>
-
-static int setting_storage_main_create(void *cb);
-static int setting_storage_main_destroy(void *cb);
-static int setting_storage_main_update(void *cb);
-static int setting_storage_main_cleanup(void *cb);
-
-static void __setting_storage_main_click_softkey_back_cb(void *data, Evas_Object *obj,
- void *event_info);
-
-setting_view setting_view_storage_main = {
- .create = setting_storage_main_create,
- .destroy = setting_storage_main_destroy,
- .update = setting_storage_main_update,
- .cleanup = setting_storage_main_cleanup,
-};
-
-static Evas_Object *__setting_storage_main_image_add(Evas *evas, char *icon_path, int width, int height)
-{
- Evas_Object *image = NULL;
- image = evas_object_image_add(evas);
- evas_object_size_hint_weight_set(image, 0.0, EVAS_HINT_EXPAND);
- evas_object_image_load_size_set(image, width, height);
- evas_object_image_file_set(image, icon_path, NULL);
- evas_object_image_fill_set(image, 0, 0, width, height);
- evas_object_size_hint_min_set(image, width, height);
- evas_object_show(image);
-
- return image;
-}
-
-static char *__gl_text_get(void *data, Evas_Object *obj, const char *part)
-{
- retv_if(!data, NULL);
- Setting_GenGroupItem_Data *item_data = data;
-
- if (!safeStrCmp(part, "elm.text.1")) {
- return (char *)g_strdup(item_data->keyStr);
- }
- return NULL;
-}
-
-static Evas_Object *__gl_content_get(void *data, Evas_Object *obj, const char *part)
-{
- retv_if(!data, NULL);
- Setting_GenGroupItem_Data *item_data = data;
- SettingStorageUG *ad = (SettingStorageUG *) item_data->userdata;
-
- int width = SETTING_STORAGE_ICON_WIDTH;
- int height = SETTING_STORAGE_ICON_HEIGHT;
-
- app_device_orientation_e m = elm_win_rotation_get(ad->win_get);
- if(APP_DEVICE_ORIENTATION_90 == m || APP_DEVICE_ORIENTATION_270 == m) {
- width = SETTING_STORAGE_ICON_LANDSCAPE_WIDTH;
- } else {
- width = SETTING_STORAGE_ICON_WIDTH;
- }
- float temp_size = 0.0;
-
- /* use size (applications + picture/videos + audio + miscellaneous + available) as 100% */
- double total_size = ad->apps_status.dTotal + ad->pics_videos_status.dTotal +
- + ad->audio_status.dTotal +
- ad->others_status.dTotal + ad->internal_status.dAvail;
-
- if (!safeStrCmp(part, "elm.icon")){
- Evas_Object *status_box = NULL;
- status_box = elm_box_add(obj);
- retvm_if(status_box == NULL, NULL, "Cannot get box");
- item_data->eo_check = status_box;
- elm_box_horizontal_set(status_box, 1);
- evas_object_size_hint_align_set(status_box, 0.0, EVAS_HINT_FILL);
- evas_object_show(status_box);
-
- Evas *evas = evas_object_evas_get(obj);
-
- /* apps */
- unsigned int apps_size = 0;
- temp_size = ((float)ad->apps_status.dTotal / total_size) * width;
- if (temp_size < 1 && temp_size > 0) {
- apps_size = 1;
- } else {
- apps_size = (unsigned int)temp_size;
- }
- if (apps_size > 0) {
- Evas_Object *apps = __setting_storage_main_image_add(evas, SETTING_STORAGE_APPS_ICON_PATH, apps_size, height);
- elm_box_pack_end(status_box, apps);
- }
-
- /* pictures, videos */
- unsigned int pics_videos_size = 0;
- temp_size = ((float)ad->pics_videos_status.dTotal / total_size) * width;
- if (temp_size < 1 && temp_size > 0) {
- pics_videos_size = 1;
- } else {
- pics_videos_size = (unsigned int)temp_size;
- }
- if (pics_videos_size > 0) {
- Evas_Object *pics = __setting_storage_main_image_add(evas, SETTING_STORAGE_PICS_ICON_PATH, pics_videos_size, height);
- elm_box_pack_end(status_box, pics);
- }
-
- /* audio */
- unsigned int audio_size = 0;
- temp_size = ((float)ad->audio_status.dTotal / total_size) * width;
- if (temp_size < 1 && temp_size > 0) {
- audio_size = 1;
- } else {
- audio_size = (unsigned int)temp_size;
- }
- if (audio_size > 0) {
- Evas_Object *audio = __setting_storage_main_image_add(evas, SETTING_STORAGE_AUDIO_ICON_PATH, audio_size, height);
- elm_box_pack_end(status_box, audio);
- }
-
- /* Miscellaneous files */
- unsigned int others_size = 0;
- temp_size = ((float)ad->others_status.dTotal / total_size) * width;
- if (temp_size < 1 && temp_size > 0) {
- others_size = 1;
- } else {
- others_size = (unsigned int)temp_size;
- }
- if (others_size > 0) {
- Evas_Object *misc = __setting_storage_main_image_add(evas, SETTING_STORAGE_MISCES_ICON_PATH, others_size, height);
- elm_box_pack_end(status_box, misc);
- }
-
- /* available */
- unsigned int avail_size = 0;
- temp_size = ((float)ad->internal_status.dAvail / total_size) * width;
- if (temp_size < 1 && temp_size > 0) {
- avail_size = 1;
- } else {
- avail_size = (unsigned int)temp_size;
-
- int sum = apps_size + pics_videos_size + audio_size + others_size;
- if ((sum + avail_size) > width) {
- avail_size = width - sum;
- }
- }
- if (avail_size > 0) {
- Evas_Object *avail = __setting_storage_main_image_add(evas, SETTING_STORAGE_AVAIL_ICON_PATH, avail_size, height);
- elm_box_pack_end(status_box, avail);
- }
-
- return status_box;
- }
- return NULL;
-}
-
-static void __gl_del(void *data, Evas_Object *obj)
-{
- /* SETTING_TRACE_BEGIN; */
- Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *) data;
- if (item_data) {
- G_FREE(item_data->keyStr);
- FREE(item_data);
- }
-}
-
-static int __setting_storage_main_fs_stat(double *total, double *avail, const char *path)
-{
- SETTING_TRACE_BEGIN;
- setting_retvm_if(NULL == total || NULL == avail, SETTING_RETURN_FAIL, "Null output parameters");
-
- struct statvfs s;
-
- if (!statvfs(path, &s)) {
- SETTING_TRACE("f_bsize = %ld f_blocks = %ld f_bavail = %ld f_frsize = %ld",
- s.f_bsize, s.f_blocks, s.f_bavail, s.f_frsize);
- *total = (double)s.f_frsize * s.f_blocks;
- *avail = (double)s.f_bsize * s.f_bavail;
- } else {
- return SETTING_RETURN_FAIL;
- }
-
- return SETTING_RETURN_SUCCESS;
-}
-
-static int __setting_storage_status_size_transition(double size, char *size_desc)
-{
- //SETTING_TRACE_BEGIN;
- //SETTING_TRACE("size = %f", size);
- double tmp_size = 0.0;
- int ret = 0;
- if (size < SETTING_STORAGE_MEGABYTE_VALUE) { // size < 1MB: show x.xKB
- tmp_size = size / SETTING_STORAGE_KILOBYTE_VALUE;
- ret = snprintf(size_desc, SETTING_STORAGE_MAX_STR_LEN, "%4.2lf%s", tmp_size, "KB");
- retv_if(ret < 0, SETTING_RETURN_FAIL);
- } else if (size < SETTING_STORAGE_GIGABYTE_VALUE) { // size < 1GB: show x.xMB
- tmp_size = size / SETTING_STORAGE_MEGABYTE_VALUE;
- ret = snprintf(size_desc, SETTING_STORAGE_MAX_STR_LEN, "%4.2lf%s", tmp_size, "MB");
- retv_if(ret < 0, SETTING_RETURN_FAIL);
- } else { // 1G <= size: show x.xGB
- tmp_size = size / SETTING_STORAGE_GIGABYTE_VALUE;
- ret = snprintf(size_desc, SETTING_STORAGE_MAX_STR_LEN, "%4.2lf%s", tmp_size, "GB");
- retv_if(ret < 0, SETTING_RETURN_FAIL);
- }
-
- return SETTING_RETURN_SUCCESS;
-}
-
-
-static void __setting_storage_main_internal_storage_status_get(void *data)
-{
- SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *) data;
-
- double dTotal = 0.0;
- double dAvail = 0.0;
- int ret = SETTING_RETURN_SUCCESS;
- Setting_Storage_Status internal_status;
-
- ret = __setting_storage_main_fs_stat(&dTotal, &dAvail, SETTING_STORAGE_OPT_USR_PATH);
- setting_retm_if(ret == SETTING_RETURN_FAIL, "get opt status failed");
- internal_status.dTotal = dTotal;
- internal_status.dAvail = dAvail;
-
- ad->internal_status = internal_status;
-}
-
-static bool __setting_storage_main_media_item_cb(media_info_h media, void *data)
-{
- //SETTING_TRACE_BEGIN;
- setting_retvm_if(media == NULL, true, "media is NULL");
- setting_retvm_if(data == NULL, true, "Data parameter is NULL");
- double *total_size = (double *) data;
-
- unsigned long long size = 0;
-
- char *file_path = NULL;
- media_info_get_file_path(media, &file_path);
-
- if (!ecore_file_exists(file_path)) {
- FREE(file_path);
- return true;
- }
- FREE(file_path);
-
- media_info_get_size(media, &size);
- //SETTING_TRACE("size : [%lld]", size);
- *total_size += size;
-
- return true;
-}
-
-static double __setting_storage_main_pictures_videos_status_get()
-{
- SETTING_TRACE_BEGIN;
- double total_size = 0.0;
+#include <glib.h>
- int ret = MEDIA_CONTENT_ERROR_NONE;
- filter_h filter = NULL;
+#include <media_content.h>
- /*Set Filter*/
- char *condition = "(MEDIA_TYPE=0 OR MEDIA_TYPE=1) and MEDIA_PATH LIKE \'/opt/usr/%%\'"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
+#include "setting-common-general-func.h"
+#include "setting-storage-SD.h"
+#include "setting-storage-USB.h"
+#include "setting-storage-utils.h"
+#include "setting-storage-async-worker.h"
+#include "setting-storage-main.h"
- ret = media_filter_create(&filter);
- if(ret != MEDIA_CONTENT_ERROR_NONE) {
- SETTING_TRACE_ERROR("Fail to create filter");
- return total_size;
- }
+#define SETTING_STORAGE_PIE_RECT_WIDTH (300 * WIDGET_SCALE_FACTOR)
+#define SETTING_STORAGE_PIE_RECT_SIZE (300 * WIDGET_SCALE_FACTOR)
+//#define SETTING_STORAGE_PIE_CYCLE_SIZE (294 * WIDGET_SCALE_FACTOR)
+#define SETTING_STORAGE_PIE_CYCLE_SIZE (123 * WIDGET_SCALE_FACTOR)
+#define SETTING_STORAGE_ITEM_LIST_SIZE (180 * WIDGET_SCALE_FACTOR)
- ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
- if(ret != MEDIA_CONTENT_ERROR_NONE) {
- media_filter_destroy(filter);
- SETTING_TRACE_ERROR("Fail to set condition");
- return total_size;
- }
+#define SETTING_STORAGE_APPS_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_applications.png"
+#define SETTING_STORAGE_PICS_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_pictures.png"
+#define SETTING_STORAGE_AUDIO_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_Audio.png"
+#define SETTING_STORAGE_MISCES_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_miscellaneous_files.png"
+#define SETTING_STORAGE_AVAIL_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_available.png"
+#define SETTING_STORAGE_SYS_ICON_PATH SETTING_ICON_PATH"/A01-1_icon_color_system.png"
- ret = media_info_foreach_media_from_db(filter, __setting_storage_main_media_item_cb, &total_size);
- if(ret != MEDIA_CONTENT_ERROR_NONE) {
- media_filter_destroy(filter);
- SETTING_TRACE_ERROR("Fail to get media");
- return total_size;
- }
+const char *storageUg_MMC_stat = VCONFKEY_SYSMAN_MMC_STATUS;
+const char *storageUg_ENCRYPT_stat = VCONFKEY_SDE_CRYPTO_STATE;
- ret = media_filter_destroy(filter);
- if (ret != MEDIA_CONTENT_ERROR_NONE) {
- SETTING_TRACE_ERROR("destroy filter failed\n\n");
- return total_size;
- }
-
- return total_size;
-}
+static setting_view setting_view_storage_main;
-static double __setting_storage_main_audio_status_get()
+static inline void storageUg_main_pie_graph_cairo( Evas_Object *pie_image,
+ SettingStorageUG *ad)
{
- SETTING_TRACE_BEGIN;
-
- double total_size = 0.0;
+ cairo_t *cr;
+ double total_size;
+ int cairo_w, cairo_h;
+ double account_size = 0.0;
+ cairo_surface_t *cairo_surface;
+ double apps_sz = 0, pics_sz = 0, audio_size = 0, misces_sz = 0, internal_sz = 0, system_sz = 0;
- int ret = MEDIA_CONTENT_ERROR_NONE;
- filter_h filter = NULL;
+ ret_if(NULL == ad);
- /*Set Filter*/
- char *condition = "MEDIA_TYPE=3 and MEDIA_PATH LIKE \'/opt/usr/%%\'"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
-
- ret = media_filter_create(&filter);
- if(ret != MEDIA_CONTENT_ERROR_NONE) {
- SETTING_TRACE("Fail to create filter");
- return total_size;
- }
+ cairo_h = cairo_w = SETTING_STORAGE_PIE_CYCLE_SIZE;
- ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
- if(ret != MEDIA_CONTENT_ERROR_NONE) {
- media_filter_destroy(filter);
- SETTING_TRACE("Fail to set condition");
- return total_size;
- }
-
- ret = media_info_foreach_media_from_db(filter, __setting_storage_main_media_item_cb, &total_size);
- if(ret != MEDIA_CONTENT_ERROR_NONE) {
- media_filter_destroy(filter);
- SETTING_TRACE("Fail to get media");
- return total_size;
- }
+ total_size = ad->sz_inter_total;
- ret = media_filter_destroy(filter);
- if (ret != MEDIA_CONTENT_ERROR_NONE) {
- SETTING_TRACE_ERROR("destroy filter failed\n\n");
- return total_size;
- }
-
- return total_size;
-}
-
-static bool __setting_storage_main_other_item_cb(media_info_h media, void *data)
-{
- //SETTING_TRACE_BEGIN;
- setting_retvm_if(media == NULL, true, "media is NULL");
- setting_retvm_if(data == NULL, true, "Data parameter is NULL");
- double *total_size = (double *) data;
-
- unsigned long long size = 0;
-
- char *file_path = NULL;
- media_info_get_file_path(media, &file_path);
-
- if (!ecore_file_exists(file_path)) {
- FREE(file_path);
- return true;
- }
-
- if (!safeStrNCmp(file_path, PATH1, sizeof(PATH1)) ||
- !safeStrNCmp(file_path, PATH2, sizeof(PATH2)) ||
- !safeStrNCmp(file_path, PATH3, sizeof(PATH3)) ||
- !safeStrNCmp(file_path, PATH4, sizeof(PATH4)) ||
- !safeStrNCmp(file_path, PATH5, sizeof(PATH5)) ||
- !safeStrNCmp(file_path, PATH6, sizeof(PATH6)) ||
- !safeStrNCmp(file_path, PATH7, sizeof(PATH7)) ||
- !safeStrNCmp(file_path, PATH8, sizeof(PATH8)) ||
- !safeStrNCmp(file_path, PATH9, sizeof(PATH9)))
+ if (total_size == 0)
{
- FREE(file_path);
- return true;
- }
-
- media_info_get_size(media, &size);
- //SETTING_TRACE("size : [%lld]", size);
- *total_size += size;
- FREE(file_path);
- return true;
-}
-
-/**
- * Miscellaneous files is all directories files under /opt/usr/media/ except below default directories:
- * ++++++++++++++++++++++++++++++++++++++++++++++++
- * -sh-4.1# ls -all
- * total 56
- * drwxrwxrwx 11 app app 4096 Jan 4 12:42 .
- * drwxr-xr-x 20 root root 4096 Jan 7 10:09 ..
- * drwxr-xr-x 2 root root 4096 Jan 4 08:46 .tmp_download
- * drwxr-xr-x 2 app app 4096 Jan 4 08:47 .video-hub
- * drwxrwxrwx 2 app app 4096 Oct 5 2012 Camera
- * drwxrwxrwx 3 app app 4096 Jan 4 08:46 Downloads
- * drwxrwxrwx 2 app app 4096 Oct 5 2012 Images
- * drwxrwxrwx 2 app app 4096 Oct 5 2012 Others
- * drwxrwxrwx 3 app app 4096 Oct 5 2012 Sounds
- * drwxrwxrwx 2 app app 4096 Oct 5 2012 Videos
- * drwxrwxrwx 2 app app 16384 Oct 5 2012 lost+found
- * ++++++++++++++++++++++++++++++++++++++++++++++++
- */
-static double __setting_storage_main_miscellaneous_size_get()
-{
- SETTING_TRACE_BEGIN;
- double total_size = 0.0;
-
- int ret = MEDIA_CONTENT_ERROR_NONE;
- filter_h filter = NULL;
-
- /*Set Filter*/
- char *condition = "(MEDIA_TYPE=4) and MEDIA_PATH LIKE \'/opt/usr/media/%%\'";
-
- ret = media_filter_create(&filter);
- if(ret != MEDIA_CONTENT_ERROR_NONE) {
- SETTING_TRACE_ERROR("Fail to create filter");
- return total_size;
- }
-
- ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
- if(ret != MEDIA_CONTENT_ERROR_NONE) {
- media_filter_destroy(filter);
- SETTING_TRACE_ERROR("Fail to set condition");
- return total_size;
+ apps_sz = 0;
+ pics_sz = 0;
+ audio_size = 0;
+ misces_sz = 0;
+ internal_sz = 0;
}
+ else
+ {
+ /* system memory */
+ system_sz = ad->sz_sys / total_size;
+ if (system_sz > 1 || system_sz < 0)
+ system_sz = 1;
- ret = media_info_foreach_media_from_db(filter, __setting_storage_main_other_item_cb, &total_size);
- if(ret != MEDIA_CONTENT_ERROR_NONE) {
- media_filter_destroy(filter);
- SETTING_TRACE_ERROR("Fail to get media");
- return total_size;
- }
+ /* apps */
+ apps_sz = ad->sz_apps / total_size;
+ if (apps_sz > 1 || apps_sz < 0)
+ apps_sz = 1;
- ret = media_filter_destroy(filter);
- if (ret != MEDIA_CONTENT_ERROR_NONE) {
- SETTING_TRACE_ERROR("destroy filter failed");
- return total_size;
- }
+ /* pics */
+ pics_sz = ad->sz_pics_videos / total_size;
+ if (pics_sz > 1 || pics_sz < 0)
+ pics_sz = 1;
- return total_size;
-}
+ /* audio */
+ audio_size = ad->sz_audio / total_size;
+ if (audio_size > 1 || audio_size < 0)
+ audio_size = 1;
-static void __setting_storage_main_launch_ug_destroy_cb(ui_gadget_h ug, void *priv)
-{
- SETTING_TRACE_BEGIN;
- /* restore the '<-' button on the navigate bar */
- retm_if(priv == NULL, "priv is NULL");
- SettingStorageUG *ad = (SettingStorageUG *) priv;
- if (ug) {
- ug_destroy(ug);
- }
- Elm_Object_Item *navi_it = elm_naviframe_top_item_get(ad->navibar);
- retm_if(navi_it == NULL, "navi_it is NULL");
- Evas_Object *back_btn = elm_object_item_part_content_get(navi_it, "prev_btn");
+ /* Miscellaneous Files */
+ misces_sz = ad->sz_misces / total_size;
+ if (misces_sz > 1 || misces_sz < 0)
+ misces_sz = 1;
- if (back_btn != NULL) {
- elm_object_style_set(back_btn, NAVI_BACK_BUTTON_STYLE); /* take into effect */
+ /* internal */
+ internal_sz = ad->sz_inter_avail / total_size;
+ if (internal_sz > 1 || internal_sz < 0)
+ internal_sz = 1;
}
- setting_view_update(&setting_view_storage_main, ad);
-}
-
-static void __setting_storage_main_launch_ug_layout_cb(ui_gadget_h ug, enum ug_mode mode, void *priv)
-{
- SETTING_TRACE_BEGIN;
- retm_if(priv == NULL, "priv is NULL");
- SettingStorageUG *ad = (SettingStorageUG *) priv;
- Evas_Object *base = NULL;
- base = (Evas_Object *) ug_get_layout(ug);
- retm_if(base == NULL, "base is NULL");
-
- switch (mode) {
- case UG_MODE_FULLVIEW:
- evas_object_size_hint_weight_set(base, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- //elm_win_resize_object_add(ad->win_get, base);
- evas_object_show(base);
- break;
- default:
- /* do nothing */
- break;
+ if (ad->cr)
+ {
+ cairo_destroy(ad->cr);
+ ad->cr = NULL;
}
-}
-
-static void __setting_storage_main_launch_manage_app_ug(void *data)
-{
- SETTING_TRACE_BEGIN;
- /* error check */
- retm_if(data == NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *) data;
-
- service_h svc;
- if (service_create(&svc)) {
+ cairo_surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, cairo_w, cairo_h);
+ if (NULL == cairo_surface)
+ {
+ SETTING_TRACE_ERROR("cairo_image_surface_create() Fail");
return;
}
- service_add_extra_data(svc, "viewtype", "manage-applications");
+ cr = cairo_create(cairo_surface);
+ cairo_surface_destroy(cairo_surface);
+
+ //all, use avaliable color
+ cairo_set_line_width(cr, 4);
+ cairo_arc(cr, cairo_w/2, cairo_h/2, cairo_w/2, 0, 2*M_PI);
+ cairo_set_source_rgba(cr, 235/255., 235/255., 235/255., 1);
+ cairo_fill(cr);
+
+ //system memory
+ account_size = 0.75;
+ cairo_line_to(cr, cairo_w/2, cairo_h/2);
+ cairo_arc_negative(cr, cairo_w/2, cairo_h/2, cairo_w/2, account_size*2*M_PI,
+ (account_size-system_sz)*2*M_PI);
+ cairo_set_source_rgba(cr, 153/255., 66/255., 194/255., 1);
+ cairo_fill(cr);
+ account_size -= system_sz;
+
+ //app
+ cairo_line_to(cr, cairo_w/2, cairo_h/2);
+ cairo_arc_negative(cr, cairo_w/2, cairo_h/2, cairo_w/2, account_size*2*M_PI,
+ (account_size-apps_sz)*2*M_PI);
+ cairo_set_source_rgba(cr, 255/255., 189/255., 8/255., 1);
+ cairo_fill(cr);
+ account_size -= apps_sz;
+
+ //pic
+ cairo_line_to(cr, cairo_w/2, cairo_h/2);
+ cairo_arc_negative(cr, cairo_w/2, cairo_h/2, cairo_w/2, account_size*2*M_PI,
+ (account_size-pics_sz)*2*M_PI);
+ cairo_set_source_rgba(cr, 119/255., 222/255., 60/255., 1);
+ cairo_fill(cr);
+ account_size -= pics_sz;
+
+ //audio
+ cairo_line_to(cr, cairo_w/2, cairo_h/2);
+ cairo_arc_negative(cr, cairo_w/2, cairo_h/2, cairo_w/2, account_size*2*M_PI,
+ (account_size-audio_size)*2*M_PI);
+ cairo_set_source_rgba(cr, 28/255., 140/255., 252/255., 1);
+ cairo_fill(cr);
+ account_size -= audio_size;
+
+ //miscellaneous files
+ cairo_line_to(cr, cairo_w/2, cairo_h/2);
+ cairo_arc_negative(cr, cairo_w/2, cairo_h/2, cairo_w/2, account_size*2*M_PI,
+ (account_size-misces_sz)*2*M_PI);
+ cairo_set_source_rgba(cr, 52/255., 220/255., 250/255., 1);
+ cairo_fill(cr);
+ account_size -= misces_sz;
+
+ evas_object_image_size_set(pie_image, cairo_w, cairo_h);
+ evas_object_image_data_set(pie_image, cairo_image_surface_get_data(cairo_surface));
+ evas_object_image_fill_set(pie_image, 0, 0, cairo_w, cairo_h);
+ evas_object_resize(pie_image, cairo_w, cairo_h);
+ ad->cr = cr;
+}
+
+static inline void storageUg_main_part_pie_graph_set(Evas_Object *parent,
+ const char* part, void *data)
+{
+ Evas *evas;
+ int cairo_w, cairo_h;
+ Evas_Object *clip;
+ Evas_Object *pie_image;
+ SettingStorageUG *ad = data;
+
+ ret_if(parent == NULL);
+ ret_if(data == NULL);
+
+ cairo_h = cairo_w = SETTING_STORAGE_PIE_CYCLE_SIZE;
- struct ug_cbs *cbs = (struct ug_cbs *)calloc(1, sizeof(struct ug_cbs));
- if (!cbs) {
- SETTING_TRACE_ERROR("calloc failed");
- service_destroy(svc);
+ evas = evas_object_evas_get(parent);
+ if (NULL == evas)
+ {
+ SETTING_TRACE_ERROR("evas_object_evas_get() Fail");
return;
}
- cbs->layout_cb = __setting_storage_main_launch_ug_layout_cb;
- cbs->result_cb = NULL;
- cbs->destroy_cb = __setting_storage_main_launch_ug_destroy_cb;
- cbs->priv = (void *)ad;
-
- ui_gadget_h ug = ug_create(ad->ug, "setting-manage-applications-efl", UG_MODE_FULLVIEW, svc, cbs);
- if (NULL == ug) { /* error handling */
- SETTING_TRACE_ERROR("NULL == ug");
- }
- //bundle_free(b);
- service_destroy(svc);
- FREE(cbs);
-}
+ clip = evas_object_rectangle_add(evas);
+ evas_object_color_set(clip, 255, 255, 255, 255);
+ setting_resize_object(clip, cairo_w, cairo_h);
-static void __setting_storage_main_app_launch(char *app_name)
-{
- SETTING_TRACE_BEGIN;
- setting_retm_if(app_name == NULL, "app_name is NULL");
+ pie_image = evas_object_image_add(evas);
+ evas_object_color_set(pie_image, 255, 255, 255, 250);
+ evas_object_clip_set(pie_image, clip);
+ evas_object_show(pie_image);
+ elm_object_part_content_set(parent, part, pie_image);
- app_launcher(app_name);
+ storageUg_main_pie_graph_cairo(pie_image, ad);
}
-static void __setting_storage_main_Gendial_mouse_up_cb(void *data, Evas_Object *obj, void *event_info)
+Evas_Object* storageUg_main_pie_item_get_icon(void *data, Evas_Object *obj,
+ const char *part)
{
- SETTING_TRACE_BEGIN;
- /* error check */
- setting_retm_if(data == NULL, "Data parameter is NULL");
- Elm_Object_Item *item = (Elm_Object_Item *) event_info;
- elm_genlist_item_selected_set(item, 0);
- Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
-
- SettingStorageUG *ad = (SettingStorageUG *) data;
-
- SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
-
- if (isEmulBin()) {
- if (!safeStrCmp(SETTING_STORAGE_DEFAULT_STORAGE_STR, list_item->keyStr)) {
- setting_view_change(&setting_view_storage_main,
- &setting_view_storage_default_storage, ad);
- } else if (!safeStrCmp(SETTING_STORAGE_PICS_STR, list_item->keyStr)) {
- __setting_storage_main_app_launch("org.tizen.gallery");
- } else if (!safeStrCmp(SETTING_STORAGE_AUDIO_STR, list_item->keyStr)) {
- __setting_storage_main_app_launch("org.tizen.music-player");
- } else if (!safeStrCmp(SETTING_STORAGE_MISCES_STR, list_item->keyStr)) {
- setting_view_change(&setting_view_storage_main,
- &setting_view_storage_miscellaneous_files, ad);
- } else {
- // do nothing now
- }
- } else {
- if (!safeStrCmp("IDS_ST_BODY_APPLICATIONS", list_item->keyStr)) {
- __setting_storage_main_launch_manage_app_ug(ad);
- } else if (!safeStrCmp(SETTING_STORAGE_DEFAULT_STORAGE_STR, list_item->keyStr)) {
- setting_view_change(&setting_view_storage_main,
- &setting_view_storage_default_storage, ad);
- } else if (!safeStrCmp(SETTING_STORAGE_PICS_STR, list_item->keyStr)) {
- __setting_storage_main_app_launch("org.tizen.gallery");
- } else if (!safeStrCmp(SETTING_STORAGE_AUDIO_STR, list_item->keyStr)) {
- __setting_storage_main_app_launch("org.tizen.music-player");
- } else if (!safeStrCmp(SETTING_STORAGE_MISCES_STR, list_item->keyStr)) {
- setting_view_change(&setting_view_storage_main,
- &setting_view_storage_miscellaneous_files, ad);
- } else {
- // do nothing now
- }
- }
-}
+ int layout_w, layout_h;
+ double used_size;
+ Evas_Object *layout;
+ SettingStorageUG *ad = data;
+ char size_str[STORAGEUG_MAX_STR_LEN] = {0};
+ char final_str[STORAGEUG_MAX_STR_LEN] = {0};
-static int __setting_storage_main_check_mmc_status()
-{
- int ret = 0;
- struct stat parent_stat, mount_stat;
+ retv_if(NULL == obj, NULL);
+ retv_if(NULL == data, NULL);
+ retvm_if(safeStrCmp(part, "elm.icon"), NULL, "part(%s) Invaild", part);
- ret = stat(SETTING_STORAGE_MMC_PATH, &mount_stat);
- setting_retvm_if(ret != 0, -1, "get stat error : /opt/storage/sdcard");
+ layout_w = -1;
+ layout_h = SETTING_STORAGE_PIE_RECT_SIZE;
- ret = stat(SETTING_STORAGE_MMC_PARENT_PATH, &parent_stat);
- setting_retvm_if(ret != 0, -1, "get stat error : /opt/storage/sdcard/..");
+ layout = elm_layout_add(obj);
+ elm_layout_file_set(layout, SETTING_THEME_EDJ_NAME, "storage_pie");
- /* Does not mounted, same st_dev */
- if(mount_stat.st_dev == parent_stat.st_dev) {
- return 0;
- } else { /* MMC mounted, diff st_dev */
- return 1;
- }
-}
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, 0.0);
-static void __setting_storage_main_sd_card_info_get(char* szTotal, char* szAvail)
-{
- int mmc_status = __setting_storage_main_check_mmc_status();
- setting_retm_if(mmc_status == -1, "check mmc status failed");
+ //title
+ elm_object_part_text_set(layout, "storage_title.text",
+ _(STORAGEUG_STR_INTERNAL_STORAGE));
- /* Does not mounted, same st_dev */
- if (mmc_status == 0) {
- snprintf(szTotal, SETTING_STORAGE_MAX_STR_LEN, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
- snprintf(szAvail, SETTING_STORAGE_MAX_STR_LEN, "%s", _("IDS_ST_HEADER_UNAVAILABLE"));
- }
- /* MMC mounted, diff st_dev */
- else {
- double dTotal = 0.0;
- double dAvail = 0.0;
+ storageUg_size_to_str(ad->sz_inter_avail, size_str, sizeof(size_str));
+ snprintf(final_str, sizeof(final_str), "%s %s", size_str,
+ _(STORAGEUG_STR_AVAIL));
+ elm_object_part_text_set(layout, "storage_total.text", final_str);
- int ret = SETTING_RETURN_SUCCESS;
- ret = __setting_storage_main_fs_stat(&dTotal, &dAvail, SETTING_STORAGE_MMC_PATH);
- setting_retm_if(ret == SETTING_RETURN_FAIL, "get sd card size detail failed");
+ used_size = ad->sz_inter_total - ad->sz_inter_avail;
+ storageUg_size_to_str(used_size, size_str, sizeof(size_str));
+ snprintf(final_str, sizeof(final_str), "%s %s", size_str,
+ _(STORAGEUG_STR_USED));
+ elm_object_part_text_set(layout, "storage_used.text", final_str);
- ret = __setting_storage_status_size_transition(dTotal, szTotal);
- setting_retm_if(ret == SETTING_RETURN_FAIL, "__setting_storage_status_size_transition failed");
+ //pie
+ storageUg_main_part_pie_graph_set(layout, "pie_rect", ad);
+ setting_resize_object(layout, layout_w, layout_h);
+ evas_object_show(layout);
- ret = __setting_storage_status_size_transition(dAvail, szAvail);
- setting_retm_if(ret == SETTING_RETURN_FAIL, "__setting_storage_status_size_transition failed");
-
- SETTING_TRACE("Total[%s], Avail[%s]", szTotal, szAvail);
- }
+ return layout;
}
-static int __setting_storage_main_mmc_content_init(void *data, setting_storage_mmc_cb cb)
+Evas_Object* storageUg_color_item_content_get(void *data, Evas_Object *obj,
+ const char *part)
{
- SETTING_TRACE_BEGIN;
- setting_retvm_if(NULL == data, SETTING_RETURN_FAIL, "data is NULL");
- setting_retvm_if(NULL == cb, SETTING_RETURN_FAIL, "cb is NULL");
- SettingStorageUG *ad = (SettingStorageUG *)data;
- if (ad->mmc_content == NULL) {
- ad->mmc_content = (struct mmc_contents *)calloc(1, sizeof(struct mmc_contents));
- if (ad->mmc_content == NULL ) {
- SETTING_TRACE_ERROR("calloc failed");
- return SETTING_RETURN_FAIL;
+ ret_if(data == NULL);
+ Setting_GenGroupItem_Data *list_item = data;
+ int color = list_item->color;
+ if (!strcmp(part, "elm.icon.1")) {
+ Evas_Object *layout = elm_layout_add(obj);
+ elm_layout_file_set(layout, SETTING_THEME_EDJ_NAME, "storage_elem");
+
+ switch (color) {
+ case 1:
+ break;
+ case 2:
+ elm_object_signal_emit(layout, "elm,state,show,app", "elm");
+ break;
+ case 3:
+ elm_object_signal_emit(layout, "elm,state,show,pic", "elm");
+ break;
+ case 4:
+ elm_object_signal_emit(layout, "elm,state,show,audio", "elm");
+ break;
+ case 5:
+ elm_object_signal_emit(layout, "elm,state,show,misc", "elm");
+ break;
+ case 6:
+ elm_object_signal_emit(layout, "elm,state,show,avail", "elm");
+ break;
+ default:
+ break;
}
+ evas_object_show(layout);
+ return layout;
}
- ad->mmc_content->mmc_cb = cb;
- ad->mmc_content->user_data = ad;
- return SETTING_RETURN_SUCCESS;
-}
-
-#if SUPPORT_SD_CARD_FORMAT
-static void __setting_storage_status_sd_card_popup_format_response_cb(void *data,
- Evas_Object *obj, void *event_info)
-{
- SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *)data;
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
-
- char sd_total[SETTING_STORAGE_MAX_STR_LEN] = { 0, };
- char sd_available[SETTING_STORAGE_MAX_STR_LEN] = { 0, };
- __setting_storage_main_sd_card_info_get(sd_total, sd_available);
-
- if (ad->sd_total) {
- G_FREE(ad->sd_total->sub_desc);
- ad->sd_total->sub_desc = (char *)g_strdup(sd_total);
- elm_object_item_data_set(ad->sd_total->item, ad->sd_total);
- elm_genlist_item_update(ad->sd_total->item);
- }
- if (ad->sd_available) {
- G_FREE(ad->sd_available->sub_desc);
- ad->sd_available->sub_desc = (char *)g_strdup(sd_available);
- elm_object_item_data_set(ad->sd_available->item, ad->sd_available);
- elm_genlist_item_update(ad->sd_available->item);
- }
+ return NULL;
}
-#endif
-static void __setting_storage_status_sd_card_popup_response_cb(void *data,
- Evas_Object *obj, void *event_info)
+static void storageUg_main_sel(void *data, Evas_Object *obj, void *event_info)
{
- SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *)data;
+ SettingStorageUG *ad = data;
+ Elm_Object_Item *item = event_info;
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
-}
-
-static void __setting_storage_main_sd_card_mount_cb(int val, void *data)
-{
- SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *) data;
+ ret_if(data == NULL);
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
+ elm_genlist_item_selected_set(item, 0);
+ Setting_GenGroupItem_Data *list_item = elm_object_item_data_get(item);
- char *desc = NULL;
- if (val == SETTING_STORAGE_SYSMAN_REQUEST_SUCCESS) {
- /* do nothing */
- SETTING_TRACE("mount success");
- return;
- } else if (val == SETTING_STORAGE_SYSMAN_REQUEST_MOUNT_ALREADY) {
- desc = _(SETTING_STORAGE_SD_CARD_MOUNT_ALREADY_DESC);
- } else {
- desc = _("IDS_COM_POP_FAILED");
- }
+ SETTING_TRACE("clicking item[%s]", list_item->keyStr);
- ad->popup = setting_create_popup_without_btn(ad, ad->win_get, NULL, desc,
- __setting_storage_status_sd_card_popup_response_cb,
- SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
+ if (!safeStrCmp(STORAGEUG_STR_APPS, list_item->keyStr))
+ storageUg_manage_app_ug(ad);
+ else if (!safeStrCmp(STORAGEUG_STR_DEF_STORAGE, list_item->keyStr))
+ setting_view_change(ad->main_view, ad->default_view, ad);
+ else if (!safeStrCmp(STORAGEUG_STR_PICS, list_item->keyStr))
+ app_launcher("org.tizen.gallery");
+ else if (!safeStrCmp(STORAGEUG_STR_AUDIO, list_item->keyStr))
+ app_launcher("org.tizen.music-player-lite");
+ else if (!safeStrCmp(STORAGEUG_STR_MISCES, list_item->keyStr))
+ setting_view_change(ad->main_view, ad->misces_view, ad);
}
-static void __setting_storage_main_sd_card_unmount_cb(int val, void *data)
+static Setting_GenGroupItem_Data* storageUg_main_append_group_mid_item(
+ SettingStorageUG *ad, int color, const char *key_str, const char *sub_str)
{
- SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *) data;
-
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
-
- if (val == SETTING_STORAGE_SYSMAN_REQUEST_SUCCESS) {
- /* do nothing */
- SETTING_TRACE("unmount success");
- return;
+ Setting_GenGroupItem_Data *item_data = NULL;
+ item_data = (Setting_GenGroupItem_Data *) calloc(1, sizeof(Setting_GenGroupItem_Data));
+ if (item_data) {
+ item_data->userdata = ad;
+ item_data->keyStr = (char *)g_strdup(key_str);
+ item_data->sub_desc = (char *)g_strdup(sub_str);
+ item_data->color = color;
+ item_data->item = elm_genlist_item_append(ad->gl_main, &(ad->itc_color_item), item_data, NULL,
+ ELM_GENLIST_ITEM_NONE, storageUg_main_sel, ad);
} else {
- ad->popup = setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
- __setting_storage_status_sd_card_popup_response_cb,
- SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
+ SETTING_TRACE_ERROR("item_data is NULL");
}
-}
-
-static void __setting_storage_main_sd_card_mount_unmount(void *data)
-{
- SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *)data;
-
- int mmc_status = __setting_storage_main_check_mmc_status();
- setting_retm_if(mmc_status == -1, "check mmc status failed");
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
-
- /* Show progressbar popup */
- ad->popup = setting_create_popup_with_progressbar(ad, ad->win_get,
- "pending_list", NULL, NULL,
- __setting_storage_status_sd_card_popup_response_cb,
- SETTING_STORAGE_PROGRESSBAR_TIMEOUT, TRUE, TRUE);
-
- int ret = -1;
- /* Does not mounted, same st_dev */
- if (mmc_status == 0) {
- ret = __setting_storage_main_mmc_content_init(ad, __setting_storage_main_sd_card_mount_cb);
- if (ret == SETTING_RETURN_FAIL) {
- SETTING_TRACE_ERROR("__setting_storage_main_mmc_content_init fail");
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
- ad->popup = setting_create_popup_without_btn(ad, ad->win_get,
- NULL, _("IDS_COM_POP_FAILED"),
- __setting_storage_status_sd_card_popup_response_cb,
- SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
- return;
- }
- ret = sysman_request_mount_mmc(ad->mmc_content);
- if (ret == -1) {
- SETTING_TRACE_ERROR("fail to call sysman_request_mount_mmc");
- }
- }
- /* MMC mounted, diff st_dev */
- else {
- ret = __setting_storage_main_mmc_content_init(ad, __setting_storage_main_sd_card_unmount_cb);
- if (ret == SETTING_RETURN_FAIL) {
- SETTING_TRACE_ERROR("__setting_storage_main_sd_card_unmount_cb fail");
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
- ad->popup = setting_create_popup_without_btn(ad, ad->win_get,
- NULL, _("IDS_COM_POP_FAILED"),
- __setting_storage_status_sd_card_popup_response_cb,
- SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
- return;
- }
-
- ret = sysman_request_unmount_mmc(ad->mmc_content,
- MNT_FORCE); /* 1 = MNT_FORCE */
- if (ret == -1) {
- SETTING_TRACE_ERROR("fail to call sysman_request_unmount_mmc");
- }
- }
-
- /* if fail, popup failed info */
- if (ret == -1) {
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
- ad->popup = setting_create_popup_without_btn(ad, ad->win_get,
- NULL, _("IDS_COM_POP_FAILED"),
- __setting_storage_status_sd_card_popup_response_cb,
- SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
- }
+ return item_data;
}
-#if SUPPORT_SD_CARD_FORMAT
-static void __setting_storage_main_sd_card_scan_cb(media_content_error_e err, void *data)
+static inline void storageUg_main_dev_memory_detail(SettingStorageUG *ad)
{
- SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *) data;
+ char avail_desc[STORAGEUG_MAX_STR_LEN] = {0};
+ char total_desc[STORAGEUG_MAX_STR_LEN] = {0};
- SETTING_TRACE("scan_cb result = %d", err);
+ /* memory total */
+ storageUg_size_to_str(ad->sz_inter_total, total_desc, sizeof(total_desc));
+ ad->total_space = setting_create_Gendial_field_def(ad->gl_main, &itc_2text_2,
+ NULL, ad, SWALLOW_Type_INVALID, NULL, NULL, 0, STORAGEUG_STR_TOTAL,
+ total_desc, NULL);
+ ret_if(NULL == ad->total_space);
+ ad->total_space->userdata = ad;
+ ad->total_space->group_style = SETTING_GROUP_STYLE_TOP;
+ elm_genlist_item_select_mode_set(ad->total_space->item,
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
-
- if (err == MEDIA_CONTENT_ERROR_NONE) {
- ad->popup = setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_SUCCESS"),
- __setting_storage_status_sd_card_popup_format_response_cb,
- SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
+ /* system memory */
+ ad->sys_mem = storageUg_main_append_group_mid_item(ad,
+ 1, STORAGEUG_STR_SYS_MEM, STORAGEUG_STR_WAIT);
+ ret_if(NULL == ad->sys_mem);
+ elm_genlist_item_select_mode_set(ad->sys_mem->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- } else {
- ad->popup = setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
- __setting_storage_status_sd_card_popup_response_cb,
- SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
- }
-}
-
-static void __setting_storage_main_sd_card_format_cb(int val, void *data)
-{
- SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *) data;
-
- if (val == SETTING_STORAGE_SYSMAN_REQUEST_SUCCESS) {
- int ret = media_content_scan_folder(SETTING_STORAGE_MMC_PATH, true, __setting_storage_main_sd_card_scan_cb, ad);
-
- if(ret != MEDIA_CONTENT_ERROR_NONE) {
- SETTING_TRACE_ERROR("Fail to media_content_scan_file : %d", ret);
- return;
- }
- } else {
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
- ad->popup = setting_create_popup_without_btn(ad, ad->win_get, NULL, _("IDS_COM_POP_FAILED"),
- __setting_storage_status_sd_card_popup_response_cb,
- SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
- }
-}
+ /* Applications */
+ ad->apps = storageUg_main_append_group_mid_item(ad,
+ 2, STORAGEUG_STR_APPS, STORAGEUG_STR_WAIT);
+ ret_if(NULL == ad->apps);
-static void __setting_storage_main_sd_card_format_popup_yes(void *data)
-{
- SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *) data;
+ /* Pictures, Videos */
+ ad->pics_videos = storageUg_main_append_group_mid_item(ad,
+ 3, STORAGEUG_STR_PICS, STORAGEUG_STR_WAIT);
+ ret_if(NULL == ad->pics_videos);
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
+ /* Audio */
+ ad->audio = storageUg_main_append_group_mid_item(ad,
+ 4, STORAGEUG_STR_AUDIO, STORAGEUG_STR_WAIT);
+ ret_if(NULL == ad->audio);
- /* Show Formatting..... popup */
- ad->popup = setting_create_popup_with_progressbar(ad, ad->win_get,
- "pending_list", NULL,
- NULL, NULL,
- 0, TRUE, TRUE);
-
- int ret = __setting_storage_main_mmc_content_init(ad, __setting_storage_main_sd_card_format_cb);
- if (ret == SETTING_RETURN_FAIL) {
- SETTING_TRACE_ERROR("__setting_storage_main_mmc_content_init fail");
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
- ad->popup = setting_create_popup_without_btn(ad, ad->win_get,
- NULL, _("IDS_COM_POP_FAILED"),
- __setting_storage_status_sd_card_popup_response_cb,
- SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
- return;
- }
+ /* Miscellaneous files */
+ ad->misces = storageUg_main_append_group_mid_item(ad,
+ 5, STORAGEUG_STR_MISCES, STORAGEUG_STR_WAIT);
+ ret_if(NULL == ad->misces);
- ret = sysman_request_format_mmc(ad->mmc_content);
- /* if fail, destory popup */
- if (ret == -1) {
- SETTING_TRACE_ERROR("fail to call sysman_request_format_mmc");
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
- ad->popup = setting_create_popup_without_btn(ad, ad->win_get,
- NULL, _("IDS_COM_POP_FAILED"),
- __setting_storage_status_sd_card_popup_response_cb,
- SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
- }
+ /* Available */
+ storageUg_size_to_str(ad->sz_inter_avail, avail_desc, sizeof(avail_desc));
+ ad->avail = storageUg_main_append_group_mid_item(ad,
+ 6, STORAGEUG_STR_AVAIL, avail_desc);
+ ret_if(NULL == ad->avail);
+ elm_genlist_item_select_mode_set(ad->avail->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
}
-static void __setting_storage_main_sd_card_format_popup_no(void *data)
+static void storageUg_encrypt_change_cb(keynode_t *node, void *user_data)
{
- SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *) data;
+ char *str;
+ SettingStorageUG *ad = user_data;
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
-}
+ ret_if(NULL == user_data);
-static void __setting_storage_main_sd_card_ask_format_resp_cb(void *data, Evas_Object *obj, void *event_info)
-{
- SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- int response_type = btn_type(obj);
- if (POPUP_RESPONSE_OK == response_type) {
- __setting_storage_main_sd_card_format_popup_yes(data);
- } else if (POPUP_RESPONSE_CANCEL == response_type) {
- __setting_storage_main_sd_card_format_popup_no(data);
+ str = vconf_keynode_get_str(node);
+ if(!safeStrCmp(str, "encryption_start") || !safeStrCmp(str, "decryption_start"))
+ {
+ if (ad->sd_mount) setting_disable_genlist_item(ad->sd_mount->item);
+ if (ad->sd_format) setting_disable_genlist_item(ad->sd_format->item);
}
-}
-
-static void __setting_storage_main_sd_card_format_popup_create(void *data)
-{
- SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *) data;
-
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
+ else
+ {
+ if (ad->sd_mount) setting_enable_genlist_item(ad->sd_mount->item);
+ if (ad->sd_format) setting_enable_genlist_item(ad->sd_format->item);
}
-
- ad->popup = setting_create_popup_with_btn(ad, ad->win_get, NULL,
- _(SETTING_STORAGE_FORMAT_ASK_MSG),
- __setting_storage_main_sd_card_ask_format_resp_cb, 0,
- 2, _("IDS_COM_SK_YES"),_("IDS_COM_SK_NO"));
}
-#endif
-static void __setting_storage_main_mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
- void *event_info)
+static void storageUg_main_dev_memory_update(SettingStorageUG *ad)
{
- SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- setting_retm_if(event_info == NULL, "Invalid argument: event info is NULL");
+ char desc[STORAGEUG_MAX_STR_LEN] = {0};
- SettingStorageUG *ad = (SettingStorageUG *) data;
- Elm_Object_Item *item = (Elm_Object_Item *) event_info;
- elm_genlist_item_selected_set(item, 0);
- Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) elm_object_item_data_get(item);
+ ret_if(NULL == ad);
- SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
+ storageUg_get_internal_storage_status(&ad->sz_inter_total, &ad->sz_inter_avail);
- int db_status = 0;
- int ret = vconf_get_int(VCONFKEY_FILEMANAGER_DB_STATUS, &db_status);
- setting_retm_if(ret != 0, "fail to get vconf");
+ /* update internal total size */
+ storageUg_size_to_str(ad->sz_inter_total, desc, sizeof(desc));
+ G_FREE(ad->total_space->sub_desc);
+ ad->total_space->sub_desc = (char *)g_strdup(desc);
+ elm_genlist_item_fields_update(ad->total_space->item, "elm.text.sub.left.bottom",
+ ELM_GENLIST_ITEM_FIELD_TEXT);
- /* if SD card is busy, show popup */
- if (db_status != VCONFKEY_FILEMANAGER_DB_UPDATED) {
- if (ad->popup) {
- evas_object_del(ad->popup);
- ad->popup = NULL;
- }
- ad->popup = setting_create_popup_without_btn(ad, ad->win_get,
- NULL, _("IDS_ST_BODY_SORRY_YOUR_SD_CARD_IS_BUSY"),
- __setting_storage_status_sd_card_popup_response_cb,
- SETTING_STORAGE_POPUP_TIMER, FALSE, FALSE);
- return;
- }
+ /* update internal available size */
+ storageUg_size_to_str(ad->sz_inter_avail, desc, sizeof(desc));
+ G_FREE(ad->avail->sub_desc);
+ ad->avail->sub_desc = (char *)g_strdup(desc);
+ elm_genlist_item_fields_update(ad->avail->item, "elm.text.sub.left.bottom",
+ ELM_GENLIST_ITEM_FIELD_TEXT);
- if (list_item == ad->sd_mount) {
- __setting_storage_main_sd_card_mount_unmount(ad);
- }
-#if SUPPORT_SD_CARD_FORMAT
- else if (list_item == ad->sd_format) {
- __setting_storage_main_sd_card_format_popup_create(ad);
- }
-#endif
}
-static void __setting_storage_main_sd_card_info_append(void* data)
+static Eina_Bool storageUg_update_timer(void *data)
{
SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *) data;
+ SettingStorageUG *ad = data;
- /* remove the sd info items */
- if (ad->sd_mount) {
- elm_object_item_del(ad->sd_mount->item);
- ad->sd_mount = NULL;
- }
- if (ad->sd_total) {
- elm_object_item_del(ad->sd_total->item);
- ad->sd_total = NULL;
- }
- if (ad->sd_available) {
- elm_object_item_del(ad->sd_available->item);
- ad->sd_available = NULL;
- }
-#if SUPPORT_SD_CARD_FORMAT
- if (ad->sd_format) {
- elm_object_item_del(ad->sd_format->item);
- ad->sd_format = NULL;
- }
-#endif
- int mmc_mode = VCONFKEY_SYSMAN_MMC_REMOVED;
- int ret = vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_mode);
- setting_retm_if(ret != 0, "Get vconf failed");
-
- if (mmc_mode == VCONFKEY_SYSMAN_MMC_REMOVED) {
- ad->sd_mount = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_2), NULL,
- ad, SWALLOW_Type_INVALID, NULL,
- NULL, 0, SETTING_STORAGE_MOUNT_STR,
- _(SETTING_STORAGE_INSERT_STR),
- NULL);
- if (ad->sd_mount) {
- setting_disable_genlist_item(ad->sd_mount->item);
- }
- } else if (mmc_mode == VCONFKEY_SYSMAN_MMC_INSERTED_NOT_MOUNTED) {
- ad->sd_mount = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_2),
- __setting_storage_main_mouse_up_Gendial_list_cb,
- ad, SWALLOW_Type_INVALID, NULL,
- NULL, 0, SETTING_STORAGE_MOUNT_STR,
- _(SETTING_STORAGE_INSERT_STR),
- NULL);
- } else if (mmc_mode == VCONFKEY_SYSMAN_MMC_MOUNTED) {
- char sd_total[SETTING_STORAGE_MAX_STR_LEN] = { 0, };
- char sd_available[SETTING_STORAGE_MAX_STR_LEN] = { 0, };
- __setting_storage_main_sd_card_info_get(sd_total, sd_available);
-
- ad->sd_total = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_2), NULL,
- ad, SWALLOW_Type_INVALID, NULL,
- NULL, 0, "IDS_ST_BODY_TOTAL_SPACE",
- sd_total,
- NULL);
- if (ad->sd_total) {
- ad->sd_total->userdata = ad;
- elm_genlist_item_select_mode_set(ad->sd_total->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- } else {
- SETTING_TRACE_ERROR("ad->sd_total is NULL");
- }
+ retv_if(NULL == data, ECORE_CALLBACK_CANCEL);
- ad->sd_available = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_2), NULL,
- ad, SWALLOW_Type_INVALID, NULL,
- NULL, 0, "IDS_ST_BODY_AVAILABLE_SPACE",
- sd_available,
- NULL);
- if (ad->sd_available) {
- ad->sd_available->userdata = ad;
- elm_genlist_item_select_mode_set(ad->sd_available->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- } else {
- SETTING_TRACE_ERROR("ad->sd_available is NULL");
- }
-
- ad->sd_mount = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_1text),
- __setting_storage_main_mouse_up_Gendial_list_cb,
- ad, SWALLOW_Type_INVALID, NULL,
- NULL, 0, "IDS_ST_BODY_UNMOUNT_SD_CARD", NULL,
- NULL);
- if (ad->sd_mount) {
- ad->sd_mount->userdata = ad;
- } else {
- SETTING_TRACE_ERROR("ad->sd_mount is NULL");
- }
-
-#if SUPPORT_SD_CARD_FORMAT
- ad->sd_format = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_1text),
- __setting_storage_main_mouse_up_Gendial_list_cb,
- ad, SWALLOW_Type_INVALID, NULL,
- NULL, 0,
- "IDS_ST_BODY_FORMAT_SD_CARD",
- NULL, NULL);
- if (ad->sd_format) {
- ad->sd_format->userdata = ad;
- } else {
- SETTING_TRACE_ERROR("ad->sd_format is NULL");
- }
-#endif
- } else {
- SETTING_TRACE_ERROR("error status of sd card");
+ storageUg_main_dev_memory_update(ad);
+ SETTING_TRACE_DEBUG("ad->misces_view->is_create:%d",ad->misces_view->is_create);
+ if (ad->misces_view->is_create){
+ setting_view_update(ad->misces_view, ad);
}
+ if (ad->size_worker)
+ storageUg_stop_async_worker(ad->size_worker);
+ ad->size_worker = storageUg_start_async_worker(storageUg_get_internal_detail,
+ storageUg_get_internal_detail_cb, ad);
- Elm_Object_Item *item = NULL;
- item = elm_genlist_item_append(ad->genlist, &itc_bottom_seperator, NULL, NULL,
- ELM_GENLIST_ITEM_NONE, NULL, NULL);
- elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
-}
-
-static void __setting_storage_vconf_change_cb(keynode_t *key, void *data)
-{
- SETTING_TRACE_BEGIN;
- setting_retm_if(NULL == key, "key is NULL");
- setting_retm_if(NULL == data, "data is NULL");
- SettingStorageUG *ad = (SettingStorageUG *)data;
- int status = vconf_keynode_get_int(key);
- char *vconf_name = vconf_keynode_get_name(key);
-
- if (!safeStrCmp(vconf_name, VCONFKEY_SYSMAN_MMC_STATUS)) {
- SETTING_TRACE("status:%d", status);
- /* remove last item -> seperator */
- Elm_Object_Item *last_item = NULL;
- last_item = elm_genlist_last_item_get(ad->genlist);
- if (last_item) {
- elm_object_item_del(last_item);
- }
- __setting_storage_main_sd_card_info_append(ad);
- }
-}
-static void __setting_storage_main_genlist_update(Setting_GenGroupItem_Data *data, Setting_Storage_Status status)
-{
- //SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *) data;
-
- char desc[SETTING_STORAGE_MAX_STR_LEN + 1] = {0,};
- int ret = __setting_storage_status_size_transition(status.dTotal, desc);
- setting_retm_if(ret == SETTING_RETURN_FAIL, "failed to transform")
-
- G_FREE(item_data->sub_desc);
- item_data->sub_desc = (char *)g_strdup(desc);
- elm_object_item_data_set(item_data->item, item_data);
- elm_genlist_item_update(item_data->item);
+ ad->update_timer = NULL;
+ SETTING_TRACE_END;
+ return ECORE_CALLBACK_CANCEL;
}
-static ail_cb_ret_e __setting_storage_main_appinfo_func_cb(const ail_appinfo_h ail_info, void *data)
+static void storageUg_main_update_media_data(SettingStorageUG *ad)
{
- Eina_List **apps_list = (Eina_List **) data;
-
- char *pkg_name = NULL;
- char *pkg_type = NULL;
-
- ail_appinfo_get_str(ail_info, AIL_PROP_PACKAGE_STR, &pkg_name);
- setting_retvm_if(pkg_name == NULL, AIL_CB_RET_CONTINUE, "get pkg_name failed");
+ ret_if(NULL == ad);
- ail_appinfo_get_str(ail_info, AIL_PROP_X_SLP_PACKAGETYPE_STR, &pkg_type);
- setting_retvm_if(pkg_type == NULL, AIL_CB_RET_CONTINUE, "get pkg_type failed");
-
- App_Info *app_info = (App_Info*)calloc(1, sizeof(App_Info));
- setting_retvm_if(app_info == NULL, AIL_CB_RET_CONTINUE, "failed to calloc");
-
- app_info->pkg_name = (char *)g_strdup(pkg_name);
- app_info->pkg_type = (char *)g_strdup(pkg_type);
- *apps_list = eina_list_append(*apps_list, app_info);
- return AIL_CB_RET_CONTINUE;
-}
-
-void __setting_storage_pkg_list_cb (const pkgmgrinfo_pkginfo_h handle, void *data)
-{
- SETTING_TRACE_BEGIN;
- setting_retvm_if(data == NULL, 0.0, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *)data;
-
- int ret = -1;
- int size = 0;
- char *pkgid;
- ret = pkgmgrinfo_pkginfo_get_pkgid(handle, &pkgid);
- if(ret < 0) {
- SETTING_TRACE_ERROR("pkgmgrinfo_pkginfo_get_pkgid() failed");
- return;
+ if (ad->update_timer){
+ ecore_timer_del(ad->update_timer);
+ ad->update_timer = NULL;
}
- ret = pkgmgrinfo_pkginfo_get_total_size(handle, &size);
- if(ret < 0) {
- SETTING_TRACE_ERROR("pkgmgrinfo_pkginfo_get_total_size() failed");
- return;
- }
- SETTING_TRACE("pkg id = %s", pkgid);
- SETTING_TRACE("app size = %d", size);
- ad->total_size += size;
-}
-static double __setting_storage_main_applications_status_get(void *data)
-{
- SETTING_TRACE_BEGIN;
- setting_retvm_if(data == NULL, 0.0, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *)data;
-
- ad->total_size = 0.0;
- int ret = -1;
- ret = pkgmgrinfo_pkginfo_get_list(__setting_storage_pkg_list_cb, data);
- if(ret < 0) {
- SETTING_TRACE_ERROR("pkgmgrinfo_pkginfo_get_list() failed");
- return 0;
- }
- SETTING_TRACE("ad->total_size = %f", ad->total_size);
- return ad->total_size;
+ ad->update_timer = ecore_timer_add(0.5,storageUg_update_timer, ad);
}
-void __setting_storage_main_pipe_cb(void *data, void *buffer, unsigned int nbyte)
+static void storageUg_media_filesys_changed_cb(
+ media_content_error_e error,
+ int pid,
+ media_content_db_update_item_type_e update_item,
+ media_content_db_update_type_e update_type,
+ media_content_type_e media_type,
+ char *uuid,
+ char *path,
+ char *mime_type,
+ void *user_data)
{
SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- setting_retm_if(buffer == NULL, "buffer parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *)data;
+ SettingStorageUG *ad = user_data;
- Update_Info *update_info = (Update_Info *) buffer;
+ ret_if(user_data == NULL);
- SETTING_TRACE("update_info : %d", update_info->type);
-
- switch (update_info->type) {
- case SETTING_STORAGE_APPLICATIONS:
- {
- ad->apps_status.dTotal = update_info->total_size;
- __setting_storage_main_genlist_update(ad->apps, ad->apps_status);
- }
- break;
- case SETTING_STORAGE_PICTURES_VIDEO:
- {
- ad->pics_videos_status.dTotal = update_info->total_size;
- __setting_storage_main_genlist_update(ad->pics_videos, ad->pics_videos_status);
- }
- break;
- case SETTING_STORAGE_AUDIO:
- {
- ad->audio_status.dTotal = update_info->total_size;
- __setting_storage_main_genlist_update(ad->audio, ad->audio_status);
- }
- break;
- case SETTING_STORAGE_MISCELLANEOUS:
- {
- ad->others_status.dTotal = update_info->total_size;
- __setting_storage_main_genlist_update(ad->others, ad->others_status);
- }
- break;
- default:
- /* do nothing*/
- SETTING_TRACE_ERROR("wrong update type");
- break;
- }
-
- __setting_storage_main_genlist_update(ad->internal, ad->internal_status);
+ storageUg_main_update_media_data(ad);
SETTING_TRACE_END;
}
-static void *__setting_storage_main_thread_start_routine(void *data)
+static Eina_Bool storageUg_main_back_cb(void *data, Elm_Object_Item *it)
{
- SETTING_TRACE("==== sub thread id = %d =====", (int)pthread_self());
SETTING_TRACE_BEGIN;
- setting_retvm_if(data == NULL, NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *)data;
-
- //Ecore_Pipe *pipe = ad->pipe;
- update_type type = SETTING_STORAGE_PICTURES_VIDEO;
- while (1) {
- pthread_mutex_lock(&ad->update_mutex);
- while (ad->type == SETTING_STORAGE_SLEEP) {
- /* wait to be waked up*/
- pthread_cond_wait(&ad->wait_cond, &ad->update_mutex);
- }
- type = ad->type;
- pthread_mutex_unlock(&ad->update_mutex);
+ SettingStorageUG *ad = data;
- SETTING_TRACE("thread start to work, update type = %d", type);
+ retv_if(data == NULL, EINA_TRUE);
- int exit_flag = 0;
+ if (ad->update_timer) {
+ ecore_timer_del(ad->update_timer);
+ ad->update_timer = NULL;
+ }
- pthread_mutex_lock(&ad->exit_mutex);
- exit_flag = ad->exit_flag;
- pthread_mutex_unlock(&ad->exit_mutex);
-
- if (exit_flag == 1) {
- SETTING_TRACE("exit_flag is 1");
- break;
- }
-
- if (type >= SETTING_STORAGE_MAX) {
- SETTING_TRACE("work is done, thread will sleep");
- pthread_mutex_lock(&ad->update_mutex);
- ad->type = SETTING_STORAGE_SLEEP;
- pthread_mutex_unlock(&ad->update_mutex);
- continue;
- }
-
- switch (type) {
- case SETTING_STORAGE_PICTURES_VIDEO:
- {
- /* get pictures and videos info */
- double pics_videos_size = __setting_storage_main_pictures_videos_status_get();
- SETTING_TRACE("pics_videos_size = %f", pics_videos_size);
-
- Update_Info pics_videos_info;
- memset(&pics_videos_info, 0, sizeof(Update_Info));
- pics_videos_info.type = SETTING_STORAGE_PICTURES_VIDEO;
- pics_videos_info.total_size = pics_videos_size;
- if (ad->pipe)
- ecore_pipe_write(ad->pipe, &pics_videos_info, sizeof(pics_videos_info));
- }
- break;
- case SETTING_STORAGE_AUDIO:
- {
- /* get audio info */
- double audio_size = __setting_storage_main_audio_status_get();
- SETTING_TRACE("audio_size = %f", audio_size);
-
- Update_Info audio_info;
- memset(&audio_info, 0, sizeof(Update_Info));
- audio_info.type = SETTING_STORAGE_AUDIO;
- audio_info.total_size = audio_size;
- if (ad->pipe)
- ecore_pipe_write(ad->pipe, &audio_info, sizeof(audio_info));
- }
- break;
- case SETTING_STORAGE_MISCELLANEOUS:
- {
- /* get miscellaneous files info */
- double misc_size = __setting_storage_main_miscellaneous_size_get();
- SETTING_TRACE("misc_size = %f", misc_size);
-
- Update_Info misc_info;
- memset(&misc_info, 0, sizeof(Update_Info));
- misc_info.type = SETTING_STORAGE_MISCELLANEOUS;
- misc_info.total_size = misc_size;
- if (ad->pipe)
- ecore_pipe_write(ad->pipe, &misc_info, sizeof(misc_info));
- }
- break;
- case SETTING_STORAGE_APPLICATIONS:
- {
- /* get apps info */
- double apps_size = __setting_storage_main_applications_status_get(ad);
- SETTING_TRACE("apps_size = %f", apps_size);
-
- Update_Info apps_info;
- memset(&apps_info, 0, sizeof(Update_Info));
- apps_info.type = SETTING_STORAGE_APPLICATIONS;
- apps_info.total_size = apps_size;
- if (ad->pipe)
- ecore_pipe_write(ad->pipe, &apps_info, sizeof(apps_info));
- }
- break;
- default:
+ if (ad->size_worker)
+ {
+ if (storageUg_worker_is_running(ad->size_worker))
{
- SETTING_TRACE("type = %d", type);
- break;
- }
+ SETTING_TRACE("DO NOT Close Storage UI!!!!! <<------------");
+ return EINA_FALSE;
}
-
- pthread_mutex_lock(&ad->update_mutex);
- ad->type++;
- SETTING_TRACE("ad->type = %d", ad->type);
- pthread_mutex_unlock(&ad->update_mutex);
+ } else {
+ SETTING_TRACE("ad->size_worker is NULL <<--------");
}
+
+ ug_destroy_me(ad->ug);
SETTING_TRACE_END;
- pthread_exit((void *) 0);
- ad->tid = 0;
+ return EINA_TRUE;
}
-static void __setting_storage_main_init(void *data)
+static inline Evas_Object* storageUg_main_genlist(Evas_Object *parent)
{
- SETTING_TRACE_BEGIN;
- setting_retm_if(data == NULL, "Data parameter is NULL");
- SettingStorageUG *ad = (SettingStorageUG *)data;
-
- pthread_mutex_init(&ad->exit_mutex, NULL);
- pthread_mutex_init(&ad->update_mutex, NULL);
- pthread_cond_init(&ad->wait_cond, NULL);
-
- pthread_mutex_lock(&ad->exit_mutex);
- ad->exit_flag = EINA_FALSE;
- pthread_mutex_unlock(&ad->exit_mutex);
+ Evas_Object *genlist;
- pthread_mutex_lock(&ad->update_mutex);
- ad->type = SETTING_STORAGE_PICTURES_VIDEO;
- pthread_mutex_unlock(&ad->update_mutex);
-
- ad->internal_status.dAvail = 0.0;
- ad->internal_status.dTotal= 0.0;
-
- ad->apps_status.dAvail = 0.0;
- ad->apps_status.dTotal= 0.0;
+ genlist = elm_genlist_add(parent);
+ if (NULL == genlist)
+ {
+ SETTING_TRACE_ERROR("elm_genlist_add() Fail");
+ return NULL;
+ }
- ad->pics_videos_status.dAvail = 0.0;
- ad->pics_videos_status.dTotal= 0.0;
+ //elm_object_style_set(genlist, "dialogue");
+ elm_genlist_block_count_set(genlist, 3);
+ elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
+ evas_object_show(genlist);
- ad->audio_status.dAvail = 0.0;
- ad->audio_status.dTotal= 0.0;
+ evas_object_smart_callback_add(genlist, "realized", __gl_realized_cb, NULL);
- ad->others_status.dAvail = 0.0;
- ad->others_status.dTotal= 0.0;
+ return genlist;
}
-/* ***************************************************
- *
- *basic func
- *
- ***************************************************/
-static int setting_storage_main_create(void *cb)
+static int storageUg_main_create(void *data)
{
- SETTING_TRACE_BEGIN;
- /* error check */
- retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+ int ret;
+ Elm_Object_Item *pie_item;
+ SettingStorageUG *ad = data;
- SettingStorageUG *ad = (SettingStorageUG *) cb;
+ bindtextdomain(SETTING_PACKAGE, SETTING_LOCALEDIR);
- __setting_storage_main_init(ad);
+ retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+ retv_if(NULL == ad->lo_parent, SETTING_DRAW_ERR_FAIL_LOAD_EDJ);
- int ret = SETTING_RETURN_SUCCESS;
+ ad->gl_main = storageUg_main_genlist(ad->navi);
+ setting_create_navi_bar_buttons(STORAGEUG_STR_STORAGE, STORAGEUG_STR_BACK, NULL,
+ NULL, (setting_call_back_func)storageUg_main_back_cb, NULL, NULL, ad,
+ ad->gl_main, ad->navi, NULL);
- retvm_if(ad->win_main_layout == NULL, SETTING_DRAW_ERR_FAIL_LOAD_EDJ,
- "win_main_layout is NULL");
+ storageUg_get_internal_storage_status(&ad->sz_inter_total, &ad->sz_inter_avail);
- ad->ly_main =
- setting_create_layout_navi_bar_genlist(ad->win_main_layout,
- ad->win_get,
- _(KeyStr_Storage),
- _("IDS_COM_BODY_BACK"),
- NULL,
- __setting_storage_main_click_softkey_back_cb,
- NULL,
- ad, &ad->genlist, &ad->navibar);
+ /* storage pie view */
+ pie_item = elm_genlist_item_append(ad->gl_main, &(ad->itc_pie),
+ ad, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(pie_item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ ad->pie_it = pie_item;
- ad->itc_2text_1icon_4.item_style = "dialogue/2text.1icon.4";
- ad->itc_2text_1icon_4.func.text_get = __gl_text_get;
- ad->itc_2text_1icon_4.func.content_get = __gl_content_get;
- ad->itc_2text_1icon_4.func.state_get = NULL;
- ad->itc_2text_1icon_4.func.del = __gl_del;
+ storageUg_main_dev_memory_detail(ad);
- __setting_storage_main_internal_storage_status_get(ad);
+ if (ad->size_worker)
+ storageUg_stop_async_worker(ad->size_worker);
+ ad->size_worker = storageUg_start_async_worker(storageUg_get_internal_detail,
+ storageUg_get_internal_detail_cb, ad);
- Elm_Object_Item *item = NULL;
+ storageUG_update_apps_info(ad);
- bool is_emulator = isEmulBin();
+ storageUg_append_separator(ad->gl_main, ad);
+ if (!isEmulBin())
+ {
+ ret = vconf_get_int(storageUg_MMC_stat, &ad->mmc_status);
+ retvm_if(ret, SETTING_RETURN_FAIL, "vconf_get_int(%s) Fail", storageUg_MMC_stat);
- if (!is_emulator) {
- item = elm_genlist_item_append(ad->genlist, &itc_seperator, NULL, NULL,
- ELM_GENLIST_ITEM_NONE, NULL, NULL);
- elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ storageUg_append_separator(ad->gl_main, ad);
/* Default storage */
- setting_create_Gendial_field_def(ad->genlist, &(ad->itc_1text),
- __setting_storage_main_Gendial_mouse_up_cb,
- ad, SWALLOW_Type_INVALID, NULL, NULL,
- 0, SETTING_STORAGE_DEFAULT_STORAGE_STR,
- NULL, NULL);
- }
+ setting_create_Gendial_field_def(ad->gl_main, &itc_1text,
+ storageUg_main_sel, ad, SWALLOW_Type_INVALID, NULL, NULL, 0,
+ STORAGEUG_STR_DEF_STORAGE, NULL, NULL);
- setting_create_Gendial_field_titleItem(ad->genlist, &(ad->itc_group_item),
- SETTING_STORAGE_INTERNAL_STORAGE_STR,
- NULL);
-
- /* Total space */
- char total_desc[SETTING_STORAGE_MAX_STR_LEN + 1] = {0,};
- ret = __setting_storage_status_size_transition(ad->internal_status.dTotal, total_desc);
- setting_retvm_if(ret == SETTING_RETURN_FAIL, SETTING_RETURN_FAIL, "failed to transform")
-
- /* status */
- ad->internal = (Setting_GenGroupItem_Data *) calloc(1, sizeof(Setting_GenGroupItem_Data));
- setting_retvm_if(!ad->internal, SETTING_RETURN_FAIL, "calloc failed");
-
- if (ad->internal) {
- ad->internal->userdata = ad;
- ad->internal->keyStr = (char *)g_strdup(total_desc);
- ad->internal->item = elm_genlist_item_append(ad->genlist, &(ad->itc_2text_1icon_4), ad->internal, NULL,
- ELM_GENLIST_ITEM_NONE, NULL, NULL);
- elm_genlist_item_select_mode_set(ad->internal->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- } else {
- SETTING_TRACE_ERROR("ad->internal is NULL");
- return SETTING_RETURN_FAIL;
- }
+ storageUg_append_separator(ad->gl_main, ad);
- /* Applications */
- ad->apps = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_1icon_3),
- __setting_storage_main_Gendial_mouse_up_cb,
- ad, SWALLOW_Type_INVALID, SETTING_STORAGE_APPS_ICON_PATH,
- NULL, 0, "IDS_ST_BODY_APPLICATIONS",
- _("IDS_ST_HEADER_PLEASE_WAIT"), NULL);
- if (ad->apps) {
- ad->apps->userdata = ad;
- if (is_emulator) {
- elm_genlist_item_select_mode_set(ad->apps->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- }
- } else {
- SETTING_TRACE_ERROR("ad->apps is NULL");
- return SETTING_RETURN_FAIL;
- }
+ /* SD */
+ ad->sd_card = setting_create_Gendial_field_titleItem(ad->gl_main,
+ &itc_group_item, STORAGEUG_STR_SD_CARD, NULL);
+ storageUg_main_append_SD_info(ad);
- /* Pictures, Videos */
- ad->pics_videos = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_1icon_3),
- __setting_storage_main_Gendial_mouse_up_cb,
- ad, SWALLOW_Type_INVALID, SETTING_STORAGE_PICS_ICON_PATH,
- NULL, 0, SETTING_STORAGE_PICS_STR,
- _("IDS_ST_HEADER_PLEASE_WAIT"), NULL);
- if (ad->pics_videos) {
- ad->pics_videos->userdata = ad;
- if (is_emulator) {
- elm_genlist_item_select_mode_set(ad->pics_videos->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- }
- } else {
- SETTING_TRACE_ERROR("ad->pics_videos is NULL");
- return SETTING_RETURN_FAIL;
- }
+ storageUg_append_separator(ad->gl_main, ad);
- /* Audio */
- ad->audio = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_1icon_3),
- __setting_storage_main_Gendial_mouse_up_cb,
- ad, SWALLOW_Type_INVALID, SETTING_STORAGE_AUDIO_ICON_PATH,
- NULL, 0, SETTING_STORAGE_AUDIO_STR,
- _("IDS_ST_HEADER_PLEASE_WAIT"), NULL);
- if (ad->audio) {
- ad->audio->userdata = ad;
-
- if (is_emulator) {
- elm_genlist_item_select_mode_set(ad->audio->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- }
- } else {
- SETTING_TRACE_ERROR("ad->audio is NULL");
- return SETTING_RETURN_FAIL;
- }
+ ret = vconf_notify_key_changed(storageUg_MMC_stat, storageUg_SD_change_cb, ad);
+ warn_if(ret != 0, "vconf_notify_key_changed(%s) Fail", storageUg_MMC_stat);
- /* Miscellaneous files */
- ad->others = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_1icon_3),
- __setting_storage_main_Gendial_mouse_up_cb,
- ad, SWALLOW_Type_INVALID, SETTING_STORAGE_MISCES_ICON_PATH,
- NULL, 0, SETTING_STORAGE_MISCES_STR,
- _("IDS_ST_HEADER_PLEASE_WAIT"), NULL);
- if (ad->others) {
- ad->others->userdata = ad;
- } else {
- SETTING_TRACE_ERROR("ad->others is NULL");
- return SETTING_RETURN_FAIL;
+ ret = vconf_notify_key_changed(storageUg_ENCRYPT_stat,
+ storageUg_encrypt_change_cb, ad);
+ warn_if(ret != 0, "vconf_notify_key_changed(%s) Fail", storageUg_ENCRYPT_stat);
}
- /* Available */
- char avail_desc[SETTING_STORAGE_MAX_STR_LEN + 1] = {0,};
- ret = __setting_storage_status_size_transition(ad->internal_status.dAvail, avail_desc);
- setting_retvm_if(ret == SETTING_RETURN_FAIL, SETTING_RETURN_FAIL, "failed to transform")
-
- ad->avail = setting_create_Gendial_field_def(ad->genlist, &(ad->itc_2text_1icon_3), NULL,
- ad, SWALLOW_Type_INVALID, SETTING_STORAGE_AVAIL_ICON_PATH,
- NULL, 0, SETTING_STORAGE_AVAIL_STR,
- avail_desc, NULL);
- if (ad->avail) {
- ad->avail->userdata = ad;
- elm_genlist_item_select_mode_set(ad->avail->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- } else {
- SETTING_TRACE_ERROR("ad->avail is NULL");
- return SETTING_RETURN_FAIL;
- }
+ /* usb otg storage*/
+ ad->usb_otg_status = SETTING_STORAGE_USB_OTG_REMOVE;
- if (!is_emulator) {
-#if DISABLED_CODE
- /* Format USB storage */
- setting_create_Gendial_field_def(ad->genlist, &(ad->itc_1text), NULL,
- ad, SWALLOW_Type_INVALID, NULL,
- NULL, 0,
- SETTING_STORAGE_FORMAT_STR,
- NULL, NULL);
-
- setting_create_Gendial_field_def(ad->genlist, &(ad->itc_bg_1icon), NULL,
- ad, SWALLOW_Type_LAYOUT_SPECIALIZTION_X,
- NULL, NULL, 0, SETTING_STORAGE_FORMAT_DESC_STR, NULL,
- NULL);
-#endif
-
- /* SD card info */
- setting_create_Gendial_field_titleItem(ad->genlist, &(ad->itc_group_item),
- "IDS_ST_BODY_SD_CARD", NULL);
- __setting_storage_main_sd_card_info_append(ad);
-
- ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_MMC_STATUS,
- __setting_storage_vconf_change_cb, ad);
- if (ret != 0) {
- SETTING_TRACE_ERROR("call vconf_notify_key_changed failed");
- }
- } else {
- item = elm_genlist_item_append(ad->genlist, &itc_bottom_seperator, NULL, NULL,
- ELM_GENLIST_ITEM_NONE, NULL, NULL);
- elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
- }
+ storageUg_init_USB(ad);
setting_view_storage_main.is_create = 1;
- if (ad->pipe) {
- ecore_pipe_del(ad->pipe);
- ad->pipe = NULL;
- }
- ad->pipe = ecore_pipe_add(__setting_storage_main_pipe_cb, ad);
- if (ad->pipe)
- {
- ret = pthread_create(&ad->tid, NULL, __setting_storage_main_thread_start_routine, ad);
- if (ret != 0) {
- SETTING_TRACE_ERROR("fail to pthread_create");
- }
- SETTING_TRACE("thread id = %d", ad->tid);
- }
- else
- {
- SETTING_TRACE_ERROR("fail to ecore_pipe_add");
- }
+ media_content_set_db_updated_cb(storageUg_media_filesys_changed_cb, ad);
+ SETTING_TRACE("-----------------------------------------------");
+ SETTING_TRACE(" WIDGET_SCALE_FACTOR : %f",WIDGET_SCALE_FACTOR);
+ SETTING_TRACE("-----------------------------------------------");
return SETTING_RETURN_SUCCESS;
}
-static int setting_storage_main_destroy(void *cb)
+static int storageUg_main_destroy(void *data)
{
- /* error check */
- retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+ int ret;
+ SettingStorageUG *ad = data;
- SettingStorageUG *ad = (SettingStorageUG *) cb;
+ retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
- int ret = 0;
+ setting_view_destroy(ad->misces_view, ad);
- pthread_mutex_lock(&ad->exit_mutex);
- ad->exit_flag = 1;
- pthread_mutex_unlock(&ad->exit_mutex);
+ media_content_unset_db_updated_cb();
- /* wake up thread */
- pthread_mutex_lock(&ad->update_mutex);
- ad->type = SETTING_STORAGE_REUPDATE;
- pthread_cond_signal(&ad->wait_cond);
- pthread_mutex_unlock(&ad->update_mutex);
+ storageUg_deinit_USB();
- if (ad->tid > 0)
- {
- void *thread_ret = NULL;
- ret = pthread_join(ad->tid, &thread_ret);
- if(ret != 0) {
- SETTING_TRACE_ERROR("fail to join with thread");
- }
- SETTING_TRACE("thread exit code %d", (int)thread_ret);
- }
+ ret = vconf_ignore_key_changed(storageUg_MMC_stat, storageUg_SD_change_cb);
+ warn_if(ret, "vconf_ignore_key_changed(%s) Fail(%d)", storageUg_MMC_stat, ret);
+ ret = vconf_ignore_key_changed(storageUg_ENCRYPT_stat, storageUg_encrypt_change_cb);
+ warn_if(ret, "vconf_ignore_key_changed(%s) Fail(%d)", storageUg_ENCRYPT_stat, ret);
- pthread_mutex_destroy(&ad->exit_mutex);
- pthread_mutex_destroy(&ad->update_mutex);
- pthread_cond_destroy(&ad->wait_cond);
+ storageUg_stop_async_worker_all();
- if (ad->pipe) {
- ecore_pipe_del(ad->pipe);
- ad->pipe = NULL;
+ if (ad->update_idler)
+ {
+ ecore_idler_del(ad->update_idler);
+ ad->update_idler = NULL;
}
- if (!isEmulBin()) {
- ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_MMC_STATUS,
- __setting_storage_vconf_change_cb);
- if (ret != 0) {
- SETTING_TRACE_ERROR("call vconf_ignore_key_changed failed");
- }
+ if (ad->update_timer){
+ ecore_timer_del(ad->update_timer);
+ ad->update_timer = NULL;
}
- if (ad->popup) {
+ if (ad->popup)
+ {
evas_object_del(ad->popup);
ad->popup = NULL;
}
-
- if (ad->ly_main != NULL) {
- evas_object_del(ad->ly_main);
- setting_view_storage_main.is_create = 0;
+ if(ad->cr)
+ {
+ cairo_destroy(ad->cr);
+ ad->cr= NULL;
}
+ if (ad->pc)
+ {
+ pkgmgr_client_free(ad->pc);
+ ad->pc = NULL;
+ }
+
+ setting_view_storage_main.is_create = 0;
return SETTING_RETURN_SUCCESS;
}
-static int setting_storage_main_update(void *cb)
+static int storageUg_main_update(void *data)
{
- SETTING_TRACE_BEGIN;
- /* error check */
- retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
- SettingStorageUG *ad = (SettingStorageUG *) cb;
-
- int ret = 0;
-
- __setting_storage_main_internal_storage_status_get(ad);
-
- /* update internal total size */
- char total_desc[SETTING_STORAGE_MAX_STR_LEN + 1] = {0,};
- ret = __setting_storage_status_size_transition(ad->internal_status.dTotal, total_desc);
- setting_retvm_if(ret == SETTING_RETURN_FAIL, SETTING_RETURN_FAIL, "failed to transform")
-
- G_FREE(ad->internal->keyStr);
- ad->internal->keyStr = (char *)g_strdup(total_desc);
- elm_object_item_data_set(ad->internal->item, ad->internal);
- elm_genlist_item_update(ad->internal->item);
-
- /* update internal available size */
- char avail_desc[SETTING_STORAGE_MAX_STR_LEN + 1] = {0,};
- ret = __setting_storage_status_size_transition(ad->internal_status.dAvail, avail_desc);
- setting_retvm_if(ret == SETTING_RETURN_FAIL, SETTING_RETURN_FAIL, "failed to transform")
-
- G_FREE(ad->avail->sub_desc);
- ad->avail->sub_desc = (char *)g_strdup(avail_desc);
- elm_object_item_data_set(ad->avail->item, ad->avail);
- elm_genlist_item_update(ad->avail->item);
-
- /* update miscellaneous */
- if (ad->back_from_misc) {
- double misc_size = __setting_storage_main_miscellaneous_size_get();
+ SettingStorageUG *ad = data;
- ad->others_status.dTotal = misc_size;
- __setting_storage_main_genlist_update(ad->others, ad->others_status);
- }
+ retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
- /* wake up thread */
- pthread_mutex_lock(&ad->update_mutex);
- ad->type = SETTING_STORAGE_REUPDATE;
- pthread_cond_signal(&ad->wait_cond);
- pthread_mutex_unlock(&ad->update_mutex);
+ storageUg_main_update_media_data(ad);
+ storageUG_update_apps_info(ad);
- if (ad->ly_main != NULL) {
- evas_object_show(ad->ly_main);
- }
+ if (ad->misces_list)
+ setting_view_update(ad->misces_view, ad);
+ else
+ evas_object_show(ad->lo_main);
return SETTING_RETURN_SUCCESS;
}
-static int setting_storage_main_cleanup(void *cb)
+static int storageUg_main_cleanup(void *data)
{
- /* error check */
- retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
-
- SettingStorageUG *ad = (SettingStorageUG *) cb;
-
- if (ad->ly_main != NULL) {
- evas_object_hide(ad->ly_main);
- }
-
return SETTING_RETURN_SUCCESS;
}
-/* ***************************************************
- *
- *call back func
- *
- ***************************************************/
-
-static void __setting_storage_main_click_softkey_back_cb(void *data, Evas_Object *obj,
- void *event_info)
+void storageUg_main_init(SettingStorageUG *ad)
{
- /* error check */
- ret_if(data == NULL);
+ ret_if(NULL == ad);
+ ret_if(ad->main_view);
- SettingStorageUG *ad = (SettingStorageUG *) data;
- /* Send destroy request */
- ug_destroy_me(ad->ug);
+ setting_view_storage_main.create = storageUg_main_create;
+ setting_view_storage_main.destroy = storageUg_main_destroy;
+ setting_view_storage_main.update = storageUg_main_update;
+ setting_view_storage_main.cleanup = storageUg_main_cleanup;
+
+ ad->main_view = &setting_view_storage_main;
}