diff options
Diffstat (limited to 'main/src/view/ivug-details-view.c')
-rwxr-xr-x | main/src/view/ivug-details-view.c | 300 |
1 files changed, 252 insertions, 48 deletions
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); |