[GALLERY] corrected UX differences 50/92050/2 submit/tizen_mobile/20161014.132925
authorRahul Dadhich <r.dadhich@samsung.com>
Thu, 13 Oct 2016 05:13:25 +0000 (10:43 +0530)
committerRahul Dadhich <r.dadhich@samsung.com>
Thu, 13 Oct 2016 05:16:58 +0000 (10:46 +0530)
Change-Id: Ib01f256d48f79459f6ec4a1d546a816b37710340
Signed-off-by: Rahul Dadhich <r.dadhich@samsung.com>
src/2dview/gl-timeline.c
src/util/gl-util.c
widget/CMakeLists.txt
widget/inc/gl_widget.h
widget/src/gl_widget_create.c
widget/src/gl_widget_main.c

index 3fecf05..25966e4 100644 (file)
@@ -996,11 +996,11 @@ int _gl_timeline_thumb_set_size(void *data, Evas_Object *view, int *size_w, int
        _gl_get_win_factor(ad->maininfo.win, &win_w, &win_h);
 
        if ((rotate_mode == APP_DEVICE_ORIENTATION_270) ||
-               (rotate_mode == APP_DEVICE_ORIENTATION_90)) {
+                       (rotate_mode == APP_DEVICE_ORIENTATION_90)) {
                if (ad->pinchinfo.zoom_level == GL_ZOOM_IN_TWO) {
-                       items_per_row = GL_GRID_6_PER_ROW;
-               } else if (ad->pinchinfo.zoom_level == GL_ZOOM_IN_ONE) {
                        items_per_row = GL_GRID_7_PER_ROW;
+               } else if (ad->pinchinfo.zoom_level == GL_ZOOM_IN_ONE) {
+                       items_per_row = GL_GRID_6_PER_ROW;
                } else if (ad->pinchinfo.zoom_level == GL_ZOOM_DEFAULT) {
                        items_per_row = GL_GRID_10_PER_ROW;
                } else {
@@ -1288,11 +1288,11 @@ int _gl_time_get_number_of_items_per_row(void *data)
        int rotate_mode = ad->maininfo.rotate_mode;
        int items_per_row = 0;
        if ((rotate_mode == APP_DEVICE_ORIENTATION_270) ||
-               (rotate_mode == APP_DEVICE_ORIENTATION_90)) {
+                       (rotate_mode == APP_DEVICE_ORIENTATION_90)) {
                if (ad->pinchinfo.zoom_level == GL_ZOOM_IN_TWO) {
-                       items_per_row = GL_GRID_6_PER_ROW;
-               } else if (ad->pinchinfo.zoom_level == GL_ZOOM_IN_ONE) {
                        items_per_row = GL_GRID_7_PER_ROW;
+               } else if (ad->pinchinfo.zoom_level == GL_ZOOM_IN_ONE) {
+                       items_per_row = GL_GRID_6_PER_ROW;
                } else if (ad->pinchinfo.zoom_level == GL_ZOOM_DEFAULT) {
                        items_per_row = GL_GRID_10_PER_ROW;
                } else {
@@ -1324,14 +1324,14 @@ char *_gl_time_get_genlist_style(void *data)
        char *style = NULL;
        _gl_get_win_factor(ad->maininfo.win, &win_w, &win_h);
        if (_gl_is_timeline_edit_mode(data) || _gl_is_timeline_edit_copy_mode(data)) {
-               ad->pinchinfo.zoom_level = GL_ZOOM_IN_ONE;
+               ad->pinchinfo.zoom_level = GL_ZOOM_IN_TWO;
        }
        if ((rotate_mode == APP_DEVICE_ORIENTATION_270) ||
                (rotate_mode == APP_DEVICE_ORIENTATION_90)) {
                if (ad->pinchinfo.zoom_level == GL_ZOOM_IN_TWO) {
-                       items_per_row = GL_GRID_6_PER_ROW;
-               } else if (ad->pinchinfo.zoom_level == GL_ZOOM_IN_ONE) {
                        items_per_row = GL_GRID_7_PER_ROW;
+               } else if (ad->pinchinfo.zoom_level == GL_ZOOM_IN_ONE) {
+                       items_per_row = GL_GRID_6_PER_ROW;
                } else if (ad->pinchinfo.zoom_level == GL_ZOOM_DEFAULT) {
                        items_per_row = GL_GRID_10_PER_ROW;
                } else {
@@ -1550,6 +1550,7 @@ Evas_Object *_gl_genlist_add(Evas_Object *parent)
        elm_scroller_policy_set(genlist, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
        elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
        elm_scroller_single_direction_set(genlist, ELM_SCROLLER_SINGLE_DIRECTION_HARD);
+       elm_genlist_homogeneous_set(genlist, EINA_TRUE);
        evas_object_event_callback_add(genlist, EVAS_CALLBACK_DEL, __gl_del_date_item, parent);
        evas_object_show(genlist);
 
@@ -2278,7 +2279,7 @@ int _gl_timeline_create_view(void *data, Evas_Object *parent)
        timeline_d->parent = parent;
        timeline_d->nf_it = ad->ctrlinfo.nf_it;
        ad->tlinfo = timeline_d;
-       ad->pinchinfo.zoom_level = GL_ZOOM_IN_ONE;
+       ad->pinchinfo.zoom_level = GL_ZOOM_IN_TWO;
 
        char *path = _gl_get_edje_path();
        GL_CHECK_VAL(path, -1);
index 4d32b0b..b34a18d 100644 (file)
@@ -2195,7 +2195,7 @@ bool _gl_get_launch_state_preference()
        ret = preference_get_boolean(GL_LAUNCH_STATE, &launch_state);
        if (ret != PREFERENCE_ERROR_NONE) {
                gl_dbgE("Unable to get preference for launch State ERROR(%d)",ret);
-               return false;
+               return true;
        }
        return launch_state;
 }
index d02755c..fd35813 100644 (file)
@@ -18,6 +18,7 @@ pkg_check_modules(app_pkgs REQUIRED
     appcore-efl
     dlog
     widget_service
+    storage
 )
 
 ADD_DEFINITIONS(${app_pkgs_CFLAGS})
index f1d3ec4..968a3ae 100644 (file)
@@ -18,6 +18,8 @@
 #ifndef GL_WIDGET_H
 #define GL_WIDGET_H
 
+#include <storage/storage.h>
+
 typedef struct widget_data {
        Evas_Object *win;
        Evas_Object *layout;
@@ -33,6 +35,8 @@ typedef struct widget_data {
        char **selected_images;
        int selected_count;
        int images_count;
+       int mmc_id;
+       int device_id;
 } _widget_data;
 #define TIMER_INTERVAL 5
 
index d3e464c..cf976d0 100644 (file)
@@ -60,6 +60,45 @@ static void gl_widget_on_no_image_cb(void *data, Evas_Object *obj,
                                      const char *emission, const char *source);
 void _gl_widget_create_edit_btn(_widget_data* widget_data);
 
+static char *gl_get_folder_path(int storage_id, int directory)
+{
+       char *path = NULL;
+               if (storage_id != -1) {
+                       char *path_camera = NULL;
+                       storage_get_directory(storage_id, directory, &path_camera);
+                       if (path_camera) {
+                               path = strdup(path_camera);
+                               free(path_camera);
+                       } else {
+                               path = strdup("");
+                       }
+               } else {
+                       path = strdup("");
+               }
+               return path;
+}
+
+char * _gl_get_camera_folder_path_internal(_widget_data *widget_data)
+{
+       return gl_get_folder_path(widget_data->device_id, STORAGE_DIRECTORY_CAMERA);
+}
+
+char * _gl_get_images_folder_path(_widget_data *widget_data)
+{
+       return gl_get_folder_path(widget_data->device_id, STORAGE_DIRECTORY_IMAGES);
+}
+
+char * _gl_get_camera_folder_path_external(_widget_data *widget_data)
+{
+       return gl_get_folder_path(widget_data->mmc_id, STORAGE_DIRECTORY_CAMERA);
+}
+
+char *_gl_get_downloads_folder_path(_widget_data *widget_data)
+{
+       return gl_get_folder_path(widget_data->device_id, STORAGE_DIRECTORY_DOWNLOADS);
+}
+
+
 void gl_widget_win_del_cb(void *data, Evas *evas, Evas_Object *obj,
                           void *event_info)
 {
@@ -431,7 +470,7 @@ static char *gl_widget_extract_album_path(char* pathInfo)
        return albumpath;
 }
 
-static Eina_Bool gl_widget_check_default_album(char* pathInfo)
+static Eina_Bool gl_widget_check_default_album(char* pathInfo, _widget_data* widget_data)
 {
        if (!pathInfo) {
                ErrPrint("Invalid path!!");
@@ -443,15 +482,26 @@ static Eina_Bool gl_widget_check_default_album(char* pathInfo)
                return EINA_FALSE;
        }
 
-       if (!strcmp("/opt/usr/media/Pictures/", path) ||
-               !strcmp("/opt/usr/media/Images/", path) ||
-               !strcmp("/opt/usr/media/DCIM/Camera", path) ||
-               !strcmp("/opt/usr/media/Downloads/", path) ||
-               !strcmp("/opt/storage/sdcard/DCIM/", path)) {
+       char * path_camera_internal = _gl_get_camera_folder_path_internal(widget_data);
+       char * path_camera_external = _gl_get_camera_folder_path_external(widget_data);
+       char * path_downloads = _gl_get_downloads_folder_path(widget_data);
+       char * path_images = _gl_get_images_folder_path(widget_data);
+
+       if (!strcmp(path_camera_internal, path) ||
+               !strcmp(path_camera_external, path) ||
+               !strcmp(path_downloads, path) ||
+               !strcmp(path_images, path)) {
+               free(path_images);
+               free(path_camera_internal);
+               free(path_camera_external);
+               free(path_downloads);
                free(path);
                return EINA_TRUE;
        }
-
+       free(path_images);
+       free(path_camera_internal);
+       free(path_camera_external);
+       free(path_downloads);
        free(path);
 
        return EINA_FALSE;
@@ -520,7 +570,7 @@ void _gl_widget_show_album_date_info(int arrayLength, char** pathArray,
        Eina_Bool isSameAlbum = gl_widget_check_albumInfo(pathArray, arrayLength);
        Eina_Bool isDefaultAlbum = false;
        if (isSameAlbum) {
-               isDefaultAlbum = gl_widget_check_default_album(pathArray[0]);
+               isDefaultAlbum = gl_widget_check_default_album(pathArray[0], widget_data);
        }
        widget_data->showAlbumDetails = isSameAlbum && !isDefaultAlbum;
        widget_data->showDateDetails = gl_widget_check_dateInfo(pathArray,
@@ -894,7 +944,6 @@ int gl_widget_create(_widget_data *widget_data, int w, int h)
                _gl_widget_show_album_date_info(widget_data->selected_count, widget_data->selected_images, widget_data,
                                                layout);
        }
-//     evas_object_resize(layout, w, h);
        elm_win_resize_object_add(widget_data->win, layout);
        evas_object_event_callback_add(widget_data->win, EVAS_CALLBACK_KEY_DOWN,
                                       gl_widget_key_down_cb, NULL);
index 40779c1..0858b4d 100644 (file)
@@ -36,6 +36,76 @@ void *getWidgetData(widget_context_h context)
        return data;
 }
 
+void gl_util_to_lower(char *str) {
+       int i = 0;
+       while(str[i] != '\0') {
+               if (str[i] >= 'A' && str[i] <= 'Z') {
+                       str[i] = str[i] + 32;
+               }
+       i++;
+       }
+}
+
+static void gl_callback_storage_changed_cb(int storage_id,
+               storage_dev_e dev, storage_state_e state,
+               const char *fstype, const char *fsuuid, const char *mountpath,
+               bool primary, int flags, void *user_data)
+{
+       _widget_data *widget_data = (_widget_data *)user_data;
+       DbgPrint("storage state changed");
+       if (state == STORAGE_STATE_MOUNTED) {
+               char *temp_path = strdup(mountpath);
+               gl_util_to_lower(temp_path);
+               if (strstr(temp_path, "sdcard")) {
+                       widget_data->mmc_id = storage_id;
+               }
+       } else {
+               char *temp_path = strdup(mountpath);
+               gl_util_to_lower(temp_path);
+               if (strstr(temp_path, "sdcard")) {
+                       widget_data->mmc_id = -1;
+               }
+       }
+}
+
+bool gl_get_supported_device_cb(int storage_id, storage_type_e type, storage_state_e state, const char *path, void *userData)
+{
+       DbgPrint("");
+       _widget_data *widget_data = (_widget_data *)userData;
+       if (type == STORAGE_TYPE_EXTERNAL) {
+               widget_data->mmc_id = storage_id;
+               return false;
+       } else if (type == STORAGE_TYPE_INTERNAL) {
+               widget_data->device_id = storage_id;
+               return false;
+       }
+
+       return true;
+}
+
+void gl_unregister_update_cb()
+{
+       int error_code = -1;
+       error_code = storage_unset_changed_cb(STORAGE_TYPE_EXTERNAL, gl_callback_storage_changed_cb);
+       if (error_code != STORAGE_ERROR_NONE) {
+               DbgPrint("storage_unset_state_changed_cb() failed!!");
+       }
+}
+
+void gl_register_update_cb(_widget_data *widget_data)
+{
+       int error_code = -1;
+
+       error_code = storage_foreach_device_supported(gl_get_supported_device_cb, widget_data);
+       if (error_code != STORAGE_ERROR_NONE) {
+                       DbgPrint("storage_foreach_device_supported() failed!!");
+       }
+       storage_set_changed_cb(STORAGE_TYPE_EXTERNAL , gl_callback_storage_changed_cb, widget_data);
+       if (error_code != STORAGE_ERROR_NONE) {
+               DbgPrint("storage_set_changed_cb() failed!!");
+       }
+}
+
 int widget_Create(widget_context_h context, bundle *content, int w, int h, void *data)
 {
        Evas_Object *win = NULL;
@@ -52,6 +122,9 @@ int widget_Create(widget_context_h context, bundle *content, int w, int h, void
                DbgPrint("failed to create instance");
                return WIDGET_ERROR_OUT_OF_MEMORY;
        }
+       widget_data->mmc_id = -1;
+       widget_data->device_id = 0;
+       gl_register_update_cb(widget_data);
        char locale_path[1024];
        char *res_path = app_get_resource_path();
        if (!res_path) {
@@ -87,6 +160,7 @@ int widget_Destroy(widget_context_h context, widget_app_destroy_type_e reason, b
        if (!widget_data) {
                return WIDGET_ERROR_INVALID_PARAMETER;
        }
+       gl_unregister_update_cb();
        widget_app_context_set_tag(context, NULL);
 
        evas_object_del(widget_data->win);