summaryrefslogtreecommitdiff
path: root/main/src/control/ivug-parameter.c
diff options
context:
space:
mode:
authorKim Kibum <kb0929.kim@samsung.com>2012-06-08 14:54:16 +0900
committerKim Kibum <kb0929.kim@samsung.com>2012-06-08 14:54:16 +0900
commit8b42d4bb33943903b7160bb963bf7e7c6824e9ef (patch)
tree021a596daee9f7e379b8914aad343a2342528e47 /main/src/control/ivug-parameter.c
parent7164c202e81bc53033dce636367d92b93265b915 (diff)
downloadug-image-viewer-efl-8b42d4bb33943903b7160bb963bf7e7c6824e9ef.tar.gz
ug-image-viewer-efl-8b42d4bb33943903b7160bb963bf7e7c6824e9ef.tar.bz2
ug-image-viewer-efl-8b42d4bb33943903b7160bb963bf7e7c6824e9ef.zip
apply FSL(Flora Software License)
Diffstat (limited to 'main/src/control/ivug-parameter.c')
-rwxr-xr-xmain/src/control/ivug-parameter.c397
1 files changed, 397 insertions, 0 deletions
diff --git a/main/src/control/ivug-parameter.c b/main/src/control/ivug-parameter.c
new file mode 100755
index 0000000..5717181
--- /dev/null
+++ b/main/src/control/ivug-parameter.c
@@ -0,0 +1,397 @@
+/*
+ * Copyright 2012 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.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.tizenopensource.org/license
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+#include <bundle.h>
+#include <string.h>
+
+#include "ivug-common.h"
+#include "ivug-debug.h"
+#include "ivug-parameter.h"
+
+//bundle key
+#define IVUG_BUNDLE_KEY_VIEW_MODE "View Mode"
+#define IVUG_BUNDLE_KEY_PATH "Path"
+#define IVUG_BUNDLE_KEY_THUMBNAIL_PATH "Thumb Path"
+#define IVUG_BUNDLE_KEY_ALBUM_IDX "Album index"
+#define IVUG_BUNDLE_KEY_VIEW_BY "View By"
+#define IVUG_BUNDLE_KEY_INDEX "Index"
+#define IVUG_BUNDLE_KEY_SORT_BY "Sort By"
+
+#define IVUG_BUNDLE_KEY_MAX_LONGITUDE "LON_MAX"
+#define IVUG_BUNDLE_KEY_MIN_LONGITUDE "LON_MIN"
+#define IVUG_BUNDLE_KEY_MAX_LATITUDE "LAT_MAX"
+#define IVUG_BUNDLE_KEY_MIN_LATITUDE "LAT_MIN"
+
+#define IVUG_BUNDLE_KEY_SETAS_TYPE "Setas type"
+
+#define IVUG_BUNDLE_KEY_MEDIA_TYPE "Media type"
+
+//default values
+#define IVUG_DEFAULT_MODE IVUG_MODE_SINGLE
+#define IVUG_DEFAULT_INDEX (-1)
+
+static ivug_mode
+_get_view_mode(ivug_parameter* data, const char* val)
+{
+ IV_ASSERT(val != NULL);
+
+#define IVUG_BUNDLE_VALUE_VIEW_MODE_ALBUM "ALBUM"
+#define IVUG_BUNDLE_VALUE_VIEW_MODE_NORMAL "NORMAL"
+#define IVUG_BUNDLE_VALUE_VIEW_MODE_SINGLE "SINGLE"
+#define IVUG_BUNDLE_VALUE_VIEW_MODE_GALLERY "GALLERY"
+#define IVUG_BUNDLE_VALUE_VIEW_MODE_CAMERA "CAMERA"
+#define IVUG_BUNDLE_VALUE_VIEW_MODE_DISPLAY "DISPLAY"
+#define IVUG_BUNDLE_VALUE_VIEW_MODE_SETAS "SETAS"
+ int len = strlen(val);
+
+ if (strncmp(val, IVUG_BUNDLE_VALUE_VIEW_MODE_NORMAL, len) == 0
+ || strncmp(val, IVUG_BUNDLE_VALUE_VIEW_MODE_GALLERY, len) == 0 )
+ {
+ return IVUG_MODE_NORMAL;
+ }
+ else if (strncmp(val, IVUG_BUNDLE_VALUE_VIEW_MODE_ALBUM, len) == 0)
+ {
+ // Probably, UnUsed.
+ MSG_IVUG_ERROR("ALBUM is deprecated!!!! plz check");
+ printf("bundle key ALBUM is deprecated!!!! plz check\n");
+ return IVUG_MODE_NORMAL;
+ }
+ else if ( strncmp(val, IVUG_BUNDLE_VALUE_VIEW_MODE_CAMERA, len) == 0)
+ {
+ data->start_index = 1; //apply window loading
+ data->view_by = IVUG_VIEW_BY_FOLDER; // In camera case, All images should be shown in camera folder.
+ return IVUG_MODE_CAMERA;
+ }
+ else if (strncmp(val, IVUG_BUNDLE_VALUE_VIEW_MODE_SINGLE, len) == 0)
+ {
+ data->view_by = IVUG_VIEW_BY_FILE;
+ return IVUG_MODE_SINGLE;
+ }
+ else if ( strncmp(val, IVUG_BUNDLE_VALUE_VIEW_MODE_DISPLAY, len) == 0)
+ {
+ data->view_by = IVUG_VIEW_BY_FILE;
+ return IVUG_MODE_DISPLAY;
+ }
+ else if(strncmp(val, IVUG_BUNDLE_VALUE_VIEW_MODE_SETAS, len) == 0)
+ {
+ data->view_by = IVUG_VIEW_BY_FILE;
+ return IVUG_MODE_SETAS;
+ }
+
+ MSG_IVUG_ERROR("Invalid mode : %s", val);
+ return IVUG_MODE_INVAILD;
+}
+
+
+static ivug_view_by
+_get_view_by(const char* val)
+{
+ //bundle value
+#define IVUG_BUNDLE_VALUE_VIEW_BY_ALL "All"
+#define IVUG_BUNDLE_VALUE_VIEW_BY_FLODER "By Folder"
+#define IVUG_BUNDLE_VALUE_VIEW_BY_PLACES "Places"
+
+ IV_ASSERT(val != NULL);
+
+ int len = strlen(val);
+
+ if (strncmp(val, IVUG_BUNDLE_VALUE_VIEW_BY_FLODER, len) == 0 )
+ {
+ return IVUG_VIEW_BY_FOLDER;
+ }
+ else if (strncmp(val, IVUG_BUNDLE_VALUE_VIEW_BY_ALL, len) == 0 )
+ {
+ return IVUG_VIEW_BY_ALL;
+ }
+ else if (strncmp(val, IVUG_BUNDLE_VALUE_VIEW_BY_PLACES, len) == 0)
+ {
+ return IVUG_VIEW_BY_PLACES;
+ }
+
+ MSG_IVUG_ERROR("Invalid view by : %s", val);
+
+ return IVUG_VIEW_BY_FILE;
+
+}
+
+
+static ivug_setas_type
+_get_setas_type(const char* val)
+{
+ IV_ASSERT(val != NULL);
+
+#define IVUG_BUNDLE_VALUE_SETAS_UG_WALLPAPER "Wallpaper"
+
+ int len = strlen(val);
+
+ if (strncmp(val, IVUG_BUNDLE_VALUE_SETAS_UG_WALLPAPER, len) == 0 )
+ {
+ return IVUG_SET_AS_UG_TYPE_WALLPAPER;
+ }
+
+ MSG_IVUG_ERROR("Invalid setas ug type : %s", val);
+ return IVUG_SET_AS_UG_TYPE_INVALID;
+}
+
+static ivug_media_type
+_get_media_type(const char* val)
+{
+ IV_ASSERT(val != NULL);
+#define IVUG_BUNDLE_VALUE_MEDIA_TYPE_ALL "All"
+#define IVUG_BUNDLE_VALUE_MEDIA_TYPE_IMAGE "Image"
+#define IVUG_BUNDLE_VALUE_MEDIA_TYPE_VIDEO "Video"
+
+ int len = strlen(val);
+
+ if (strncmp(val, IVUG_BUNDLE_VALUE_MEDIA_TYPE_IMAGE, len) == 0 )
+ {
+ return IVUG_MEDIA_TYPE_IMAGE;
+ }
+ else if (strncmp(val, IVUG_BUNDLE_VALUE_MEDIA_TYPE_VIDEO, len) == 0)
+ {
+ return IVUG_MEDIA_TYPE_VIDEO;
+ }
+ else if(strncmp(val, IVUG_BUNDLE_VALUE_MEDIA_TYPE_ALL, len) == 0)
+ {
+ return IVUG_MEDIA_TYPE_ALL;
+ }
+
+ MSG_IVUG_ERROR("Invalid media type : %s", val);
+ return IVUG_MEDIA_TYPE_MAX;
+}
+
+
+
+static void
+_bundle_print(const char *key, const char *val, void *data)
+{
+ MSG_IVUG_HIGH(" %s:%s",key, val);
+}
+
+//parsing bundle
+ivug_parameter*
+ivug_param_create_from_bundle(bundle* b)
+{
+ if (b == NULL)
+ {
+ MSG_IVUG_WARN("bundle value is NULL");
+ return NULL;
+ }
+
+ int nbundle_cnt = bundle_get_count(b);
+
+ if ( nbundle_cnt == 0 )
+ {
+ MSG_IVUG_WARN("bundle count is %d", nbundle_cnt);
+ return NULL;
+ }
+
+ //print key and value.
+ MSG_IVUG_HIGH("**********************************");
+ MSG_IVUG_HIGH(" Bundle Count = %d", nbundle_cnt);
+ bundle_iterate(b, _bundle_print, NULL);
+ MSG_IVUG_HIGH("**********************************");
+
+ //parsing param
+ ivug_parameter* data = (ivug_parameter*)calloc(1, sizeof(ivug_parameter));
+
+ if (data == NULL)
+ {
+ MSG_IMAGEVIEW_FATAL("Cannot allocate memory");
+ return NULL;
+ }
+
+// View By
+ const char* szViewBy = NULL;
+
+ szViewBy = bundle_get_val(b, IVUG_BUNDLE_KEY_VIEW_BY);
+ if (szViewBy != NULL)
+ {
+ MSG_IVUG_HIGH("View By = %s", szViewBy);
+
+ data->view_by = _get_view_by(szViewBy);
+ }
+ else
+ {
+ MSG_IVUG_ERROR("View By is NULL");
+ data->view_by = IVUG_VIEW_BY_INVAILD;
+ }
+
+//parse image index at album
+ const char* val = NULL;
+
+ val = bundle_get_val(b, IVUG_BUNDLE_KEY_INDEX);
+ if(val)
+ {
+ data->start_index = atoi(val);
+ MSG_IVUG_HIGH("Slide Index = %d", data->start_index);
+ }
+ else
+ {
+ data->start_index = IVUG_DEFAULT_INDEX;
+ MSG_IVUG_HIGH("Slide Index is not set. Set as default : %d", data->start_index);
+ }
+
+//parse mode
+ const char* szMode = NULL;
+
+ szMode = bundle_get_val(b, IVUG_BUNDLE_KEY_VIEW_MODE);
+
+ if (szMode != NULL)
+ {
+ data->mode = _get_view_mode(data, szMode);
+ MSG_IVUG_HIGH("View mode is %s(%d)", szMode, data->mode);
+ }
+ else
+ {
+ data->mode = IVUG_DEFAULT_MODE;
+ MSG_IVUG_HIGH("View mode is NULL. Set Default(%d)", data->mode);
+ }
+
+//parse path
+ const char* szFilePath = NULL;
+
+ szFilePath = bundle_get_val(b, IVUG_BUNDLE_KEY_PATH);
+
+ if ( szFilePath != NULL )
+ {
+ data->filepath = strdup(szFilePath);
+ MSG_IVUG_HIGH("Current File = %s", data->filepath);
+ }
+
+ //parse album id -album id is cluster id of media service
+ val = bundle_get_val(b, IVUG_BUNDLE_KEY_ALBUM_IDX);
+
+ if(val && data->view_by != IVUG_VIEW_BY_ALL)
+ {
+ data->album_id = uuid_getuuid(val);
+ MSG_IVUG_HIGH("album_uuid is %s", uuid_getchar(data->album_id));
+ }
+ else
+ {
+ data->album_id = INVALID_UUID;
+ MSG_IVUG_WARN("Album index is NULL");
+ }
+ if (data->mode == IVUG_MODE_CAMERA)
+ {
+/*
+ **********************************
+ Bundle Count = 2
+ View Mode:CAMERA
+ Path:/opt/media/Camera shots/IMAGE0021.jpg
+ **********************************
+*/
+ // Get album id from file path.
+ UUID cluster_id = ivug_get_album_id_from_filepath(data->filepath);
+
+ data->album_id = uuid_assign(cluster_id);
+
+ MSG_IVUG_HIGH("Get Album ID(%s) from file %s", uuid_getchar(data->album_id), data->filepath);
+ }
+
+// TODO : Check parameter integrity
+ val = bundle_get_val(b, IVUG_BUNDLE_KEY_MEDIA_TYPE);
+ if(val != NULL)
+ {
+ data->media_type = _get_media_type(val);
+ MSG_IVUG_HIGH("Media Type=%s(%d)", val, data->media_type);
+ }
+ else
+ {
+ MSG_IVUG_WARN("Media type is not specified.");
+ }
+
+ long long int m = 0;
+ long int e = 0;
+
+ val = bundle_get_val(b, IVUG_BUNDLE_KEY_MAX_LONGITUDE);
+ if(val != NULL)
+ {
+ eina_convert_atod(val, strlen(val), &m, &e);
+ data->max_longitude = ldexp((double)m, e);
+ MSG_IVUG_HIGH("Max Longitude =%f", data->max_longitude);
+ }
+ else
+ {
+ MSG_IVUG_MED("Max Longitude is not specified.");
+ }
+
+ val = bundle_get_val(b, IVUG_BUNDLE_KEY_MIN_LONGITUDE);
+ if(val != NULL)
+ {
+ eina_convert_atod(val, strlen(val), &m, &e);
+ data->min_longitude = ldexp((double)m, e);
+ MSG_IVUG_HIGH("Min Longitude =%f", data->min_longitude);
+ }
+ else
+ {
+ MSG_IVUG_MED("Min Longitude is not specified.");
+ }
+
+ val = bundle_get_val(b, IVUG_BUNDLE_KEY_MAX_LATITUDE);
+ if(val != NULL)
+ {
+ eina_convert_atod(val, strlen(val), &m, &e);
+ data->max_latitude = ldexp((double)m, e);
+ MSG_IVUG_HIGH("Max Latitude =%f", data->max_latitude);
+ }
+ else
+ {
+ MSG_IVUG_MED("Max Latitude is not specified.");
+ }
+
+ val = bundle_get_val(b, IVUG_BUNDLE_KEY_MIN_LATITUDE);
+ if(val != NULL)
+ {
+ eina_convert_atod(val, strlen(val), &m, &e);
+ data->min_latitude = ldexp((double)m, e);
+ MSG_IVUG_HIGH("Min Latitude =%f", data->min_latitude);
+ }
+ else
+ {
+ MSG_IVUG_MED("Min Latitude is not specified.");
+ }
+
+ val = bundle_get_val(b, IVUG_BUNDLE_KEY_SETAS_TYPE);
+ if (val)
+ {
+ MSG_IVUG_HIGH("SetAs UG Type=%s", val);
+ data->setas_type = _get_setas_type(val);
+ }
+
+ return data;
+}
+
+void
+ivug_param_delete(ivug_parameter* data)
+{
+ IV_ASSERT(data != NULL);
+ if (data->filepath)
+ {
+ free(data->filepath);
+ data->filepath = NULL;
+ }
+
+ uuid_free(data->album_id);
+
+ free(data);
+
+ MSG_IVUG_HIGH("Parameter is freed.");
+
+}
+
+