summaryrefslogtreecommitdiff
path: root/main/src/view
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/view')
-rwxr-xr-xmain/src/view/ivug-detail-info.c437
-rwxr-xr-xmain/src/view/ivug-detail-info.h80
-rwxr-xr-xmain/src/view/ivug-details-view.c300
-rwxr-xr-xmain/src/view/ivug-details-view.h64
-rwxr-xr-xmain/src/view/ivug-main-view.c1837
-rwxr-xr-xmain/src/view/ivug-main-view.h133
-rwxr-xr-xmain/src/view/ivug-popup.c262
-rwxr-xr-xmain/src/view/ivug-popup.h60
-rwxr-xr-xmain/src/view/ivug-setas-view.c1013
-rwxr-xr-xmain/src/view/ivug-setas-view.h97
-rwxr-xr-xmain/src/view/ivug-slider-item.c703
-rwxr-xr-xmain/src/view/ivug-slider-item.h137
-rwxr-xr-xmain/src/view/ivug-slider-mouse.c439
-rwxr-xr-xmain/src/view/ivug-slider-priv.h164
-rwxr-xr-xmain/src/view/ivug-slider-slideshow.c334
-rwxr-xr-xmain/src/view/ivug-slider.c1245
-rwxr-xr-xmain/src/view/ivug-slider.h95
17 files changed, 688 insertions, 6712 deletions
diff --git a/main/src/view/ivug-detail-info.c b/main/src/view/ivug-detail-info.c
deleted file mode 100755
index 77061e3..0000000
--- a/main/src/view/ivug-detail-info.c
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- * 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 "ivug-detail-info.h"
-
-#include <vconf.h>
-#include <vconf-keys.h>
-
-#include <appcore-efl.h>
-#include <appcore-common.h>
-
-#include <unicode/udat.h>
-#include <unicode/ustring.h>
-#include <unicode/uloc.h>
-#include <unicode/ucal.h>
-#include <unicode/udatpg.h>
-#include <unicode/utmscale.h>
-
-#include "ivug-details-view.h"
-#include <libexif/exif-data.h>
-
-#include "ivug-file-info.h"
-
-
-#define NOMAL_BUF 128
-
-#define DETAILS_DIR_PATH_LEN_MAX 4096
-
-enum IVUG_SIZE_TYPE
-{
- SIZE_BYTE = 0,
- SIZE_KB,
- SIZE_MB,
- SIZE_GB
-};
-
-/*
- Shuld free returned value after use
-*/
-static char*
-_get_icu_time_string(const char *locale, const char *customSkeleton, const char *timezone, UDate date)
-{
-#define UG_ICU_ARR_LENGTH 256
-
- IV_ASSERT(customSkeleton != NULL);
- IV_ASSERT(timezone != NULL);
-
- /*
- Copy a byte string encoded in the default codepage to a ustring.
- Copies at most n characters. The result will be null terminated if the length of src is less than n. Performs a host byte to UChar conversion
- */
- UChar ucustomSkeleton[UG_ICU_ARR_LENGTH] = {0,};
-
- if(u_uastrncpy(ucustomSkeleton, customSkeleton, UG_ICU_ARR_LENGTH) == NULL)
- {
- MSG_UTIL_ERROR("u_uastrncpy() error.");
- return NULL;
- }
-
- UChar utimezone[UG_ICU_ARR_LENGTH] = {0,};
-
- if ( u_uastrncpy(utimezone, timezone, UG_ICU_ARR_LENGTH) == NULL )
- {
- MSG_UTIL_ERROR("u_uastrncpy() error.");
- return NULL;
- }
-
- UErrorCode status = U_ZERO_ERROR;
- UDateTimePatternGenerator *generator;
- UDateFormat *formatter;
-
- UChar bestPattern[UG_ICU_ARR_LENGTH] = {0,};
- UChar formatted[UG_ICU_ARR_LENGTH] = {0,};
- char formattedString[UG_ICU_ARR_LENGTH] = {0,};
- int32_t bestPatternLength, formattedLength;
-
- ucal_setDefaultTimeZone(utimezone , &status);
-
- if (U_FAILURE(status))
- {
- MSG_UTIL_ERROR("ucal_setDefaultTimeZone() is failed");
- return NULL;
- }
-
- uloc_setDefault(getenv("LC_TIME"), &status);
-
- if (U_FAILURE(status))
- {
- MSG_UTIL_ERROR("ucal_setDefaultTimeZone() is failed");
- return NULL;
- }
-
- generator = udatpg_open(locale, &status);
- if(generator == NULL)
- {
- return NULL;
- }
-
- bestPatternLength = udatpg_getBestPattern(generator, ucustomSkeleton, u_strlen(ucustomSkeleton), bestPattern, UG_ICU_ARR_LENGTH, &status);
- if(bestPatternLength <= 0)
- {
- return NULL;
- }
-
- formatter = udat_open(UDAT_IGNORE, UDAT_IGNORE, locale, NULL, -1, bestPattern, -1, &status);
- if(formatter == 0)
- {
- return NULL;
- }
-
- formattedLength = udat_format(formatter, date, formatted, UG_ICU_ARR_LENGTH, NULL, &status);
- if(formattedLength <= 0)
- {
- return NULL;
- }
-
- u_austrcpy(formattedString, formatted);
- udatpg_close(generator);
- udat_close(formatter);
-
- if(strlen(formattedString) == 0)
- {
- return NULL;
- }
-
- return strdup(formattedString);
-}
-
-
-static char*
-_get_icu_date(time_t mtime)
-{
-#define UG_DATE_FORMAT_12 "yMMMdhms"
-#define UG_DATE_FORMAT_24 "yMMMdHms"
-
- char* skeleton = NULL;
-
- enum appcore_time_format timeformat;
-
- int ret = appcore_get_timeformat(&timeformat);
- if(ret == -1)
- {
- MSG_DETAIL_ERROR("Cannot get timeformat.");
- timeformat = APPCORE_TIME_FORMAT_12; // Default value.
-// Go through
- }
-
- if(timeformat == APPCORE_TIME_FORMAT_12)
- {
- skeleton = UG_DATE_FORMAT_12;
- }
- else if(timeformat == APPCORE_TIME_FORMAT_24)
- {
- skeleton = UG_DATE_FORMAT_24;
- }
- else
- {
- MSG_DETAIL_ERROR("Invalid time format : %d", timeformat);
- skeleton = UG_DATE_FORMAT_12; // Default value.
- }
-
- char *locale = vconf_get_str(VCONFKEY_REGIONFORMAT); /* eg. en_US.UTF-8*/
- if(locale == NULL)
- {
- MSG_DETAIL_ERROR("Cannot get region format.");
- locale = "en_US.UTF-8"; // Default value.
- }
-
- char *timezone = NULL;
-
- timezone = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID); // eg Asia/Seoul
- if(timezone == NULL)
- {
-// TODO : How to get default time zone????
- MSG_DETAIL_ERROR("Cannot get time zone");
- return NULL;
- }
-
- MSG_DETAIL_HIGH("Locale:%s TimeZone:%s TimeFormat:%s", locale, skeleton, timezone);
-
- char* datestr = NULL;
-
- datestr = _get_icu_time_string(locale, skeleton, timezone, (UDate)mtime * 1000);
-
- if(datestr == NULL)
- {
- MSG_DETAIL_ERROR("Cannot get time string");
- return NULL;
- }
-
- MSG_DETAIL_HIGH("ICU Date : %s", datestr);
- return datestr;
-
-}
-
-
-
-
-static char *
-_get_filesize_string(size_t size)
-{
-#define FILE_SIZE_LEN_MAX 64
-#define BASIC_SIZE 1024 //used for file size check
-
- int count = 0;
-
- unsigned long int lsize = (unsigned long int)size;
-
- char *tmp = (char *)calloc(1, sizeof(char)*FILE_SIZE_LEN_MAX + 1);
- if ( tmp == NULL)
- {
- return NULL;
- }
-
- while(size >= ( BASIC_SIZE ) )
- {
- lsize = size;
- size /= BASIC_SIZE;
- count++;
- }
-
- float remain = ((float)lsize/BASIC_SIZE) - size;
-
- if(count == SIZE_BYTE)
- {
- snprintf(tmp,FILE_SIZE_LEN_MAX,"%zu B", size);
- }
- else if(count == SIZE_KB)
- {
- snprintf(tmp,FILE_SIZE_LEN_MAX,"%zu KB", size);
- }
- else if(count == SIZE_MB)
- {
- // need another algorithm
- snprintf(tmp,FILE_SIZE_LEN_MAX,"%.1f MB", size+remain);
- }
- else if(count == SIZE_GB)
- {
- snprintf(tmp,FILE_SIZE_LEN_MAX,"%.1f GB", size+remain);
- }
-
- MSG_DETAIL_HIGH("Size = %lu, OrigSize=%zu", lsize, size);
- return tmp;
-}
-
-void
-ivug_details_info_set_file_information(ivug_file_info_t * const pFileInfo, const char *path)
-{
- ivug_ret_if( NULL == pFileInfo );
- ivug_ret_if( NULL == path );
-
-/*** get file path*/
- pFileInfo->filepath = strdup(path);
-
- struct stat statbuf;
-
- if(stat(path,&statbuf) == -1)
- {
- MSG_DETAIL_ERROR("Cannot get stat()");
- return ;
- }
-
- pFileInfo->size = statbuf.st_size;
- pFileInfo->date = statbuf.st_mtime;
-
- pFileInfo->create_date = _get_icu_date(pFileInfo->date);
-
- if ( pFileInfo->create_date == NULL )
- {
- pFileInfo->create_date = strdup(IDS_N_A);
- }
-
- pFileInfo->file_ext = ivug_fileinfo_get_file_extension(path);
-
- if ( pFileInfo->file_ext == NULL )
- {
- pFileInfo->file_ext = strdup(IDS_UNKNOWN);
- }
-
- pFileInfo->filesize = _get_filesize_string(pFileInfo->size);
-
- MSG_DETAIL_HIGH("Basic Info : ext=%s size=%s", pFileInfo->file_ext, pFileInfo->filesize);
-
- return ;
-
-}
-
-
-void
-ivug_details_info_set_gps_info(ivug_file_info_t * const pFileInfo, const char *path)
-{
-#define UG_EXIF_ARR_LENGTH 255
-
- ivug_retm_if(!pFileInfo, "data is NULL");
- ivug_retm_if(!path, "path is NULL");
-
- pFileInfo->longitude = calloc(1, sizeof(char)*UG_EXIF_ARR_LENGTH);
- if(pFileInfo->longitude == NULL)
- {
- return;
- }
-
- pFileInfo->latitude = calloc(1, sizeof(char)*UG_EXIF_ARR_LENGTH);
- if(pFileInfo->latitude == NULL)
- {
- return;
- }
-
-
- double longtitude = 0.0;
- double latitude = 0.0;
-
- bool bret = false;
-
- if(pFileInfo->file_type == IVUG_DETAIL_IMAGE_TYPE) // this will be removed!!!!
- {
- bret = ivug_fileinfo_get_image_gps_info(path, &latitude, &longtitude);
- }
- else if(pFileInfo->file_type == IVUG_DETAIL_VIDEO_TYPE)
- {
- bret = ivug_fileinfo_get_video_gps_info(path, &latitude, &longtitude);
- }
-
- if ( bret == false)
- {
- latitude = 0;
- longtitude = 0;
- }
-
- if(latitude != 0.0)
- {
- snprintf(pFileInfo->latitude, UG_EXIF_ARR_LENGTH, "%.5f", latitude);
- }
- else
- {
- snprintf(pFileInfo->latitude, UG_EXIF_ARR_LENGTH, "%s", IDS_UNKNOWN);
- }
- if(longtitude != 0.0)
- {
- snprintf(pFileInfo->longitude, UG_EXIF_ARR_LENGTH, "%.5f", longtitude);
- }
- else
- {
- snprintf(pFileInfo->longitude, UG_EXIF_ARR_LENGTH, "%s", IDS_UNKNOWN);
- }
-}
-
-void
-ivug_details_info_set_resolution(ivug_file_info_t * const pFileInfo, const char *path, int stype)
-{
- ivug_retm_if(!pFileInfo, "data is NULL");
- ivug_retm_if(!path, "path is NULL");
-
- MSG_DETAIL_HIGH("slide type is %d", stype);
-
- pFileInfo->resolution = (char *)malloc(sizeof(char)*NOMAL_BUF+1);
- if(pFileInfo->resolution == NULL)
- {
- return ;
- }
- memset(pFileInfo->resolution,0,(sizeof(char)* NOMAL_BUF + 1));
-
-
- int width, height;
-
- switch(stype)
- {
- case SLIDE_TYPE_IMAGE:
- pFileInfo->file_type = IVUG_DETAIL_IMAGE_TYPE;
-
- if ( ivug_fileinfo_get_image_resolution(path, &width, &height) == false)
- {
- snprintf(pFileInfo->resolution, NOMAL_BUF, "%s", IDS_N_A);
- }
- else
- {
- snprintf(pFileInfo->resolution, NOMAL_BUF,"%dX%d", width, height);
- }
-
- break;
-
- /* Video type */
- case SLIDE_TYPE_VIDEO:
- pFileInfo->file_type = IVUG_DETAIL_VIDEO_TYPE;
-
- if ( ivug_fileinfo_get_video_resolution(path, &width, &height) == false)
- {
- snprintf(pFileInfo->resolution, NOMAL_BUF, "%s", IDS_N_A);
- }
- else
- {
- snprintf(pFileInfo->resolution, NOMAL_BUF,"%dX%d", width, height);
- }
-
- break;
-
- default:
- break;
-
- }
-
-}
-
-void
-ivug_details_info_set_location(ivug_file_info_t * const pFileInfo, const char *path)
-{
- ivug_retm_if(!pFileInfo, "data is NULL");
- ivug_retm_if(!path, "path is NULL");
-
- pFileInfo->file_location = strdup(path);
-}
-
-void
-ivug_details_info_set_filename(ivug_file_info_t * const pFileInfo, const char *path)
-{
- ivug_retm_if(!pFileInfo, "data is NULL");
- ivug_retm_if(!path, "path is NULL");
-
- /** get file name */
- pFileInfo->filename = ecore_file_strip_ext(ecore_file_file_get(path));
-}
-
-
diff --git a/main/src/view/ivug-detail-info.h b/main/src/view/ivug-detail-info.h
deleted file mode 100755
index 6b7b9cb..0000000
--- a/main/src/view/ivug-detail-info.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * 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.
- */
-
-
-#ifndef __IVUG_DETAIL_COMMON_H__
-#define __IVUG_DETAIL_COMMON_H__
-
-#include <unicode/udat.h>
-
-#include "ivug-common.h"
-
-typedef enum {
- IVUG_DETAIL_ERROR_TYPE = -1,
- IVUG_DETAIL_IMAGE_TYPE,
- IVUG_DETAIL_VIDEO_TYPE
-} ivug_detail_file_t;
-
-typedef struct {
-/** Common info*/
- time_t date; // Seconds since 1970-1-1
- size_t size;
-
- ivug_detail_file_t file_type;
-
- char *filesize;
- char *filepath;
- char *filename;
- char *file_ext;
- char *file_location;
- char *contains;
- char *create_date;
-
-
-/**resolution */
- char *resolution;
-
-/**Gps info */
- char *latitude;
- char *longitude;
-
-}ivug_file_info_t;
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// TODO : Remove dependacy ivug-detail-view and ivug-detail-info.
-
-void ivug_details_info_set_file_information(ivug_file_info_t * const pFileInfo, const char *path);
-
-void ivug_details_info_set_gps_info(ivug_file_info_t * const pFileInfo, const char *path);
-
-void ivug_details_info_set_resolution(ivug_file_info_t * const pFileInfo, const char *path, int stype);
-
-void ivug_details_info_set_location(ivug_file_info_t * const pFileInfo, const char *path);
-
-void ivug_details_info_set_filename(ivug_file_info_t * const pFileInfo, const char *path);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif // __IVUG_DETAIL_COMMON_H__
-
diff --git a/main/src/view/ivug-details-view.c b/main/src/view/ivug-details-view.c
index e66df21..77fefdb 100755
--- a/main/src/view/ivug-details-view.c
+++ b/main/src/view/ivug-details-view.c
@@ -1,34 +1,32 @@
-/*
- * 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.
- */
-
+/*
+ * 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 <ui-gadget-module.h>
#include "ivug-common.h"
-#include "ivug-main.h"
#include "ivug-main-view.h"
#include "ivug-string.h"
+#include "ivug-file-info.h"
#include "ivug-details-view.h"
#include "ivug-detail-info.h"
-#include "ivug-widget.h"
+#include "ivug-drm.h"
#define DETAILS_EDJ_FILE EDJ_PATH"/ivug-details.edj"
-#define TRANSITION_EFFECT
#define FILE_DETILES_NUM 6
#define FILE_EXIF_INFO_NUM 2
@@ -99,6 +97,26 @@ static void _ivug_details_free_file_info(ivug_file_info_t * const pFileInfo)
free(pFileInfo->longitude);
pFileInfo->longitude = NULL;
}
+
+ if(pFileInfo->vendor)
+ {
+ free(pFileInfo->vendor);
+ pFileInfo->vendor = NULL;
+ }
+
+ if(pFileInfo->forwarding)
+ {
+ free(pFileInfo->forwarding);
+ pFileInfo->forwarding = NULL;
+ }
+
+ if(pFileInfo->type)
+ {
+ free(pFileInfo->type);
+ pFileInfo->type = NULL;
+
+ }
+
}
static char *
@@ -160,6 +178,26 @@ _ivug_details_gl_label_get(void *data, Evas_Object *obj, const char *part )
{
text2 = pDetailsView->file_Info.longitude;
}
+ else if(strncmp(IDS_VENDOR, params->m_ItemName, strlen(IDS_VENDOR)) == 0)
+ {
+ text2 = pDetailsView->file_Info.vendor;
+ }
+ else if(strncmp(IDS_FORWARDING, params->m_ItemName, strlen(IDS_FORWARDING)) == 0)
+ {
+ text2 = pDetailsView->file_Info.forwarding;
+ }
+ else if(strncmp(IDS_AVAILABLE_USES, params->m_ItemName, strlen(IDS_AVAILABLE_USES)) == 0)
+ {
+ text2 = pDetailsView->file_Info.available_uses;
+ }
+ else if(strncmp(IDS_TYPE, params->m_ItemName, strlen(IDS_TYPE)) == 0)
+ {
+ text2 = pDetailsView->file_Info.type;
+ }
+ else if(strncmp(IDS_VALIDITY, params->m_ItemName, strlen(IDS_VALIDITY)) == 0)
+ {
+ text2 = pDetailsView->file_Info.validity;
+ }
if (text2) {
return elm_entry_utf8_to_markup(text2);
@@ -205,6 +243,82 @@ _ivug_details_gl_label_get_title(void *data, Evas_Object *obj,const char *part )
return NULL;
}
+static void _on_rename_view_response(ivug_name_response resp, const char *str, void *pClientData)
+{
+ Ivug_DetailsView *pDetailsView = (Ivug_DetailsView *)pClientData;
+
+ pDetailsView->pAddTagView = NULL; // Will removed in add tag view.
+
+ if(resp != NAME_VIEW_RESPONSE_OK)
+ {
+ MSG_DETAIL_HIGH("rename is canceled");
+ return;
+ }
+
+ Media_Data *mdata = pDetailsView->mdata;
+ const char *old_fullpath = mdata->filepath;
+ char *old_dir = ecore_file_dir_get(old_fullpath);
+ char *ext = ivug_fileinfo_get_file_extension(old_fullpath);
+
+ char new_fullpath[IVUG_MAX_FILE_PATH_LEN] = {0,};
+ snprintf(new_fullpath, sizeof(new_fullpath),"%s/%s.%s", old_dir, str, ext);
+
+ if(ivug_rename_file(old_fullpath, new_fullpath) == false)
+ {
+ MSG_DETAIL_ERROR("ivug_rename_file failed");
+ }
+ else
+ {
+ MSG_DETAIL_HIGH("Rename %s -> %s", old_fullpath, new_fullpath);
+ free(mdata->filepath);
+ mdata->filepath = strdup(new_fullpath);
+
+ ivug_details_info_set_filename(&pDetailsView->file_Info, new_fullpath);
+
+ elm_genlist_realized_items_update(pDetailsView->genlist);
+
+ const char *name = ecore_file_file_get(mdata->filepath);
+
+ evas_object_smart_callback_call(pDetailsView->layout, "renamed", (void *)name);
+ }
+}
+
+static void _rename_button_clicked_cb(void *data, Evas_Object * obj, void *event_info)
+{
+ Ivug_DetailsView *pDetailsView = (Ivug_DetailsView *)data;
+ Media_Data *mdata = pDetailsView->mdata;
+
+ MSG_DETAIL_HIGH("clicked event on Button");
+
+ pDetailsView->pAddTagView = ivug_name_view_create(pDetailsView->layout, IDS_CHANGE_NAME);
+
+ const char *name = ecore_file_strip_ext(ecore_file_file_get(mdata->filepath));
+
+ ivug_name_view_set_entry(pDetailsView->pAddTagView, name);
+
+ ivug_name_view_set_response_callback(pDetailsView->pAddTagView, _on_rename_view_response, (void*)pDetailsView);
+}
+
+static Evas_Object *_ivug_details_gl_icon_get_title(void *data, Evas_Object *obj, const char *part)
+{
+ ivug_file_list_item *params = (ivug_file_list_item *)data;
+
+ ivug_retvm_if(params == NULL, NULL, "params is NULL");
+
+ Ivug_DetailsView *pDetailsView = (Ivug_DetailsView *)params->pDetailsView;
+ ivug_retvm_if(pDetailsView == NULL, NULL, "pDetailsView is NULL");
+
+ Evas_Object *btn;
+
+ if (!strcmp(part, "elm.icon") || !strcmp(part, "elm.icon.1")) {
+ btn = elm_button_add(pDetailsView->layout);
+ elm_object_style_set(btn, "rename");
+ evas_object_smart_callback_add(btn, "clicked", _rename_button_clicked_cb, (void *)pDetailsView);
+ }
+
+ return btn;
+}
+
static Eina_Bool
_ivug_details_gl_state_get(void *data, Evas_Object *obj, const char *part )
{
@@ -222,31 +336,46 @@ _ivug_details_view_genlist_create(Ivug_DetailsView *pDetailsView, Evas_Object *p
ivug_retvm_if(NULL == genlist, NULL, "Create Details genlist failed..");
elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);
- elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_NONE);
elm_object_theme_set(genlist, gGetSystemTheme());
- pDetailsView->file_Status.itc.item_style = "ivug/2text.2";
- //pDetailsView->file_Status.itc.item_style = "2text.2";
- pDetailsView->file_Status.itc.func.text_get = _ivug_details_gl_label_get;
- pDetailsView->file_Status.itc.func.content_get = NULL;
- pDetailsView->file_Status.itc.func.state_get = _ivug_details_gl_state_get;
- pDetailsView->file_Status.itc.func.del = _ivug_details_gl_del;
+ memset(&pDetailsView->itc, 0, sizeof(Elm_Genlist_Item_Class) );
+
+ pDetailsView->itc.version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pDetailsView->itc.item_style = "ivug/2text.2";
+ pDetailsView->itc.func.text_get = _ivug_details_gl_label_get;
+ pDetailsView->itc.func.content_get = NULL;
+ pDetailsView->itc.func.state_get = _ivug_details_gl_state_get;
+ pDetailsView->itc.func.del = _ivug_details_gl_del;
+
+ memset(&pDetailsView->title_itc, 0, sizeof(Elm_Genlist_Item_Class) );
// Set item class for dialogue group title
- pDetailsView->file_Status.title_itc.item_style = "ivug/grouptitle";
- //pDetailsView->file_Status.title_itc.item_style = "grouptitle";
- pDetailsView->file_Status.title_itc.func.text_get = _ivug_details_gl_label_get_title;
- pDetailsView->file_Status.title_itc.func.content_get = NULL;
- pDetailsView->file_Status.title_itc.func.state_get = NULL;
- pDetailsView->file_Status.title_itc.func.del = NULL;
-
- pDetailsView->file_Status.multiline_itc.item_style = "ivug/multiline.2text";
- //pDetailsView->file_Status.multiline_itc.item_style = "multiline.2text";
- pDetailsView->file_Status.multiline_itc.func.text_get = _ivug_details_gl_label_get;
- pDetailsView->file_Status.multiline_itc.func.content_get = NULL;
- pDetailsView->file_Status.multiline_itc.func.state_get = NULL;
- pDetailsView->file_Status.multiline_itc.func.del = _ivug_details_gl_del;
+ pDetailsView->title_itc.version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pDetailsView->title_itc.item_style = "ivug/grouptitle";
+ pDetailsView->title_itc.func.text_get = _ivug_details_gl_label_get_title;
+ pDetailsView->title_itc.func.content_get = NULL;
+ pDetailsView->title_itc.func.state_get = NULL;
+ pDetailsView->title_itc.func.del = NULL;
+
+ memset(&pDetailsView->multiline_icon_itc, 0, sizeof(Elm_Genlist_Item_Class) );
+
+ // Set item class for dialogue group title with icon
+ pDetailsView->multiline_icon_itc.version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pDetailsView->multiline_icon_itc.item_style = "ivug/multiline/2text.1icon";
+ pDetailsView->multiline_icon_itc.func.text_get = _ivug_details_gl_label_get;
+ pDetailsView->multiline_icon_itc.func.content_get = _ivug_details_gl_icon_get_title;
+ pDetailsView->multiline_icon_itc.func.state_get = NULL;
+ pDetailsView->multiline_icon_itc.func.del = NULL;
+
+ memset(&pDetailsView->multiline_itc, 0, sizeof(Elm_Genlist_Item_Class) );
+
+ pDetailsView->multiline_itc.version = ELM_GENLIST_ITEM_CLASS_VERSION;
+ pDetailsView->multiline_itc.item_style = "ivug/multiline/2text";
+ pDetailsView->multiline_itc.func.text_get = _ivug_details_gl_label_get;
+ pDetailsView->multiline_itc.func.content_get = NULL;
+ pDetailsView->multiline_itc.func.state_get = NULL;
+ pDetailsView->multiline_itc.func.del = _ivug_details_gl_del;
return genlist;
}
@@ -277,8 +406,7 @@ _ivug_detail_genlist_view_gps_create(Ivug_DetailsView *pDetailsView )
m_TempItem->m_ItemName = strdup(m_ItemName[index]);
m_TempItem->pDetailsView = pDetailsView;
- it = elm_genlist_item_append(genlist, &pDetailsView->file_Status.multiline_itc, m_TempItem, NULL,
- ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ it = elm_genlist_item_append(genlist, &pDetailsView->multiline_itc, m_TempItem, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
}
@@ -308,7 +436,7 @@ _ivug_detail_genlist_view_file_view_create(Ivug_DetailsView *pDetailsView)
m_ItemName[4] = IDS_RESOLUTION;
m_ItemName[5] = IDS_FILE_LOCATION;
- git = elm_genlist_item_append(genlist, &pDetailsView->file_Status.title_itc, strdup(IDS_DETAILS), NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ git = elm_genlist_item_append(genlist, &pDetailsView->title_itc, strdup(IDS_DETAILS), NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL);
elm_genlist_item_select_mode_set(git, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
for (index = 0; index < FILE_DETILES_NUM; index++)
@@ -328,12 +456,63 @@ _ivug_detail_genlist_view_file_view_create(Ivug_DetailsView *pDetailsView)
m_TempItem->m_ItemName = strdup(m_ItemName[index]);
m_TempItem->pDetailsView = pDetailsView;
- it = elm_genlist_item_append(genlist, &pDetailsView->file_Status.multiline_itc, m_TempItem, NULL,
- ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ if(index == 0) // for rename icon
+ {
+ it = elm_genlist_item_append(genlist, &pDetailsView->multiline_icon_itc, m_TempItem, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
+ else
+ {
+ it = elm_genlist_item_append(genlist, &pDetailsView->multiline_itc, m_TempItem, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ }
elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
}
}
+static void
+_ivug_detail_genlist_view_drm_create(Ivug_DetailsView *pDetailsView)
+{
+ IV_ASSERT(pDetailsView != NULL);
+
+ Evas_Object *genlist = NULL;
+ int index = 0;
+
+ Elm_Object_Item *it = NULL;
+
+ ivug_file_list_item *m_TempItem = NULL;
+ char *m_ItemName[FILE_DETILES_NUM] = {0,};
+
+ genlist = pDetailsView->genlist;
+
+ m_ItemName[0] = IDS_VENDOR;
+ m_ItemName[1] = IDS_FORWARDING;
+ m_ItemName[2] = IDS_AVAILABLE_USES;
+ m_ItemName[3] = IDS_TYPE;
+ m_ItemName[4] = IDS_VALIDITY;
+
+ for (index = 0; index < FILE_DETILES_NUM; index++)
+ {
+ if(m_ItemName[index] == NULL)
+ {
+ continue;
+ }
+
+ m_TempItem = (ivug_file_list_item *)malloc(sizeof(ivug_file_list_item));
+ if(m_TempItem == NULL)
+ {
+ continue;
+ }
+ memset(m_TempItem, 0, sizeof(ivug_file_list_item));
+
+ m_TempItem->m_ItemName = strdup(m_ItemName[index]);
+ m_TempItem->pDetailsView = pDetailsView;
+
+ it = elm_genlist_item_append(genlist, &pDetailsView->multiline_itc, m_TempItem, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);
+ elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+ }
+
+}
+
+
Ivug_DetailsView *
ivug_details_view_screen_create(Evas_Object *parent, Media_Data *mdata, ivug_view_by view_by)
{
@@ -352,13 +531,30 @@ ivug_details_view_screen_create(Evas_Object *parent, Media_Data *mdata, ivug_vie
return NULL;
}
+ pDetailsView->mdata = mdata;
+
ivug_details_info_set_file_information(&pDetailsView->file_Info, filepath);
ivug_details_info_set_resolution(&pDetailsView->file_Info, filepath, stype);
ivug_details_info_set_gps_info(&pDetailsView->file_Info, filepath);
- ivug_details_info_set_filename(&pDetailsView->file_Info, filepath);
- ivug_details_info_set_location(&pDetailsView->file_Info, filepath);
+ if(stype == SLIDE_TYPE_STREAMING ) // If remote file
+ {
+ /* Location: show url */
+ ivug_details_info_set_filename(&pDetailsView->file_Info, mdata->fileurl); // TODO : Check this. how to extract filename from URL????
+ ivug_details_info_set_location(&pDetailsView->file_Info, mdata->fileurl);
+ }
+ else
+ {
+ ivug_details_info_set_filename(&pDetailsView->file_Info, filepath);
+ ivug_details_info_set_location(&pDetailsView->file_Info, filepath);
+ }
+
+ if(mdata->bIsDRMContent)
+ {
+ ivug_details_info_set_drm_info(&pDetailsView->file_Info, filepath);
+ }
+
// Creating GUI
pDetailsView->evas = evas_object_evas_get(parent);
@@ -394,9 +590,17 @@ ivug_details_view_screen_create(Evas_Object *parent, Media_Data *mdata, ivug_vie
_ivug_detail_genlist_view_file_view_create(pDetailsView);
- _ivug_detail_genlist_view_gps_create(pDetailsView);
+// TODO : Should check below routine. why DRM has no GPS info???
+ if(mdata->bIsDRMContent == EINA_TRUE)
+ {
+ _ivug_detail_genlist_view_drm_create(pDetailsView);
+ }
+ else
+ {
+ _ivug_detail_genlist_view_gps_create(pDetailsView);
+ }
- elm_object_part_content_set( pDetailsView->layout, "detailsview.genlist" , pDetailsView->genlist );
+ elm_object_part_content_set(pDetailsView->layout, "details_view.genlist" , pDetailsView->genlist );
MSG_DETAIL_HIGH("Detail view(0x%08x) created for %s", pDetailsView, filepath);
diff --git a/main/src/view/ivug-details-view.h b/main/src/view/ivug-details-view.h
deleted file mode 100755
index af159d5..0000000
--- a/main/src/view/ivug-details-view.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.
- */
-
-
-#ifndef __DETAILS_VIEW_H__
-#define __DETAILS_VIEW_H__
-
-#include <unicode/udat.h>
-#include "ivug-data.h"
-#include "ivug-parameter.h"
-#include "ivug-detail-info.h"
-
-
-typedef struct {
- Elm_Genlist_Item_Class itc;
- Elm_Genlist_Item_Class title_itc;
- Elm_Genlist_Item_Class multiline_itc;
-} ivug_file_status_t;
-
-typedef struct {
- Evas_Object *parent;
- Evas_Object *bg;
-
- Evas_Object *layout;
- Evas *evas;
- Evas_Object *genlist;
-
-/*
- |---------------|
- | naviframe |
- |---------------|
- | |
- | genlist |
- | |
- |---------------|
-*/
-
- ivug_file_status_t file_Status; // TODO : Will remove
- ivug_file_info_t file_Info;
-} Ivug_DetailsView;
-
-
-Ivug_DetailsView *ivug_details_view_screen_create(Evas_Object *parent, Media_Data *mdata, ivug_view_by view_by);
-
-void ivug_details_view_destroy(Ivug_DetailsView *pDetailsView);
-
-Evas_Object *ivug_details_view_object_get(Ivug_DetailsView *pDetailsView);
-
-#endif // __DETAILS_VIEW_H__
-
-
diff --git a/main/src/view/ivug-main-view.c b/main/src/view/ivug-main-view.c
deleted file mode 100755
index 75af879..0000000
--- a/main/src/view/ivug-main-view.c
+++ /dev/null
@@ -1,1837 +0,0 @@
-/*
- * 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 <ui-gadget-module.h> // ug_destroy_me, ug_send_result
-#include <media-svc.h>
-#include <vconf.h>
-#include <vconf-keys.h>
-#include <utilX.h> // Key event
-
-#include "ivug-common.h"
-#include "ivug-parameter.h"
-
-#include "ivug-main-view.h"
-#include "ivug-util.h"
-#include "ivug-data.h"
-#include "ivug-ext-ug.h"
-#include "ivug-popup.h"
-#include "ivug-slider-item.h"
-#include "ivug-slider.h"
-#include "ivug-main.h"
-
-#include "ivug-setas-view.h"
-#include "ivug-details-view.h"
-
-#include "ivug-data.h"
-
-#define ELM_INTERNAL_API_ARGESFSDFEFC
-
-#include <elm_widget.h> // elm_selection_set
-#include <appsvc.h> // app service
-
-#undef HIDE_INDICATOR // For testing.
-
-#define CONTROL_ICON_DIRECTORY_PATH IMAGE_PATH"/01_Control icon"
-
-#define ICON_PATH_DELETE CONTROL_ICON_DIRECTORY_PATH"/T01_controlbar_icon_delete.png"
-#define ICON_PATH_SLIDESHOW CONTROL_ICON_DIRECTORY_PATH"/T01_controlbar_icon_slideshow.png"
-#define ICON_PATH_INFO CONTROL_ICON_DIRECTORY_PATH"/T01_controlbar_icon_info.png"
-
-#define ICON_PATH_OPTIONTRAY IMAGE_PATH"/T01_btn_optiontray.png"
-
-// EDJE
-#define IVUG_MAIN_EDJ EDJ_PATH"/ivug-main.edj"
-
-#define IVUG_RESPONSE_OK (1)
-
-#undef TEST_MOUSE_EVENT
-
-void
-_ivug_main_view_show_menu_bar(Ivug_MainView *pMainView);
-
-void
-_ivug_main_view_hide_menu_bar(Ivug_MainView *pMainView);
-
-static void
-_ivug_main_view_back_cb(void *data, Evas_Object *obj, void *event_info);
-
-Evas_Object *_create_tool_bar(Evas_Object *parent);
-
-static void
-_ivug_main_view_navibar_detail_cb(void *data, Evas_Object *obj, void *event_info);
-
-static void
-_ivug_main_view_navibar_detail_close_cb(void *data, Evas_Object *obj, void *event_info);
-
-static enum CTRL_BAR_TYPE
-_get_ctrl_bar_type(ivug_mode mode, Media_Type slide_type);
-static enum NAVI_BAR_TYPE
-_get_tool_bar_type(ivug_mode mode, Media_Type slide_type );
-
-#define IVUG_MAIN_DESTROY_ME(a) _ivug_main_view_destroy_me(a, __func__, __LINE__);
-
-static void
-_ivug_main_view_destroy_me(Ivug_MainView *pMainView, const char *fname, int nLine)
-{
- ivug_ret_if(!pMainView);
-
- MSG_MAIN_WARN("Main view request ug_destroy_me at [%s:%d]", fname, nLine);
-
- int x = 0;
- int y = 0;
- int w = 0;
- int h = 0;
-
- MSG_MAIN_WARN("Apply event blocker");
- pMainView->event_blocker = evas_object_rectangle_add(evas_object_evas_get(pMainView->layout));
- evas_object_geometry_get(pMainView->layout, &x, &y, &w, &h);
- evas_object_move(pMainView->event_blocker, x, y);
- evas_object_resize(pMainView->event_blocker, w, h);
- evas_object_color_set(pMainView->event_blocker, 0, 0, 0, 0);
- evas_object_show(pMainView->event_blocker);
-
- ug_destroy_me(pMainView->ugHandle);
-}
-
-static void
-_selection_info_deleted(void * data, Evas * e, Evas_Object * obj, void * event_info)
-{
- ivug_retm_if(!data, "data is NULL");
- MSG_MAIN_WARN("selection info deleted");
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- pMainView->selectioninfo = NULL;
-
- return;
-}
-
-static inline void
-_main_view_create_selection_info(Ivug_MainView *pMainView, const char *string)
-{
- IV_ASSERT(pMainView != NULL);
- if(pMainView->selectioninfo)
- {
- evas_object_event_callback_del(pMainView->selectioninfo, EVAS_CALLBACK_DEL,
- _selection_info_deleted);
- evas_object_del(pMainView->selectioninfo);
- pMainView->selectioninfo = NULL;
- }
- pMainView->selectioninfo = ivug_popup_selectioninfo(pMainView->layout, string);
- ivug_retm_if(pMainView->selectioninfo == NULL, "selectioninfo is NULL");
- evas_object_event_callback_add(pMainView->selectioninfo, EVAS_CALLBACK_DEL,
- _selection_info_deleted, pMainView);
-}
-
-
-//copy popup
-static void
-_ivug_main_copy_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
-{
- int response_id = (int)event_info;
- IV_ASSERT(data != NULL);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- MSG_MAIN_HIGH("Copy popup response : %d", response_id);
-
- if (pMainView->copy_popup)
- {
- evas_object_del(pMainView->copy_popup);
- pMainView->copy_popup = NULL;
- }
- else
- {
- MSG_MAIN_WARN("copy popup is NULL");
- }
-}
-
-static void
-_ivug_main_copy_popup_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
- ivug_ret_if(!data);
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- //get current file path.
- Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider);
- Media_Data *mdata = ivug_data_get_data(sitem->mitem);
-
- if (mdata == NULL)
- {
- MSG_MAIN_ERROR("slider data is NULL");
- return;
- }
-
- char *path = NULL;
- int len = 0;
- // This Will add to the article
- char buf[IVUG_MAX_FILE_PATH_LEN] = {0,};
-
- path = mdata->filepath;
- len = strlen(mdata->filepath)+strlen("file://")+1;
- snprintf(buf, IVUG_MAX_FILE_PATH_LEN, "file://%s", mdata->filepath);
-
- if (len < IVUG_MAX_FILE_PATH_LEN)
- {
- MSG_MAIN_HIGH("file path = %s, file url =%s", path, buf);
- if ( pMainView->parent)
- {
- elm_cnp_selection_set(pMainView->layout, ELM_SEL_TYPE_CLIPBOARD, ELM_SEL_FORMAT_IMAGE, buf, sizeof(buf));
- }
- }
- else
- {
- MSG_MAIN_ERROR("slider file path is too long");
- }
-
- evas_object_del(pMainView->copy_popup);
- pMainView->copy_popup = NULL;
-}
-
-Evas_Object*
-_ivug_main_create_copy_popup_create(Ivug_MainView *pMainView, int x, int y)
-{
- ivug_retv_if(!pMainView, NULL);
-
- Evas_Object* ctx_popup = NULL;
- ctx_popup = elm_ctxpopup_add(pMainView->layout);
- elm_ctxpopup_item_append(ctx_popup, IDS_COPY, NULL, _ivug_main_copy_popup_selected_cb, pMainView);
- evas_object_smart_callback_add( ctx_popup, "hide", _ivug_main_copy_popup_response_cb, pMainView);
-
- //evas_object_smart_callback_add(ctxpopup, "dismissed", _dismissed_cb, ctxpopup);
- evas_object_move(ctx_popup, x, y);
-
- evas_object_show(ctx_popup);
-
- return ctx_popup;
-}
-
-static void
-_ivug_main_view_navibar_detail_close_cb(void *data, Evas_Object *obj, void *event_info)
-{
- IV_ASSERT(data != NULL);
-
- MSG_MAIN_HIGH("ENTER : Btn detail close clicked. obj=0x%08x data=0x%08x", obj, data);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- IV_ASSERT( pMainView->navi_bar != NULL);
-
- evas_object_smart_callback_del(obj, "clicked", _ivug_main_view_navibar_detail_close_cb);
-
- elm_object_item_part_content_unset(pMainView->navi_it, "elm.swallow.detail");
-
- MSG_MAIN_HIGH("Delete detail view");
- ivug_details_view_destroy(pMainView->pDetailsView); // Delete detail view.
- pMainView->pDetailsView = NULL;
-
-// Enable detail view button callback
- evas_object_smart_callback_add(pMainView->btn_detail, "clicked", _ivug_main_view_navibar_detail_cb, pMainView->btn_detail_data);
- elm_object_disabled_set(pMainView->btn_detail, EINA_FALSE);
-
- Evas_Object *btn_close = elm_object_item_part_content_unset(pMainView->navi_it, "title_right_btn");
- evas_object_del(btn_close);
-
- MSG_MAIN_HIGH("LEAVE : Btn detail close clicked. obj=0x%08x data=0x%08x", obj, data);
-}
-
-static void _update_title(Ivug_MainView *pMainView)
-{
- static char title[256];
-
- Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider);
- Media_Data *mdata = ivug_data_get_data(sitem->mitem);
-
- if (mdata == NULL)
- {
- MSG_MAIN_ERROR("slider data is NULL");
- return;
- }
-
- if ( pMainView->mode == IVUG_MODE_NORMAL)
- {
- snprintf(title, sizeof(title), "%d/%d",
- ivug_slider_get_current_slide_count(pMainView->slider),
- ivug_slider_get_total_slide_count(pMainView->slider)); //get title.
- }
- else if(mdata->filepath != NULL)
- {
- const char* filename = ivug_get_filename(mdata->filepath);
- if(filename)
- {
- snprintf(title, sizeof(title), "%s", filename);
- }
- }
-
- IV_ASSERT(pMainView->navi_bar != NULL);
-
- MSG_MAIN_HIGH("Update title : %s", title);
-
- elm_object_item_text_set(pMainView->navi_it, title);
-
-}
-
-static void
-_ivug_main_view_navibar_detail_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_MAIN_HIGH("ENTER : Btn detail view clicked. obj=0x%08x data=0x%08x", obj, data);
- ivug_ret_if(!obj||!data);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- if(pMainView->pDetailsView)
- {
- MSG_MAIN_ERROR("details view already created");
- return;
- }
-
- pMainView->btn_detail_data = evas_object_smart_callback_del(obj, "clicked", _ivug_main_view_navibar_detail_cb);
- pMainView->btn_detail = obj;
-
- Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider);
- Media_Data *mdata = ivug_data_get_data(sitem->mitem);
-
- if (mdata == NULL)
- {
- MSG_MAIN_ERROR("slider data is NULL");
- return;
- }
-
- pMainView->pDetailsView = ivug_details_view_screen_create(pMainView->navi_bar, mdata, pMainView->view_by);
-
- if(!pMainView->pDetailsView)
- {
- MSG_MAIN_ERROR("create details view failed");
- return;
- }
-
- elm_object_item_part_content_set(pMainView->navi_it, "elm.swallow.detail", ivug_details_view_object_get(pMainView->pDetailsView));
-
-// Transition effect does not comming ocassionally when instant mode is used.
-// evas_object_smart_callback_add(pMainView->navi_bar, "transition,finished", _ivug_main_view_details_transit_finished_cb, pMainView);
- PERF_CHECK_BEGIN(LVL1 "Update title");
-
- _update_title(pMainView);
-
- PERF_CHECK_END(LVL1 "Update title");
-
- _ctrl_bar_type ctrlbar_type;
- ctrlbar_type = _get_ctrl_bar_type(pMainView->mode, mdata->slide_type);
- if(ctrlbar_type == CTRL_BAR_TYPE_FILE || ctrlbar_type == CTRL_BAR_TYPE_CAMERA_IMAGE
- || ctrlbar_type == CTRL_BAR_TYPE_CAMERA_VIDEO)
- {
- MSG_MAIN_HIGH("Disable details button ");
-
- /* Disable details button in controlbar */
- if(pMainView->ctrl_bar_item[1])
- elm_object_item_disabled_set(pMainView->ctrl_bar_item[1], EINA_TRUE);
- }
- else if(ctrlbar_type == CTRL_BAR_TYPE_IMAGE || ctrlbar_type == CTRL_BAR_TYPE_VIDEO)
- {
- /* Disable details button in controlbar */
- if(pMainView->ctrl_bar_item[2])
- elm_object_item_disabled_set(pMainView->ctrl_bar_item[2], EINA_TRUE);
- }
-
- MSG_MAIN_HIGH("LEAVE : Btn detail view clicked. obj=0x%08x data=0x%08x", obj, data);
-}
-
-#define ZOOM_LEVEL_STEP (0.7)
-#define ZOOM_LEVEL_MAX (3)
-
-static void _show_zoom_icon(void *data)
-{
- ivug_ret_if(!data);
-
- MSG_MAIN_ERROR("_show_zoom_icon");
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider);
- if(!sitem)
- {
- MSG_MAIN_ERROR("sitem is NULL");
- return;
- }
-
- if(sitem->zoom_level == 0)
- {
- edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,disable","elm");
- edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,enable","elm");
- }
- else if(sitem->zoom_level == ZOOM_LEVEL_MAX)
- {
- edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,disable","elm");
- edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,enable","elm");
- }
- else
- {
- edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,enable","elm");
- edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,enable","elm");
- }
-}
-
-static void
-_ivug_main_view_zoom_out_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
-{
- ivug_ret_if(!obj);
- ivug_ret_if(!data);
-
- MSG_MAIN_ERROR("_ivug_main_view_zoom_out_cb");
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider);
- if(!sitem)
- {
- MSG_MAIN_ERROR("sitem is NULL");
- return;
- }
-
- if(sitem->zoom_level == 0)
- {
- MSG_MAIN_ERROR("zoom_level is 0");
- return;
- }
-
- double zoom = 0.0;
- Evas_Coord ix = 0, iy= 0, iw= 0, ih= 0;
-
- evas_object_geometry_get(sitem->photocam, &ix, &iy, &iw, &ih);
-
- zoom = ivug_slider_item_zoom_get(sitem);
- zoom /= ZOOM_LEVEL_STEP;
- ivug_slider_item_zoom_set(sitem, zoom, iw/2, ih/2);
-
- ivug_slider_item_hold_set(sitem, EINA_FALSE);
-
- sitem->zoom_level--;
-
- _show_zoom_icon(data);
-}
-
-static void
-_ivug_main_view_zoom_in_cb(void *data, Evas_Object *obj, const char *emission, const char *source)
-{
- ivug_ret_if(!obj);
- ivug_ret_if(!data);
-
- MSG_MAIN_ERROR("_ivug_main_view_zoom_in_cb");
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider);
- if(!sitem)
- {
- MSG_MAIN_ERROR("sitem is NULL");
- return;
- }
-
- if(sitem->zoom_level > ZOOM_LEVEL_MAX)
- {
- MSG_MAIN_ERROR("zoom_level is %d", sitem->zoom_level);
- return;
- }
-
- double zoom = 0.0;
- Evas_Coord ix = 0, iy= 0, iw= 0, ih= 0;
-
- evas_object_geometry_get(sitem->photocam, &ix, &iy, &iw, &ih);
-
- zoom = ivug_slider_item_zoom_get(sitem);
- zoom *= ZOOM_LEVEL_STEP;
- ivug_slider_item_zoom_set(sitem, zoom, iw/2, ih/2);
-
- ivug_slider_item_hold_set(sitem, EINA_FALSE);
-
- sitem->zoom_level++;
-
- _show_zoom_icon(data);
-}
-
-static void
-_ivug_main_view_update_details_item(Ivug_MainView *pMainView)
-{
- ivug_retm_if(!pMainView, "pMainView is NULL");
- ivug_retm_if(!pMainView->slider, "pMainView->slider is NULL");
-
- Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider);
- if(!sitem)
- {
- MSG_MAIN_ERROR("sitem is NULL");
- return;
- }
-
- Media_Data *mdata = ivug_data_get_data(sitem->mitem);
- if(!mdata)
- {
- MSG_MAIN_ERROR("mdata is NULL");
- return;
- }
-
- _ctrl_bar_type ctrlBarType;
- ctrlBarType = _get_ctrl_bar_type(pMainView->mode, mdata->slide_type);
- if(ctrlBarType == CTRL_BAR_TYPE_FILE || ctrlBarType == CTRL_BAR_TYPE_CAMERA_IMAGE ||
- ctrlBarType == CTRL_BAR_TYPE_CAMERA_VIDEO)
- {
- /* Enable details button in control bar*/
- if(pMainView->ctrl_bar_item[1])
- elm_object_item_disabled_set(pMainView->ctrl_bar_item[1], EINA_FALSE);
- }
- else if(ctrlBarType == CTRL_BAR_TYPE_IMAGE || ctrlBarType == CTRL_BAR_TYPE_VIDEO)
- {
- /* Enable details button in control bar*/
- if(pMainView->ctrl_bar_item[2])
- elm_object_item_disabled_set(pMainView->ctrl_bar_item[2], EINA_FALSE);
- }
-}
-
-static void
-_ivug_main_view_delete_photo_cb(void *data, Evas_Object *obj, void *event_info)
-{
- IVUG_FUNC_ENTER();
- ivug_ret_if(!obj||!data||!event_info);
-
- int response_id = (int)event_info;
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
- if ( response_id == POPUP_RESPONSE_OK )
- {
- MSG_MAIN_HIGH("Removing current slide.");
-
- if(pMainView->pDetailsView)
- {
- MSG_MAIN_HIGH("Exit details view");
- _ivug_main_view_navibar_detail_close_cb(pMainView, NULL, NULL);
-
- _ivug_main_view_update_details_item(pMainView);
- }
-
- ivug_slider_delete_current_slide(pMainView->slider);
- }
-
- evas_object_del(obj); //delete popup
-
-}
-
-static void
-_ivug_main_view_ctrlbar_delete_cb(void *data, Evas_Object *obj, void *event_info)
-{
- IVUG_FUNC_ENTER();
- ivug_ret_if(!obj||!data);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- ivug_popup_question(pMainView->layout, NULL,
- IDS_DELETE_MSG, _ivug_main_view_delete_photo_cb, pMainView);
-
- IVUG_FUNC_LEAVE();
- return;
-}
-
-static void
-_ivug_main_view_ctrlbar_slide_show_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_MAIN_HIGH("Start slide show");
-
- IV_ASSERT(data != NULL);
- ivug_ret_if(!event_info);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- Elm_Object_Item *ctrl_bar_item = (Elm_Object_Item *)event_info;
-
- if(elm_object_item_disabled_get(ctrl_bar_item) == EINA_TRUE)
- {
- MSG_MAIN_WARN("Slide show already started");
- return;
- }
-
- elm_object_item_disabled_set(ctrl_bar_item, EINA_TRUE);
-
- if(pMainView->pDetailsView) {
- MSG_MAIN_HIGH("Exit details view");
- _ivug_main_view_navibar_detail_close_cb(pMainView, NULL, NULL);
- }
-
- ivug_prohibit_lcd_off();
-
- _ivug_main_view_hide_menu_bar(pMainView);
-
- ivug_slider_start_slide_show(pMainView->slider, EINA_TRUE);
-
-}
-
-
-static void
-_ivug_main_view_back_cb(void *data, Evas_Object *obj, void *event_info)
-{
- ivug_ret_if(!obj||!data);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
- ivug_retm_if(!pMainView->navi_bar, "%s", "navigation value is NULL");
-
- MSG_MAIN_WARN("Back key pressed");
-
- if( pMainView->pDetailsView == NULL) // Detail view is not showed,.
- {
- evas_object_smart_callback_del(pMainView->back_btn, "clicked", _ivug_main_view_back_cb);
- IVUG_MAIN_DESTROY_ME(pMainView);
- return;
- }
-
- /* Back from details view */
-
- Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider);
- ivug_retm_if(!sitem, "sitem is NULL");
-
- Media_Data *mdata = ivug_data_get_data(sitem->mitem);
- ivug_retm_if(!mdata, "mdata is NULL");
-
- _ctrl_bar_type ctrlBarType;
- ctrlBarType = _get_ctrl_bar_type(pMainView->mode, mdata->slide_type);
- if(ctrlBarType == CTRL_BAR_TYPE_FILE ||
- ctrlBarType == CTRL_BAR_TYPE_CAMERA_IMAGE ||
- ctrlBarType == CTRL_BAR_TYPE_CAMERA_VIDEO)
- {
- // In case that called by my file, camera, UG doest not removed.
- _ivug_main_view_navibar_detail_close_cb(pMainView, NULL, NULL);
-
- MSG_MAIN_HIGH("Enable details button");
- if(pMainView->ctrl_bar_item[1])
- elm_object_item_disabled_set(pMainView->ctrl_bar_item[1], EINA_FALSE);
-
- return;
- }
- else if(ctrlBarType == CTRL_BAR_TYPE_IMAGE || ctrlBarType == CTRL_BAR_TYPE_VIDEO)
- {
- // In case that called by my file, camera, UG doest not removed.
- _ivug_main_view_navibar_detail_close_cb(pMainView, NULL, NULL);
-
- MSG_MAIN_HIGH("Enable details button");
- if(pMainView->ctrl_bar_item[2])
- elm_object_item_disabled_set(pMainView->ctrl_bar_item[2], EINA_FALSE);
- }
- else // otherwise, from gallery, ug will be terminated
- {
- evas_object_smart_callback_del(pMainView->back_btn, "clicked", _ivug_main_view_back_cb);
- IVUG_MAIN_DESTROY_ME(pMainView);
- return;
- }
-}
-
-
-
-static void
-_send_result(struct ui_gadget *ug, bool selected)
-{
-//result bundle key
-#define IVUG_RESULT_BUNDLE_KEY_SELECTION_RESULT "Result"
-
-//result bundle value
-#define IVUG_RESULT_BUNDLE_VALUE_OK "Ok"
-#define IVUG_RESULT_BUNDLE_VALUE_CANCEL "Cancel"
-
- ivug_ret_if(!ug);
-
- bundle *b;
- b = bundle_create();
-
- if (selected)
- {
- bundle_add(b, IVUG_RESULT_BUNDLE_KEY_SELECTION_RESULT, IVUG_RESULT_BUNDLE_VALUE_OK);
- }
- else
- {
- bundle_add(b, IVUG_RESULT_BUNDLE_KEY_SELECTION_RESULT, IVUG_RESULT_BUNDLE_VALUE_CANCEL);
- }
-
- ug_send_result(ug, b);
-
- bundle_free(b);
-}
-
-
-//select button
-void
-_ivug_main_view_select_ok_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_MAIN_HIGH("Select OK");
- ivug_ret_if(!obj||!data);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- //send result.
- _send_result(pMainView->ugHandle, true);
-
- IVUG_MAIN_DESTROY_ME(pMainView);
-}
-
-void
-_ivug_main_view_select_cancel_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_MAIN_HIGH("Select Cancel");
-
- ivug_ret_if(!obj||!data);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- //send result.
- _send_result(pMainView->ugHandle, false);
-
- IVUG_MAIN_DESTROY_ME(pMainView);
-}
-
-
-static bool _is_mmc_inserted(void)
-{
- int noti_message;
- int ret = -1;
-
- ret = vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &noti_message);
-
- if ( ret != 0 ) // falied
- {
- MSG_NOTI_ERROR("Get %s is failed", VCONFKEY_SYSMAN_MMC_STATUS);
- return false;
- }
-
- if(noti_message==VCONFKEY_SYSMAN_MMC_MOUNTED)
- {
- return true;
- }
-
- return false;
-
-}
-
-static Eina_Bool _key_down_cb(void *user_data, int type, void *event)
-{
- if (!user_data) {
- MSG_IMAGEVIEW_ERROR("user data is NULL");
- return ECORE_CALLBACK_PASS_ON;
- }
-
- Ecore_Event_Key *key_event = (Ecore_Event_Key *) event;
-
- Ivug_MainView *main_view = (Ivug_MainView *)user_data;
-
- MSG_IMAGEVIEW_HIGH("Key down : %s", key_event->keyname);
-
- if (!strcmp(key_event->keyname, KEY_END))
- {
- MSG_IMAGEVIEW_HIGH("Bakc(End) key");
- }
- else if (!strcmp(key_event->keyname, KEY_SELECT))
- {
- MSG_IMAGEVIEW_HIGH("Home key");
- }
- else if (!strcmp(key_event->keyname, KEY_POWER))
- {
- MSG_IMAGEVIEW_HIGH("Power key");
- ivug_slider_stop_slide_show(main_view->slider);
- }
- return ECORE_CALLBACK_PASS_ON;
-}
-
-static Eina_Bool _on_exit_timer_expired(void *data)
-{
- ivug_retv_if(!data, ECORE_CALLBACK_CANCEL);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- pMainView->exit_timer = NULL;
-
- IVUG_MAIN_DESTROY_ME(pMainView);
-
- return ECORE_CALLBACK_CANCEL;
-}
-
-static void _on_mmc_state_changed(keynode_t* node, void *data)
-{
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- if(_is_mmc_inserted() == false )
- {
- MSG_IMAGEVIEW_WARN("MMC Removed!. Request destroy UG=0x%08x", gGetUGHandle());
-
- if ( pMainView->ext_ug )
- {
- MSG_IMAGEVIEW_HIGH("Extern UG is running");
- }
-
- ivug_show_popup(pMainView->layout, IDS_ERROR, IDS_SD_CARD_REMOVED, NULL, NULL);
- pMainView->exit_timer = ecore_timer_add(0.2, _on_exit_timer_expired, data);
- }
-}
-
-static enum NAVI_BAR_TYPE
-_get_tool_bar_type(ivug_mode mode, Media_Type slide_type )
-{
- enum NAVI_BAR_TYPE tool_bar_type = NAVI_BAR_TYPE_NONE;
-
- //calc navi bar style , temporary code.
- static const char *szType[] = {
- "[ INVALID ]",
- "[ ]",
- "[Set, Info]",
- "[Ok, Cancel]",
- };
-
-
- switch (mode)
- {
- case IVUG_MODE_NORMAL:
- tool_bar_type = NAVI_BAR_TYPE_EMPTY;
- if (slide_type == SLIDE_TYPE_IMAGE)
- {
- tool_bar_type = NAVI_BAR_TYPE_IMAGE;
- }
- else if (slide_type == SLIDE_TYPE_VIDEO)
- {
- tool_bar_type = NAVI_BAR_TYPE_VIDEO;
- }
- else
- {
- tool_bar_type = NAVI_BAR_TYPE_EMPTY;
- }
- break;
- case IVUG_MODE_SINGLE:
- case IVUG_MODE_FILE:
- tool_bar_type = NAVI_BAR_TYPE_EMPTY;
-
- break;
- case IVUG_MODE_DISPLAY:
- tool_bar_type = NAVI_BAR_TYPE_SELECT;
-
- break;
- case IVUG_MODE_CAMERA:
- tool_bar_type = NAVI_BAR_TYPE_EMPTY;
- break;
- default:
- MSG_MAIN_ERROR("Unhandled mode : %d", mode);
- tool_bar_type = NAVI_BAR_TYPE_EMPTY;
-
- break;
- }
-
- MSG_MAIN_MED("Mode=%d Slide=%d ToolBar=%s", mode, slide_type, szType[tool_bar_type]);
-
- return tool_bar_type;
-}
-
-
-static enum CTRL_BAR_TYPE
-_get_ctrl_bar_type(ivug_mode mode, Media_Type slide_type)
-{
- // this is temporary code.
- enum CTRL_BAR_TYPE type = CTRL_BAR_TYPE_FILE;
-
- static const char *szType[] = {
- "[ Invalid ]",
- "[ None ]",
- "[Delete,Info]",
- "[Delete,Info]",
- "[Delete,Info]",
- "[Delete,Slide show]",
- "[Delete,Slide show]",
- };
-
- switch (mode)
- {
- case IVUG_MODE_NORMAL:
- if (slide_type == SLIDE_TYPE_IMAGE)
- {
- type = CTRL_BAR_TYPE_IMAGE;
- }
- else if (slide_type == SLIDE_TYPE_VIDEO)
- {
- type = CTRL_BAR_TYPE_VIDEO;
- }
- else if (slide_type == SLIDE_TYPE_UNKNOWN)
- {
- type = CTRL_BAR_TYPE_IMAGE; // TODO : Need to check. when web image is invalid????
- }
- else
- {
- MSG_MAIN_ERROR("Unhandled slide type : %d", slide_type);
- type = CTRL_BAR_TYPE_FILE;
- }
- break;
- case IVUG_MODE_SINGLE:
- case IVUG_MODE_FILE:
- type = CTRL_BAR_TYPE_FILE;
- break;
- case IVUG_MODE_CAMERA:
- if (slide_type == SLIDE_TYPE_IMAGE)
- {
- type = CTRL_BAR_TYPE_CAMERA_IMAGE;
- }
- else if (slide_type == SLIDE_TYPE_VIDEO)
- {
- type = CTRL_BAR_TYPE_CAMERA_VIDEO;
- }
- else
- {
- MSG_MAIN_ERROR("Unhandled slide type : %d", slide_type);
- type = CTRL_BAR_TYPE_FILE;
- }
- break;
- case IVUG_MODE_DISPLAY:
- type = CTRL_BAR_TYPE_EMPTY;
- break;
- default:
- MSG_MAIN_ERROR("Unhandled mode : %d", mode);
- type = CTRL_BAR_TYPE_FILE;
- }
-
- MSG_MAIN_MED("Mode=%d Slide=%d CtrlBar=%s", mode, slide_type, szType[type]);
-
- return type;
-
-}
-
-Evas_Object *_create_ctrl_bar(Evas_Object *parent, Elm_Theme *th)
-{
- Evas_Object *toolbar = elm_toolbar_add(parent);
-
-//create control bar
- if (toolbar == NULL)
- {
- MSG_MAIN_ERROR("controlbar create failed");
- return NULL;
- }
-
- elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
-
-#ifdef USE_CUSTOM_STYLE
- elm_object_theme_set(toolbar, th);
-
- char *ctrlStyle = NULL;
-
- ctrlStyle = "ivug-toolbar/default";
-
- Eina_Bool bstyle = elm_object_style_set(toolbar, ctrlStyle);
- MSG_MAIN_HIGH("toolbar elm_object_style_set result = %d", bstyle);
-#endif
-
- MSG_MAIN_HIGH("Create ctrl_bar. Obj=0x%08x", toolbar);
-
- return toolbar;
-
-}
-
-void
-_update_tool_bar(Ivug_MainView *pMainView, enum NAVI_BAR_TYPE barType)
-{
-
-/*
- |-------------------|
- |naviframe(tool_bar)|
- |-------------------|
- | |
- | |
- | |
- | |
- |-------------------|
- | ctrl_bar |
- |-------------------|
-*/
-
- MSG_MAIN_HIGH("Update tool_bar. Type=%d", barType);
-//remove old control bar item.
- int i = 0;
-
- for ( i = 0 ; i < MAX_NAVI_ITEM_CNT ; i ++)
- {
- if (pMainView->tool_bar_item[i])
- {
- evas_object_del(pMainView->tool_bar_item[i]);
- pMainView->tool_bar_item[i] = NULL;
- }
- }
-
- if ( barType != NAVI_BAR_TYPE_SELECT )
- {
- /* other type don't need toolbar */
- return;
- }
-
- pMainView->tool_bar_item[0] = ivug_button_add(pMainView->navi_bar, "naviframe/title/default" , IDS_OK,
- NULL, _ivug_main_view_select_ok_cb, pMainView );
-
- pMainView->tool_bar_item[1] = ivug_button_add(pMainView->navi_bar, "naviframe/title/default" , IDS_CANCEL,
- NULL, _ivug_main_view_select_cancel_cb, pMainView );
-
- elm_object_item_part_content_set(pMainView->navi_it, "title_left_btn", pMainView->tool_bar_item[0]);
- elm_object_item_part_content_set(pMainView->navi_it, "title_right_btn", pMainView->tool_bar_item[1]);
-
- pMainView->option_show = EINA_TRUE;
-}
-
-
-
-void
-_update_ctrl_bar(Ivug_MainView *pMainView, enum CTRL_BAR_TYPE barType)
-{
- MSG_MAIN_HIGH("Update ctrl_bar. barType=%d", barType);
-
-//remove old control bar item.
- Evas_Object* ctrl_bar = pMainView->ctrl_bar;
-
- int i = 0;
-
- for ( i = 0 ; i < MAX_CTRL_ITEM_CNT ; i ++)
- {
- if (pMainView->ctrl_bar_item[i])
- {
- elm_object_item_del(pMainView->ctrl_bar_item[i]);
- pMainView->ctrl_bar_item[i] = NULL;
- }
- }
-
-/*
- IVUG_MODE_NORMAL =>
- Depends on content
- Image [Delete, Slide show, Detail] -> CTRL_BAR_TYPE_IMAGE
- Video [Delete, Slide show, Detail] -> CTRL_BAR_TYPE_VIDEO
-
- IVUG_MODE_SINGLE, IVUG_MODE_FILE, => CTRL_BAR_TYPE_FILE [Delete,Info]
- IVUG_MODE_DISPLAY => CTRL_BAR_TYPE_EMPTY
-
- if ((mode == IVUG_MODE_FILE) || (mode == IVUG_MODE_SINGLE))
- barType == CTRL_BAR_TYPE_FILE
-
-*/
- switch(barType)
- {
- case CTRL_BAR_TYPE_FILE:
- pMainView->ctrl_bar_item[0] = elm_toolbar_item_append(ctrl_bar,
- ICON_PATH_DELETE, NULL, _ivug_main_view_ctrlbar_delete_cb, pMainView);
- pMainView->ctrl_bar_item[1] = elm_toolbar_item_append(ctrl_bar,
- ICON_PATH_INFO, NULL, _ivug_main_view_navibar_detail_cb, pMainView);
- break;
-
- case CTRL_BAR_TYPE_CAMERA_IMAGE:
- pMainView->ctrl_bar_item[0] = elm_toolbar_item_append(ctrl_bar,
- ICON_PATH_DELETE, NULL, _ivug_main_view_ctrlbar_delete_cb, pMainView);
- pMainView->ctrl_bar_item[1] = elm_toolbar_item_append(ctrl_bar,
- ICON_PATH_INFO, NULL, _ivug_main_view_navibar_detail_cb, pMainView);
- break;
-
- case CTRL_BAR_TYPE_CAMERA_VIDEO:
- pMainView->ctrl_bar_item[0] = elm_toolbar_item_append(ctrl_bar,
- ICON_PATH_DELETE, NULL, _ivug_main_view_ctrlbar_delete_cb, pMainView);
- pMainView->ctrl_bar_item[1] = elm_toolbar_item_append(ctrl_bar,
- ICON_PATH_INFO, NULL, _ivug_main_view_navibar_detail_cb, pMainView);
- break;
-
- case CTRL_BAR_TYPE_IMAGE:
- pMainView->ctrl_bar_item[0] = elm_toolbar_item_append(ctrl_bar,
- ICON_PATH_DELETE, NULL, _ivug_main_view_ctrlbar_delete_cb, pMainView);
- pMainView->ctrl_bar_item[1] = elm_toolbar_item_append(ctrl_bar,
- ICON_PATH_SLIDESHOW, NULL, _ivug_main_view_ctrlbar_slide_show_cb, pMainView);
- pMainView->ctrl_bar_item[2] = elm_toolbar_item_append(ctrl_bar,
- ICON_PATH_INFO, NULL, _ivug_main_view_navibar_detail_cb, pMainView);
- break;
-
- case CTRL_BAR_TYPE_VIDEO:
- pMainView->ctrl_bar_item[0] = elm_toolbar_item_append(ctrl_bar,
- ICON_PATH_DELETE, NULL, _ivug_main_view_ctrlbar_delete_cb, pMainView);
- pMainView->ctrl_bar_item[1] = elm_toolbar_item_append(ctrl_bar,
- ICON_PATH_SLIDESHOW, NULL, _ivug_main_view_ctrlbar_slide_show_cb, pMainView);
- pMainView->ctrl_bar_item[2] = elm_toolbar_item_append(ctrl_bar,
- ICON_PATH_INFO, NULL, _ivug_main_view_navibar_detail_cb, pMainView);
- break;
-
- default:
- MSG_MAIN_ERROR("Unhandled ctrl bar type=%d", barType);
- break;
- }
-
-}
-
-static void _update_main_view(Ivug_MainView *pMainView, Slide_Item *sitem)
-{
- Media_Data *mdata = ivug_data_get_data(sitem->mitem);
- if(mdata == NULL)
- {
- MSG_MAIN_ERROR("mdata is NULL");
- return;
- }
-
- PERF_CHECK_BEGIN(LVL6 "Set menu title");
-
- _update_title(pMainView);
-
- PERF_CHECK_END(LVL6 "Set menu title");
-
- if(pMainView->pDetailsView)
- {
- MSG_MAIN_ERROR("In details view, skip update toolbar/controlbar");
- return;
- }
-
- enum CTRL_BAR_TYPE ctrlBarType;
- enum NAVI_BAR_TYPE toolBarType;
-
- ctrlBarType = _get_ctrl_bar_type(pMainView->mode, mdata->slide_type);
- toolBarType = _get_tool_bar_type(pMainView->mode, mdata->slide_type);
-
- if ( toolBarType != pMainView->tool_bar_type ) // when change toolbar Type
- {
- PERF_CHECK_BEGIN(LVL6 "add toolbar item");
-
- MSG_MAIN_HIGH("ToolBar update. Old=%d Cur=%d", toolBarType , pMainView->tool_bar_type);
- _update_tool_bar(pMainView, toolBarType);
- pMainView->tool_bar_type = toolBarType;
-
- PERF_CHECK_END(LVL6 "add toolbar item");
- }
-
- if ( ctrlBarType != pMainView->ctrl_bar_type ) // when change ctrlbar Type
- {
- PERF_CHECK_BEGIN(LVL6 "add contolbar item");
-
- MSG_MAIN_HIGH("CtrlBar update. Old=%d Cur=%d", ctrlBarType , pMainView->ctrl_bar_type);
- _update_ctrl_bar(pMainView, ctrlBarType);
- pMainView->ctrl_bar_type = ctrlBarType;
-
- PERF_CHECK_END(LVL6 "add contolbar item");
- }
-
-// If Inavalid image, disable all buttons.
-
- slide_state_t state = ivug_slider_item_get_state(sitem);
-
- Elm_Object_Item *item = NULL;
- if ( state == SLIDE_STATE_ERROR)
- {
- const char *item_label = NULL;
- Evas_Object *object = NULL;
-
- /* Disable all toolbar items */
- int i = 0;
- for(i=0; i<MAX_NAVI_ITEM_CNT; i++)
- {
- if(pMainView->tool_bar_item[i] && (item_label = elm_object_text_get(pMainView->tool_bar_item[i])) )
- {
- if(!strncmp(item_label, IDS_DETAILS, strlen(item_label)))
- {
- MSG_MAIN_HIGH("Skip %s", item_label);
- continue;
- }
- }
- elm_object_disabled_set(pMainView->tool_bar_item[i], EINA_TRUE);
- }
-
- /* Disable all controlbar items */
-#ifdef _USE_LABEL_
- item = elm_toolbar_first_item_get(pMainView->ctrl_bar);
- for(; item!=NULL; item=elm_toolbar_item_next_get(item)){
- item_label = elm_object_item_text_get(item);
- if(item_label && (!strncmp(item_label, IDS_DELETE, strlen(item_label)) ||
- !strncmp(item_label, IDS_DETAILS, strlen(item_label)) ||
- !strncmp(item_label, IDS_SLIDE_SHOW, strlen(item_label))))
- {
- MSG_MAIN_HIGH("Skip %s", item_label);
- continue;
- }
-
- elm_object_item_disabled_set(item, EINA_TRUE);
- }
-#else
- const char *icon_file = NULL;
- item = elm_toolbar_first_item_get(pMainView->ctrl_bar);
- for(; item!=NULL; item=elm_toolbar_item_next_get(item))
- {
- object = elm_toolbar_item_icon_object_get(item);
- if(!object)
- continue;
-
- elm_icon_file_get(object, &icon_file, NULL);
-
- if(icon_file && (!strncmp(icon_file, ICON_PATH_DELETE, strlen(icon_file)) ||
- !strncmp(icon_file, ICON_PATH_INFO, strlen(icon_file)) ||
- !strncmp(icon_file, ICON_PATH_SLIDESHOW, strlen(icon_file))))
- {
- MSG_MAIN_HIGH("Skip %s", icon_file);
- continue;
- }
-
- elm_object_item_disabled_set(item, EINA_TRUE);
- }
-#endif
- return ;
- }
- else
- {
- int i = 0;
- /* Enable all toolbar items */
- for(i=0; i<MAX_NAVI_ITEM_CNT; i++)
- {
- if(pMainView->tool_bar_item[i])
- {
- elm_object_disabled_set(pMainView->tool_bar_item[i], EINA_FALSE);
- }
- }
-
- /* Enable all controlbar items */
- item = elm_toolbar_first_item_get(pMainView->ctrl_bar);
- for(; item!=NULL; item=elm_toolbar_item_next_get(item))
- {
- elm_object_item_disabled_set(item, EINA_FALSE);
- }
- }
-
- if(mdata->slide_type == SLIDE_TYPE_IMAGE)
- {
- _show_zoom_icon(pMainView);
- }
- else
- {
- edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,hide","elm");
- edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,hide","elm");
- }
-}
-
-void
-_ivug_main_view_show_menu_bar(Ivug_MainView *pMainView)
-{
- MSG_MAIN_HIGH("Show Menu");
-
- pMainView->bShowMenu = EINA_TRUE;
- evas_object_show(pMainView->ctrl_bar);
- Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider);
-
- _update_main_view(pMainView, sitem);
-
-#ifdef HIDE_INDICATOR
- elm_win_indicator_mode_set(ug_get_window(), ELM_WIN_INDICATOR_HIDE);
-#else
- elm_win_indicator_mode_set(ug_get_window(), ELM_WIN_INDICATOR_SHOW);
-#endif
-
- Media_Data *mdata = ivug_data_get_data(sitem->mitem);
- if(mdata == NULL)
- {
- MSG_MAIN_ERROR("mdata is NULL");
- return;
- }
-
- if(mdata->slide_type == SLIDE_TYPE_IMAGE)
- {
- _show_zoom_icon(pMainView);
- }
-
- elm_naviframe_item_title_visible_set(pMainView->navi_it, EINA_TRUE);
- elm_object_item_signal_emit(pMainView->navi_it, "elm,state,controlbar,open", "");
-
-#ifdef TEST_MOUSE_EVENT
- Eina_List *l = evas_object_clipees_get(pMainView->navi_bar);
-
- MSG_MAIN_HIGH("Clipper clips %i objects", eina_list_count(l));
-
- Evas_Object *obj;
- Eina_List *l1;
-
- EINA_LIST_FOREACH(l, l1, obj)
- {
-
- MSG_MAIN_HIGH("Object Type : %s", evas_object_name_get(obj));
-
- }
- Evas_Object *above;
- Evas_Object *below;
-
-
- above = evas_object_above_get(pMainView->navi_bar);
- MSG_MAIN_HIGH("Navi Above : 0x%08x %s %s", above, evas_object_name_get(above), evas_object_type_get(above));
-
- below = evas_object_below_get(pMainView->navi_bar);
- MSG_MAIN_HIGH("Navi Below : 0x%08x %s %s", below, evas_object_name_get(below), evas_object_type_get(below));
-
- above = evas_object_above_get(pMainView->slider);
- MSG_MAIN_HIGH("Slider Above : 0x%08x %s %s", above, evas_object_name_get(above), evas_object_type_get(above));
-
- below = evas_object_below_get(pMainView->slider);
- MSG_MAIN_HIGH("Slider Below : 0x%08x %s %s", below, evas_object_name_get(below), evas_object_type_get(below));
-#endif
-
-
-}
-
-
-void
-_ivug_main_view_hide_menu_bar(Ivug_MainView *pMainView)
-{
- MSG_MAIN_HIGH("Hide Menu");
-
- pMainView->bShowMenu = EINA_FALSE;
- elm_widget_disabled_set(pMainView->ctrl_bar, EINA_TRUE);
-
- elm_win_indicator_mode_set(ug_get_window(), ELM_WIN_INDICATOR_HIDE);
- edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_out,hide","elm");
- edje_object_signal_emit(_EDJ(pMainView->empty_layout), "elm,state,btn_zoom_in,hide","elm");
- elm_naviframe_item_title_visible_set(pMainView->navi_it, EINA_FALSE);
- elm_object_item_signal_emit(pMainView->navi_it, "elm,state,controlbar,close", "");
-}
-
-
-static void
-_ivug_main_view_clicked(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_MAIN_HIGH("Main View Clicked");
- IV_ASSERT(data != NULL);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
-// TODO : Bug. menu bar is blinking when stopping slide show.
- if (pMainView->bShowMenu)
- {
- _ivug_main_view_hide_menu_bar(pMainView);
- }
- else
- {
- _ivug_main_view_show_menu_bar(pMainView);
- }
-
-}
-
-static void
-_ivug_main_view_icon_clicked(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_MAIN_HIGH("Main View Video icon Clicked");
- IV_ASSERT(data != NULL);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider);
- Media_Data *mdata = ivug_data_get_data(sitem->mitem);
-
- if (mdata == NULL)
- {
- MSG_MAIN_ERROR("slide data is NULL");
- return;
- }
-
- if (pMainView->mode == IVUG_MODE_FILE || pMainView->mode == IVUG_MODE_DISPLAY || pMainView->mode == IVUG_MODE_SINGLE )
- {
- MSG_MAIN_HIGH("Launching simple video player. Mode=%d", pMainView->mode);
- ivug_ext_aul_launch(pMainView->layout, IVUG_EXT_AUL_SIMPLE_VIDEOPLAYER, mdata->filepath, NULL);
- }
- else
- {
- MSG_MAIN_HIGH("Launching normal video player");
- ivug_ext_aul_launch(pMainView->layout, IVUG_EXT_AUL_VIDEOPLAYER, mdata->filepath, NULL);
- }
-
-}
-
-static void
-_ivug_main_view_long_pressed(void *data, Evas_Object *obj, void *event_info)
-{
- Evas_Coord_Point* down_pose = (Evas_Coord_Point*)event_info;
- ivug_ret_if(!data||!down_pose);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- MSG_MAIN_HIGH("LongPressed XY(%d,%d)", down_pose->x, down_pose->y);
-
- int x = down_pose->x;
- int y = down_pose->y;
-
- Slide_Item *si = ivug_slider_get_current_slide_item(pMainView->slider);
- IV_ASSERT(si != NULL);
-
- if ( ivug_slider_item_get_state(si) != SLIDE_STATE_LOADED)
- {
- MSG_MAIN_ERROR("Long pressed. but state is not ready");
- return;
- }
-
- pMainView->copy_popup = _ivug_main_create_copy_popup_create(pMainView, x, y);
- if (pMainView->copy_popup == NULL)
- {
- IVUG_DEBUG_WARNING("copy popup create failed");
- return ;
- }
-
-}
-
-
-static void
-_ivug_main_view_slider_changed_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_MAIN_HIGH("Image slider changed callback. ");
-
- ivug_ret_if(!data);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
- Slide_Item *sitem = (Slide_Item *)event_info;
-
- if ( sitem == NULL || sitem->mitem == NULL)
- {
- // There is no item existed. terminate UG
- MSG_MAIN_ERROR("No item is remained. exit UG. Sitem=0x%08x", sitem);
- IVUG_MAIN_DESTROY_ME(pMainView);
- return;
- }
-
- if(pMainView->selectioninfo != NULL)
- {
- MSG_MAIN_MED("Delete small noti");
- evas_object_del(pMainView->selectioninfo);
- pMainView->selectioninfo = NULL;
- }
- if (pMainView->copy_popup)
- {
- MSG_MAIN_MED("Delete copy popup");
- evas_object_del(pMainView->copy_popup);
- pMainView->copy_popup = NULL;
- }
-
-// Update Main View.
- if ( pMainView->bShowMenu == true )
- {
- PERF_CHECK_BEGIN(LVL5 "Update main view");
- _update_main_view(pMainView, sitem);
- PERF_CHECK_END(LVL5 "Update main view");
- }
-
-}
-
-
-static void
-_ivug_main_view_slider_item_state_changed_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_MAIN_HIGH("Image slider item state changed callback. ");
- ivug_ret_if(!data);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
- Slide_Item *sitem = (Slide_Item *)event_info;
-
- if ( sitem == NULL || sitem->mitem == NULL)
- {
- // There is no item existed. terminate UG
- MSG_MAIN_ERROR("No item is remained. exit UG");
- IVUG_MAIN_DESTROY_ME(pMainView);
- return;
- }
-
-// Update Main View.
- if ( pMainView->bShowMenu == true )
- {
- _update_main_view(pMainView, sitem);
- }
-}
-
-
-static void
-_ivug_main_view_slider_deleted_cb(void *data, Evas_Object *obj, void *event_info)
-{
- MSG_MAIN_HIGH("Image slider deleted callback. ");
- ivug_ret_if(!data);
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
- Slide_Item *sitem = (Slide_Item *)event_info;
-
- if ( sitem == NULL || sitem->mitem == NULL )
- {
- // There is no item existed. terminate UG
- MSG_MAIN_ERROR("No item is remained. exit UG");
- IVUG_MAIN_DESTROY_ME(pMainView);
- return;
- }
-
- _main_view_create_selection_info(pMainView, IDS_DELETED);
-
- if ( pMainView->bShowMenu == true )
- {
- _update_main_view(pMainView, sitem);
- }
-
-}
-
-
-static void
-_ivug_main_view_slider_slideshow_finished_cb(void *data, Evas_Object *obj, void *event_info)
-{
- IV_ASSERT(data != NULL);
- MSG_MAIN_HIGH("Slide show finished callback. ");
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- ivug_allow_lcd_off();
- ivug_slider_stop_slide_show(pMainView->slider);
-
- elm_object_item_disabled_set(pMainView->ctrl_bar_item[1], EINA_FALSE);
-
- _ivug_main_view_show_menu_bar(pMainView);
-}
-
-static void
-_ivug_main_view_slider_slideshow_interrupted_cb(void *data, Evas_Object *obj, void *event_info)
-{
- IV_ASSERT(data != NULL);
- MSG_MAIN_HIGH("Slide show interrupted callback. ");
-
- Ivug_MainView *pMainView = (Ivug_MainView *)data;
-
- ivug_allow_lcd_off();
-
- elm_object_item_disabled_set(pMainView->ctrl_bar_item[1], EINA_FALSE);
-
- _ivug_main_view_show_menu_bar(pMainView);
-}
-
-
-
-#ifdef TEST_MOUSE_EVENT
-void _on_receive_mouse_move (void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
- char *tt = data;
- MSG_MAIN_HIGH("Hmm!!! %s", tt);
-}
-#endif
-
-static void
-_on_menu_state_changed(void *data, Evas_Object *obj, const char *emission, const char *source)
-{
- Ivug_MainView *pMainView = data;
-
- MSG_MAIN_HIGH("Receive %s %s", emission, source);
-
- if ( strncmp(emission, "menu,show,finished", strlen(emission)) == 0 )
- {
- elm_widget_disabled_set(pMainView->ctrl_bar, EINA_FALSE);
- }
- else
- {
- evas_object_hide(pMainView->ctrl_bar);
- elm_widget_disabled_set(pMainView->ctrl_bar, EINA_TRUE);
- }
-}
-
-bool
-ivug_main_view_load_list(Ivug_MainView *pMainView, ivug_parameter* ivug_param)
-{
- MSG_MAIN_HIGH("Load media list.");
-
- PERF_CHECK_BEGIN(LVL1 "create media list");
-
- Media_Data *mdata = ivug_slider_create_media_list(pMainView->slider, ivug_param);
- if (mdata == NULL)
- {
- MSG_MAIN_ERROR("Creating media list is failed");
- return false;
- }
-
- PERF_CHECK_END(LVL1 "create media list");
-
- return true;
-}
-
-Ivug_MainView *
-ivug_main_view_create(Evas_Object* parent, ivug_mode mode, ivug_view_by view_by)
-{
- IV_ASSERT(parent != NULL);
-
- MSG_MAIN_HIGH("Creating main view. Parent=0x%08x Mode=%d ViewBy=%d", parent, mode, view_by);
-
- PERF_CHECK_BEGIN(LVL2 "Create layout");
-
-//create main view layout
- Ivug_MainView *pMainView = calloc(1, sizeof(Ivug_MainView) );
- IV_ASSERT(pMainView != NULL);
-
-// Set default value
- pMainView->parent = parent;
- pMainView->bShowMenu = true;
- pMainView->ugHandle = gGetUGHandle();
- pMainView->mode = mode;
- pMainView->view_by = view_by;
-
- Evas_Object *layout;
- layout = elm_layout_add(parent);
- if ( layout == NULL) //if failed
- {
- MSG_MAIN_ERROR("main layout create failed");
- free(pMainView);
- return NULL;
- }
-
- pMainView->layout = layout;
-
- PERF_CHECK_END(LVL2 "Create layout");
-
- PERF_CHECK_BEGIN(LVL2 "load EDJ");
-
- if (elm_layout_file_set(layout, IVUG_MAIN_EDJ, "mainview") == EINA_FALSE)
- {
- MSG_MAIN_ERROR("edj loading fail, file=%s group=%s", IVUG_MAIN_EDJ, IVUG_MAIN_EDJ);
- evas_object_del(layout);
- free(pMainView);
- return NULL;
- }
-
- edje_object_signal_callback_add(_EDJ(pMainView->layout),
- "menu,hide,finished",
- "edc",
- _on_menu_state_changed,
- (void *)pMainView);
-
- edje_object_signal_callback_add(_EDJ(pMainView->layout),
- "menu,show,finished",
- "edc",
- _on_menu_state_changed,
- (void *)pMainView);
-
- evas_object_show(layout);
-
-// Navigation bar
- pMainView->navi_bar = elm_naviframe_add(layout);
- if ( pMainView->navi_bar == NULL)
- {
- MSG_MAIN_ERROR("navigation bar failed");
- ivug_main_view_destroy(pMainView);
- return NULL;
- }
-
-// Layout life cycle is controlled by application explictily.
- elm_naviframe_content_preserve_on_pop_set(pMainView->navi_bar, EINA_TRUE);
-
-#ifdef USE_CUSTOM_STYLE
- elm_object_theme_set(pMainView->navi_bar, gGetSystemTheme() );
- Eina_Bool bstyle = elm_object_style_set(pMainView->navi_bar, "ivug/default");
- MSG_MAIN_HIGH("navi_bar elm_object_style_set result = %d", bstyle);
-#endif
-
- elm_object_part_content_set(layout, "mainview.navibar", pMainView->navi_bar); //swallow
-
- pMainView->empty_layout = elm_layout_add(layout); //create centents layout.
- if (elm_layout_file_set(pMainView->empty_layout, IVUG_MAIN_EDJ, "navi_content"))
- {
- MSG_MAIN_HIGH("create Empty layout for navigation bar. Navi=0x%08x Empty Layout=0x%08x", pMainView->navi_bar, pMainView->empty_layout);
- }
- else
- {
- IVUG_DEBUG_WARNING("layout sawllow failed");
- ivug_main_view_destroy(pMainView);
- return NULL;
- }
-
- //create slider
- pMainView->slider = ivug_slider_add(pMainView->empty_layout);
- if (pMainView->slider == NULL)
- {
- MSG_MAIN_ERROR("image slider create failed");
- ivug_main_view_destroy(pMainView);
- return NULL;
- }
- elm_object_part_content_set(pMainView->empty_layout, "mainview.slider", pMainView->slider); //swallow
-
- Evas_Object *back_btn = elm_button_add(pMainView->navi_bar);
- elm_object_text_set(back_btn, IDS_BACK ); //elm_button_icon_set
- elm_object_style_set(back_btn, "naviframe/end_btn/default");
-
- evas_object_smart_callback_add(back_btn, "clicked", _ivug_main_view_back_cb, pMainView);
-
- pMainView->navi_it = elm_naviframe_item_push(pMainView->navi_bar, IDS_LOADING , back_btn, NULL, pMainView->empty_layout, NULL);
-
- pMainView->back_btn = back_btn;
-
- if (pMainView->mode != IVUG_MODE_DISPLAY) // Display mode has no control bar in bottom.
- {
- pMainView->ctrl_bar = _create_ctrl_bar(pMainView->navi_bar, gGetSystemTheme());
- elm_object_item_part_content_set(pMainView->navi_it, "controlbar", pMainView->ctrl_bar);
- }
-
- PERF_CHECK_END(LVL2 "load EDJ");
-
- PERF_CHECK_BEGIN(LVL2 "add slider");
-
- //elm_object_part_content_set(layout, "mainview.slider", pMainView->slider); //swallow
-
-//register mouse call back.
- evas_object_smart_callback_add(pMainView->slider, "slider,clicked", _ivug_main_view_clicked, pMainView);
- evas_object_smart_callback_add(pMainView->slider, "slider,longpressed", _ivug_main_view_long_pressed, pMainView);
- evas_object_smart_callback_add(pMainView->slider, "slider,clicked,icon", _ivug_main_view_icon_clicked, pMainView);
-
- evas_object_smart_callback_add(pMainView->slider, "slider,item,changed", _ivug_main_view_slider_changed_cb, pMainView);
- evas_object_smart_callback_add(pMainView->slider, "slider,item,deleted", _ivug_main_view_slider_deleted_cb, pMainView);
- evas_object_smart_callback_add(pMainView->slider, "slider,slideshow,finished", _ivug_main_view_slider_slideshow_finished_cb, pMainView);
- evas_object_smart_callback_add(pMainView->slider, "slider,slideshow,interrupted", _ivug_main_view_slider_slideshow_interrupted_cb, pMainView);
- evas_object_smart_callback_add(pMainView->slider, "slider,item,state,changed", _ivug_main_view_slider_item_state_changed_cb, pMainView);
-
-#ifdef TEST_MOUSE_EVENT
- evas_object_event_callback_add(pMainView->navi_bar, EVAS_CALLBACK_MOUSE_MOVE, _on_receive_mouse_move, "navigarion");
- evas_object_event_callback_add(pMainView->layout, EVAS_CALLBACK_MOUSE_MOVE, _on_receive_mouse_move, "layout");
- evas_object_event_callback_add(pMainView->parent, EVAS_CALLBACK_MOUSE_MOVE, _on_receive_mouse_move, "base");
- evas_object_event_callback_add(pMainView->slider, EVAS_CALLBACK_MOUSE_MOVE, _on_receive_mouse_move, "slider");
- evas_object_event_callback_add(edje_object_part_object_get(_EDJ(pMainView->layout) , "clip"), EVAS_CALLBACK_MOUSE_MOVE, _on_receive_mouse_move, "clip");
- evas_object_event_callback_add(edje_object_part_object_get(_EDJ(pMainView->layout) , "mainview.navibar"), EVAS_CALLBACK_MOUSE_MOVE, _on_receive_mouse_move, "navi swallow");
- evas_object_event_callback_add(pMainView->ctrl_bar, EVAS_CALLBACK_MOUSE_MOVE, _on_receive_mouse_move, "controlbar");
-#endif
-
- PERF_CHECK_END(LVL2 "add slider");
-
- PERF_CHECK_BEGIN(LVL2 "add event handler");
-
- edje_object_signal_callback_add(_EDJ(pMainView->empty_layout),
- "mainview,zoom_out,clicked",
- "",
- _ivug_main_view_zoom_out_cb,
- (void *)pMainView);
- edje_object_signal_callback_add(_EDJ(pMainView->empty_layout),
- "mainview,zoom_in,clicked",
- "",
- _ivug_main_view_zoom_in_cb,
- (void *)pMainView);
-
- _show_zoom_icon(pMainView);
-
- int ret = -1;
- MSG_IMAGEVIEW_HIGH("Register System notifications");
- ret = vconf_notify_key_changed(VCONFKEY_SYSMAN_MMC_STATUS, _on_mmc_state_changed, pMainView);
- if ( ret == -1 )
- {
- MSG_IMAGEVIEW_ERROR("Register %s is failed", VCONFKEY_SYSMAN_MMC_STATUS);
- }
-
- pMainView->keydown_handler = ecore_event_handler_add(ECORE_EVENT_KEY_DOWN,
- (void *)_key_down_cb,
- (void *)pMainView);
-
- MSG_MAIN_HIGH("Main View starting");
-
-// For debugging.
- DELETE_NOTIFY(pMainView->layout);
-
- PERF_CHECK_END(LVL2 "add event handler");
-
- return pMainView;
-
-}
-
-
-Evas_Object *
-ivug_main_view_object_get(Ivug_MainView *pMainView)
-{
- IV_ASSERT(pMainView != NULL);
-
- return pMainView->layout;
-}
-
-void
-ivug_main_view_update(Ivug_MainView *pMainView)
-{
- IV_ASSERT(pMainView != NULL);
-
- MSG_MAIN_HIGH("Main View Update");
-
- Slide_Item *sitem = ivug_slider_get_current_slide_item(pMainView->slider);
- Media_Data *mdata = ivug_data_get_data(sitem->mitem);
-
- ivug_ret_if(!mdata);
-
-// TODO : Check this routine!.
-// TODO : Should implement again!!
-
- if (mdata->slide_type == SLIDE_TYPE_IMAGE || mdata->slide_type == SLIDE_TYPE_VIDEO )
- {
- if(mdata->filepath && ecore_file_exists(mdata->filepath)) // Current file is not deleted
- {
- MSG_MAIN_HIGH("Current filepath : %s", mdata->filepath);
- }
- else
- {
- /*if file is not exist ug terminated temporally */
- MSG_MAIN_ERROR("Center slide file is not exist");
- IVUG_MAIN_DESTROY_ME(pMainView);
- return ;
- }
- }
-
-// When resume, menu bar will be appeared.
- _ivug_main_view_show_menu_bar(pMainView);
-}
-
-
-void
-ivug_main_view_destroy(Ivug_MainView *pMainView)
-{
- IV_ASSERT(pMainView != NULL);
-
- MSG_MAIN_HIGH("ENTER : Main View Destroy. pMainView=0x%08x", pMainView);
-
- if( pMainView->event_blocker )
- {
- MSG_MAIN_HIGH("delete event blocker");
- evas_object_del(pMainView->event_blocker);
- pMainView->event_blocker = NULL;
- }
-
- if(pMainView->ext_ug)
- {
- MSG_MAIN_HIGH("destroy ug");
- ug_destroy(pMainView->ext_ug);
- pMainView->ext_ug = NULL;
- }
-
- if( pMainView->pDetailsView )
- {
- MSG_MAIN_HIGH("Details View Destroy");
-
- ivug_details_view_destroy(pMainView->pDetailsView);
- pMainView->pDetailsView = NULL;
- }
-
- if(pMainView->layout) // Remove topmost parent in main view.
- {
- evas_object_del(pMainView->layout);
- pMainView->layout = NULL;
- }
-
- if (pMainView->exit_timer)
- {
- ecore_timer_del(pMainView->exit_timer);
- pMainView->exit_timer = NULL;
- }
-
- int ret = -1;
-
- MSG_IMAGEVIEW_HIGH("Unregister system notifications");
-
- if(pMainView->keydown_handler)
- {
- ecore_event_handler_del(pMainView->keydown_handler);
- pMainView->keydown_handler = NULL;
- }
-
- ret = vconf_ignore_key_changed(VCONFKEY_SYSMAN_MMC_STATUS, _on_mmc_state_changed);
- if ( ret == -1 )
- {
- MSG_IMAGEVIEW_ERROR("Unegister %s is failed", VCONFKEY_SYSMAN_MMC_STATUS);
- }
-
- free(pMainView);
-
- MSG_MAIN_HIGH("LEAVE : Main View Destroy.");
-
- return ;
-}
-
diff --git a/main/src/view/ivug-main-view.h b/main/src/view/ivug-main-view.h
deleted file mode 100755
index 7d1a648..0000000
--- a/main/src/view/ivug-main-view.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * 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.
- */
-
-
-#ifndef __IVUG_MAIN_VIEWER_H__
-#define __IVUG_MAIN_VIEWER_H__
-
-#include "ivug-common.h"
-#include "ivug-details-view.h"
-#include "ivug-setas-view.h"
-
-#define MAX_CTRL_ITEM_CNT 5
-#define MAX_NAVI_ITEM_CNT 3
-
-//navigation bar type
-typedef enum NAVI_BAR_TYPE {
- NAVI_BAR_TYPE_NONE = 0x00,
- NAVI_BAR_TYPE_EMPTY, // no control bar
- NAVI_BAR_TYPE_IMAGE, // no control bar
- NAVI_BAR_TYPE_VIDEO, // no control bar
- NAVI_BAR_TYPE_SELECT, // [Ok, Cancel] from take photo
-} _navi_bar_type;
-
-//control bar type
-typedef enum CTRL_BAR_TYPE{
- CTRL_BAR_TYPE_NONE = 0x00,
- CTRL_BAR_TYPE_EMPTY, // not exist ctrl bar
- CTRL_BAR_TYPE_FILE, // [Delete,Info] file manager, video at gallery
- CTRL_BAR_TYPE_CAMERA_IMAGE, // [Delete,Info] camera image file
- CTRL_BAR_TYPE_CAMERA_VIDEO, // [Delete,Info] camera video file
- CTRL_BAR_TYPE_IMAGE, // [Delete,Slide show, Info] from gallery
- CTRL_BAR_TYPE_VIDEO, // [Delete,Slide show, Info] from gallery
-} _ctrl_bar_type;
-
-
-typedef struct {
- Evas_Object *parent;
-
- Evas_Object *layout; /*Layout widget based on EDJ*/
-
- Evas_Object *navi_bar;
- Elm_Object_Item *navi_it;
- Evas_Object* empty_layout; //navigation bar contents layout
- Evas_Object* slider; //image viewer slider
- Evas_Object* event_blocker;
-
- Evas_Object* selectioninfo;
-
- Evas_Object *back_btn;
-
-/*
- |-------------------|
- |naviframe(tool_bar)|
- |-------------------|
- | |
- | |
- | |
- | |
- |-------------------|
- | ctrl_bar |
- |-------------------|
-*/
-
-// Tool Bar
- enum NAVI_BAR_TYPE tool_bar_type;
- Evas_Object* tool_bar_item[MAX_NAVI_ITEM_CNT]; // Control bar item in navigation header. ex) SetAs, Info
-
-// Control Bar
- Evas_Object *ctrl_bar;
- enum CTRL_BAR_TYPE ctrl_bar_type;
- Elm_Object_Item *ctrl_bar_item[MAX_CTRL_ITEM_CNT]; // Bottom control bar item. ex) Delete, etc...
-
- Evas_Object* popup; //popup
- Evas_Object* copy_popup; //copy popup
- Eina_List* popup_list;
-
- Ivug_SetAsView *pSetAsView;
-
- Ivug_DetailsView *pDetailsView;
-
- Evas_Object *btn_detail;
- Evas_Object *btn_detail_data;
-
-//flag
- bool bShowMenu;
-
- ivug_mode mode;
- ivug_view_by view_by;
-
- struct ui_gadget *ext_ug;
-
- struct ui_gadget *ugHandle;
-
- Ecore_Event_Handler *keydown_handler;
-
- Ecore_Timer *exit_timer;
-
- Eina_Bool option_show;
-} Ivug_MainView;
-
-
-/*
- Create MainView layout
-*/
-Ivug_MainView *
-ivug_main_view_create(Evas_Object* parent, ivug_mode mode, ivug_view_by view_by);
-
-Evas_Object *
-ivug_main_view_object_get(Ivug_MainView *pMainView);
-
-/*
- Load media list from parameter.
-*/
-bool ivug_main_view_load_list(Ivug_MainView *pMainView, ivug_parameter* ivug_param);
-
-void ivug_main_view_update(Ivug_MainView *pMainView);
-
-void ivug_main_view_destroy(Ivug_MainView *pMainView);
-
-#endif //__IVUG_MAIN_VIEWER_H__
diff --git a/main/src/view/ivug-popup.c b/main/src/view/ivug-popup.c
deleted file mode 100755
index 1ad940c..0000000
--- a/main/src/view/ivug-popup.c
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * 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 "ivug-popup.h"
-
-#include <ui-gadget-module.h> // ug_destroy_me, ug_send_result
-#include <ui-gadget.h>
-
-#define NOTIFY_TIMEOUT 3.0
-
-static void
-_ivug_popup_timeout_cb(void *data, Evas_Object *obj, void *event_info)
-{
- ivug_ret_if(obj == NULL);
-
- evas_object_del(obj);
- obj = NULL;
-}
-
-static void _on_warningpopup_response(void *data, Evas_Object *obj, void *event_info )
-{
-
- IV_ASSERT(data != NULL);
-
- Evas_Object *popup = (Evas_Object *)data;
- Popup_Response response = (Popup_Response)evas_object_data_get(obj, "response");
- MSG_IMAGEVIEW_HIGH("response callback=%d", response);
-
- evas_object_del(popup); // Remove popup
-}
-
-Evas_Object*
-ivug_popup_warning(Evas_Object* parent, const char* title, const char* contents)
-{
- Evas_Object *popup;
- Evas_Object *btn_ok;
- //create popup
-
- popup = elm_popup_add(parent);
- evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_text_set(popup, contents);
- elm_object_part_text_set(popup, "title,text", title);
-
- btn_ok = elm_button_add(popup);
- elm_object_text_set(btn_ok, IDS_OK);
- elm_object_part_content_set(popup, "button1", btn_ok);
- evas_object_data_set(btn_ok, "response", (void *)POPUP_RESPONSE_OK);
- evas_object_smart_callback_add(btn_ok, "clicked", _on_warningpopup_response, popup);
-
- evas_object_show(popup);
-
- return popup;
-}
-
-static void _on_questionpopup_response(void *data, Evas_Object *obj, void *event_info )
-{
-
- IV_ASSERT(data != NULL);
-
- Evas_Object *popup = (Evas_Object *)data;
- Popup_Response response = (Popup_Response)evas_object_data_get(obj, "response");
- MSG_IMAGEVIEW_HIGH("response callback=%d", response);
-
- if ( response == POPUP_RESPONSE_OK )
- {
- void *user_data = NULL;
- Evas_Smart_Cb responseCB = NULL;
-
- responseCB = evas_object_data_get(popup, "question-response");
- user_data = evas_object_data_get(popup, "question-data");
-
- responseCB(user_data, popup, (void *)POPUP_RESPONSE_OK);
- }
-
- evas_object_del(popup); // Remove popup
-}
-
-Evas_Object*
-ivug_popup_question(Evas_Object* parent, const char* title, const char* contents,
- Evas_Smart_Cb response_cb, void* user_data)
-{
- Evas_Object *popup;
- Evas_Object *btn_yes;
- Evas_Object *btn_no;
- //create popup
-
- IV_ASSERT(response_cb != NULL);
-
- popup = elm_popup_add(parent);
- evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_text_set(popup, contents);
- elm_object_part_text_set(popup, "title,text", title);
-
- btn_yes = elm_button_add(popup);
- elm_object_text_set(btn_yes, IDS_YES);
- elm_object_part_content_set(popup, "button1", btn_yes);
- evas_object_data_set(btn_yes, "response", (void *)POPUP_RESPONSE_OK);
- evas_object_smart_callback_add(btn_yes, "clicked", _on_questionpopup_response, popup);
-
- btn_no = elm_button_add(popup);
- elm_object_text_set(btn_no, IDS_NO);
- elm_object_part_content_set(popup, "button2", btn_no);
- evas_object_data_set(btn_no, "response", (void *)POPUP_RESPONSE_CANCEL);
- evas_object_smart_callback_add(btn_no, "clicked", _on_questionpopup_response, popup);
-
- evas_object_data_set(popup, "question-response", response_cb);
- evas_object_data_set(popup, "question-data", user_data);
-
- evas_object_show(popup);
-
- return popup;
-}
-
-Evas_Object*
-ivug_popup_selectioninfo(Evas_Object* parent, const char* contents)
-{
- Evas_Object *notify;
-
- notify = elm_notify_add(parent);
- ivug_retv_if(notify == NULL, NULL);
- elm_notify_orient_set(notify, ELM_NOTIFY_ORIENT_BOTTOM);
- evas_object_size_hint_weight_set(notify, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(notify, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_smart_callback_add(notify, "timeout", _ivug_popup_timeout_cb, NULL);
- elm_notify_timeout_set(notify, NOTIFY_TIMEOUT);
-
- Evas_Object* layout = elm_layout_add(parent);
-
- elm_object_theme_set(layout, gGetSystemTheme());
-
- elm_layout_theme_set(layout, "standard", "selectioninfo", "vertical/bottom_86");
-
- evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_content_set(notify, layout);
- edje_object_part_text_set(_EDJ(layout), "elm.text", contents);
-
- evas_object_show(notify);
-
- return notify;
-}
-
-
-static void _on_popup_response_exit( void *data, Evas_Object *obj, void *event_info )
-{
- MSG_IMAGEVIEW_HIGH("response callback=%d",(int)event_info);
-
- evas_object_del(obj);
-
- ug_destroy_me(gGetUGHandle());
-}
-
-
-static void _on_popup_response( void *data, Evas_Object *obj, void *event_info )
-{
- MSG_IMAGEVIEW_HIGH("response callback=%d",(int)event_info);
-
- evas_object_del(obj); // Remove popup
-}
-
-Evas_Object *ivug_show_exit_popup(Evas_Object *parent, const char *sztitle, const char *szmsg)
-{
- Evas_Object *popup;
-
- popup = elm_popup_add(parent);
-
- evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- if ( szmsg )
- elm_object_text_set(popup, szmsg);
-
- if ( sztitle )
- elm_object_part_text_set(popup, "title,text", sztitle);
-
- elm_popup_timeout_set(popup, 3.0);
- evas_object_smart_callback_add(popup, "timeout", _on_popup_response_exit, NULL);
-
- evas_object_show(popup);
-
- return popup;
-
-}
-
-Evas_Object *ivug_show_popup(Evas_Object *parent, const char *sztitle,
- const char *szmsg, Evas_Smart_Cb response_cb, void *user_data)
-{
- Evas_Object *popup;
-
- popup = elm_popup_add(parent);
-
- evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- if ( szmsg )
- {
- elm_object_text_set(popup, szmsg);
- }
-
- if ( sztitle )
- elm_object_part_text_set(popup, "title,text", sztitle);
-
- elm_popup_timeout_set(popup, 3.0);
-
- if(response_cb)
- evas_object_smart_callback_add(popup, "timeout", response_cb, user_data);
- else
- evas_object_smart_callback_add(popup, "timeout", _on_popup_response, user_data);
-
- evas_object_show(popup);
- evas_object_focus_set(popup, EINA_TRUE);
-
- return popup;
-}
-
-Evas_Object *ivug_show_popup_va(Evas_Object *parent, const char *sztitle, const char *fmt, ...)
-{
- char buf[1024];
-
- Evas_Object *popup;
-
- popup = elm_popup_add(parent);
-
- evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- va_list ap;
-
- va_start(ap, fmt);
-
- vsnprintf(buf, (size_t)sizeof(buf), fmt, ap);
-
- va_end(ap);
-
- elm_object_text_set(popup, buf);
-
- if ( sztitle )
- elm_object_part_text_set(popup, "title,text", sztitle);
-
- elm_popup_timeout_set(popup, 3.0);
- evas_object_smart_callback_add(popup, "timeout", _on_popup_response, NULL);
-
-// evas_object_focus_set(popup, EINA_TRUE);
-
- evas_object_show(popup);
-
- return popup;
-
-}
-
-
diff --git a/main/src/view/ivug-popup.h b/main/src/view/ivug-popup.h
deleted file mode 100755
index a0609e7..0000000
--- a/main/src/view/ivug-popup.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * 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.
- */
-
-
-#ifndef __IVUG_POPUP_H__
-#define __IVUG_POPUP_H__
-
-#include "ivug-common.h"
-#include "ivug-main.h"
-
-enum IVUG_LIST_POPUP_TYPE
-{
- IVUG_LIST_POPUP_SET_WALLPAPER,
-} _ivug_list_popup_type;
-
-
-typedef enum _Popup_Response
-{
- POPUP_RESPONSE_NONE = -1,
- POPUP_RESPONSE_TIMEOUT = -2,
- POPUP_RESPONSE_OK = -3,
- POPUP_RESPONSE_CANCEL = -4,
- POPUP_RESPONSE_CLOSE = -5
-} Popup_Response;
-
-// it has one button
-Evas_Object*ivug_popup_warning(Evas_Object* parent, const char* title, const char* contents);
-
-// it has two button
-Evas_Object*
-ivug_popup_question(Evas_Object* parent, const char* title, const char* contents,
- Evas_Smart_Cb response_cb, void* user_data);
-
-Evas_Object*
-ivug_popup_create_popup_list(Evas_Object *parent ,enum IVUG_LIST_POPUP_TYPE type, const char* title, Eina_List* list,
- void* lable_func, void* select_func, void* response_func, void *data);
-
-Evas_Object*
-ivug_popup_selectioninfo(Evas_Object* parent, const char* contents);
-
-Evas_Object *ivug_show_exit_popup(Evas_Object *parent, const char *sztitle, const char *szmsg);
-
-Evas_Object *ivug_show_popup(Evas_Object *parent, const char *sztitle, const char *szmsg,
- void (*response_cb) ( void *data, Evas_Object *obj, void *event_info ), void *user_data);
-Evas_Object *ivug_show_popup_va(Evas_Object *parent, const char *sztitle, const char *fmt, ...);
-
-#endif //__IVUG_POPUP_H__ \ No newline at end of file
diff --git a/main/src/view/ivug-setas-view.c b/main/src/view/ivug-setas-view.c
index 836478b..54b80f4 100755
--- a/main/src/view/ivug-setas-view.c
+++ b/main/src/view/ivug-setas-view.c
@@ -1,23 +1,21 @@
-/*
- * 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.
- */
-
+/*
+ * 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 <ui-gadget-module.h>
#include <Evas.h>
-#include <dlfcn.h>
#include <sys/types.h>
#include <sys/stat.h>
@@ -26,20 +24,23 @@
#include "ivug-common.h"
#include "ivug-parameter.h"
-#include "ivug-popup.h"
#include "ivug-ext-ug.h"
-#include "ivug-widget.h"
-#include "ivug-main.h"
-
#include "ivug-setas-view.h"
-#include "ivug-slider.h"
+#include "ivug-setas-view-wallpaper.h"
+#include "ivug-setas-view-callerid.h"
+#include "ivug-setas.h"
+
+
#include "ivug-listpopup.h"
-/*
- Used for storing cropped image.
-*/
-#define IVUG_HOME_SCREEN_TEMP_PATH DATA_PATH"/.homescreen_tmp.jpg";
-#define IVUG_LOCK_SCREEN_TEMP_PATH DATA_PATH"/.lockscreen_tmp.jpg";
+
+#define EDJ_PATH PREFIX"/res/edje/"PACKAGE
+
+#define TRANSITION_EFFECT
+
+#define IVUG_RESULT_BUNDLE_KEY_ERROR "Error"
+#define IVUG_RESULT_BUNDLE_VALUE_NOT_SUPPORTED "not_supported_file_type"
+
/*
Final image path
@@ -48,212 +49,145 @@
#define IVUG_LOCK_SCREEN_PATH DATA_PATH"/.lockscreen.jpg";
/*
- Image displays when incomming call is recevied.
+ Screen path for APPSVC
*/
+#define IVUG_APPSVC_HOME_SCREEN_PATH DATA_PATH"/.iv_homescreen.jpg";
-#define IVUG_RESULT_BUNDLE_KEY_ERROR "Error"
-#define IVUG_RESULT_BUNDLE_VALUE_NOT_SUPPORTED "not_supported_file_type"
-
-#define CLICK_TIME_MAX (500) // click time.
-#define CLICK_WIDTH_MIN (elm_config_finger_size_get() >> 1) //click width, if mouse move under this value and under click time, it is click.
-#define CLICK_INTERVAL_TIME 0.15
-#define SETAS_EDJ_FILE EDJ_PATH"/ivug-setas.edj"
+/*
+ Caller ID image
+*/
+#define SET_AS_CALL_ID_PATH DATA_PATH"/.callerid.jpg"
-#define IVUG_RESPONSE_OK (1)
+#define SET_AS_VIDEO_CALL_ID_PATH DATA_PATH"/.videocallid.jpg"
-#define TRANSITION_EFFECT
+/*
+ Image displays when incomming call is recevied.
+*/
+#define SET_AS_CALL_ID_LCD_PATH DATA_PATH"/.callerid_lcd.jpg"
//set as
enum {
IVUG_SET_AS_TYPE_HOME = 0x00,
IVUG_SET_AS_TYPE_LOCK,
IVUG_SET_AS_TYPE_BOTH,
+ IVUG_SET_AS_TYPE_CALLER_ID,
IVUG_SET_AS_TYPE_MAX,
};
-static void
-_ivug_setas_on_icon_set_clicked(void *data, Evas_Object* obj, const char *emission, const char *source );
-/*********************************Common Part**************************************/
+static void _OnOK(Ivug_SetAsView *pSetAsView);
+static void _OnCancel(Ivug_SetAsView *pSetAsView);
+static Evas_Object*_show_exit_popup( Evas_Object *parent, const char *title, const char *desc, void *data);
+static void _send_result(ui_gadget_h ug, const char *key1, const char *val1, const char *key2, const char *val2);
-static void
-_setas_ug_view_deleted(void * data, Evas * e, Evas_Object * obj, void * event_info)
-{
- char *szView = (char *)data;
-
- MSG_SETAS_WARN("%s is destroyed", szView);
- return;
-}
static void
-_ivug_setas_view_remove(Ivug_SetAsView *pSetAsView)
+_on_msg_load_failed(void *data, Evas_Object *obj, void *event_info)
{
- MSG_SETAS_HIGH("Start destroy ug");
- ug_destroy_me(gGetUGHandle());
- return;
-}
-
-static void
-_ivug_setas_view_show_icons(Evas_Object *layout)
-{
- ivug_retm_if(!layout, "pSetAsView->layout is NULL");
-
- elm_win_indicator_mode_set(ug_get_window(), ELM_WIN_INDICATOR_SHOW);
-
- edje_object_signal_emit(_EDJ(layout),
- "setasview,show,btn_cancel","elm");
-
- edje_object_signal_emit(_EDJ(layout),
- "setasview,show,btn_ok","elm");
-}
-
-static void
-_ivug_setas_view_hide_icons(Evas_Object *layout)
-{
- ivug_retm_if(!layout, "pSetAsView->layout is NULL");
-
- elm_win_indicator_mode_set(ug_get_window(), ELM_WIN_INDICATOR_HIDE);
-
- edje_object_signal_emit(_EDJ(layout),
- "setasview,hide,btn_cancel","elm");
+ Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data;
- edje_object_signal_emit(_EDJ(layout),
- "setasview,hide,btn_ok","elm");
-}
+ SetAs_Error error = (SetAs_Error)event_info;
-static void
-_ivug_setas_view_unregister_set_signal(Evas_Object *layout, void (*func) (void *data, Evas_Object *obj, const char *emission, const char *source))
-{
- ivug_retm_if(!layout, "pSetAsView->layout is NULL");
+ const char *szMsg = NULL;
- edje_object_signal_callback_del(_EDJ(layout),
- "setasview,set,clicked",
- "",
- func);
-}
-
-static Eina_Bool
-_ivug_setas_view_click_cb(void *data)
-{
- Ivug_SetAsView *setas_data = (Ivug_SetAsView *)data;
- if (setas_data->click_timer)
+ switch(error)
{
- ecore_timer_del(setas_data->click_timer);
- setas_data->click_timer = NULL;
+ case SETAS_ERROR_TYPE_INVALID_FILE:
+ szMsg = IDS_INVALID_IMAGE_FILE;
+ break;
+ case SETAS_ERROR_TYPE_PERMISSION_DENIED:
+ szMsg = IDS_PERMISSION_DENIED;
+ break;
+ case SETAS_ERROR_TYPE_UNKNOWN_FORMAT:
+ szMsg = "Unknown format";
+ break;
+ case SETAS_ERROR_TYPE_GENERAL:
+ default:
+ szMsg = IDS_FAILED;
+ break;
}
- setas_data->b_hide_bar_flag = !(setas_data->b_hide_bar_flag);
+ MSG_SETAS_ERROR("Load failed : %s", szMsg);
- MSG_SETAS_HIGH("Bar flag is %d", setas_data->b_hide_bar_flag);
- if(setas_data->b_hide_bar_flag)
- {
- _ivug_setas_view_hide_icons(setas_data->layout);
- }
- else
+ _show_exit_popup(obj, IDS_ERROR, szMsg, (void *)pSetAsView );
+
+ if ( pSetAsView->Mode == IVUG_SETAS_UG )
{
- _ivug_setas_view_show_icons(setas_data->layout);
+ MSG_SETAS_ERROR("Send error message to ug caller app");
+ _send_result(gGetUGHandle(), IVUG_RESULT_BUNDLE_KEY_ERROR, IVUG_RESULT_BUNDLE_VALUE_NOT_SUPPORTED, NULL, NULL);
}
-
- return ECORE_CALLBACK_CANCEL;
}
static void
-_ivug_setas_view_mouse_down_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+_on_msg_ok_clicked(void *data, Evas_Object *obj, void *event_info)
{
+ MSG_SETAS_HIGH("ok clicked");
- Ivug_SetAsView *setas_data = (Ivug_SetAsView *)data;
- Evas_Event_Mouse_Down *ev = event_info;
-
- MSG_SETAS_HIGH("Mouse down!");
- ivug_ret_if(!data);
-
- setas_data->down_pos.x = ev->canvas.x;
- setas_data->down_pos.y = ev->canvas.y;
- setas_data->timestamp = ev->timestamp;
+ Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data;
- if (setas_data->click_timer)
- {
- ecore_timer_del(setas_data->click_timer);
- setas_data->click_timer = NULL;
- }
+ _OnOK(pSetAsView);
}
+
static void
-_ivug_setas_view_mouse_up_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+_on_msg_cancel_clicked(void *data, Evas_Object *obj, void *event_info)
{
- Ivug_SetAsView *setas_data = (Ivug_SetAsView *)data;
- Evas_Event_Mouse_Up *ev = event_info;
- int step;
- unsigned int interval_time;
-
- MSG_SETAS_HIGH("Mouse up!");
- ivug_ret_if(!data);
+ MSG_SETAS_HIGH("cancel clicked");
- step = setas_data->down_pos.x - ev->canvas.x;
- interval_time = ev->timestamp - setas_data->timestamp;
+ Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data;
- if(ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
- {
- MSG_SETAS_HIGH("double clicked");
- return;
- }
- if ((step < CLICK_WIDTH_MIN && step > -CLICK_WIDTH_MIN) && (interval_time < CLICK_TIME_MAX && interval_time > 0) )
- {
- MSG_SETAS_HIGH("clicked");
- setas_data->click_timer = ecore_timer_add(CLICK_INTERVAL_TIME, _ivug_setas_view_click_cb , data);
- return ;
- }
+ _OnCancel(pSetAsView);
}
-/********************************* Common Function **************************************/
+
static void
-_ivug_setas_view_send_result(struct ui_gadget *ug, const char *key1, const char *val1, const char *key2, const char *val2)
+_ivug_setas_view_remove(Ivug_SetAsView *pSetAsView)
{
- ivug_ret_if(!ug);
+ IV_ASSERT(pSetAsView != NULL);
- bundle *b;
- b = bundle_create();
- if(key1 && val1)
+#if 0
+ if(pSetAsView->select_box)
{
- MSG_SETAS_HIGH("Bundle 1 : [%s = %s]", key1, val1);
- bundle_add(b, key1, val1);
+ evas_object_del(pSetAsView->select_box);
+ pSetAsView->select_box = NULL;
}
+#endif
- if(key2 && val2)
+ if(pSetAsView->Mode == IVUG_SETAS_UG || pSetAsView->Mode == IVUG_SETAS_APPSVC)
{
- MSG_SETAS_HIGH("Bundle 2 : [%s = %s]", key2, val2);
- bundle_add(b, key2, val2);
+ MSG_SETAS_HIGH("Start destroy ug");
+ ug_destroy_me(gGetUGHandle());
+ return;
}
- ug_send_result(ug, b);
- bundle_free(b);
-}
+ MSG_SETAS_HIGH( "destroy data");
+
+#ifdef TRANSITION_EFFECT
+ edje_object_signal_emit(_EDJ(pSetAsView->ly_effect), "elm,state,hide", "app");
+#else
+ ivug_setas_view_destroy(pSetAsView);
+#endif
+}
static void
_ivug_setas_view_response_cb( void *data, Evas_Object *obj, void *event_info )
{
MSG_SETAS_HIGH( "response callback=%d",(int)event_info);
+// Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *)data;
- evas_object_hide(obj);
+ evas_object_hide(obj); // popup
evas_object_del(obj);
- ivug_retm_if(!data, "data is NULL");
-
_ivug_setas_view_remove((Ivug_SetAsView *)data);
}
-/**
-* @brief
-*
-* @param title
-* @param txt_noti
-*/
+
static Evas_Object*
-_ivug_setas_view_show_exit_popup( Evas_Object *parent, const char *title, const char *desc, void *data)
+_show_exit_popup( Evas_Object *parent, const char *title, const char *desc, void *data)
{
MSG_SETAS_HIGH( "title: %s, desc %s", title, desc);
@@ -262,339 +196,283 @@ _ivug_setas_view_show_exit_popup( Evas_Object *parent, const char *title, const
elm_popup_timeout_set(style1_popup, (double)2.0);
elm_object_text_set(style1_popup, desc);
elm_object_part_text_set(style1_popup, "title,text", title);
+
evas_object_smart_callback_add(style1_popup, "timeout", _ivug_setas_view_response_cb, data);
+
evas_object_show(style1_popup);
evas_object_layer_set(style1_popup, EVAS_LAYER_MAX);
return style1_popup;
}
-static Eina_Bool _ivug_setas_view_resize_save(Evas_Object *org, const char *filepath, int w, int h)
+static void
+_send_result(ui_gadget_h ug, const char *key1, const char *val1, const char *key2, const char *val2)
{
- IV_ASSERT(org != NULL);
- IV_ASSERT(filepath != NULL);
+ ivug_ret_if(!ug);
- if(w <= 0 || h <= 0)
+ service_h service;
+ service_create(&service);
+ if(key1 && val1)
{
- MSG_SETAS_ERROR("input size parameter is invalid, w = %d, h = %d", w, h);
- return EINA_FALSE;
+ MSG_SETAS_HIGH("Bundle 1 : [%s = %s]", key1, val1);
+ service_add_extra_data(service, key1, val1);
}
- int img_w = 0;
- int img_h = 0;
-
- evas_object_image_size_get(org, &img_w, &img_h);
- MSG_SETAS_LOW("img_w = %d, img_h = %d", img_w, img_h);
- MSG_SETAS_LOW("w = %d, h = %d", w, h);
-
- char *ImgBuffer = evas_object_image_data_get(org, EINA_FALSE);
-
- Ecore_Evas *ee;
- Evas *evas;
-
- ee = ecore_evas_buffer_new(w, h);
- IV_ASSERT(ee != NULL);
- evas = ecore_evas_get(ee);
- IV_ASSERT(evas != NULL);
-
- Evas_Object *input;
- input = evas_object_image_filled_add(evas);
- IV_ASSERT(input != NULL);
-
- evas_object_image_size_set(input, img_w, img_h);
- evas_object_image_data_set(input, ImgBuffer);
- evas_object_image_smooth_scale_set(input, EINA_TRUE);
- evas_object_move(input, 0, 0);
- evas_object_resize(input, w, h);
-
- evas_object_show(input);
- evas_object_image_data_update_add(input, 0, 0, w, h);
-
- Ecore_Evas *ee_dest;
- Evas *evas_dest;
+ if(key2 && val2)
+ {
+ MSG_SETAS_HIGH("Bundle 2 : [%s = %s]", key2, val2);
+ service_add_extra_data(service, key2, val2);
+ }
- ee_dest = ecore_evas_buffer_new(1, 1);
- IV_ASSERT(ee_dest != NULL);
- evas_dest = ecore_evas_get(ee_dest);
- IV_ASSERT(evas_dest != NULL);
+ ug_send_result(ug, service);
+ service_destroy(service);
+}
- Evas_Object *output;
- output = evas_object_image_filled_add(evas_dest);
- IV_ASSERT(output != NULL);
- void *data = NULL;
- data = (void*)ecore_evas_buffer_pixels_get(ee);
- IV_ASSERT(data != NULL);
- evas_object_image_size_set(output, w, h);
- evas_object_image_data_set(output, data);
+static void _on_setas_homescreen(Ivug_SetAsView *pSetAsView)
+{
+ const char *homescreen_path = NULL;
- if (evas_object_image_save(output, filepath, NULL, NULL) == EINA_FALSE)
+ if(pSetAsView->Mode != IVUG_SETAS_APPSVC)
{
- MSG_SETAS_ERROR("evas_object_image_save error. %s", filepath);
- evas_object_del(input);
- evas_object_del(output);
- return EINA_FALSE;
+ homescreen_path = IVUG_HOME_SCREEN_PATH;
}
else
{
- int fd = open(filepath, O_RDONLY);
- if(fd < 0)
- {
- MSG_SETAS_ERROR("%s open error[%d]", filepath, fd);
- evas_object_del(input);
- evas_object_del(output);
- return EINA_FALSE;
- }
- fsync(fd);
- int ret = close(fd);
- if(ret < 0)
- {
- MSG_SETAS_ERROR("%s open error[%d]", filepath, ret);
- }
+ homescreen_path = IVUG_APPSVC_HOME_SCREEN_PATH;
}
- evas_object_del(input);
- evas_object_del(output);
- return EINA_TRUE;
-}
-static Eina_Bool
-_ivug_setas_view_screen_create_file(Ivug_SetAsView *pSetAsView, char* screen_file)
- {
-// Delete the home screen file if exist
- if (ivug_remove_file(screen_file) == false)
- {
- MSG_SETAS_ERROR( "Detele file %s failed", screen_file);
- return EINA_FALSE;
- }
+// Save to Image
+ Evas_Coord_Rectangle box_rect;
+ evas_object_geometry_get(pSetAsView->content, &(box_rect.x), &(box_rect.y), &(box_rect.w), &(box_rect.h) );
- int x = 0;
- int y = 0;
- int w = 0;
- int h = 0;
+ MSG_SETAS_HIGH("Rect XYWH(%d,%d,%d,%d)", box_rect.x, box_rect.y, box_rect.w , box_rect.h);
- Evas *canvas;
- Ecore_Evas *ee;
- ee = ecore_evas_buffer_new(1, 1);
- if (!ee)
+ Eina_Bool ret = EINA_FALSE;
+
+ ret = _ivug_setas_save_home_screen(_ivug_setas_internal_image_get( pSetAsView->content) ,&box_rect,homescreen_path);
+
+ if ( ret == false )
{
- MSG_DETAIL_ERROR("Cannot get EVAS");
- return EINA_FALSE;
+ MSG_SETAS_ERROR("Error occured. when setAS. %s", homescreen_path);
}
- canvas = ecore_evas_get(ee);
- Evas_Object *img = evas_object_image_add(canvas);
- evas_object_image_file_set(img, NULL, NULL);
- evas_object_image_load_orientation_set(img, EINA_TRUE);
- evas_object_image_load_scale_down_set(img, 0);
-
- evas_object_image_file_set(img, pSetAsView->file_path, NULL);
- Evas_Load_Error error = evas_object_image_load_error_get(img);
- if ( error != EVAS_LOAD_ERROR_NONE)
+ if(pSetAsView->Mode != IVUG_SETAS_APPSVC)
{
- MSG_SETAS_ERROR("Decoding Error(%d) : %s", error, pSetAsView->file_path);
- evas_object_image_file_set(img, NULL, NULL);
- evas_object_del(img);
- ecore_evas_free(ee);
- return EINA_FALSE;
+ ret = ivug_config_set_homescreen_image(homescreen_path);
}
- elm_photocam_image_region_get(pSetAsView->photocam, &x, &y, &w, &h);
- double zoom = elm_photocam_zoom_get(pSetAsView->photocam);
- if(zoom != 0.0)
+ if(ret == true)
{
- w = w/zoom;
- h = h/zoom;
+ _show_exit_popup(pSetAsView->content, IDS_HOME_SCREEN_WALLPAPER, IDS_SUCCESS, (void *)pSetAsView );
+ _send_result(gGetUGHandle(), "homescreen_path", homescreen_path, NULL, NULL);
+
+ MSG_SETAS_HIGH("Set Home screen: %s", homescreen_path);
}
- MSG_SETAS_HIGH("w = %d, h = %d", w, h);
- if(_ivug_setas_view_resize_save(img, screen_file, w, h) == EINA_FALSE)
+ else
{
- MSG_SETAS_ERROR("setas image save faied.");
- evas_object_image_file_set(img, NULL, NULL);
- evas_object_del(img);
- ecore_evas_free(ee);
- return EINA_FALSE;
+ _show_exit_popup(pSetAsView->content, IDS_HOME_SCREEN_WALLPAPER, IDS_FAILED, (void *)pSetAsView );
}
- evas_object_image_file_set(img, NULL, NULL);
- evas_object_del(img);
- ecore_evas_free(ee);
- return EINA_TRUE;
}
-static void
-_ivug_setas_on_change_home_screen(void *data, Evas_Object *obj, void *event_info)
+static void _on_setas_lockscreen(Ivug_SetAsView *pSetAsView)
{
- IV_ASSERT(data != NULL);
+ MSG_SETAS_HIGH("Change Lock Screen");
- MSG_SETAS_HIGH("Change Home Screen");
+ char* lockscreen_path = IVUG_LOCK_SCREEN_PATH;
- Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data;
+// Save to Image
+ Evas_Coord_Rectangle box_rect;
+ evas_object_geometry_get(pSetAsView->content, &(box_rect.x), &(box_rect.y), &(box_rect.w), &(box_rect.h) );
-// TODO : Remove dependancy
- char* homescreen_path = IVUG_HOME_SCREEN_PATH;
+ MSG_SETAS_HIGH("Rect XYWH(%d,%d,%d,%d)", box_rect.x, box_rect.y, box_rect.w , box_rect.h);
Eina_Bool ret = EINA_FALSE;
- if((ret = _ivug_setas_view_screen_create_file(pSetAsView, homescreen_path)) == EINA_FALSE)
- {
- MSG_SETAS_ERROR( "Create screen file failed");
- goto end;
- }
+ ret = _ivug_setas_save_lock_screen(_ivug_setas_internal_image_get( pSetAsView->content) ,&box_rect, lockscreen_path);
- if( (ret = ivug_config_set_homescreen_image(homescreen_path)) == EINA_TRUE)
+ if ( ret == false )
{
- pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, IDS_HOME_SCREEN_WALLPAPER, IDS_SUCCESS, pSetAsView);
+ MSG_SETAS_ERROR("Error occured. when setAS. %s", lockscreen_path);
}
- else
+
+ //Set the lock screen
+ if(pSetAsView->Mode != IVUG_SETAS_APPSVC)
{
- pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, IDS_HOME_SCREEN_WALLPAPER, IDS_FAILED, pSetAsView);
+ ret = ivug_config_set_lockscreen_image(lockscreen_path);
}
- MSG_SETAS_HIGH("Set Home screen: %s", homescreen_path);
-end:
if(ret == EINA_TRUE)
{
- _ivug_setas_view_send_result(gGetUGHandle(), "homescreen_path", homescreen_path, NULL, NULL);
+ _show_exit_popup(pSetAsView->content, IDS_LOCK_SCREEN_WALLPAPER, IDS_SUCCESS, pSetAsView);
+ _send_result(gGetUGHandle(), "lockscreen_path", lockscreen_path, NULL, NULL);
+
+ MSG_SETAS_HIGH("Set Lock screen: %s", lockscreen_path);
+ }
+ else
+ {
+ _show_exit_popup(pSetAsView->content, IDS_LOCK_SCREEN_WALLPAPER, IDS_FAILED, pSetAsView);
}
+
}
-static void
-_ivug_setas_on_change_lock_screen(void *data, Evas_Object *obj, void *event_info)
+
+static void _on_setas_bothscreen(Ivug_SetAsView *pSetAsView)
{
- IV_ASSERT(data != NULL);
+ MSG_SETAS_HIGH("Change Home & Lock Screen");
- MSG_SETAS_HIGH("Change Lock Screen");
+// Set homescreen image
+ const char* homescreen_path = IVUG_HOME_SCREEN_PATH;
+ const char* lockscreen_path = IVUG_LOCK_SCREEN_PATH;
- Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data;
+ Evas_Coord_Rectangle box_rect;
+ evas_object_geometry_get(pSetAsView->content, &(box_rect.x), &(box_rect.y), &(box_rect.w), &(box_rect.h) );
- char* lockscreen_path = IVUG_LOCK_SCREEN_PATH;
+ MSG_SETAS_HIGH("Rect XYWH(%d,%d,%d,%d)", box_rect.x, box_rect.y, box_rect.w , box_rect.h);
Eina_Bool ret = EINA_FALSE;
- if((ret = _ivug_setas_view_screen_create_file(pSetAsView, lockscreen_path)) == EINA_FALSE)
- {
- MSG_SETAS_ERROR( "Create screen file failed");
- goto end;
- }
+ ret = _ivug_setas_save_homenlock_screen(_ivug_setas_internal_image_get( pSetAsView->content),&box_rect, homescreen_path, lockscreen_path);
- //Set the lock screen
- if((ret = ivug_config_set_lockscreen_image(lockscreen_path)) == EINA_TRUE)
+ char *title = elm_entry_utf8_to_markup(IDS_HOME_AND_LOCK_SCREENS);
+
+ ret = ivug_config_set_homescreen_image(homescreen_path);
+
+ if ( ret == false)
{
- pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, IDS_LOCK_SCREEN_WALLPAPER, IDS_SUCCESS, pSetAsView);
+ _show_exit_popup(pSetAsView->content, title, IDS_FAILED, pSetAsView);
}
else
{
- pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, IDS_LOCK_SCREEN_WALLPAPER, IDS_FAILED, pSetAsView);
+ ret = ivug_config_set_lockscreen_image(lockscreen_path);
+ if ( ret == false)
+ {
+ // TODO : Do I revet homescreen if either failed?????
+ _show_exit_popup(pSetAsView->content, title, IDS_FAILED, pSetAsView);
+ }
+ else
+ {
+ _show_exit_popup(pSetAsView->content, title, IDS_SUCCESS, pSetAsView);
+ }
+
}
- MSG_SETAS_HIGH("Set Lock screen: %s", lockscreen_path);
-end:
- if(ret == EINA_TRUE)
+ MSG_SETAS_HIGH("Set Home&Lock screen: %s %s", homescreen_path, lockscreen_path);
+ free(title);
+
+ if(pSetAsView->Mode == IVUG_SETAS_UG || pSetAsView->Mode == IVUG_SETAS_APPSVC)
{
- _ivug_setas_view_send_result(gGetUGHandle(), "lockscreen_path", lockscreen_path, NULL, NULL);
+ if(ret == EINA_TRUE)
+ {
+ _send_result(gGetUGHandle(), "homescreen_path", homescreen_path, "lockscreen_path", lockscreen_path);
+ }
}
}
-static void
-_ivug_setas_on_change_homeNlock_screen(void *data, Evas_Object *obj, void *event_info)
+
+static void _on_setas_callerid(Ivug_SetAsView *pSetAsView)
{
- IV_ASSERT(data != NULL);
+ MSG_SETAS_HIGH("Set Caller Image");
- MSG_SETAS_HIGH("Change Lock Screen");
+// Save to Image
+ Evas_Coord_Rectangle box_rect;
+ evas_object_geometry_get(pSetAsView->content, &(box_rect.x), &(box_rect.y), &(box_rect.w), &(box_rect.h) );
- Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data;
+ MSG_SETAS_HIGH("Rect XYWH(%d,%d,%d,%d)", box_rect.x, box_rect.y, box_rect.w , box_rect.h);
-// Set homescreen image
- char* homescreen_path = IVUG_HOME_SCREEN_PATH;
+// LCD Image
+ Evas_Object *image = NULL;
- char* lockscreen_path = IVUG_LOCK_SCREEN_PATH;
+ image = _ivug_setas_callerid_internal_image_get( pSetAsView->content);
Eina_Bool ret = EINA_FALSE;
- if((ret = _ivug_setas_view_screen_create_file(pSetAsView, homescreen_path)) == EINA_FALSE)
+ char *title = elm_entry_utf8_to_markup(IDS_CALLER_IMAGE);
+
+ ret = _ivug_setas_save_cropimage(image, &box_rect, SET_AS_CALL_ID_LCD_PATH);
+ if ( ret == false )
{
- MSG_SETAS_ERROR( "Create screen file failed");
- goto end;
+ MSG_SETAS_ERROR("Error occured. when setAS1. %s", SET_AS_CALL_ID_LCD_PATH);
+ _show_exit_popup(pSetAsView->content, title, IDS_FAILED, pSetAsView);
+ free(title);
+ return;
}
- char* temp_lock_path = IVUG_LOCK_SCREEN_TEMP_PATH;
- if (ivug_remove_file(temp_lock_path) == false)
+// Cropped Image
+ _ivug_setas_callerid_select_region_get(pSetAsView->content, &(box_rect.x), &(box_rect.y), &(box_rect.w), &(box_rect.h));
+
+ MSG_SETAS_HIGH("Cropped rect XYWH(%d,%d,%d,%d)", box_rect.x, box_rect.y, box_rect.w , box_rect.h);
+
+ ret = _ivug_setas_save_cropimage(image ,&box_rect, SET_AS_CALL_ID_PATH);
+ if ( ret == false )
{
- MSG_SETAS_ERROR( "Detele file %s: failed", temp_lock_path);
- goto end;
+ MSG_SETAS_ERROR("Error occured. when setAS2. %s", SET_AS_CALL_ID_PATH);
+ _show_exit_popup(pSetAsView->content, title, IDS_FAILED, pSetAsView);
+ free(title);
+ return;
}
-// Make a copy from home screen to lock screen
- if((ret = ecore_file_cp(homescreen_path, temp_lock_path)) == EINA_FALSE)
+ free(title);
+
+ if(pSetAsView->Mode == IVUG_SETAS_UG || pSetAsView->Mode == IVUG_SETAS_APPSVC)
{
- MSG_SETAS_ERROR( "File copy failed");
- goto end;
+ _send_result(gGetUGHandle(), "crop_image_path", SET_AS_CALL_ID_PATH, "image_path", SET_AS_CALL_ID_LCD_PATH);
}
- else
- {
- if(ivug_rename_file(temp_lock_path, lockscreen_path) == false)
- {
- MSG_SETAS_ERROR( "Rename file %s to %s failed", temp_lock_path, lockscreen_path );
- if(ivug_remove_file(temp_lock_path)== false)
- {
- MSG_SETAS_ERROR( "delete tmp lock file failed %s", temp_lock_path);
- }
- ret = EINA_FALSE;
- goto end;
- }
- sync(); //sync copied file.
- }
+}
- char *title = elm_entry_utf8_to_markup(IDS_HOME_AND_LOCK_SCREEN_WALLPAPER);
+static void _on_setas_video_call_id(Ivug_SetAsView *pSetAsView)
+{
+ MSG_SETAS_HIGH("Set Caller Image");
- ret = ivug_config_set_homescreen_image(homescreen_path);
+// Save to Image
+ Evas_Coord_Rectangle box_rect;
- if ( ret == false)
+// LCD Image
+ Evas_Object *image = NULL;
+
+ image = _ivug_setas_callerid_internal_image_get(pSetAsView->content);
+
+ Eina_Bool ret = EINA_FALSE;
+
+ char *title = elm_entry_utf8_to_markup(IDS_CALLER_IMAGE);
+
+// Cropped Image
+ _ivug_setas_callerid_select_region_get(pSetAsView->content, &(box_rect.x), &(box_rect.y), &(box_rect.w), &(box_rect.h));
+
+ MSG_SETAS_HIGH("Cropped rect XYWH(%d,%d,%d,%d)", box_rect.x, box_rect.y, box_rect.w , box_rect.h);
+
+ ret = _ivug_setas_save_cropimage(image, &box_rect, SET_AS_VIDEO_CALL_ID_PATH);
+ if ( ret == false )
{
- pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, title, IDS_FAILED, pSetAsView);
+ MSG_SETAS_ERROR("Error occured. when setAS2. %s", SET_AS_VIDEO_CALL_ID_PATH);
+ _show_exit_popup(pSetAsView->content, title, IDS_FAILED, pSetAsView);
+ free(title);
+ return;
}
- else
- {
- ret = ivug_config_set_lockscreen_image(lockscreen_path);
- if ( ret == false)
- {
- // TODO : Do I revet homescreen if either failed?????
- pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, title, IDS_FAILED, pSetAsView);
- }
- else
- {
- pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, title, IDS_SUCCESS, pSetAsView);
- }
+ if(pSetAsView->Mode == IVUG_SETAS_UG || pSetAsView->Mode == IVUG_SETAS_APPSVC)
+ {
+ _send_result(gGetUGHandle(), "crop_image_path", SET_AS_VIDEO_CALL_ID_PATH, NULL, NULL);
}
- MSG_SETAS_HIGH("Set Home&Lock screen: %s %s", homescreen_path, lockscreen_path);
+ _show_exit_popup(pSetAsView->content, title, IDS_SUCCESS, pSetAsView);
+
free(title);
-end:
- if(ret == EINA_TRUE)
- {
- _ivug_setas_view_send_result(gGetUGHandle(), "homescreen_path", homescreen_path, "lockscreen_path", lockscreen_path);
- }
}
static void
-_ivug_setas_wallpaper_set_selected_cb(void *data, Evas_Object *obj, void *event_info)
+_on_type_popup_selected(void *data, Evas_Object *obj, void *event_info)
{
IV_ASSERT(data != NULL);
Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data;
- ivug_listpopup_item *item = event_info;
-
- edje_object_signal_callback_add(_EDJ(pSetAsView->layout),
- "setasview,set,clicked",
- "",
- _ivug_setas_on_icon_set_clicked,
- (void *)pSetAsView);
+ Ivug_ListPopup_Item *item = event_info;
if ( item == NULL ) // Cancel is selected
{
@@ -605,25 +483,24 @@ _ivug_setas_wallpaper_set_selected_cb(void *data, Evas_Object *obj, void *event_
return;
}
- MSG_SETAS_HIGH("Create SetAsView. name= %s", item->caption);
+ const char *label = ivug_listpopup_item_get_data(item);
+ MSG_SETAS_HIGH("Create SetAsView. name= %s", label);
- switch(item->index)
+ if ( strcmp(IDS_HOME_SCREEN, label) == 0 )
{
- case IVUG_SET_AS_TYPE_HOME:
- _ivug_setas_on_change_home_screen(data, NULL, NULL);
- break;
-
- case IVUG_SET_AS_TYPE_LOCK:
- _ivug_setas_on_change_lock_screen(data, NULL, NULL);
- break;
-
- case IVUG_SET_AS_TYPE_BOTH:
- _ivug_setas_on_change_homeNlock_screen(data, NULL, NULL);
- break;
-
- default:
- MSG_SETAS_ERROR("Unknown Set as type : %d", item->index);
- break;
+ _on_setas_homescreen(pSetAsView);
+ }
+ else if ( strcmp(IDS_LOCK_SCREEN, label) == 0 )
+ {
+ _on_setas_lockscreen(pSetAsView);
+ }
+ else if ( strcmp(IDS_HOME_AND_LOCK_SCREENS, label) == 0 )
+ {
+ _on_setas_bothscreen(pSetAsView);
+ }
+ else
+ {
+ MSG_SETAS_ERROR("Unknown Set as type : %s", label);
}
evas_object_del(pSetAsView->genlist_popup);
@@ -631,184 +508,209 @@ _ivug_setas_wallpaper_set_selected_cb(void *data, Evas_Object *obj, void *event_
}
-static void
-_ivug_setas_on_icon_cancel_clicked(void *data, Evas_Object* obj, const char *emission, const char *source )
+static void _dismissed_cb(void *data, Evas_Object *obj, void *event_info)
{
- MSG_SETAS_HIGH("Cancel button clicked");
- ivug_ret_if(!data);
-
- Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data;
-
- _ivug_setas_view_remove(pSetAsView);
+ MSG_SETAS_HIGH("Popup dissmissed");
}
+
static void
-_ivug_setas_on_icon_set_clicked(void *data, Evas_Object* obj, const char *emission, const char *source )
+_OnOK(Ivug_SetAsView *pSetAsView)
{
- MSG_SETAS_HIGH("On Btn Done clicke");
- ivug_ret_if(!data);
-
- Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data;
+ MSG_SETAS_HIGH("On Btn Done clicked");
- _ivug_setas_view_unregister_set_signal(pSetAsView->layout, _ivug_setas_on_icon_set_clicked);
+ Evas_Object *obj;
- if(pSetAsView->set_type == IVUG_CTRLBAR_SET_SCREEN_UNDEFINED)
+ switch(pSetAsView->Type)
{
- // In case of setting->wallpaper
- MSG_SETAS_HIGH("Create setas wallpaper popup");
+ case IVUG_CTRLBAR_SET_SCREEN_UNDEFINED:
+ MSG_SETAS_HIGH("Create setas wallpaper popup");
+
+ obj = ivug_listpopup_add(pSetAsView->content);
+
+ evas_object_smart_callback_add(obj, "popup,dismissed", _dismissed_cb, pSetAsView);
+ evas_object_smart_callback_add(obj, "popup,selected", _on_type_popup_selected, pSetAsView);
+
+ ivug_listpopup_item_append(obj, NULL,IDS_HOME_SCREEN, IDS_HOME_SCREEN);
+ ivug_listpopup_item_append(obj, NULL,IDS_LOCK_SCREEN, IDS_LOCK_SCREEN);
+ ivug_listpopup_item_append(obj, NULL,IDS_HOME_AND_LOCK_SCREENS, IDS_HOME_AND_LOCK_SCREENS);
- ivug_listpopup_itemlist items = ivug_listpopup_itemlist_new();
+ ivug_listpopup_title_set(obj, IDS_SET_AS);
- ivug_listpopup_itemlist_add(items, IVUG_SET_AS_TYPE_HOME, NULL, IDS_HOME_SCREEN_WALLPAPER, NULL , false);
- ivug_listpopup_itemlist_add(items, IVUG_SET_AS_TYPE_LOCK, NULL, IDS_LOCK_SCREEN_WALLPAPER, NULL , false);
- ivug_listpopup_itemlist_add(items, IVUG_SET_AS_TYPE_BOTH, NULL, IDS_HOME_AND_LOCK_SCREEN_WALLPAPER, NULL , false);
+ ivug_listpopup_button_set(obj, IDS_CLOSE);
- pSetAsView->genlist_popup = ivug_listpopup_show(pSetAsView->layout, IDS_SET_AS, items, _ivug_setas_wallpaper_set_selected_cb, pSetAsView);
+ ivug_listpopup_popup_show(obj);
- ivug_listpopup_itemlist_free(items);
+ pSetAsView->genlist_popup = obj;
+
+ break;
+
+ case IVUG_CTRLBAR_SET_SCREEN_HOME:
+ _on_setas_homescreen(pSetAsView);
+ break;
+ case IVUG_CTRLBAR_SET_SCREEN_LOCK:
+ _on_setas_lockscreen(pSetAsView);
+ break;
+ case IVUG_CTRLBAR_SET_SCREEN_BOTH:
+ _on_setas_bothscreen(pSetAsView);
+ break;
+ case IVUG_CTRLBAR_SET_SCREEN_CALLERID:
+ _on_setas_callerid(pSetAsView);
+ break;
+ case IVUG_CTRLBAR_SET_SCREEN_VIDEO_CALL_ID:
+ _on_setas_video_call_id(pSetAsView);
+ break;
+ default:
+ MSG_SETAS_ERROR("Unknown Set as type : %d", pSetAsView->Type);
+ break;
}
-}
+}
static void
-_ivug_setas_on_photocam_loaded(void *data, Evas_Object *obj, void *event_info)
+_OnCancel(Ivug_SetAsView *pSetAsView)
{
- Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *) data;
+ MSG_SETAS_HIGH("On Btn cancel clicked");
- IV_ASSERT(pSetAsView != NULL);
+ _ivug_setas_view_remove(pSetAsView);
+}
- Evas_Load_Error error = (Evas_Load_Error)event_info;
+#ifdef TRANSITION_EFFECT
+static void _signal_hide_finished(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ Ivug_SetAsView *pSetAsView = data;
- if ( error != EVAS_LOAD_ERROR_NONE )
- {
- MSG_SETAS_ERROR("Error occured during decoding. Error=%d", error);
+ IV_ASSERT(pSetAsView != NULL);
-// Show popup & Exit.
- pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, IDS_ERROR, IDS_INVALID_IMAGE_FILE, pSetAsView );
+ MSG_SETAS_HIGH("_signal_hide_finished. pData=0x%08x", pSetAsView);
- return;
- }
+ ivug_setas_view_destroy(pSetAsView);
+}
- elm_object_part_content_set(pSetAsView->layout, "setasview.photocam", pSetAsView->photocam);
+static void _signal_show_finished(void *data, Evas_Object *obj, const char *emission, const char *source)
+{
+ Ivug_SetAsView *pSetAsView = data;
- edje_object_signal_emit(_EDJ(pSetAsView->layout), "setasview,enable,btn_ok", "elm");
+ IV_ASSERT(pSetAsView != NULL);
- edje_object_signal_callback_add(_EDJ(pSetAsView->layout),
- "setasview,set,clicked",
- "",
- _ivug_setas_on_icon_set_clicked,
- (void *)pSetAsView);
+ MSG_SETAS_HIGH("_signal_show_finished. pData=0x%08x", pSetAsView);
}
-static Ivug_SetAsView *_create_setas_view(Evas_Object *parent, const char* filepath, ivug_set_screen_type screen_type)
+#endif // UG_TRANSITION_EFFECT
+
+
+
+Ivug_SetAsView *
+ivug_setas_view_screen_create(Evas_Object *parent, const char* filepath, ivug_setas_mode mode, ivug_set_screen_type screen_type)
{
- IV_ASSERT(filepath != NULL);
+ Ivug_SetAsView *pSetAsView = NULL;
- Ivug_SetAsView *pSetAsView = (Ivug_SetAsView *)calloc(1, sizeof(Ivug_SetAsView));
+ MSG_SETAS_HIGH("Setas View creates");
- if ( pSetAsView == NULL )
- {
- MSG_SETAS_ERROR("Cannot allocate memory");
- return NULL;
- }
+ pSetAsView = (Ivug_SetAsView *)calloc(1, sizeof(Ivug_SetAsView));
- pSetAsView->file_path = strdup(filepath);
- pSetAsView->set_type = screen_type;
- pSetAsView->layout = ivug_layout_add(parent , SETAS_EDJ_FILE, "setas_view");
+ pSetAsView->Mode = mode;
+ pSetAsView->Type = screen_type;
- if ( pSetAsView->layout == NULL )
- {
- MSG_SETAS_ERROR("Cannot create layout.");
- free(pSetAsView);
- return NULL;
- }
+ pSetAsView->content = _ivug_setas_create_layout(parent);
- Evas_Object *photocam;
- photocam = elm_photocam_add(pSetAsView->layout);
- elm_photocam_zoom_mode_set(photocam, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT);
- elm_photocam_paused_set(photocam, EINA_TRUE);
+ evas_object_smart_callback_add(pSetAsView->content, "load,failed", _on_msg_load_failed, pSetAsView);
+ evas_object_smart_callback_add(pSetAsView->content, "download,failed", _on_msg_load_failed, pSetAsView);
+ evas_object_smart_callback_add(pSetAsView->content, "ok,clicked", _on_msg_ok_clicked, pSetAsView);
+ evas_object_smart_callback_add(pSetAsView->content, "cancel,clicked", _on_msg_cancel_clicked, pSetAsView);
- edje_object_signal_emit(_EDJ(pSetAsView->layout), "setasview,disable,btn_ok","elm"); // Disable ok button
+ _ivug_setas_load_file(pSetAsView->content , filepath);
- _ivug_setas_view_show_icons(pSetAsView->layout);
+// Transition layout
+#ifdef TRANSITION_EFFECT
+ pSetAsView->ly_effect = ivug_layout_add(parent , EDJ_PATH"/ivug-effect.edj", "ivug_effect");
- evas_object_smart_callback_add(photocam, "loaded", _ivug_setas_on_photocam_loaded, (void *)pSetAsView);
+ elm_object_part_content_set(pSetAsView->ly_effect, "elm.swallow.content", pSetAsView->content);
- pSetAsView->photocam = photocam;
+ edje_object_signal_callback_add(_EDJ(pSetAsView->ly_effect), "elm,action,hide,finished", "elm", _signal_hide_finished, (void *)pSetAsView);
+ edje_object_signal_callback_add(_EDJ(pSetAsView->ly_effect), "elm,action,show,finished", "elm", _signal_show_finished, (void *)pSetAsView);
- Evas_Load_Error error = EVAS_LOAD_ERROR_NONE;
+ evas_object_show(pSetAsView->ly_effect);
-// Get Screen size
- Evas_Coord w, h;
- evas_object_geometry_get(pSetAsView->layout, NULL, NULL, &w, &h);
+ edje_object_signal_emit(_EDJ(pSetAsView->ly_effect), "elm,state,show", "app"); // Start Effect
+#endif
- evas_object_show(photocam);
+ return pSetAsView;
+}
- error = elm_photocam_file_set(photocam, filepath);
- if ( error != EVAS_LOAD_ERROR_NONE )
- {
- // TODO : What is good for error handing??????
- MSG_SETAS_ERROR("FileSet Error=%d", error);
+Ivug_SetAsView *
+ivug_setas_view_screen_ug_create(Evas_Object *parent, const char* filepath, ivug_setas_mode mode, ivug_set_screen_type type)
+{
+ Ivug_SetAsView *pSetAsView = NULL;
- if ( error == EVAS_LOAD_ERROR_UNKNOWN_FORMAT )
- {
- _ivug_setas_view_send_result(gGetUGHandle(), IVUG_RESULT_BUNDLE_KEY_ERROR, IVUG_RESULT_BUNDLE_VALUE_NOT_SUPPORTED, NULL, NULL);
- ivug_setas_view_destroy(pSetAsView);
+ MSG_SETAS_HIGH("Wallpaper UG creates");
- return NULL;
- }
- else if ( error == EVAS_LOAD_ERROR_PERMISSION_DENIED )
- {
- pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, IDS_ERROR, IDS_PERMISSION_DENIED, pSetAsView );
- return pSetAsView;
- }
- else
- {
- pSetAsView->popup = _ivug_setas_view_show_exit_popup(pSetAsView->layout, IDS_ERROR, IDS_INVALID_IMAGE_FILE, pSetAsView );
- return pSetAsView;
- }
+ pSetAsView = (Ivug_SetAsView *)calloc(1, sizeof(Ivug_SetAsView));
- }
+ pSetAsView->Mode = mode;
+ pSetAsView->Type = type;
- edje_object_signal_callback_add(_EDJ(pSetAsView->layout),
- "setasview,cancel,clicked",
- "",
- _ivug_setas_on_icon_cancel_clicked,
- (void *)pSetAsView);
+ pSetAsView->content = _ivug_setas_create_layout(parent);
- const Evas_Object *event = edje_object_part_object_get(_EDJ(pSetAsView->layout), "event");
- if(!event)
- {
- MSG_SETAS_ERROR("event object is NULL");
- }
- else
- {
- evas_object_event_callback_add((Evas_Object *)event, EVAS_CALLBACK_MOUSE_DOWN, _ivug_setas_view_mouse_down_cb, pSetAsView);
- evas_object_event_callback_add((Evas_Object *)event, EVAS_CALLBACK_MOUSE_UP, _ivug_setas_view_mouse_up_cb, pSetAsView);
- }
+ evas_object_smart_callback_add(pSetAsView->content, "load,failed", _on_msg_load_failed, pSetAsView);
+ evas_object_smart_callback_add(pSetAsView->content, "download,failed", _on_msg_load_failed, pSetAsView);
+ evas_object_smart_callback_add(pSetAsView->content, "ok,clicked", _on_msg_ok_clicked, pSetAsView);
+ evas_object_smart_callback_add(pSetAsView->content, "cancel,clicked", _on_msg_cancel_clicked, pSetAsView);
+
+ _ivug_setas_load_file(pSetAsView->content , filepath);
return pSetAsView;
+}
+
+
+Ivug_SetAsView *
+ivug_setas_view_callerid_ug_create(Evas_Object *parent, const char* filepath, ivug_setas_mode mode, int output_width, int output_height)
+{
+ Ivug_SetAsView *pSetAsView = NULL;
+
+ MSG_SETAS_HIGH("CallerID UG creates. ImgOut(%d,%d)", output_width, output_height);
+
+ pSetAsView = (Ivug_SetAsView *)calloc(1, sizeof(Ivug_SetAsView));
+
+ pSetAsView->Mode = mode;
+ pSetAsView->Type = IVUG_CTRLBAR_SET_SCREEN_CALLERID; // Means that aspect ration should be preserved
+ pSetAsView->content = _ivug_setas_callerid_create_layout(parent);
+
+ evas_object_smart_callback_add(pSetAsView->content, "load,failed", _on_msg_load_failed, pSetAsView);
+ evas_object_smart_callback_add(pSetAsView->content, "download,failed", _on_msg_load_failed, pSetAsView);
+ evas_object_smart_callback_add(pSetAsView->content, "ok,clicked", _on_msg_ok_clicked, pSetAsView);
+ evas_object_smart_callback_add(pSetAsView->content, "cancel,clicked", _on_msg_cancel_clicked, pSetAsView);
+
+ _ivug_setas_callerid_load_file(pSetAsView->content , filepath);
+ _ivug_setas_callerid_aspect_ratio_set(pSetAsView->content , (double)output_height/output_width);
+
+ return pSetAsView;
}
Ivug_SetAsView *
-ivug_setas_view_screen_ug_create(Evas_Object *parent, const char* filepath)
+ivug_setas_view_video_call_id_ug_create(Evas_Object *parent, const char* filepath, ivug_setas_mode mode, int output_width, int output_height)
{
Ivug_SetAsView *pSetAsView = NULL;
- MSG_SETAS_HIGH("Wallpaper UG creates");
+ MSG_SETAS_HIGH("CallerID UG creates. ImgOut(%d,%d)", output_width, output_height);
- pSetAsView = _create_setas_view(parent, filepath, IVUG_CTRLBAR_SET_SCREEN_UNDEFINED);
+ pSetAsView = (Ivug_SetAsView *)calloc(1, sizeof(Ivug_SetAsView));
- if ( pSetAsView == NULL )
- {
- MSG_SETAS_ERROR("Cannot create Wallpaper UG");
- return NULL;
- }
+ pSetAsView->Mode = mode;
+ pSetAsView->Type = IVUG_CTRLBAR_SET_SCREEN_VIDEO_CALL_ID; // Means that aspect ration should be preserved
+
+ pSetAsView->content = _ivug_setas_callerid_create_layout(parent);
+
+ evas_object_smart_callback_add(pSetAsView->content, "load,failed", _on_msg_load_failed, pSetAsView);
+ evas_object_smart_callback_add(pSetAsView->content, "download,failed", _on_msg_load_failed, pSetAsView);
+ evas_object_smart_callback_add(pSetAsView->content, "ok,clicked", _on_msg_ok_clicked, pSetAsView);
+ evas_object_smart_callback_add(pSetAsView->content, "cancel,clicked", _on_msg_cancel_clicked, pSetAsView);
- evas_object_event_callback_add(pSetAsView->layout, EVAS_CALLBACK_DEL, _setas_ug_view_deleted, "Wallpaper UG");
+ _ivug_setas_callerid_load_file(pSetAsView->content , filepath);
+ _ivug_setas_callerid_aspect_ratio_set(pSetAsView->content , (double)output_height/output_width);
return pSetAsView;
}
@@ -819,7 +721,7 @@ ivug_setas_view_object_get(Ivug_SetAsView *pSetAsView)
{
IV_ASSERT(pSetAsView != NULL);
- return pSetAsView->layout;
+ return pSetAsView->content;
}
void
@@ -827,69 +729,26 @@ ivug_setas_view_destroy(Ivug_SetAsView *pSetAsView)
{
MSG_SETAS_HIGH("Removing SetAs VIew");
- ivug_ret_if(!pSetAsView);
-
- const Evas_Object *event = edje_object_part_object_get(_EDJ(pSetAsView->layout), "event");
- if(event != NULL)
- {
- evas_object_event_callback_del((Evas_Object *)event, EVAS_CALLBACK_MOUSE_DOWN, _ivug_setas_view_mouse_down_cb);
- evas_object_event_callback_del((Evas_Object *)event, EVAS_CALLBACK_MOUSE_UP, _ivug_setas_view_mouse_up_cb);
- }
-
- if (pSetAsView->click_timer)
- {
- ecore_timer_del(pSetAsView->click_timer);
- pSetAsView->click_timer = NULL;
- }
-
- if(pSetAsView->genlist_popup)
- {
- evas_object_del(pSetAsView->genlist_popup);
- pSetAsView->genlist_popup = NULL;
- }
-
- if(pSetAsView->popup)
- {
- evas_object_del(pSetAsView->popup);
- pSetAsView->popup = NULL;
- }
-
- if(pSetAsView->select_box)
- {
- evas_object_del(pSetAsView->select_box);
- pSetAsView->select_box = NULL;
- }
-
- if(pSetAsView->photocam)
- {
- evas_object_del(pSetAsView->photocam);
- pSetAsView->photocam = NULL;
- }
-
- if(pSetAsView->file_path)
+ if ( pSetAsView->ly_effect)
{
- free(pSetAsView->file_path);
- pSetAsView->file_path = NULL;
+ evas_object_del(pSetAsView->ly_effect);
+ pSetAsView->ly_effect = NULL;
}
- if(pSetAsView->layout)
+ if ( pSetAsView->content)
{
- evas_object_del(pSetAsView->layout);
- pSetAsView->layout = NULL;
+ evas_object_del(pSetAsView->content);
+ pSetAsView->content = NULL;
}
- if ( pSetAsView->ly_effect)
+ if ( pSetAsView->filename )
{
- evas_object_del(pSetAsView->ly_effect);
- pSetAsView->ly_effect = NULL;
+ free(pSetAsView->filename);
}
if(pSetAsView)
{
free(pSetAsView);
}
- pSetAsView = NULL;
-
}
-
diff --git a/main/src/view/ivug-setas-view.h b/main/src/view/ivug-setas-view.h
deleted file mode 100755
index 2e1dc5c..0000000
--- a/main/src/view/ivug-setas-view.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * 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.
- */
-
-
-#ifndef __SETAS_VIEW_H__
-#define __SETAS_VIEW_H__
-
-#include "ivug-common.h"
-
-typedef enum {
- NOTI_SUCCESS,
- NOTI_FAIL,
-} TEXT_POPUP_TYPE;
-
-typedef enum {
- IVUG_CTRLBAR_SET_SCREEN_HOME,
- IVUG_CTRLBAR_SET_SCREEN_LOCK,
- IVUG_CTRLBAR_SET_SCREEN_BOTH,
- IVUG_CTRLBAR_SET_SCREEN_UNDEFINED, // Show select popup when click ok button.
- IVUG_CTRLBAR_SET_SCREEN_MAX
-} ivug_set_screen_type;
-
-typedef struct {
- Evas_Object *parent;
- Evas_Object *ly_effect; // Layout for transition effect
-
- Evas_Object *layout;
-
-/*
- |------------------|
- | naviframe |
- |------------------|
- | toolbar |
- |------------------|
- | |
- | |
- | |
- | |
- |------------------|
- | controlbar |
- |------------------|
-*/
- Evas_Object *photocam;
- Evas_Object *toolbar;
- Evas_Object *content; // Empty layout
-
- Evas_Object *select_box;
-
- struct {
- int x, y, h, w;
- } select_rect;
-
- Evas_Object *popup;
- Evas_Object *done_button;
-
- char *file_path;
-
- Eina_Bool b_hide_bar_flag;
-
-
- Ecore_Timer *timer_locate_rect;
-
- // click event
- Evas_Coord_Point down_pos;
- unsigned int timestamp;
- Ecore_Timer *click_timer;
-
- ivug_set_screen_type set_type;
-
- Evas_Object *genlist_popup;
- Eina_List *popup_list;
-} Ivug_SetAsView;
-
-
-Ivug_SetAsView *
-ivug_setas_view_screen_ug_create(Evas_Object *parent, const char* filepath);
-
-void
-ivug_setas_view_destroy(Ivug_SetAsView *data);
-
-Evas_Object *
-ivug_setas_view_object_get(Ivug_SetAsView *pSetAsView);
-
-#endif //__SETAS_VIEW_H__
diff --git a/main/src/view/ivug-slider-item.c b/main/src/view/ivug-slider-item.c
deleted file mode 100755
index 1b33e0c..0000000
--- a/main/src/view/ivug-slider-item.c
+++ /dev/null
@@ -1,703 +0,0 @@
-/*
- * 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 "ivug-common.h"
-
-#include "ivug-slider-item.h"
-
-#include "ivug-main.h"
-
-#define DEFAULT_THUMBNAIL_PATH IMAGE_PATH"/T01_Nocontents_broken.png"
-
-#define IVUG_SLIDER_EDJ EDJ_PATH"/ivug-slider.edj"
-
-/*
- Use elm_icon istead of elm_image. elm_icon preserve image ratio. and seems more faster.
-*/
-#define USE_ELM_ICON
-
-bool
-_thumbnail_set( Slide_Item* si, const char *filepath)
-{
- IV_ASSERT(si != NULL);
- IV_ASSERT(filepath != NULL);
-
- if (si->thumbnail == NULL)
- {
- MSG_SITEM_FATAL("slide item or thumbnail object is NULL");
- return false;
- }
-
- MSG_SITEM_MED("Set thumbnail : %s", ivug_get_filename(filepath));
-
-#ifdef USE_ELM_ICON
- if (elm_icon_file_set(si->thumbnail, filepath, NULL) == EINA_FALSE)
- {
- MSG_SITEM_ERROR("Cannot load thumbnail : %s", filepath);
- si->thumbnail_show = EINA_FALSE;
- return false;
- }
-
-#else
- if (elm_image_file_set(si->thumbnail, filepath, NULL) == EINA_FALSE)
- {
- MSG_SITEM_ERROR("Cannot load thumbnail : %s", filepath);
- si->thumbnail_show = EINA_FALSE;
- return false;
- }
-#endif
- edje_object_signal_emit(_EDJ(si->layout), "elm,state,show_thumbnail", "slider");
-
- si->thumbnail_show = EINA_TRUE;
- return true;
-}
-
-
-inline
-void _call_user_callback(Slide_Item* si)
-{
- if ( si->cb )
- {
- (si->cb)(si->state, si, si->client_data);
- }
-
-}
-
-
-static void
-_photocam_loaded_cb(void *data, Evas_Object *obj, void *event_info)
-{
- IV_ASSERT(data != NULL);
-
- Slide_Item* si = data;
-
- //hide progress.
- elm_progressbar_pulse(si->progress, EINA_FALSE); //stop pluse
- edje_object_signal_emit(_EDJ(si->layout), "elm,state,hide,progress", "slider");
-
- if ( si->mitem == NULL)
- {
- MSG_SITEM_ERROR("Debug Me! Data item is NULL.");
- return;
- }
-
- Media_Data* sdata = ivug_data_get_data(si->mitem);
- if(sdata == NULL)
- {
- MSG_SITEM_ERROR("ivug_data_get_data failed.");
- si->state = SLIDE_STATE_ERROR;
- return;
- }
-
- Evas_Load_Error error = (Evas_Load_Error)event_info;
-
- if ( error != EVAS_LOAD_ERROR_NONE )
- {
- MSG_SITEM_ERROR("Image loading failed. Error=%d", error);
- si->state = SLIDE_STATE_ERROR;
-
- si->photocam_show = EINA_FALSE;
- evas_object_hide(obj);
-
- _thumbnail_set(si, DEFAULT_THUMBNAIL_PATH);
-
- evas_object_repeat_events_set(si->thumbnail, EINA_FALSE);
-
- _call_user_callback(si);
-
- return ;
- }
-
- si->state = SLIDE_STATE_LOADED;
-
- if (sdata->slide_type == SLIDE_TYPE_VIDEO) //if slide type is video,
- {
- // TODO : Never get here..
- MSG_SITEM_FATAL("slide type is video. thumbnail image ");
- return;
- }
-
- si->photocam_show = EINA_TRUE;
- evas_object_show(obj); //photocam show.
-
-// evas_object_move(obj, si->x, si->y);
-
-//hide thumbnail.
- if(si->thumbnail_show == EINA_TRUE)
- {
- MSG_SITEM_HIGH("Thumbnail Hide");
- edje_object_signal_emit(_EDJ(si->layout), "elm,state,hide_thumbnail", "slider");
- si->thumbnail_show = EINA_FALSE;
- }
-
- _call_user_callback(si);
-
- MSG_SITEM_HIGH("Photocam Pre-loaded. File=%s", ivug_get_filename(sdata->filepath));
-}
-
-Slide_Item*
-ivug_slider_item_add(Evas_Object *slider)
-{
- Slide_Item* si = NULL;
-
- //create item
- si = (Slide_Item*)calloc(1, sizeof (Slide_Item));
-
- if ( si == NULL )
- {
- MSG_SITEM_FATAL("Cannot allocated memory : %d.", sizeof (Slide_Item));
- return NULL;
- }
-
- si->state = SLIDE_STATE_NONE; //set slide state
-
-//Create the slider item layout
- Evas_Object *layout = elm_layout_add(slider);
- if(elm_layout_file_set(layout, IVUG_SLIDER_EDJ, "slider") == EINA_FALSE)
- {
- MSG_SITEM_ERROR("Cannot load file : %s", IVUG_SLIDER_EDJ);
- free(si);
-
- return NULL;
- }
-
- si->layout = layout;
-
-//Add the photocam
- si->photocam = elm_photocam_add(slider);
- elm_photocam_zoom_mode_set(si->photocam, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT);
- elm_photocam_paused_set(si->photocam, EINA_TRUE);
- evas_object_smart_callback_call(si->photocam, "scroll-freeze-on", si->photocam);
- evas_object_smart_callback_add(si->photocam, "loaded", _photocam_loaded_cb, si);
-
- elm_object_part_content_set(si->layout, "slider.photocam", si->photocam);
-
-//set thumbnail.
-#ifdef USE_ELM_ICON
- si->thumbnail = elm_icon_add(slider);
-#else
- si->thumbnail = elm_image_add(slider);
-#endif
- elm_object_part_content_set(si->layout, "slider.thumbnail", si->thumbnail);
-
-//set progress
- si->progress = elm_progressbar_add(slider);
- elm_object_style_set(si->progress, "list_process");
- elm_progressbar_pulse(si->progress, EINA_FALSE);
-
- elm_object_part_content_set(si->layout, "slider.progress", si->progress);
-
- si->icon = edje_object_part_object_get(_EDJ(si->layout), "slider.icon");
-
- evas_object_clip_set(si->layout, slider);
-
-// Add 하는 순서에 따라 Z-Order이 결정 된다.
- evas_object_smart_member_add(si->layout, slider);
-
- si->w = gGetScreenWidth();
- si->h = gGetScreenHeight();
-
- MSG_SITEM_HIGH("Creating slider item. 0x%08x. WH(%dx%d)", si, si->w, si->h);
-
- return si;
-
-}
-
-void
-ivug_slider_item_resize(Slide_Item* si, int w, int h)
-{
- IV_ASSERT(si != NULL );
-
- // TODO : Impelement
- MSG_SITEM_HIGH("SLIDER Resize to WH(%d,%d)", w, h );
-
-// w,h is not Image's scale, but Object's scale
- si->w = w;
- si->h = h;
-
-// MSG_SITEM_HIGH("resize layout: %d, %d", si->w, si->h);
- evas_object_resize(si->layout, si->w, si->h);
-
- ivug_slider_item_zoom_reset(si, EINA_FALSE, 0,0);
-}
-
-void ivug_slider_item_del(Slide_Item* si)
-{
- IV_ASSERT(si != NULL );
-
- if (si->photocam)
- {
- evas_object_del(si->photocam); //remove photocam
- si->photocam = NULL;
- }
-
- if (si->thumbnail)
- {
- evas_object_del(si->thumbnail);
- si->thumbnail = NULL;
- }
-
- if (si->progress)
- {
- evas_object_del(si->progress);
- si->progress = NULL;
- }
-
- if(si->layout)
- {
- evas_object_del(si->layout);
- si->layout = NULL;
- }
-
- free(si);
-
- MSG_SITEM_HIGH("Slide item is deleted");
-}
-
-void ivug_slider_item_hide(Slide_Item* si)
-{
- IV_ASSERT(si != NULL );
-
- MSG_SITEM_HIGH("hide bg");
- evas_object_hide(si->layout);
-}
-
-void ivug_slider_item_show(Slide_Item* si)
-{
- IV_ASSERT(si != NULL );
-
-// no need to check layout is NULL
- evas_object_show(si->layout);
-}
-
-void ivug_slider_item_move(Slide_Item* si, int x, int y)
-{
- IV_ASSERT(si != NULL );
-
-
-// MSG_SITEM_HIGH("SLIDER(%d) Move to XY(%d,%d)", si->idx, x, y );
- //photocam
- si->x = x;
- si->y = y;
-
-// MSG_SITEM_HIGH("move layout: %d, %d", x, y);
- evas_object_move(si->layout, x, y);
-}
-
-void
-ivug_slider_item_clip_set(Slide_Item* si, Evas_Object *clipper)
-{
- IV_ASSERT(si != NULL );
-// no need to check layout is NULL
- MSG_SITEM_HIGH("Clip SET!!");
-
- evas_object_clip_set(si->layout, clipper);
-}
-
-void
-ivug_slider_item_clip_unset(Slide_Item* si)
-{
- IV_ASSERT(si != NULL );
-// no need to check layout is NULL
- evas_object_clip_unset(si->layout);
-}
-
-bool
-ivug_slider_item_set_callback(Slide_Item* si, OnSliderStateChanged cb, void *data)
-{
- ivug_retv_if(!si, false);
-
- si->cb = cb;
- si->client_data = data;
-
- return true;
-}
-
-bool
-ivug_slider_item_data_loading(Slide_Item *si)
-{
- IV_ASSERT(si != NULL);
-
- if ( si->state != SLIDE_STATE_READY)
- {
- MSG_SITEM_ERROR("Invalid state : %d", si->state);
- return false;
- }
-
- Media_Data *mdata = ivug_data_get_data(si->mitem);
- if ( mdata == NULL )
- {
- MSG_SITEM_ERROR("Data is NULL");
- return false;
- }
-
- char path[IVUG_MAX_FILE_PATH_LEN] = {0,};
-
- strncpy(path, mdata->filepath, strlen(mdata->filepath));
-
- switch(mdata->slide_type)
- {
- case SLIDE_TYPE_IMAGE:
- {
- MSG_SITEM_HIGH("Load Image. %s", ivug_get_filename(path));
- si->state = SLIDE_STATE_LOADING;
-
- if (elm_photocam_file_set(si->photocam, path) != EVAS_LOAD_ERROR_NONE)
- {
- MSG_SITEM_ERROR("Failed photocam to set file file=%s", path);
-
- _photocam_loaded_cb(si, si->photocam, (void *) EVAS_LOAD_ERROR_UNKNOWN_FORMAT);
-
- return false;
- }
-
- return true;
-
- }
- break;
-
- case SLIDE_TYPE_VIDEO:
- return true;
- break;
-
- default:
- MSG_SITEM_ERROR("slide type invaild. Type=%d", mdata->slide_type);
- return false;
- break;
- }
-
- return true;
-}
-
-
-bool
-ivug_slider_item_data_set(Slide_Item* si, Media_Item *item)
-{
- ivug_retv_if(!si, false);
-
- if ( si->state != SLIDE_STATE_NONE )
- {
- MSG_SITEM_ERROR("State is not none... State=%d", si->state);
- si->state = SLIDE_STATE_NONE;
- }
-
- if ( item == NULL )
- {
- MSG_SITEM_WARN("Item is NULL");
- return false;
- }
-
- si->mitem = item;
-
- Media_Data *mdata = ivug_data_get_data(item);
-
- if ( mdata == NULL )
- {
- MSG_SITEM_ERROR("Data is NULL");
- return false;
- }
-
- switch(mdata->slide_type)
- {
- case SLIDE_TYPE_IMAGE:
- MSG_SITEM_HIGH("Set image. %s", ivug_get_filename(mdata->filepath));
-
- si->state = SLIDE_STATE_READY;
-
- break;
- case SLIDE_TYPE_VIDEO:
- if (mdata->thumbnail_path)
- {
- _thumbnail_set(si, mdata->thumbnail_path);
- // Go through
- }
- else
- {
- _thumbnail_set(si, DEFAULT_THUMBNAIL_PATH);
- }
-
- si->photocam_show = EINA_FALSE;
-
- evas_object_repeat_events_set(si->thumbnail, EINA_FALSE); // In case of video, photocam should not receive events
-
- edje_object_signal_emit(_EDJ(si->layout), "elm,state,show_icon", "slider"); // Video icon
-
- MSG_SITEM_HIGH("Set video. %s", ivug_get_filename(mdata->filepath));
-
- si->state = SLIDE_STATE_LOADED; // Video dont need to load photocam
-
- break;
-
- case SLIDE_TYPE_UNKNOWN:
- if (mdata->thumbnail_path)
- {
- _thumbnail_set(si, mdata->thumbnail_path);
- // Go through
- }
-
- MSG_SITEM_ERROR("Unknown image. %s", ivug_get_filename(mdata->filepath));
-
- si->state = SLIDE_STATE_ERROR;
-
- break;
-
- default:
- MSG_SITEM_ERROR("slide type invaild. Type=%d", mdata->slide_type);
- si->state = SLIDE_STATE_ERROR;
- return false;
- break;
-
- }
-
- si->zoom_level = 0;
-
- return true;
-}
-
-slide_state_t
-ivug_slider_item_get_state(Slide_Item *si)
-{
- IV_ASSERT(si != NULL);
-
- return si->state;
-}
-
-const Media_Item *
-ivug_slider_item_data_get(Slide_Item *si)
-{
- IV_ASSERT(si != NULL);
-
- return si->mitem;
-}
-
-
-void
-ivug_slider_item_data_unset(Slide_Item* si)
-{
- IV_ASSERT(si != NULL);
-
- if ( si->state == SLIDE_STATE_NONE )
- {
- MSG_SITEM_WARN("Slide item is already cleared. just return");
- return;
- }
-
- if(si->progress)
- {
- elm_progressbar_pulse(si->progress, EINA_FALSE); //stop pluse
- edje_object_signal_emit(_EDJ(si->layout), "elm,state,hide,progress", "slider");
- }
-
- if ( si->mitem == NULL )
- {
- // When delete case, this code is launched.
- MSG_SITEM_WARN("MItem is NULL.");
- // Go through
- }
- else
- {
- Media_Data *mdata = ivug_data_get_data(si->mitem);
-
- if ( mdata == NULL )
- {
- MSG_SITEM_ERROR("Data is NULL");
- return ;
- }
-
- MSG_SITEM_HIGH("Clear Image. %s", ivug_get_filename(mdata->filepath));
-
- si->mitem = NULL;
- }
-
- if (si->thumbnail_show)
- {
- si->thumbnail_show = EINA_FALSE;
- edje_object_signal_emit(_EDJ(si->layout), "elm,state,hide_thumbnail", "slider");
- }
-
- if(si->layout)
- {
- edje_object_signal_emit(_EDJ(si->layout), "elm,state,hide_icon", "slider");
- }
-
-// does not check photocam_show flags. because photocam_show only set true when finish preloading.
-// during preloading photocam_show is remains false,
- si->photocam_show = EINA_FALSE;
-// elm_layout_content_unset(si->layout, "slider.photocam"); //
-
- evas_object_hide(si->photocam);
-
- evas_object_del(si->photocam);
- si->photocam = elm_photocam_add(si->layout);
- elm_photocam_zoom_mode_set(si->photocam, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT);
- elm_photocam_paused_set(si->photocam, EINA_TRUE);
- evas_object_smart_callback_call(si->photocam, "scroll-freeze-on", si->photocam);
- evas_object_smart_callback_add(si->photocam, "loaded", _photocam_loaded_cb, si);
- elm_object_part_content_set(si->layout, "slider.photocam", si->photocam);
-
- si->state = SLIDE_STATE_NONE;
-
- si->zoom_level = 0;
-
- MSG_SITEM_MED("Slider Item is cleared.");
-
-}
-
-
-void ivug_slider_item_change_mitem_pointer(Slide_Item* si, Media_Item *item)
-{
- IV_ASSERT(si != NULL );
-
- si->mitem = item;
-}
-
-
-
-// Photocam
-bool
-ivug_slider_item_region_size_get(Slide_Item* si, int *x, int *y, int *w, int *h)
-{
- IV_ASSERT(si != NULL );
-
- if ( si->mitem == NULL)
- {
- MSG_SITEM_ERROR("Debug Me! Data item is NULL.");
- return false;
- }
-
- Media_Data *mdata = ivug_data_get_data(si->mitem);
-
- if ( mdata == NULL )
- {
- MSG_SITEM_ERROR("slide type is NULL. Item=0x%08x", si);
- return false; // TODO : Temp..
- }
-
- if ( mdata->slide_type == SLIDE_TYPE_VIDEO)
- {
- return false;
- }
-
- Evas_Object *image = elm_photocam_internal_image_get(si->photocam);
- evas_object_geometry_get(image, x, y, w, h);
- MSG_SITEM_MED("x = %d, y = %d, w = %d, h = %d", *x, *y, *w, *h);
-
- return true;
-}
-
-
-
-void
-ivug_slider_item_hold_set(Slide_Item* si, Eina_Bool hold)
-{
- IV_ASSERT(si != NULL );
-
- if(hold == EINA_TRUE)
- {
- evas_object_smart_callback_call(si->photocam, "scroll-freeze-on", si->photocam);
- }
- else
- {
- evas_object_smart_callback_call(si->photocam, "scroll-freeze-off", si->photocam);
- }
-}
-
-
-void
-ivug_slider_item_zoom_reset(Slide_Item* si, Eina_Bool bAnim, int center_x, int center_y)
-{
- IV_ASSERT(si != NULL );
-
- if ( si->photocam_show )
- {
- Evas_Point pt;
-
- pt.x = center_x;
- pt.y = center_y;
- elm_photocam_paused_set(si->photocam, !bAnim); //stop photocam animation
- elm_photocam_zoom_mode_set(si->photocam, ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT);
-
- si->zoom_level = 0;
- }
-}
-
-
-void
-ivug_slider_item_zoom_set(Slide_Item* si, double zoom, int center_x, int center_y)
-{
- IV_ASSERT(si != NULL );
-
- if ( si->photocam_show )
- {
- elm_photocam_paused_set(si->photocam, EINA_FALSE); //stop photocam animation
- elm_photocam_zoom_mode_set(si->photocam, ELM_PHOTOCAM_ZOOM_MODE_MANUAL);
- elm_photocam_zoom_set(si->photocam, zoom);
- }
-}
-
-double
-ivug_slider_item_zoom_get(Slide_Item* si)
-{
- IV_ASSERT(si != NULL );
-
- double ret = 1.0;
-
- if ( si->photocam_show )
- {
- ret = elm_photocam_zoom_get(si->photocam);
- }
- return ret;
-}
-
-
-bool
-ivug_slider_item_icon_click_check(Slide_Item *si, int x, int y)
-{
- MSG_SITEM_HIGH("Check icon clicked. SI=0x%08x, XY(%d,%d)", si, x, y);
-
- IV_ASSERT(si != NULL );
-
- Media_Data *mdata = ivug_data_get_data(si->mitem);
-
- if ( mdata == NULL )
- {
- MSG_SITEM_ERROR("Debug Me! Data item is NULL.");
- return false;
- }
-
- if ( mdata->slide_type == SLIDE_TYPE_VIDEO )
- {
- if (si->icon)
- {
- Evas_Coord ix,iy,iw,ih;
-
- evas_object_geometry_get(si->icon, &ix, &iy, &iw, &ih);
-
- bool bInside = !( (x) > (ix + iw) || (x) < (ix)
- || (y) > (iy + iw) || (y) < (iy) );
-
- MSG_SITEM_HIGH("Item XYWH(%d,%d,%d,%d) XY(%d,%d) bInside=%d", ix,iy,iw,ih, x, y, bInside);
-
- return bInside;
- }
- }
-
- MSG_SITEM_HIGH("Slide type = %d", mdata->slide_type);
- return false;
-}
-
-
diff --git a/main/src/view/ivug-slider-item.h b/main/src/view/ivug-slider-item.h
deleted file mode 100755
index 6bbc54d..0000000
--- a/main/src/view/ivug-slider-item.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * 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.
- */
-
-
-#pragma once
-
-#include "ivug-data.h"
-
-typedef enum SLIDE_STATE {
- SLIDE_STATE_NONE = 0x00,
- SLIDE_STATE_READY,
- SLIDE_STATE_LOADING, // Load main image or downloading
- SLIDE_STATE_LOADED, // Image is shown
- SLIDE_STATE_ERROR,
-} slide_state_t;
-
-typedef struct _Slide_Item Slide_Item;
-
-typedef void (*OnSliderStateChanged)(slide_state_t state, Slide_Item *si, void *client_data);
-
-struct _Slide_Item {
- int x, y, w, h; // Object geometry
-//Data
- slide_state_t state; // Currently not used, just for debugging.
- Media_Item *mitem;
-
-//flag
- Eina_Bool photocam_show;
- Eina_Bool thumbnail_show;
-
-// UI
- Evas_Object* layout;
- const Evas_Object* icon; //video icon
- Evas_Object* thumbnail; // thumbnail
- Evas_Object* photocam; //photocam data.
- Evas_Object* progress; //progress bar
-
- unsigned int thumb_w, thumb_h; // thumbnail width height.
-
- unsigned int zoom_level;
-
-// Callback
- OnSliderStateChanged cb;
- void *client_data;
-
-};
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// GUI related
-Slide_Item*
-ivug_slider_item_add(Evas_Object *slider);
-
-void
-ivug_slider_item_del(Slide_Item *si);
-
-void
-ivug_slider_item_hide(Slide_Item *si);
-
-void
-ivug_slider_item_show(Slide_Item *si);
-
-void
-ivug_slider_item_move(Slide_Item *si, int x, int y);
-
-void
-ivug_slider_item_resize(Slide_Item *si, int w, int h);
-
-void
-ivug_slider_item_clip_set(Slide_Item *si, Evas_Object *clipper);
-
-void
-ivug_slider_item_clip_unset(Slide_Item *si);
-
-// Data
-bool
-ivug_slider_item_set_callback(Slide_Item* si, OnSliderStateChanged cb, void *data);
-
-bool
-ivug_slider_item_data_set(Slide_Item *si, Media_Item *item);
-
-bool
-ivug_slider_item_data_loading(Slide_Item *si);
-
-void
-ivug_slider_item_change_mitem_pointer(Slide_Item *si, Media_Item *item); // confused API!!!
-
-void
-ivug_slider_item_data_unset(Slide_Item *si);
-
-slide_state_t
-ivug_slider_item_get_state(Slide_Item *si);
-
-const Media_Item *
-ivug_slider_item_data_get(Slide_Item *si);
-
-// Control
-bool
-ivug_slider_item_region_size_get(Slide_Item *si, int *x, int *y, int *w, int *h);
-
-void
-ivug_slider_item_hold_set(Slide_Item *si, Eina_Bool hold);
-
-void
-ivug_slider_item_zoom_reset(Slide_Item *si, Eina_Bool bAnim, int center_x, int center_y);
-
-void
-ivug_slider_item_zoom_set(Slide_Item *si, double zoom, int center_x, int center_y);
-
-double
-ivug_slider_item_zoom_get(Slide_Item* si);
-
-bool
-ivug_slider_item_icon_click_check(Slide_Item *si, int x, int y);
-
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
diff --git a/main/src/view/ivug-slider-mouse.c b/main/src/view/ivug-slider-mouse.c
deleted file mode 100755
index 2f3f190..0000000
--- a/main/src/view/ivug-slider-mouse.c
+++ /dev/null
@@ -1,439 +0,0 @@
-/*
- * 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 "ivug-common.h"
-#include "ivug-mouse-event.h"
-#include "ivug-anim.h"
-#include "ivug-slider-item.h"
-#include "ivug-slider.h"
-#include "ivug-effect.h"
-
-#include "ivug-slider-priv.h"
-
-#define SIG_CLICKED "slider,clicked"
-#define SIG_LONGPRESSED "slider,longpressed"
-
-#define SHIFT_THRESHOLD (0.0f) // 52%
-
-
-static bool _ivug_slider_check_flick(MouseEvent *down, MouseEvent *up)
-{
-#define FLICK_TIME_MAX (200) //flick time value.
-#define FLICK_WIDTH_MIN (elm_config_finger_size_get() >> 2)
-
- if ( up->event_flags & EVAS_EVENT_FLAG_ON_HOLD )
- {
- MSG_SLIDER_HIGH("On hold detected");
- return false;
- }
-
-// Check pinch zoom right before zoom
- if ( (up->timestamp - down->timestamp) > FLICK_TIME_MAX )
- {
- MSG_SLIDER_HIGH("Not flick opertion. TimeGap=%d", up->timestamp - down->timestamp);
- return false;
- }
-
-// TODO : Consider Y axis flick.
- int delta_x = up->x - down->x;
- int delta_y = up->y - down->y;
-
- if (abs(delta_x) < FLICK_WIDTH_MIN)
- {
- MSG_SLIDER_HIGH("Not flick opertion. Delta X=%d Delta Y=%d", delta_x, delta_y);
- return false;
- }
-
- return true;
-
-}
-
-
-static bool _ivug_slider_check_click(MouseEvent *down, MouseEvent *up)
-{
-#define CLICK_TIME_MIN (7)
-#define CLICK_TIME_MAX (500) /* 500 < long press */
-
-#define CLICK_WIDTH_MAX (elm_config_finger_size_get() >> 2)
-
- if ( down->device != up->device )
- {
- MSG_SLIDER_HIGH("Not click. Device=%d %d", down->device , up->device);
- return false;
- }
-
- if (up->button_flags & EVAS_BUTTON_DOUBLE_CLICK)
- {
- MSG_SLIDER_HIGH("Up.. Double clicked!!");
- return false;
- }
-
- int dTS = (up->timestamp - down->timestamp);
- if ( (dTS < CLICK_TIME_MIN) || (dTS > CLICK_TIME_MAX) )
- {
- MSG_SLIDER_HIGH("Not click. TS=%d", (up->timestamp - down->timestamp));
- return false;
- }
-
- unsigned int dist = get_distance(down->x, down->y, up->x, up->y);
-
- if ( dist < (unsigned int)CLICK_WIDTH_MAX)
- {
- MSG_SLIDER_HIGH("Detect Clicked event. TS=%d, Dist=%d", dTS, dist);
- return true;
- }
-
- MSG_SLIDER_HIGH("Not Click : TS=%dms Dis=%d", dTS, dist);
-
- return false;
-}
-
-static Eina_Bool _long_pressed(void *data)
-{
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data);
-
- if (!sd) return ECORE_CALLBACK_CANCEL;
-
- sd->long_timer = NULL;
-
- Evas_Coord_Point down;
-
- down.x = sd->down.x;
- down.y = sd->down.y;
-
- evas_object_smart_callback_call(data, SIG_LONGPRESSED, &down);
-
- MSG_SLIDER_HIGH("Long pressed!!!!!");
- return ECORE_CALLBACK_CANCEL;
-}
-
-static Eina_Bool _clicked(void *data)
-{
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data);
-
- if (!sd) return ECORE_CALLBACK_CANCEL;
-
- sd->click_timer = NULL;
-
- Evas_Coord_Point down;
-
- down.x = sd->down.x;
- down.y = sd->down.y;
-
- // Check video icon clicked or not/
- Slide_Item *si = sd->slide[CENTER_SLIDE];
-
- if ( ivug_slider_item_icon_click_check(si, down.x, down.y) == true ) // Video icon clicked.
- {
- MSG_SLIDER_HIGH("Video icon clicked!!!!!");
-
- evas_object_smart_callback_call(data, "slider,clicked,icon", &down);
-
- return ECORE_CALLBACK_CANCEL;
- }
-
- if(sd->ss_state == SLIDE_SHOW_RUNNING)/* this click is for stop slide show */
- {
- ivug_slider_stop_slide_show(sd->obj);
- return ECORE_CALLBACK_CANCEL;
- }
-
- evas_object_smart_callback_call(data, SIG_CLICKED, &down); // For change menu visibility
-
- return ECORE_CALLBACK_CANCEL;
-}
-
-
-void _ivug_on_mouse_down(Evas_Object *obj, MouseEvent *down, void *data)
-{
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data);
- Slide_Item* si = sd->slide[CENTER_SLIDE];
-
- MSG_SLIDER_HIGH("%s. down->XY(%d,%d)", __func__, down->x, down->y);
-
-//save down position.
- sd->down = *down;
-
-// End animation
- if(sd->animator)
- {
- ecore_animator_del(sd->animator);
- sd->animator = NULL;
-
- MSG_SLIDER_HIGH("Animation is working. stopping animation. Current SI->XY(%d,%d)", si->x, si->y);
- }
-
- sd->edge = _ivug_slider_edge_state_get(si);
-
- if (down->button_flags & EVAS_BUTTON_DOUBLE_CLICK)
- {
- MSG_SLIDER_HIGH("Double clicked!!");
- }
-
- if (sd->long_timer)
- {
- ecore_timer_del(sd->long_timer);
- sd->long_timer = NULL;
- }
-
- if (sd->click_timer)
- {
- ecore_timer_del(sd->click_timer);
- sd->click_timer = NULL;
- }
-
- if ( sd->ss_state == SLIDE_SHOW_RUNNING)
- {
-// Stop slide show if running. BUG : When user click , menu bar is not visible.
-// Evas_Object *slider = (Evas_Object *)data;
- //ivug_slider_stop_slide_show(slider); // data is Evas_Object
-
- return;
- }
-
- if ( abs(si->x) < IMAGE_MOVE_MARGIN)
- {
- MSG_SLIDER_HIGH("Creating long pressed timer");
- sd->long_timer = ecore_timer_add(elm_config_longpress_timeout_get(), _long_pressed, data);
- }
-}
-
-
-void _ivug_on_mouse_up(Evas_Object *obj, MouseEvent *up, void *data)
-{
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data);
-
- sd->up = *up;
-
- Slide_Item *si = sd->slide[CENTER_SLIDE];
-
- MSG_SLIDER_HIGH("Mouse Up : si->XYWH(%d,%d,%d,%d)", si->x, si->y, si->w, si->h);
-
- if (sd->long_timer)
- {
- ecore_timer_del(sd->long_timer);
- sd->long_timer = NULL;
- }
-
-// Find Scroll Direction
- shift_direction_t dir = SLIDE_SHIFT_NONE;
-
-// TODO How to make simpler below routine???
- if ( _ivug_slider_check_flick(&sd->down, up) == true) // If flick
- {
- int delta_x = up->x - sd->down.x;
-// int delta_y = up->y - sd->down.y;
-
- {
- if ( (sd->edge & SLIDE_RIGHT_EDGE) && (delta_x < 0)) // Mouse : <--
- {
- // <---------
- if ( sd->slide[NEXT_SLIDE]->state != SLIDE_STATE_NONE )
- {
- dir = SLIDE_SHIFT_TO_RIGHT;
- }
- }
- else if ( (sd->edge & SLIDE_LEFT_EDGE) && (delta_x > 0) ) // Mouse : -->
- {
- // ------>
- if ( sd->slide[PREV_SLIDE]->state != SLIDE_STATE_NONE )
- {
- dir = SLIDE_SHIFT_TO_LEFT;
- }
- }
- }
- }
- else
- {
- MSG_SLIDER_HIGH("Si->x=%d", si->x);
-// if ( si->x == 0 ) // If not moving state
-// {
- if ( _ivug_slider_check_click(&sd->down, up) == true )
- {
- sd->click_timer = ecore_timer_add(0.2f, _clicked, data);
- // Clicked event
-// evas_object_smart_callback_call(data, SIG_CLICKED, &sd->down.x);
- }
-
-// }
-
- // Not flick. check up position.
- if ( si->x > sd->w * (SHIFT_THRESHOLD) )
- {
- // Scroll to --->
- if ( sd->slide[PREV_SLIDE]->state != SLIDE_STATE_NONE ) // Check left end
- {
- dir = SLIDE_SHIFT_TO_LEFT;
- }
- }
- else if (si->x + si->w < sd->w * (1.0f - SHIFT_THRESHOLD) )
- {
- // Scroll to <---
- if ( sd->slide[NEXT_SLIDE]->state != SLIDE_STATE_NONE ) // Check left end
- {
- dir = SLIDE_SHIFT_TO_RIGHT;
- }
- }
- }
-
- switch(dir)
- {
- case SLIDE_SHIFT_TO_LEFT:
- MSG_SLIDER_HIGH("Scroll --->");
-
- _ivug_slider_slide_update(sd, sd->slide[CENTER_SLIDE]->x,
- sd->slide[CENTER_SLIDE]->w + IMAGE_BETWEEN_MARGIN);
- if(sd->ss_state == SLIDE_SHOW_RUNNING)
- {
- sd->bSS_SlideFlag = EINA_TRUE;
- ivug_slider_stop_slide_show(sd->obj);
- }
- break;
-
- case SLIDE_SHIFT_TO_RIGHT:
- MSG_SLIDER_HIGH("Scroll <---");
-
- _ivug_slider_slide_update(sd, sd->slide[CENTER_SLIDE]->x,
- -sd->slide[CENTER_SLIDE]->w - IMAGE_BETWEEN_MARGIN);
- if(sd->ss_state == SLIDE_SHOW_RUNNING)
- {
- sd->bSS_SlideFlag = EINA_TRUE;
- ivug_slider_stop_slide_show(sd->obj);
- }
- break;
-
- case SLIDE_SHIFT_NONE:
-
- MSG_SLIDER_HIGH("Scroll to center");
-
- if ( sd->slide[CENTER_SLIDE]->x == 0 )
- {
- MSG_SLIDER_WARN("No need to animation");
- return;
- }
-
- _ivug_slider_slide_update(sd,sd->slide[CENTER_SLIDE]->x , 0);
-
- break;
-
- }
-
-
-
-}
-
-
-void _ivug_on_mouse_move(Evas_Object *obj, MouseEvent *prev, MouseEvent *cur, void *data)
-{
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(data);
- Slide_Item* si = sd->slide[CENTER_SLIDE];
-
- if (sd->long_timer)
- {
- Evas_Coord dx, dy;
- dx = sd->down.x - cur->x;
- dx *= dx;
- dy =sd->down.y - cur->y;
- dy *= dy;
-
- if ((dx + dy) > LONG_PRESS_MARGIN * LONG_PRESS_MARGIN)
- {
- MSG_SLIDER_HIGH("%s delete long timer. Move:%d Margin:%d", __func__, (dx + dy), LONG_PRESS_MARGIN * LONG_PRESS_MARGIN );
- ecore_timer_del(sd->long_timer); //delete long press.
- sd->long_timer = NULL;
- }
- }
-// MSG_SLIDER_HIGH("%s. XY(%d,%d)", __func__, cur->x, cur->y);
-// TODO : check slide move threshhold
- if ( sd->edge == SLIDE_NO_EDGE )
- {
- MSG_SLIDER_MED("Photocam handle this event");
- return;
- }
-
- int dst_x, dst_y;
-
- dst_x = si->x + (cur->x - prev->x);
- dst_y = si->y + (cur->y - prev->y);
-
- MSG_SLIDER_MED("%s. Edge=%d Cur XY(%d,%d) Prev XY(%d,%d) SI->XY(%d,%d) Dest(%d,%d)", __func__,sd->edge,
- cur->x, cur->y, prev->x, prev->y, si->x, si->y, dst_x, dst_y);
-
-// If left-most or right-most image, do not scroll.
- if ( ivug_slider_item_data_get(sd->slide[NEXT_SLIDE]) == NULL ) // Is left-most image?
- {
- MSG_SLIDER_MED("Next item is NULL. dst_x=%d", dst_x);
-
- if ( dst_x < 0 )
- {
- MSG_SLIDER_MED("No allowed scroll to right");
- _ivug_slider_pass_event_to_item(sd, EINA_FALSE);
- return;
- }
- }
-
- if ( ivug_slider_item_data_get(sd->slide[PREV_SLIDE]) == NULL ) // Is right-most image?
- {
- MSG_SLIDER_MED("Prev item is NULL. dst_x=%d", dst_x);
- if ( dst_x > 0 )
- {
- MSG_SLIDER_MED("No allowed scroll to left");
- _ivug_slider_pass_event_to_item(sd, EINA_FALSE);
- return;
- }
- }
- if ( (sd->edge & SLIDE_LEFT_EDGE) && (dst_x > IMAGE_SCROLL_MARGIN))
- {
- MSG_SLIDER_MED("Case 1. edge=%d, X=%d", sd->edge, dst_x);
-
- _ivug_slider_pass_event_to_item(sd, EINA_FALSE);
-
- _ivug_slider_slide_update_pos(sd, dst_x , si->y); //update
- _ivug_slider_slide_update_shift(sd);
-
- return;
- }
-
- if ( (sd->edge & SLIDE_RIGHT_EDGE) && (dst_x < -IMAGE_SCROLL_MARGIN))
- {
- MSG_SLIDER_MED("Case 2. edge=%d, X=%d", sd->edge, dst_x);
- _ivug_slider_pass_event_to_item(sd, EINA_FALSE);
-
- _ivug_slider_slide_update_pos(sd, dst_x , si->y); //update
- _ivug_slider_slide_update_shift(sd);
-
- return;
- }
-
- if ( (sd->edge & SLIDE_FIT) != SLIDE_FIT)
- {
- MSG_SLIDER_MED("Case 3. edge=%d", sd->edge);
- _ivug_slider_pass_event_to_item(sd, EINA_TRUE); // Send event to phtocam
- sd->edge = SLIDE_NO_EDGE;
- }
-
- if (dst_x >= -IMAGE_SCROLL_MARGIN && dst_x <= IMAGE_SCROLL_MARGIN)
- {
- MSG_SLIDER_MED("Case 4. It isn't over IMAGE_SCROLL_MARGIN");
- return ;
- }
-
- MSG_SLIDER_ERROR("Debug Me NEw edge=%d delta_x=%d si->x=%d", sd->edge, dst_x, si->x);
- return;
-
-}
-
diff --git a/main/src/view/ivug-slider-priv.h b/main/src/view/ivug-slider-priv.h
deleted file mode 100755
index 2bc2f3d..0000000
--- a/main/src/view/ivug-slider-priv.h
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * 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 "ivug-data.h"
-
-#ifndef __IVUG_SLIDER_PRIV_H__
-#define __IVUG_SLIDER_PRIV_H__
-
-/* elm_config_finger_size_get = 40 */
-#define IMAGE_BETWEEN_MARGIN (30) // The value is width between photocam(unit is pixel).
-#define IMAGE_MOVE_MARGIN ((int)IMAGE_BETWEEN_MARGIN*0.8)
-/* If moved width is larger than IMAGE_SCROLL_MARGIN, image is scrolled */
-#define IMAGE_SCROLL_MARGIN (5) /* vertical move doen't over 5 pixel width */
-#define LONG_PRESS_MARGIN ((int)(elm_config_finger_size_get() / 3))
-
-typedef enum {
- SLIDE_NO_EDGE = (1<<0),
-
- SLIDE_LEFT_EDGE = (1<<1),
- SLIDE_RIGHT_EDGE = (1<<2),
-
- SLIDE_TOP_EDGE = (1<<3),
- SLIDE_BOTTOM_EDGE = (1<<4),
-
- SLIDE_FIT = SLIDE_LEFT_EDGE | SLIDE_RIGHT_EDGE | SLIDE_TOP_EDGE | SLIDE_BOTTOM_EDGE,
-} slide_edge_t;
-
-typedef enum {
- SLIDE_SHIFT_NONE = 0x00,
- SLIDE_SHIFT_TO_RIGHT, // <---------------------Mouse
- SLIDE_SHIFT_TO_LEFT, // Mouse--------------------->
-} shift_direction_t;
-
-
-//ENUM
-typedef enum {
- CENTER_SLIDE,
- NEXT_SLIDE,
- PREV_SLIDE,
- MAX_SLIDE,
-} slide_index_t;
-
-// slider
-typedef struct Smart_Data
-{
- Evas_Object *obj; // smart object itself.
-
- Evas_Object *event_obj; // Event receiver layer
-
- Evas_Coord x, y, w, h; // Geometry of slider
-
-//silde
- Slide_Item* slide[MAX_SLIDE];
-// Media_Item* mitem[MAX_SLIDE];
-
-//data list
- Eina_Bool bShow;
-
- Media_List* media_list; // Storing entire media list.
- Media_Item* current; // Current medit item. Is it needed??
-
- int cur_list_idx;
- int next_list_idx; /* for slide show */
- int list_total_count;
-
-//Mouse Event
- MouseEvent down;
- MouseEvent up;
-
-// for flick anim
- anim_handle_t *anim;
- Ecore_Animator *animator;
- double t_base;
-
-//slider show.
- slideshow_state_t ss_state;
-
- Ecore_Timer *ss_timer; //slide show timer
- ivug_slider_slide_show_finish_cb ss_func; // Callback for slide show finished
- void* ss_user_data;
- Eina_Bool bSS_StopFlag; /* request slide show stop flag */
- Eina_Bool bSS_SlideFlag; /* it was slided by user during slide show */
-
-//Mouse event handler
- Ivug_Event_Handle mouse_event;
-
- slide_edge_t edge;
-
-// For detecting long pressed
- Ecore_Timer *long_timer;
-
-// For detecting click
- Ecore_Timer *click_timer;
-
-/* For window loading */
- Ecore_Idler* idler_list;
-
-/* slide show setting */
- double ss_interval_time;
- slide_show_mode ss_mode;
-
-/* slide show effect*/
- Effect_Type effect_type;
- Effect_Engine* effect_engine;
-
- Ecore_Idler *load_idler;
-} _Smart_Data;
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-// Common function between slide show and slider.
-
-#define _ivug_slider_edge_state_get(si) __ivug_slider_edge_state_get(si, __func__, __LINE__)
-
-slide_edge_t __ivug_slider_edge_state_get(Slide_Item *si, const char *func, int line);
-
-void _ivug_slider_slide_update_shift_right(struct Smart_Data *sd);
-
-void _ivug_slider_slide_update_pos(struct Smart_Data *sd, Evas_Coord x, Evas_Coord y);
-
-void _ivug_slider_restore_window_list(struct Smart_Data *sd);
-
-
-// Common function between slide and slide mouse.
-
-void _ivug_slider_slide_update(struct Smart_Data *sd, int x, int y);
-
-void _ivug_slider_pass_event_to_item(struct Smart_Data *sd, Eina_Bool bPass);
-
-void _ivug_slider_slide_update_shift(struct Smart_Data *sd);
-
-
-void _ivug_on_mouse_down(Evas_Object *obj, MouseEvent *down, void *data);
-
-void _ivug_on_mouse_up(Evas_Object *obj, MouseEvent *up, void *data);
-
-void _ivug_on_mouse_move(Evas_Object *obj, MouseEvent *prev, MouseEvent *cur, void *data);
-
-#ifdef __cplusplus
-}
-#endif
-
-
-
-#endif // __IVUG_SLIDER_PRIV_H__
-
diff --git a/main/src/view/ivug-slider-slideshow.c b/main/src/view/ivug-slider-slideshow.c
deleted file mode 100755
index 3e2e7bb..0000000
--- a/main/src/view/ivug-slider-slideshow.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * 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 "ivug-common.h"
-#include "ivug-main.h"
-
-#include "ivug-slider.h"
-#include "ivug-mouse-event.h"
-#include "ivug-slider-item.h"
-#include "ivug-anim.h"
-#include "ivug-effect.h"
-#include "ivug-slider-priv.h"
-#include "ivug-data.h"
-#include "ivug-data-shuffle.h"
-
-
-static const char *_get_ss_state(slideshow_state_t state)
-{
- const char *szMsg[] = {"Stopped", "Running", "Paused" };
-
- return szMsg[state];
-}
-
-
-void _ivug_slider_effect_finished(void *data)
-{
- struct Smart_Data* sd = (struct Smart_Data*) data;
- ivug_ret_if(!sd);
-
- MSG_SLIDER_HIGH("Slide Effect ended");
-
- if(sd->effect_engine)
- {
- ivug_effect_finalize(sd->effect_engine);
- sd->effect_engine = NULL;
- }
-
- if (sd->slide[NEXT_SLIDE]->mitem && sd->bSS_SlideFlag == EINA_FALSE)
- {
- _ivug_slider_slide_update_shift_right(sd);
- }
-
- // Update edge state
- sd->edge = _ivug_slider_edge_state_get(sd->slide[CENTER_SLIDE]);
-
- if(sd->bSS_StopFlag == EINA_TRUE)
- {
- sd->ss_state = SLIDE_SHOW_STOPPED;
- MSG_SLIDER_HIGH("effect_engine is finished");
- evas_object_smart_callback_call(sd->obj, "slider,slideshow,interrupted", (void *)sd->slide[CENTER_SLIDE]);
- ivug_slider_restore_window_list(sd->obj);
- sd->bSS_StopFlag = EINA_FALSE;
- }
-}
-
-
-// Slide Show related functions.
-static Eina_Bool
-_ivug_slider_slide_show_cb(void *data)
-{
- IV_ASSERT(data != NULL);
-
- struct Smart_Data* sd = (struct Smart_Data*) data;
-
- if(sd->ss_state == SLIDE_SHOW_STOPPED) /* stopped by other operation */
- {
- sd->ss_timer = NULL;
- return ECORE_CALLBACK_CANCEL;
- }
-
- Media_Item *item = NULL;
-
- if(sd->ss_mode & SLIDE_SHOW_MODE_SHUFFLE)
- {
- item = ivug_data_get_next_shuffle_item(sd->media_list);
- }
- else // shuffle slideshow is off
- {
- item = ivug_data_get_next(sd->slide[CENTER_SLIDE]->mitem);
- }
-
- //calc slide show
- if ( item != NULL || (sd->ss_mode & SLIDE_SHOW_MODE_REPEAT)) /* repeat is endless */
- {
- MSG_SLIDER_HIGH("ivug_effect_add Effect=%d", sd->effect_type);
-
- Effect_Engine *eng = ivug_effect_add(sd->effect_type);
-
- if(eng == NULL)
- {
- MSG_SLIDER_ERROR("Cannot create effect NULL");
- return ECORE_CALLBACK_CANCEL;
- }
-
- sd->effect_engine = eng;
- ivug_effect_init(sd->effect_engine, sd->slide[CENTER_SLIDE]->layout, sd->slide[NEXT_SLIDE]->layout, sd->w, sd->h, 0);
-
- ivug_effect_start(sd->effect_engine, _ivug_slider_effect_finished, sd);
-
- return ECORE_CALLBACK_RENEW;
- }
- else
- {
- MSG_SLIDER_HIGH("Reached end of images. Stop slide show");
-
- sd->ss_timer = NULL;
- evas_object_smart_callback_call(sd->obj, "slider,slideshow,finished", (void *)sd->slide[CENTER_SLIDE]);
- return ECORE_CALLBACK_CANCEL;
- }
-
-}
-
-
-static Eina_Bool
-_ivug_slider_slide_finish_cb(void *data)
-{
- IV_ASSERT(data != NULL);
-
- struct Smart_Data* sd = (struct Smart_Data*) data;
-
- sd->ss_timer = NULL;
-
- evas_object_smart_callback_call(sd->obj, "slider,slideshow,finished", (void *)sd->slide[CENTER_SLIDE]);
-
- return ECORE_CALLBACK_CANCEL;
-}
-
-
-static Effect_Type
-ivug_slider_get_trans_effect(ivug_effect_type type)
-{
- MSG_SLIDER_MED("type %d", type);
-
- switch(type)
- {
- case IVUG_EFFECT_TYPE_SLIDE:
- return EFFECT_SLIDE;
- break;
-
- default:
- break;
- }
-
- return EFFECT_NONE;
-}
-
-
-void
-ivug_slider_start_slide_show(Evas_Object* obj, Eina_Bool bSlideFirst)
-{
- IV_ASSERT(obj != NULL);
-
- struct Smart_Data *sd = (struct Smart_Data *)evas_object_smart_data_get(obj);
- IV_ASSERT(sd != NULL);
-
- ivug_effect_type ivug_effect = IVUG_EFFECT_TYPE_SLIDE;
-
- ivug_config_get_slideshow_setting(&(sd->ss_mode), &(sd->ss_interval_time), &ivug_effect);
-
- MSG_SLIDER_HIGH("Start slide show. Interval=%f Effect=%d", sd->ss_interval_time, ivug_effect);
-
- if(sd->ss_interval_time < 0)
- {
- MSG_SLIDER_HIGH("slide show interval time is invalid !!!");
- ivug_slider_stop_slide_show(obj);
- return ;
- }
-
-// sd->ss_interval_time = 6.0f; // Test
-
- if ( sd->ss_state == SLIDE_SHOW_RUNNING )
- {
- MSG_SLIDER_WARN("Slide show is running. remove previous one.");
- ivug_slider_stop_slide_show(obj);
- }
-
- if ( sd->effect_engine != NULL )
- {
- MSG_SLIDER_FATAL("Debug Me!!!");
- return ;
- }
-
- sd->bSS_SlideFlag = EINA_FALSE;
- sd->bSS_StopFlag = EINA_FALSE;
-
- sd->effect_type = ivug_slider_get_trans_effect(ivug_effect);
-
- ivug_data_set_window_size(sd->media_list, IV_WINDOW_SIZE_FOR_SLIDE_SHOW);
-
- ///////////////////////////////////////////////////////
- if(sd->ss_mode & SLIDE_SHOW_MODE_SHUFFLE)
- {
- {
- ivug_data_init_shuffle_slide_show(sd->media_list, sd->ss_mode, sd->cur_list_idx, sd->list_total_count);
- }
- }
-
- ivug_slider_item_data_unset(sd->slide[NEXT_SLIDE]);
-// TODO : parameter of ivug_data_get_current_slide_show_item() is too complex!!!!
- Media_Item *item = ivug_data_get_current_slide_show_item(sd->media_list, sd->ss_mode, sd->cur_list_idx, &(sd->next_list_idx), sd->list_total_count);
-
- if(item == NULL)
- {
- MSG_SLIDER_ERROR("Item is NULL. CurIndex=%d", sd->cur_list_idx);
-
- ivug_data_set_window_size(sd->media_list, IV_WINDOW_SIZE);
- if(sd->ss_timer) {
- ecore_timer_del(sd->ss_timer);
- sd->ss_timer = NULL;
- }
- sd->ss_timer = ecore_timer_add(sd->ss_interval_time, _ivug_slider_slide_finish_cb, sd);
- return;
- }
-
- ivug_data_append_media_item(sd->media_list, item);
- ivug_slider_item_data_set(sd->slide[NEXT_SLIDE], item); //set iterator
- ivug_slider_item_data_loading(sd->slide[NEXT_SLIDE]);
-
- /* set sd->slide[NEXT_SLIDE] 's next item*/
- ivug_data_set_next_slide_show_item(sd->media_list, sd->ss_mode, &(sd->next_list_idx), sd->list_total_count);
-
- sd->ss_state = SLIDE_SHOW_RUNNING;
- if(bSlideFirst == EINA_TRUE)
- {
- if ( _ivug_slider_slide_show_cb(sd) == ECORE_CALLBACK_CANCEL )
- {
- MSG_SLIDER_WARN("Slide ended????");
- ivug_data_set_window_size(sd->media_list, IV_WINDOW_SIZE);
- return;
- }
- }
- if(sd->ss_timer) {
- ecore_timer_del(sd->ss_timer);
- sd->ss_timer = NULL;
- }
- sd->ss_timer = ecore_timer_add(sd->ss_interval_time, _ivug_slider_slide_show_cb, sd);
-
- MSG_SLIDER_HIGH("Slide show started!");
-
-// if it is last slide, need hide menu bar
-}
-
-void
-ivug_slider_pause_slide_show(Evas_Object* obj)
-{
- IV_ASSERT(obj != NULL);
-
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
- IV_ASSERT(sd != NULL);
-
- MSG_SLIDER_HIGH("Pause slide show. state=%s", _get_ss_state(sd->ss_state));
-
- if(sd->ss_timer)
- {
- ecore_timer_freeze(sd->ss_timer);
- }
-
- sd->ss_state = SLIDE_SHOW_PAUSE;
-}
-
-void
-ivug_slider_resume_slide_show(Evas_Object* obj)
-{
- IV_ASSERT(obj != NULL);
-
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
- IV_ASSERT(sd != NULL);
-
- MSG_SLIDER_HIGH("Resume slide show. state=%s", _get_ss_state(sd->ss_state));
-
- if(sd->ss_timer)
- {
- ecore_timer_thaw(sd->ss_timer);
- }
-
- sd->ss_state = SLIDE_SHOW_RUNNING; // TODO : Buggy
-}
-
-void
-ivug_slider_stop_slide_show(Evas_Object* obj)
-{
- IV_ASSERT(obj != NULL);
-
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
- IV_ASSERT(sd != NULL);
-
- if ( sd->ss_state != SLIDE_SHOW_RUNNING )
- {
- MSG_SLIDER_WARN("Stop slide show. but not run state. state=%s", _get_ss_state(sd->ss_state) );
- return;
- }
-
- MSG_SLIDER_HIGH("Stop slide show. XY(%d,%d)", sd->x, sd->y);
- sd->bSS_StopFlag = EINA_TRUE;
-
- //delete timmer
- if(sd->ss_timer) {
- ecore_timer_del(sd->ss_timer);
- sd->ss_timer = NULL;
- }
-
- if(sd->ss_mode & SLIDE_SHOW_MODE_SHUFFLE)
- {
- ivug_data_deinit_shuffle_slide_show(sd->media_list,
- sd->list_total_count);
- }
-
- ivug_data_set_window_size(sd->media_list, IV_WINDOW_SIZE);
-
- if(sd->effect_engine == NULL)
- {
- sd->ss_state = SLIDE_SHOW_STOPPED;
- MSG_SLIDER_HIGH("effect_engine is NULL");
- evas_object_smart_callback_call(sd->obj, "slider,slideshow,interrupted", (void *)sd->slide[CENTER_SLIDE]);
- ivug_slider_restore_window_list(sd->obj);
- sd->bSS_StopFlag = EINA_FALSE;
- }
-}
-
-
diff --git a/main/src/view/ivug-slider.c b/main/src/view/ivug-slider.c
deleted file mode 100755
index fe5645b..0000000
--- a/main/src/view/ivug-slider.c
+++ /dev/null
@@ -1,1245 +0,0 @@
-/*
- * 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 <ui-gadget-module.h> // ug_destroy_me, ug_send_result
-
-#include "ivug-slider.h"
-#include "ivug-common.h"
-#include "ivug-main.h"
-
-#include "ivug-parameter.h"
-#include "ivug-define.h"
-#include "ivug-effect.h"
-#include "ivug-config.h"
-
-#include "ivug-util.h"
-#include "ivug-data.h"
-#include "ivug-data-shuffle.h"
-
-#include "ivug-mouse-event.h"
-#include "ivug-slider-item.h"
-#include "ivug-anim.h"
-#include "ivug-slider-priv.h"
-
-#undef LOG_TAG
-#define LOG_TAG "IV-SLIDER"
-
-#define DEFFERED_LOADING
-
-#define ANI_TIME_FLICK (0.2f)
-
-static Eina_Bool _ivug_slider_on_animation(void *data);
-
-//smart object
-static void
-_ivug_slider_smart_init(void);
-static void
-_ivug_slider_smart_add(Evas_Object *obj);
-static void
-_ivug_slider_smart_del(Evas_Object *obj);
-static void
-_ivug_slider_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
-static void
-_ivug_slider_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
-static void
-_ivug_slider_smart_show(Evas_Object *obj);
-static void
-_ivug_slider_smart_hide(Evas_Object *obj);
-static void
-_ivug_slider_smart_color_set(Evas_Object *obj, int r, int g, int b, int a);
-static void
-_ivug_slider_smart_clip_set(Evas_Object *obj, Evas_Object * clip);
-static void
-_ivug_slider_smart_clip_unset(Evas_Object *obj);
-
-/* local subsystem globals */
-static Evas_Smart *_smart_ = NULL;
-
-// Smart Object
-static void
-_ivug_slider_smart_init(void)
-{
- if (_smart_) return;
- {
- const char* name = eina_stringshare_add("ivug-slider");
- MSG_SLIDER_MED("name=%s", name);
- static Evas_Smart_Class sc =
- {
- NULL,
- EVAS_SMART_CLASS_VERSION,
- _ivug_slider_smart_add,
- _ivug_slider_smart_del,
- _ivug_slider_smart_move,
- _ivug_slider_smart_resize,
- _ivug_slider_smart_show,
- _ivug_slider_smart_hide,
- _ivug_slider_smart_color_set,
- _ivug_slider_smart_clip_set,
- _ivug_slider_smart_clip_unset,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
- }; //Evas_smart_Class
- sc.name = name;
- _smart_ = evas_smart_class_new(&sc);
- }
-}
-
-
-void
-_ivug_slider_pass_event_to_item(struct Smart_Data *sd, Eina_Bool bPass)
-{
- int i = 0;
-
- if ( bPass == EINA_TRUE)
- {
- MSG_SLIDER_HIGH("Photocam can get Event");
-// Later, will enable below code.
-// evas_object_repeat_events_set(sd->event_obj, EINA_TRUE );
- }
- else
- {
- MSG_SLIDER_MED("Photocam can not get Event");
-// evas_object_repeat_events_set(sd->event_obj, EINA_FALSE );
- }
-
- for (i = 0; i < MAX_SLIDE; i++)
- {
- ivug_slider_item_hold_set(sd->slide[i], !bPass);
- }
-}
-
-
-#define _ivug_slider_edge_state_get(si) __ivug_slider_edge_state_get(si, __func__, __LINE__)
-
-slide_edge_t __ivug_slider_edge_state_get(Slide_Item *si, const char *func, int line)
-{
- int nx, ny, nw, nh;
-
- slide_edge_t result = SLIDE_NO_EDGE;
-
- if ( ivug_slider_item_region_size_get(si, &nx, &ny, &nw, &nh) == false)
- {
- // false means video file item. in this case, no photocam exists.
- MSG_SLIDER_HIGH("[%20s:%4d] Slide fit. Thumbnail only", func, line);
- result = SLIDE_FIT;
- }
- else
- {
- if ( nw <= (si->w + IMAGE_SCROLL_MARGIN) && (nh <= si->h + IMAGE_SCROLL_MARGIN))
- {
- MSG_SLIDER_HIGH("[%20s:%4d] Slide fit", func, line);
- result = SLIDE_FIT;
- }
- else
- {
- MSG_SLIDER_HIGH("No edge!!");
- return SLIDE_NO_EDGE;
- }
- }
-
- if ( result == SLIDE_NO_EDGE )
- {
- MSG_SLIDER_HIGH("[%20s:%4d] image over screen. %d", func, line, result);
- }
-
- return result;
-}
-
-static Eina_Bool _idler_loading_func(void* data)
-{
- struct Smart_Data *sd = data;
-
- int i;
- sd->load_idler = NULL;
-
- if ( sd->slide[CENTER_SLIDE]->state == SLIDE_STATE_READY ) // Center image must be loaded even while other image is loading.
- {
- ivug_slider_item_data_loading(sd->slide[CENTER_SLIDE]);
- goto end;
- }
-
- for ( i = 0; i < MAX_SLIDE ; i++)
- {
- if ( sd->slide[i]->state == SLIDE_STATE_LOADING )
- {
- goto end;
- }
- }
-
- if ( sd->slide[NEXT_SLIDE]->state == SLIDE_STATE_READY )
- {
- ivug_slider_item_data_loading(sd->slide[NEXT_SLIDE]);
- goto end;
- }
-
- if ( sd->slide[PREV_SLIDE]->state == SLIDE_STATE_READY )
- {
- ivug_slider_item_data_loading(sd->slide[PREV_SLIDE]);
- goto end;
- }
-
- MSG_SLIDER_WARN("Set Data loading State=%d,%d,%d",
- sd->slide[PREV_SLIDE]->state,
- sd->slide[CENTER_SLIDE]->state,
- sd->slide[NEXT_SLIDE]->state
- );
-
-
-end:
- return ECORE_CALLBACK_CANCEL;
-
-}
-
-
-static Eina_Bool
-_ivug_slider_set_window_loading_idler(void* data)
-{
- ivug_retv_if(!data, ECORE_CALLBACK_CANCEL);
-
- struct Smart_Data *sd = (struct Smart_Data *)data;
- ivug_retv_if(!sd, ECORE_CALLBACK_CANCEL);
-
- Load_State status = IVUG_SLIDER_LOADED_NONE;
-
- if(sd->ss_state != SLIDE_SHOW_RUNNING)
- {
- status = ivug_data_set_window_loading(sd->media_list, sd->cur_list_idx, sd->list_total_count);
- switch(status)
- {
- case IVUG_SLIDER_LOADED_RIGHT:
- if(sd->slide[NEXT_SLIDE]->mitem == NULL)
- {
- Media_Item *item = ivug_data_get_next(sd->slide[CENTER_SLIDE]->mitem);
- if(item != NULL) /* loaded but not set yet */
- {
- MSG_SLIDER_HIGH("SET NEXT!!!!!!!!!!");
- ivug_slider_item_data_set(sd->slide[NEXT_SLIDE], item); //set data.
-#ifdef DEFFERED_LOADING
- if ( sd->load_idler == NULL )
- {
- sd->load_idler = ecore_idler_add(_idler_loading_func, sd);
- }
-#else
- ivug_slider_item_data_loading(sd->slide[NEXT_SLIDE]); //set data.
-#endif
-
- }
- }
- break;
- case IVUG_SLIDER_LOADED_LEFT:
- if(sd->slide[PREV_SLIDE]->mitem == NULL)
- {
- Media_Item *item = ivug_data_get_prev(sd->slide[CENTER_SLIDE]->mitem);
- if(item != NULL) /* loaded but not set yet */
- {
- MSG_SLIDER_HIGH("SET PREV!!!!!!!!!!");
- ivug_slider_item_data_set(sd->slide[PREV_SLIDE], item); //set data.
-#ifdef DEFFERED_LOADING
- if ( sd->load_idler == NULL )
- {
- sd->load_idler = ecore_idler_add(_idler_loading_func, sd);
- }
-#else
- ivug_slider_item_data_loading(sd->slide[PREV_SLIDE]); //set data.
-#endif
-
- }
- }
- break;
- default :
- MSG_SLIDER_WARN("Unhandled state : %d", status);
- break;
- }
- }
- else
- {
- MSG_SLIDER_HIGH("SLIDE_SHOW_RUNNING!!!!!!!!!!");
- ivug_data_set_next_slide_show_item(sd->media_list, sd->ss_mode, &(sd->next_list_idx), sd->list_total_count);
- }
-
- if (sd->idler_list)
- {
- ecore_idler_del(sd->idler_list);
- sd->idler_list = NULL;
- }
-
- return ECORE_CALLBACK_CANCEL;
-}
-
-void _ivug_slider_item_changed(slide_state_t state, Slide_Item *si, void *client_data)
-{
- struct Smart_Data *sd = client_data;
- IV_ASSERT(sd != NULL);
-
- if ( state == SLIDE_STATE_LOADED )
- {
- if ( sd->slide[CENTER_SLIDE] == si )
- {
- MSG_SLIDER_HIGH("Call Item state changed callback State=%d Si->State=%d", state, si->state);
- evas_object_smart_callback_call(sd->obj, "slider,item,state,changed", si);
- }
- }
- else if (state == SLIDE_STATE_ERROR)
- {
- if ( sd->slide[CENTER_SLIDE] == si )
- {
- MSG_SLIDER_ERROR("Decoding failed");
- evas_object_smart_callback_call(sd->obj, "slider,item,state,changed", si);
- }
- }
- else
- {
- MSG_SLIDER_ERROR("Unknown state : %d", state);
- if ( sd->slide[CENTER_SLIDE] == si )
- {
- MSG_SLIDER_ERROR("Unknown state");
- evas_object_smart_callback_call(sd->obj, "slider,item,state,changed", si);
- }
- }
-
- if ( sd->load_idler == NULL )
- {
- MSG_SLIDER_HIGH("Add idler for loading.");
- sd->load_idler = ecore_idler_add(_idler_loading_func, sd);
- }
-
-}
-
-void ivug_slider_restore_window_list(Evas_Object *obj)
-{
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
-
- MSG_SDATA_HIGH("******* restore slide show index %d", sd->cur_list_idx);
-
- Media_Item *item = NULL;
- Eina_List *new_list = NULL;
- int start_index = sd->cur_list_idx;
- int list_total_count = sd->list_total_count;
-
- Media_Data *mdata = ivug_data_get_data(sd->slide[CENTER_SLIDE]->mitem);
- if(mdata == NULL)
- {
- MSG_SLIDER_ERROR("mdata is NULL");
- return;
- }
-
- char *path = mdata->filepath;
- if(path == NULL)
- {
- path = mdata->fileurl;
- }
- ivug_data_reset_window_load_count(sd->media_list); /* TODO : it is temp */
- item = ivug_data_create_media_list_from_param
- (sd->media_list, &new_list, path, &start_index, &list_total_count); //get list by file path.
- if(item == NULL)
- {
- MSG_SLIDER_ERROR("create media list failed");
- ug_destroy_me(gGetUGHandle());
- return;
- }
-
- if (!ivug_slider_set_slide_list(sd->obj, sd->media_list, new_list, item, start_index, list_total_count))
- {
- MSG_SLIDER_ERROR("slide list set Error");
- ug_destroy_me(gGetUGHandle());
- return ;
- }
-}
-
-
-static void
-_ivug_slider_smart_add(Evas_Object *obj)
-{
- MSG_SLIDER_HIGH("Slider Add : 0x%08x", obj);
-
- PERF_CHECK_BEGIN(LVL4 "add slider item");
-
- struct Smart_Data *sd = calloc(1, sizeof(struct Smart_Data));
- ivug_ret_if(!sd);
-
- sd->obj = obj;
- evas_object_smart_data_set(obj, sd);
- int idx = 0;
-
-//create slider item.
- for (idx = 0; idx < MAX_SLIDE; idx++)
- {
- sd->slide[idx] = ivug_slider_item_add(obj);
- ivug_slider_item_set_callback(sd->slide[idx], _ivug_slider_item_changed, sd);
- }
-
- PERF_CHECK_END(LVL4 "add slider item");
-
- PERF_CHECK_BEGIN(LVL4 "remants");
-
- sd->event_obj = evas_object_rectangle_add(evas_object_evas_get(obj));
- evas_object_color_set(sd->event_obj , 0, 0, 0, 0); // Fully Transparent object.
- evas_object_size_hint_align_set(sd->event_obj, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(sd->event_obj, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- evas_object_show(sd->event_obj);
-
- evas_object_smart_member_add(sd->event_obj, obj);
- evas_object_repeat_events_set(sd->event_obj, EINA_TRUE); // mouse event should pass to phocam
-
- mouse_callback_t cb = {0,};
-
- cb.onMouseDown = _ivug_on_mouse_down;
- cb.onMouseUp = _ivug_on_mouse_up;
-
- cb.onMouseMove = _ivug_on_mouse_move;
-
- sd->mouse_event = ivug_mouse_event_add(sd->event_obj, &cb, obj, "SLIDER");
- sd->edge = SLIDE_FIT;
-
- sd->idler_list = NULL;
-
- sd->anim = create_animation();
- set_animation_type(sd->anim,ANIM_TYPE_QUARTIC_INOUT);
-
- PERF_CHECK_END(LVL4 "remants");
- return;
-
-}
-
-static void
-_ivug_slider_smart_del(Evas_Object *obj)
-{
- MSG_SLIDER_HIGH("Slider delete");
-
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
- ivug_ret_if(!sd);
-
- if(sd->click_timer)
- {
- ecore_timer_del(sd->click_timer);
- sd->click_timer = NULL;
- }
-
- if ( sd->load_idler )
- {
- ecore_idler_del(sd->load_idler);
- sd->load_idler = NULL;
- }
-
- if(sd->animator)
- {
- ecore_animator_del(sd->animator);
- sd->animator = NULL;
- }
-
- if ( sd->anim )
- {
- delete_animation(sd->anim);
- sd->anim = NULL;
- }
- if (sd->long_timer)
- {
- ecore_timer_del(sd->long_timer);
- sd->long_timer = NULL;
- }
-
- if(sd->ss_timer)
- {
- ecore_timer_del(sd->ss_timer);
- sd->ss_timer = NULL;
- }
-
- if (sd->idler_list)
- {
- ecore_idler_del(sd->idler_list);
- sd->idler_list = NULL;
- }
-
- if ( sd->event_obj )
- {
- ivug_mouse_event_del(sd->mouse_event);
-
- evas_object_del(sd->event_obj);
- sd->event_obj = NULL;
- }
-
- int i=0;
- for (i = 0; i < MAX_SLIDE ; i++) //delete layout
- {
- ivug_slider_item_del(sd->slide[i]);
- sd->slide[i] = NULL;
- }
-
- if (sd->media_list)
- {
- ivug_data_delete_media_list(sd->media_list);
- }
-
- free(sd);
-
- IVUG_FUNC_LEAVE();
-}
-
-
-static void
-_ivug_slider_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
-{
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
- ivug_ret_if(!sd);
-
- if ((sd->x == x) && (sd->y == y)) return;
-
- MSG_SLIDER_MED("Slider Move : XY(%d,%d)", x, y);
-
- sd->x = x;
- sd->y = y;
- _ivug_slider_slide_update_pos(sd, x, y);
-
- evas_object_move(sd->event_obj, sd->x, sd->y);
-}
-
-static void
-_ivug_slider_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
-{
- MSG_SLIDER_HIGH("Slider Resize : WH(%d,%d)", w,h);
-
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
- ivug_ret_if(!sd);
-
- if ((sd->w == w) && (sd->h == h)) return;
-
- sd->w = w;
- sd->h = h;
-
- if ( sd->animator != NULL )
- {
- // Remove animation during rotation
- ecore_animator_del(sd->animator);
- sd->animator = NULL;
- }
-
- //resize layout
- int i = 0;
- for (i = 0; i < MAX_SLIDE; i++)
- { //set resize
- ivug_slider_item_resize(sd->slide[i], w, h);
- }
-
-// Redraw items.
- ivug_slider_item_move(sd->slide[CENTER_SLIDE], 0, 0);
-
-// TODO : so as to increas perf, dont draw slide under certain condition
- ivug_slider_item_move(sd->slide[PREV_SLIDE], - sd->slide[PREV_SLIDE]->w - IMAGE_BETWEEN_MARGIN ,0);
-
- int right_x;
-
- if ( sd->w < sd->slide[CENTER_SLIDE]->w )
- {
- right_x = sd->w + IMAGE_BETWEEN_MARGIN;
- }
- else
- {
- right_x = sd->slide[CENTER_SLIDE]->w + IMAGE_BETWEEN_MARGIN;
- }
-
- ivug_slider_item_move(sd->slide[NEXT_SLIDE], right_x, 0);
-
-// evas_object_move(sd->event_obj, sd->x, sd->y);
- evas_object_resize(sd->event_obj, sd->w, sd->h);
-}
-
-static void
-_ivug_slider_smart_show(Evas_Object *obj)
-{
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
- ivug_ret_if(!sd);
-
- if ( sd->bShow == EINA_TRUE) return;
-
- sd->bShow = EINA_TRUE;
-
- MSG_SLIDER_HIGH("Slider Show");
-
- ivug_slider_item_show(sd->slide[CENTER_SLIDE]);
- ivug_slider_item_show(sd->slide[NEXT_SLIDE]);
- ivug_slider_item_show(sd->slide[PREV_SLIDE]);
-
- evas_object_show(sd->event_obj);
-}
-
-static void
-_ivug_slider_smart_hide(Evas_Object *obj)
-{
- ivug_ret_if(!obj);
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
-
- if ( sd->bShow == EINA_FALSE) return;
-
- sd->bShow = EINA_FALSE;
-
- MSG_SLIDER_HIGH("Slider Hide");
-
- ivug_slider_item_hide(sd->slide[CENTER_SLIDE]);
- ivug_slider_item_hide(sd->slide[NEXT_SLIDE]);
- ivug_slider_item_hide(sd->slide[PREV_SLIDE]);
-
- evas_object_hide(sd->event_obj);
-}
-
-static void
-_ivug_slider_smart_color_set(Evas_Object *obj, int r, int g, int b, int a)
-{
- MSG_SLIDER_HIGH("Slider Color set : RGBA(%d,%d,%d,%d)", r, g, b, a);
- ivug_ret_if(!obj);
-// struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
-}
-
-static void
-_ivug_slider_smart_clip_set(Evas_Object *obj, Evas_Object * clip)
-{
- MSG_SLIDER_HIGH("Slider Clip set : Clipper=0x%08x");
- ivug_ret_if(!obj);
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
-
- int i = 0;
- for (i = 0; i < MAX_SLIDE; i++)
- { //set resize
- ivug_slider_item_clip_set(sd->slide[i], clip);
- }
-
- evas_object_clip_set(sd->event_obj, clip);
-}
-
-static void
-_ivug_slider_smart_clip_unset(Evas_Object *obj)
-{
- MSG_SLIDER_HIGH("Slider Clip unset");
-
- ivug_ret_if(!obj);
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
-
- int i = 0;
- for (i = 0; i < MAX_SLIDE; i++)
- { //set resize
- ivug_slider_item_clip_unset(sd->slide[i]);
- }
-
- evas_object_clip_unset(sd->event_obj);
-}
-
-/******* slide UI function *******/
-
-void
-_ivug_slider_slide_update_pos(struct Smart_Data *sd, Evas_Coord x, Evas_Coord y)
-{
- IV_ASSERT(sd != NULL);
-
-// TODO : If size is smaller than screen's, image should be put in middle
- ivug_slider_item_move(sd->slide[CENTER_SLIDE], x, y);
-
-// TODO : so as to increas perf, dont draw slide under certain condition
- ivug_slider_item_move(sd->slide[PREV_SLIDE], x - sd->slide[PREV_SLIDE]->w - IMAGE_BETWEEN_MARGIN , y);
-
- ivug_slider_item_move(sd->slide[NEXT_SLIDE], x + sd->slide[CENTER_SLIDE]->w + IMAGE_BETWEEN_MARGIN , y);
-}
-
-
- void
-_ivug_slider_slide_update(struct Smart_Data *sd, int x, int y)
- {
- IV_ASSERT(sd != NULL);
-
- sd->t_base = ecore_loop_time_get();
- set_animation(sd->anim, x, y, ANI_TIME_FLICK);
-
- if (sd->animator == NULL)
- {
-// In elm_config_scroll_zoom_friction_get() returns 0.5. this means 500ms.
- if(sd->animator)
- {
- ecore_animator_del(sd->animator);
- sd->animator = NULL;
- }
-
- sd->animator = ecore_animator_add(_ivug_slider_on_animation, sd);
-
- return;
- }
-
- MSG_SLIDER_WARN("Updata animation is alreay exists.");
-}
-
-
-void
-_ivug_slider_slide_update_shift_right(struct Smart_Data *sd)
-{
- ivug_ret_if(!sd);
-
- Slide_Item* PrevSlide = NULL;
-
- MSG_SLIDER_HIGH( "Slide shited. <-----");
-
- Media_Item *item = ivug_data_get_next(sd->slide[NEXT_SLIDE]->mitem); //get interator
-
- PrevSlide = sd->slide[PREV_SLIDE];
- ivug_slider_item_data_unset(PrevSlide);
-
- //set init
- sd->slide[PREV_SLIDE] = sd->slide[CENTER_SLIDE];
- sd->slide[CENTER_SLIDE] = sd->slide[NEXT_SLIDE];
- sd->slide[NEXT_SLIDE] = PrevSlide;
-
- if ( item != NULL )
- {
- ivug_slider_item_data_set(sd->slide[NEXT_SLIDE], item); //set iterator
-#ifdef DEFFERED_LOADING
- if ( sd->load_idler == NULL )
- {
- sd->load_idler = ecore_idler_add(_idler_loading_func, sd);
- }
-#else
- ivug_slider_item_data_loading(sd->slide[NEXT_SLIDE]); //set data.
-#endif
- }
-
- if(sd->ss_state == SLIDE_SHOW_RUNNING )
- {
- MSG_SLIDER_HIGH("Slide show.. Update position. XY(%d,%d)", sd->x , sd->y);
- _ivug_slider_slide_update_pos(sd, sd->x , sd->y); //update
-
- ivug_slider_item_show(sd->slide[CENTER_SLIDE]);
- ivug_slider_item_show(sd->slide[NEXT_SLIDE]);
- ivug_slider_item_show(sd->slide[PREV_SLIDE]);
- }
- else
- {
- _ivug_slider_slide_update_pos(sd, sd->slide[CENTER_SLIDE]->x , sd->slide[CENTER_SLIDE]->y); //update
- }
-
- if(sd->ss_state != SLIDE_SHOW_RUNNING)
- {
- sd->cur_list_idx++;
- }
- else /* (sd->ss_state == SLIDE_SHOW_RUNNING) */
- {
- int ret = 0;
- sd->cur_list_idx = sd->next_list_idx;
- ret = ivug_data_get_next_slide_show_index(sd->media_list, sd->ss_mode, sd->next_list_idx, sd->list_total_count, true);
- if(ret > 0)
- {
- sd->next_list_idx = ret;
- }
- }
- //call callback function.
-
- MSG_SLIDER_HIGH( ">>>cur index %d, total count %d, list_count %d <<<",
- sd->cur_list_idx, sd->list_total_count, eina_list_count(ivug_data_get_first(sd->media_list)));
-
-
- ivug_slider_item_zoom_reset(sd->slide[PREV_SLIDE], EINA_FALSE, 0,0);
-
- evas_object_smart_callback_call(sd->obj, "slider,item,changed", sd->slide[CENTER_SLIDE]);
-
- if(sd->idler_list == NULL)
- {
- sd->idler_list = ecore_idler_add(_ivug_slider_set_window_loading_idler, (void *)sd);
- }
-}
-
-
-void
-_ivug_slider_slide_update_shift_left(struct Smart_Data *sd)
-{
- ivug_ret_if(!sd);
-
- Slide_Item* NextSlide = NULL;
-
- MSG_SLIDER_HIGH( "Slide shited. ----->");
-
- Media_Item *item = ivug_data_get_prev(sd->slide[PREV_SLIDE]->mitem); //get interator
-
- NextSlide = sd->slide[NEXT_SLIDE];
- ivug_slider_item_data_unset(NextSlide);
-
- sd->slide[NEXT_SLIDE] = sd->slide[CENTER_SLIDE];
- sd->slide[CENTER_SLIDE] = sd->slide[PREV_SLIDE];
- sd->slide[PREV_SLIDE] = NextSlide;
-
- if ( item != NULL )
- {
- ivug_slider_item_data_set(sd->slide[PREV_SLIDE], item); //set data.
-#ifdef DEFFERED_LOADING
- if ( sd->load_idler == NULL )
- {
- sd->load_idler = ecore_idler_add(_idler_loading_func, sd);
- }
-#else
- ivug_slider_item_data_loading(sd->slide[PREV_SLIDE]); //set data.
-#endif
- }
-
- _ivug_slider_slide_update_pos(sd, sd->slide[CENTER_SLIDE]->x , sd->slide[CENTER_SLIDE]->y); //update
-
- sd->cur_list_idx--;
- //call callback function.
-
- ivug_slider_item_zoom_reset(sd->slide[NEXT_SLIDE], EINA_FALSE, 0,0);
-
- evas_object_smart_callback_call(sd->obj, "slider,item,changed", sd->slide[CENTER_SLIDE]);
-
- if(sd->idler_list == NULL)
- {
- sd->idler_list = ecore_idler_add(_ivug_slider_set_window_loading_idler, (void *)sd);
- }
-
-
-}
-
- void
-_ivug_slider_slide_update_shift(struct Smart_Data *sd)
-{
- ivug_ret_if(!sd);
-
- shift_direction_t shift_direction = SLIDE_SHIFT_NONE;
-
- if ( sd->slide[CENTER_SLIDE]->x + sd->slide[CENTER_SLIDE]->w < 0 )
- {
- shift_direction = SLIDE_SHIFT_TO_RIGHT;
- if ( sd->slide[NEXT_SLIDE]->mitem == NULL ) // most right position.
- {
- MSG_SLIDER_HIGH("Most right position");
-
- _ivug_slider_slide_update(sd, sd->slide[CENTER_SLIDE]->x , 0);
-
- return;
- }
- }
- else if ( sd->slide[CENTER_SLIDE]->x > sd->w )
- {
- shift_direction = SLIDE_SHIFT_TO_LEFT;
-
- if ( sd->slide[PREV_SLIDE]->mitem == NULL ) // most right position.
- {
- MSG_SLIDER_HIGH("Most left position");
-
- _ivug_slider_slide_update(sd, sd->slide[CENTER_SLIDE]->x , 0);
-
- return;
- }
- }
-
- if ( shift_direction == SLIDE_SHIFT_TO_RIGHT) // <--------------
- {
- _ivug_slider_slide_update_shift_right(sd);
- }
- else if (shift_direction == SLIDE_SHIFT_TO_LEFT) // -------------->
- {
- _ivug_slider_slide_update_shift_left(sd);
- }
-
-}
-
-static Eina_Bool
-_ivug_slider_on_animation(void *data)
-{
- ivug_retv_if(!data, ECORE_CALLBACK_CANCEL);
- struct Smart_Data* sd = (struct Smart_Data*) data;
-
- int value = 0;
-
- if ( update_animation(sd->anim, ecore_loop_time_get() - sd->t_base, &value) == false ) // If last frame
- {
- if(sd->animator)
- {
- ecore_animator_del(sd->animator);
- sd->animator = NULL;
- }
-
- MSG_SLIDER_HIGH("Last ani frame : X pos(%d,%d,%d)",
- sd->slide[PREV_SLIDE]->x, sd->slide[CENTER_SLIDE]->x, sd->slide[NEXT_SLIDE]->x);
-
- _ivug_slider_slide_update_pos(sd, value , sd->y); //update
-
- _ivug_slider_slide_update_shift(sd);
-
-// Update edge state
- sd->edge = _ivug_slider_edge_state_get(sd->slide[CENTER_SLIDE]);
-
- return ECORE_CALLBACK_CANCEL;
- }
-
- _ivug_slider_slide_update_pos(sd, value, sd->y);
-
- return ECORE_CALLBACK_RENEW;
-
-
- }
-
-
-Evas_Object*
-ivug_slider_add(Evas_Object* parent)
-{
- Evas_Object *obj = NULL;
- _ivug_slider_smart_init(); //init smart object for ivug slider
-
- PERF_CHECK_BEGIN(LVL3 "evas_object_smart_add");
-
- obj = evas_object_smart_add(evas_object_evas_get(parent), _smart_); //create smart object.
- ivug_retv_if(!obj, NULL);
-
-
- PERF_CHECK_END(LVL3 "evas_object_smart_add");
-
- MSG_SLIDER_HIGH("Slider Added Obj(0x%08x) Evas(0x%08x) Parent(0x%08x)", obj, evas_object_evas_get(parent), parent);
-
- return obj;
-}
-
-
-int
-ivug_slider_get_total_slide_count(Evas_Object* obj)
-{
- ivug_retv_if(!obj, -1); // TODO
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
- ivug_retv_if(!sd, -1);
-
- if(sd->list_total_count <= 0) //sd->media_list->left_end == -1 ||
- {
- sd->list_total_count = eina_list_count(ivug_data_get_first(sd->media_list));
- }
- return sd->list_total_count;
-
-}
-
-int
-ivug_slider_get_current_slide_count(Evas_Object* obj)
-{
- ivug_retv_if(!obj, -1); // TODO
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
- ivug_retv_if(!sd, -1);
-
- return sd->cur_list_idx;
-}
-
-Slide_Item *
-ivug_slider_get_current_slide_item(Evas_Object* obj)
-{
- ivug_retv_if(!obj, NULL);
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
- ivug_retv_if(!sd, NULL);
-
- return sd->slide[CENTER_SLIDE];
-}
-
-
-void
-ivug_slider_delete_current_slide(Evas_Object* obj)
-{
- ivug_ret_if(!obj);
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
- IVUG_FUNC_ENTER();
-
- if (sd == NULL)
- {
- MSG_SLIDER_ERROR("Slide data is NULL");
- return;
- }
-
- shift_direction_t direction = SLIDE_SHIFT_NONE;
- if (sd->slide[NEXT_SLIDE]->state != SLIDE_STATE_NONE)
- {
- MSG_SLIDER_HIGH("right slide state = %d ", sd->slide[NEXT_SLIDE]->state);
- direction = SLIDE_SHIFT_TO_RIGHT;
- }
- else if (sd->slide[PREV_SLIDE]->state != SLIDE_STATE_NONE)
- {
- MSG_SLIDER_HIGH("left slide state = %d ", sd->slide[PREV_SLIDE]->state);
- direction = SLIDE_SHIFT_TO_LEFT;
- }
-
- MSG_SLIDER_HIGH("shift direction = %d ", direction);
-
- ivug_data_delete_media_item( sd->media_list , sd->slide[CENTER_SLIDE]->mitem ); //delete data.
- sd->slide[CENTER_SLIDE]->mitem = NULL;
-
- ivug_slider_item_data_unset(sd->slide[CENTER_SLIDE]);
-
- Media_Item* item = NULL;
-
- //move slide.
- if ( direction == SLIDE_SHIFT_TO_RIGHT )
- {
- Slide_Item *tmp = sd->slide[CENTER_SLIDE];
-
- item = ivug_data_get_next(sd->slide[NEXT_SLIDE]->mitem); //get next data.
-
- sd->slide[CENTER_SLIDE] = sd->slide[NEXT_SLIDE];
- sd->slide[NEXT_SLIDE] = tmp;
-
- if(item != NULL)
- {
- ivug_slider_item_data_set(sd->slide[NEXT_SLIDE], item);
- ivug_slider_item_data_loading(sd->slide[NEXT_SLIDE]);
- }
- }
- else if ( direction == SLIDE_SHIFT_TO_LEFT) // ----------->
- {
- Slide_Item *tmp = sd->slide[CENTER_SLIDE];
-
- item = ivug_data_get_prev(sd->slide[PREV_SLIDE]->mitem); //get next data.
-
- sd->slide[CENTER_SLIDE] = sd->slide[PREV_SLIDE];
- sd->slide[PREV_SLIDE] = tmp;
-
- sd->cur_list_idx--;
-
- if(item != NULL)
- {
- ivug_slider_item_data_set(sd->slide[PREV_SLIDE], item);
- ivug_slider_item_data_loading(sd->slide[PREV_SLIDE]);
- }
- }
- else // Shift none
- {
- }
-
- _ivug_slider_slide_update_pos(sd, 0 , 0); //update
-
- Media_Data *sdata = NULL;
-
- if ( sd->slide[CENTER_SLIDE]->mitem != NULL )
- {
- sdata = ivug_data_get_data(sd->slide[CENTER_SLIDE]->mitem);
- }
-
- sd->list_total_count--;
-
- evas_object_smart_callback_call(sd->obj, "slider,item,deleted", sd->slide[CENTER_SLIDE]);
-
- if(sd->idler_list == NULL)
- {
- sd->idler_list = ecore_idler_add(_ivug_slider_set_window_loading_idler, (void *)sd);
- }
-
- IVUG_FUNC_LEAVE();
-}
-
-Eina_Bool
-ivug_slider_set_slide_list(Evas_Object* obj, Media_List *mList, Eina_List *new_list, Media_Item *current, int index, int total_count)
-
-{
- IV_ASSERT(obj != NULL);
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
-
- ivug_retv_if(!sd, EINA_FALSE); //check smart data.
-
- sd->media_list = mList;
- sd->cur_list_idx = index;
- sd->current = current;
- sd->list_total_count = total_count;
-
- //set init
- PERF_CHECK_BEGIN(LVL4 "unset prev&next");
-
- ivug_slider_item_data_unset(sd->slide[PREV_SLIDE]);
- ivug_slider_item_data_unset(sd->slide[NEXT_SLIDE]);
-
- PERF_CHECK_END(LVL4 "unset prev&next");
-
- if(new_list != NULL)
- {
- ivug_slider_item_change_mitem_pointer(sd->slide[CENTER_SLIDE], current);
-
- ivug_data_delete_all_window_list(sd->media_list); // clear window list
- ivug_data_append_media_item(sd->media_list, new_list);
- }
- else
- {
- PERF_CHECK_BEGIN(LVL4 "set center");
-
- ivug_slider_item_data_unset( sd->slide[CENTER_SLIDE]);
- ivug_slider_item_data_set(sd->slide[CENTER_SLIDE], current);
-
- ivug_slider_item_data_loading(sd->slide[CENTER_SLIDE]);
-
- PERF_CHECK_END(LVL4 "set center");
- }
-
- Media_Item *item = ivug_data_get_next(current);
- if(item != NULL)
- {
- PERF_CHECK_BEGIN(LVL4 "set next");
-
- ivug_slider_item_data_set(sd->slide[NEXT_SLIDE], item);
-
-#ifdef DEFFERED_LOADING
- if ( sd->load_idler == NULL )
- {
- sd->load_idler = ecore_idler_add(_idler_loading_func, sd);
- }
-#else
- ivug_slider_item_data_loading(sd->slide[NEXT_SLIDE]); //set data.
-#endif
-
-
- PERF_CHECK_END(LVL4 "set next");
- }
- item = ivug_data_get_prev(current);
- if(item != NULL)
- {
- PERF_CHECK_BEGIN(LVL4 "set prev");
-
- ivug_slider_item_data_set(sd->slide[PREV_SLIDE], item);
-
-#ifdef DEFFERED_LOADING
- if ( sd->load_idler == NULL )
- {
- sd->load_idler = ecore_idler_add(_idler_loading_func, sd);
- }
-#else
- ivug_slider_item_data_loading(sd->slide[PREV_SLIDE]); //set data.
-#endif
-
-
- PERF_CHECK_END(LVL4 "set prev");
- }
-
- PERF_CHECK_BEGIN(LVL4 "slider,item,changed");
-
- evas_object_smart_callback_call(sd->obj, "slider,item,changed", sd->slide[CENTER_SLIDE]);
-
- PERF_CHECK_END(LVL4 "slider,item,changed");
-
- return EINA_TRUE;
-}//ivug slider set list
-
-Media_Data *
-ivug_slider_create_media_list(Evas_Object* obj, ivug_parameter* ivug_param)
-{
- // Data List
- int list_total_count = 0;
- int start_index = ivug_param->start_index;
- Media_Item *item = NULL;
- Media_List *mList = ivug_data_init_media_list(ivug_param);
- Media_Data *mdata = NULL;
-
- if (mList == NULL)
- {
- MSG_SLIDER_ERROR("media list is NULL");
- return NULL;
- }
-
- PERF_CHECK_BEGIN(LVL3 "get media list");
- item = ivug_data_create_media_list_from_param
- (mList, NULL, ivug_param->filepath, &start_index, &list_total_count); //get list by file path.
- if(item == NULL)
- {
- MSG_SLIDER_ERROR("create media list failed");
- free(mList);
- return NULL;
- }
- PERF_CHECK_END(LVL3 "get media list");
-
- PERF_CHECK_BEGIN(LVL3 "set slide list");
-
- if (!ivug_slider_set_slide_list(obj, mList, NULL, item, start_index, list_total_count))
- {
- MSG_SLIDER_ERROR("slide list set Error");
- free(mList);
- return NULL;
- }
-
- PERF_CHECK_END(LVL3 "set slide list");
-
-// struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
-// if(sd->ss_mode & SLIDE_SHOW_MODE_SHUFFLE)
- {
- PERF_CHECK_BEGIN(LVL3 "make shuffled list");
-
- ivug_data_create_shuffled_list(mList, list_total_count);
-
- PERF_CHECK_END(LVL3 "make shuffled list");
- }
-
- mdata = ivug_data_get_data(item);
- return mdata;
-}
-
-
-char*
-ivug_slider_get_next_exist_filepath(Evas_Object* obj)
-{
- IVUG_FUNC_ENTER();
- ivug_retv_if(!obj, NULL);
- struct Smart_Data *sd = (struct Smart_Data *) evas_object_smart_data_get(obj);
- ivug_retv_if(!sd, NULL);
-
- char* file_path = NULL;
-
- Media_Item* next_item = ivug_data_get_next(sd->slide[CENTER_SLIDE]->mitem);
- Media_Data *sdata = NULL;
-
- while(next_item)
- {
- sdata = ivug_data_get_data(next_item);
-
- if(sdata != NULL) // TODO : Should review
- {
- MSG_SLIDER_HIGH("sl_data%s", sdata->filepath);
-
- if(sdata->filepath && ecore_file_exists(sdata->filepath))
- {
- MSG_SLIDER_HIGH("exist filepath %s", sdata->filepath);
- file_path = sdata->filepath;
- break;
- }
- }
-
- next_item = ivug_data_get_next(next_item);
- }
-
- //All files from current are deleted, search from beginning
- if(!file_path)
- {
- next_item = ivug_data_get_first(sd->media_list);
- while(next_item && next_item != ivug_data_get_next(sd->slide[CENTER_SLIDE]->mitem))
- {
- sdata = ivug_data_get_data(next_item);
-
- if(sdata != NULL) // TODO : Should review
- {
- MSG_SLIDER_HIGH("sl_data%s", sdata->filepath);
-
- if(sdata->filepath && ecore_file_exists(sdata->filepath))
- {
- MSG_SLIDER_HIGH("exist filepath %s", sdata->filepath);
- file_path = sdata->filepath;
- break;
- }
- }
-
- next_item = ivug_data_get_next(next_item);
- }
- }
-
- IVUG_FUNC_LEAVE();
-
- return file_path;
-}
-
-
diff --git a/main/src/view/ivug-slider.h b/main/src/view/ivug-slider.h
deleted file mode 100755
index bff73c2..0000000
--- a/main/src/view/ivug-slider.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * 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.
- */
-
-
-#ifndef __IVUG_SLIDER_H__
-#define __IVUG_SLIDER_H__
-
-#include "ivug-data.h"
-#include "ivug-slider-item.h"
-
-typedef enum {
- SLIDE_SHOW_STOPPED = 0x00,
- SLIDE_SHOW_RUNNING,
- SLIDE_SHOW_PAUSE,
-} slideshow_state_t;
-
-
-//define callback function.
-typedef void (*ivug_slider_shift_cb)(Media_Data *cur_sd, void* user_data);
-typedef void (*ivug_slider_delete_cb)(Media_Data *cur_sd, void* user_data);
-typedef void (*ivug_slider_slide_show_finish_cb)(Media_Data *cur_sd, void* user_data);
-
-/*
- Slider signal list.
-
- "slider,clicked" : when click once
- "slider,clicked,double" : when double click
- "slider,longpressed" : when long pressed on slider
- "slider,clicked,icon" : video icon clicked.
- "slider,item,changed"
-
- "slider,item,state,changed"
- "slider,item,deleted"
- "slider,slideshow,finished" : slide show ended cause last slide
- "slider,slideshow,interrupted" : slide show stopped by user
-*/
-
-Evas_Object*
-ivug_slider_add(Evas_Object* parent);
-
-Eina_Bool
-ivug_slider_set_slide_list(Evas_Object* obj, Media_List *mList, Eina_List *new_list, Media_Item *current, int index, int total_count);
-
-Media_Data *
-ivug_slider_create_media_list(Evas_Object* obj, ivug_parameter* ivug_param);
-
-void
-ivug_slider_delete_current_slide(Evas_Object* obj);
-
-void ivug_slider_restore_window_list(Evas_Object *obj);
-
-Slide_Item *
-ivug_slider_get_current_slide_item(Evas_Object* obj);
-
-/* Will be deprecated */
-int
-ivug_slider_get_current_slide_count(Evas_Object* obj);
-
-int
-ivug_slider_get_total_slide_count(Evas_Object* obj);
-
-/* Will be deprecated*/
-char*
-ivug_slider_get_next_exist_filepath(Evas_Object* obj);
-
-// Slide Show
-void
-ivug_slider_pause_slide_show(Evas_Object* obj);
-
-void
-ivug_slider_resume_slide_show(Evas_Object* obj);
-
-/* if bSlideFirst == EINA_TRUE, slide and then wait interval time
- if bSlideFirst == EINA_FALSE, wait interval time and then slide */
-void
-ivug_slider_start_slide_show(Evas_Object* obj, Eina_Bool bSlideFirst);
-
-void
-ivug_slider_stop_slide_show(Evas_Object* obj);
-
-
-#endif