summaryrefslogtreecommitdiff
path: root/main/src/view/ivug-details-view.c
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/view/ivug-details-view.c')
-rwxr-xr-xmain/src/view/ivug-details-view.c300
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);