1. Accept requests for opening media files from myfiles.
2. Place base-i18n with ICU library.
3. maps-service can be removed from dependencies.
Change-Id: I444f03761f59ffca06da3129a4ebb7853c986b92
Signed-off-by: Kyuho Jo <kyuho.jo@samsung.com>
PROJECT("mediahub" C)
INCLUDE(FindPkgConfig)
+
+IF(${FEATURE_LOCATION_SERVICE} STREQUAL "ENABLED")
+pkg_check_modules(PKGS REQUIRED
+ glib-2.0
+ gio-2.0
+ elementary
+ capi-appfw-application
+ capi-media-player
+ capi-ui-efl-util
+ vconf
+ app-utils
+ icu-i18n
+ capi-maps-service)
+ADD_DEFINITIONS("-D__FEATURE_LOCATION_SERVICE__")
+SET(SRCS
+ src/main.c
+ src/view/base.c
+ src/view/detail.c
+ src/view/viewer.c
+ src/view/mplayer.c
+ src/view/action_menu.c
+ src/view/zoom.c
+ src/layout/movie.c
+ src/layout/gallery.c
+ src/layout/music.c
+ src/util/controller.c
+ src/util/listmgr.c
+ src/util/timeout_handler.c
+ src/util/usb.c
+ src/util/util.c
+ src/util/playermgr.c
+ src/util/ctxpopup.c
+ src/util/progressbar.c
+ src/data/datamgr.c
+ src/data/albumdata.c
+ src/data/folderdata.c
+ src/data/mediadata.c
+ src/grid/grid_movie.c
+ src/grid/grid_gallery.c
+ src/grid/grid_music.c
+ src/util/locmgr.c)
+ELSE (${FEATURE_LOCATION_SERVICE} STREQUAL "ENABLED")
pkg_check_modules(PKGS REQUIRED
glib-2.0
gio-2.0
capi-appfw-application
capi-media-player
capi-ui-efl-util
- capi-maps-service
vconf
- capi-base-utils-i18n
- app-utils)
+ app-utils
+ icu-i18n)
+SET(SRCS
+ src/main.c
+ src/view/base.c
+ src/view/detail.c
+ src/view/viewer.c
+ src/view/mplayer.c
+ src/view/action_menu.c
+ src/view/zoom.c
+ src/layout/movie.c
+ src/layout/gallery.c
+ src/layout/music.c
+ src/util/controller.c
+ src/util/listmgr.c
+ src/util/timeout_handler.c
+ src/util/usb.c
+ src/util/util.c
+ src/util/playermgr.c
+ src/util/ctxpopup.c
+ src/util/progressbar.c
+ src/data/datamgr.c
+ src/data/albumdata.c
+ src/data/folderdata.c
+ src/data/mediadata.c
+ src/grid/grid_movie.c
+ src/grid/grid_gallery.c
+ src/grid/grid_music.c)
+ENDIF (${FEATURE_LOCATION_SERVICE} STREQUAL "ENABLED")
IF(NOT DEFINED PACKAGE_NAME)
SET(PACKAGE_NAME "org.tizen.mediahub")
SET(DESKTOP_ICON ${PACKAGE_NAME}.png)
ENDIF(NOT DEFINED DESKTOP_ICON)
-SET(SRCS
-src/main.c
-src/view/base.c
-src/view/detail.c
-src/view/viewer.c
-src/view/mplayer.c
-src/view/action_menu.c
-src/view/zoom.c
-src/layout/movie.c
-src/layout/gallery.c
-src/layout/music.c
-src/util/controller.c
-src/util/listmgr.c
-src/util/timeout_handler.c
-src/util/usb.c
-src/util/util.c
-src/util/playermgr.c
-src/util/ctxpopup.c
-src/util/progressbar.c
-src/util/locmgr.c
-src/data/datamgr.c
-src/data/albumdata.c
-src/data/folderdata.c
-src/data/mediadata.c
-src/grid/grid_movie.c
-src/grid/grid_gallery.c
-src/grid/grid_music.c
-)
-
SET(TARGET_EDJ "${PROJECT_NAME}.edj")
SET(THEME_EDJ "${PROJECT_NAME}-theme.edj")
FOREACH(flag ${PKGS_CFLAGS})
SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
ENDFOREACH(flag)
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Wall -Werror")
+
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} -Wall -Werror -fPIE")
+SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${PKGS_LDFLAGS})
CONFIGURE_FILE(${PACKAGE_NAME}.xml.in ${PACKAGE_NAME}.xml)
struct data_ops *mediadata_get_ops(void);
+app_media* mediadata_get_app_media_by_file_path(char *file_path);
+
#endif /* _AIR_MEDIAHUB_MEDIADATA_H__ */
#include <media_content.h>
#include <app_media.h>
-#include <utils_i18n.h>
+#include <unicode/ustring.h>
bool util_check_movie_type(const char *str);
bool util_launch_request(const char *appid, const char *key, const char *value);
void util_time_string(char *str, int size, unsigned int ms, bool full);
void util_up_string(char *str);
-i18n_uchar* util_convert_to_UTF16_string(const char *source_string);
-char* util_convert_to_UTF8_string(i18n_uchar *sourct_string);
+UChar* util_convert_to_UTF16_string(const char *source_string);
+char* util_convert_to_UTF8_string(UChar *sourct_string);
int util_get_media_index(Eina_List *list, void *info);
int util_get_media_index_from_id(Eina_List *list, const char *id);
UPDATE_VIEW_MODE,
UPDATE_SOURCE_CONTENT,
UPDATE_SOURCE_TYPE,
- UPDATE_TOAST
+ UPDATE_TOAST,
+ UPDATE_CONTENT_WITH_MEDIA_ID
};
enum base_view_layout {
<ui-application appid="@PACKAGE_NAME@" exec="@BINDIR@/@PROJECT_NAME@" nodisplay="false" multiple="false" type="capp" taskmanage="true">
<icon>org.tizen.mediahub.png</icon>
<label>Media Hub </label>
+ <app-control>
+ <operation name="http://tizen.org/appcontrol/operation/view"/>
+ <mime name="image/jpeg"/>
+ <mime name="image/png"/>
+ <mime name="image/bmp"/>
+ <mime name="image/gif"/>
+ <mime name="image/vnd.wap.wbmp"/>
+ <mime name="audio/mp3"/>
+ <mime name="video/mp4"/>
+ <mime name="video/wmv"/>
+ </app-control>
+ <app-control>
+ <operation name="http://tizen.org/appcontrol/operation/view"/>
+ <uri name="file"/>
+ </app-control>
</ui-application>
<privileges>
<privilege>http://tizen.org/privilege/content.write</privilege>
Source0: %{name}-%{version}.tar.gz
Source1: %{name}.manifest
+%define _feature_location_service "DISABLED"
+
BuildRequires: cmake
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gio-2.0)
BuildRequires: pkgconfig(capi-appfw-application)
BuildRequires: pkgconfig(capi-media-player)
BuildRequires: pkgconfig(capi-ui-efl-util)
+%if %{_feature_location_service} == "ENABLED"
BuildRequires: pkgconfig(capi-maps-service)
+%endif
BuildRequires: pkgconfig(vconf)
BuildRequires: pkgconfig(app-utils)
-BuildRequires: pkgconfig(capi-base-utils-i18n)
BuildRequires: pkgconfig(libtzplatform-config)
+BuildRequires: pkgconfig(icu-i18n)
%define _appdir %{TZ_SYS_RO_APP}/%{name}
%define _bindir %{_appdir}/bin
-DPACKAGEDIR=%{_pkgdir} \
-DDESKTOP_ICONDIR=%{_desktop_icondir} \
-DDESKTOP_ICON=%{name}.png \
- -DVERSION=%{version}
+ -DVERSION=%{version}\
+ -DFEATURE_LOCATION_SERVICE=%{_feature_location_service}
make %{?jobs:-j%jobs}
#include <media_content.h>
#include <app_debug.h>
#include <app_media.h>
-#include <utils_i18n.h>
+#include <unicode/ustring.h>
+#include <unicode/uchar.h>
#include "data/datamgr.h"
#include "util/util.h"
};
-static i18n_uchar* _convert_to_UTF16_string(const char *source_string)
-{
- int buffer_length = 0;
- i18n_error_code_e error_from_i18n;
- i18n_uchar *converted_string = NULL;
-
- /* Calc buffer size for converted UTF16 string */
- i18n_ustring_from_UTF8(NULL, 0, &buffer_length, source_string, -1, &error_from_i18n);
-
- converted_string = malloc((buffer_length + 2) * sizeof(i18n_uchar));
- if (converted_string == NULL) {
- _ERR("malloc failed");
- goto OUT;
- }
-
- /* Convert to i18n(UTF16) string */
- i18n_ustring_from_UTF8(converted_string, buffer_length + 1, &buffer_length, source_string, -1, &error_from_i18n);
- if (error_from_i18n != I18N_ERROR_NONE) {
- _ERR("i18n_ustring_from_UTF8 returns [%d]", error_from_i18n);
- free(converted_string);
- goto OUT;
- }
- converted_string[buffer_length] = (i18n_uchar)0;
-
-OUT:
-
- return converted_string;
-}
-
-static char* _convert_to_UTF8_string(i18n_uchar *sourct_string)
-{
- int buffer_length = 0;
- i18n_error_code_e error_from_i18n;
- char *converted_string = NULL;
-
- i18n_ustring_to_UTF8(NULL, 0, &buffer_length, sourct_string, -1, &error_from_i18n);
-
- converted_string = malloc((buffer_length + 2) * sizeof(char));
- if (converted_string == NULL) {
- _ERR("malloc failed");
- goto OUT;
- }
-
- /* Convert to UTF8 */
- i18n_ustring_to_UTF8(converted_string, buffer_length + 1, &buffer_length, sourct_string, -1, &error_from_i18n);
- if (error_from_i18n != I18N_ERROR_NONE) {
- _ERR("i18n_ustring_to_UTF8 returns [%d]", error_from_i18n);
- free(converted_string);
- converted_string = NULL;
- goto OUT;
- }
- converted_string[buffer_length] = '\0';
-
-OUT:
-
- return converted_string;
-}
-
-
static bool _create_filter(struct albumdata *ad, filter_h *filter,
const char *cond, int filter_type)
{
return -1;
int32_t result = -1;
- i18n_uchar *converted_group_name = NULL;
- i18n_uchar *converted_album_title = NULL;
+ UChar *converted_group_name = NULL;
+ UChar *converted_album_title = NULL;
converted_group_name = util_convert_to_UTF16_string(gi->data);
converted_album_title = util_convert_to_UTF16_string(ai->name);
if (converted_group_name && converted_album_title) {
- result = i18n_ustring_case_compare_n(converted_group_name, converted_album_title, 1, I18N_USTRING_U_FOLD_CASE_DEFAULT);
+ result = u_strncasecmp(converted_group_name, converted_album_title, 1, U_FOLD_CASE_DEFAULT);
}
if (converted_group_name) {
return NULL;
char *result_str = NULL;
- i18n_uchar *converted_string = NULL;
+ UChar *converted_string = NULL;
- converted_string = _convert_to_UTF16_string(ai->name);
+ converted_string = util_convert_to_UTF16_string(ai->name);
if (converted_string == NULL) {
_ERR("_convert_to_UTF16_string failed");
goto OUT;
}
- result_str = _convert_to_UTF8_string(converted_string);
+ result_str = util_convert_to_UTF8_string(converted_string);
OUT:
if (converted_string)
return NULL;
char *result_str = NULL;
- i18n_uchar *converted_string = NULL;
- i18n_uchar sub_string[10] = { 0, };
+ UChar *converted_string = NULL;
+ UChar sub_string[10] = { 0, };
converted_string = util_convert_to_UTF16_string(ai->name);
}
/* Get a character (not a byte) from left */
- i18n_ustring_copy_n(sub_string, converted_string, 1);
+ u_strncpy(sub_string, converted_string, 1);
result_str = util_convert_to_UTF8_string(sub_string);
OUT:
return -1;
int32_t result = -1;
- i18n_uchar *converted_group_name = NULL;
- i18n_uchar *converted_artist = NULL;
+ UChar *converted_group_name = NULL;
+ UChar *converted_artist = NULL;
converted_group_name = util_convert_to_UTF16_string(gi->data);
converted_artist = util_convert_to_UTF16_string(ai->artist);
if (converted_group_name && converted_artist) {
- result = i18n_ustring_case_compare_n(converted_group_name, converted_artist, 1, I18N_USTRING_U_FOLD_CASE_DEFAULT);
+ result = u_strncasecmp(converted_group_name, converted_artist, 1, U_FOLD_CASE_DEFAULT);
}
if (converted_group_name) {
return NULL;
char *result_str = NULL;
- i18n_uchar *converted_string = NULL;
+ UChar *converted_string = NULL;
- converted_string = _convert_to_UTF16_string(ai->artist);
+ converted_string = util_convert_to_UTF16_string(ai->artist);
if (converted_string == NULL) {
_ERR("_convert_to_UTF16_string failed");
goto OUT;
}
- result_str = _convert_to_UTF8_string(converted_string);
+ result_str = util_convert_to_UTF8_string(converted_string);
OUT:
if (converted_string)
return NULL;
char *result_str = NULL;
- i18n_uchar *converted_string = NULL;
- i18n_uchar sub_string[10] = { 0, };
+ UChar *converted_string = NULL;
+ UChar sub_string[10] = { 0, };
converted_string = util_convert_to_UTF16_string(ai->artist);
}
/* Get a character (not a byte) from left */
- i18n_ustring_copy_n(sub_string, converted_string, 1);
+ u_strncpy(sub_string, converted_string, 1);
result_str = util_convert_to_UTF8_string(sub_string);
OUT:
#include <media_content.h>
#include <app_debug.h>
#include <app_media.h>
+#include <unicode/ustring.h>
+#include <unicode/uchar.h>
#include "data/datamgr.h"
#include "util/util.h"
return -1;
int32_t result = -1;
- i18n_uchar *converted_group_name = NULL;
- i18n_uchar *converted_media_title = NULL;
+ UChar *converted_group_name = NULL;
+ UChar *converted_media_title = NULL;
converted_group_name = util_convert_to_UTF16_string(gi->data);
converted_media_title = util_convert_to_UTF16_string(info->title);
if (converted_group_name && converted_media_title) {
- result = i18n_ustring_case_compare_n(converted_group_name, converted_media_title, 1, I18N_USTRING_U_FOLD_CASE_DEFAULT);
+ result = u_strncasecmp(converted_group_name, converted_media_title, 1, U_FOLD_CASE_DEFAULT);
}
if (converted_group_name) {
return NULL;
char *result_str = NULL;
- i18n_uchar *converted_string = NULL;
+ UChar *converted_string = NULL;
converted_string = util_convert_to_UTF16_string(info->title);
return NULL;
char *result_str = NULL;
- i18n_uchar *converted_string = NULL;
- i18n_uchar sub_string[10] = { 0, };
+ UChar *converted_string = NULL;
+ UChar sub_string[10] = { 0, };
converted_string = util_convert_to_UTF16_string(info->title);
}
/* Get a character (not a byte) from left */
- i18n_ustring_copy_n(sub_string, converted_string, 1);
+ u_strncpy(sub_string, converted_string, 1);
result_str = util_convert_to_UTF8_string(sub_string);
{
return &_ops;
};
+
+bool _media_item_cb(media_info_h item, void *user_data)
+{
+ app_media **am = (app_media**)user_data;
+
+ *am = app_media_create(item);
+
+ return false; //only 1 item
+}
+
+
+app_media* mediadata_get_app_media_by_file_path(char *file_path)
+{
+ int ret = MEDIA_CONTENT_ERROR_NONE;
+ filter_h media_filter = NULL;
+ app_media *am = NULL;
+ char condition[PATH_MAX + 256] = {0,};
+
+ if (file_path == NULL) {
+ _ERR("filepath is NULL");
+ goto out;
+ }
+
+ media_content_connect();
+
+ snprintf(condition, sizeof(condition), "%s = '%s'", MEDIA_PATH, file_path);
+
+
+ if ((ret = media_filter_create(&media_filter)) != MEDIA_CONTENT_ERROR_NONE) {
+ _ERR("media_filter_create returns [%d]", ret);
+ goto out;
+ }
+
+ if ((ret = media_filter_set_condition(media_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT)) != MEDIA_CONTENT_ERROR_NONE) {
+ _ERR("media_filter_create returns [%d]", ret);
+ goto out;
+ }
+
+ ret = media_filter_set_order(media_filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_DISPLAY_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
+
+ if ((ret = media_info_foreach_media_from_db(media_filter, _media_item_cb, &am)) != MEDIA_CONTENT_ERROR_NONE) {
+ _ERR("media_info_foreach_media_from_db is failed [%d]", ret);
+ }
+
+out:
+ if (media_filter)
+ media_filter_destroy(media_filter);
+
+ return am;
+}
int source_type;
struct grid_data *gdata;
-
+#ifdef __FEATURE_LOCATION_SERVICE__
struct locmgr *locmgr;
+#endif
};
static void _recent_item_selected(struct _priv *priv, app_media *am)
static void _destroy_utils(struct _priv *priv)
{
+#ifdef __FEATURE_LOCATION_SERVICE__
locmgr_destroy(priv->locmgr);
+#endif
_destroy_datamgr(priv);
listmgr_destroy(priv->listmgr);
static Eina_Bool _create_location(void *data)
{
struct _priv *priv;
- struct locmgr *locmgr;
struct datamgr *dmgr;
+#ifdef __FEATURE_LOCATION_SERVICE__
+ struct locmgr *locmgr;
+#endif
if (!data) {
_ERR("invalid argument");
return ECORE_CALLBACK_CANCEL;
}
+#ifdef __FEATURE_LOCATION_SERVICE__
locmgr = locmgr_create();
if (!locmgr) {
_ERR("failed to create locmgr");
locmgr_set_locations(locmgr,
dmgr->ops->get_list(dmgr->handle, E_LIST_MEDIA, NULL));
+#endif
return ECORE_CALLBACK_CANCEL;
}
}
}
+static void _open_media_file(char *media_type, char *media_file_path)
+{
+ if (strcmp(media_type, "Image") == 0) {
+ viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT_WITH_MEDIA_ID, media_file_path);
+ viewmgr_push_view(VIEW_VIEWER);
+ } else if (strcmp(media_type, "Video") == 0) {
+ viewmgr_update_view(VIEW_VIEWER, UPDATE_CONTENT_WITH_MEDIA_ID, media_file_path);
+ viewmgr_push_view(VIEW_VIEWER);
+ } else if (strcmp(media_type, "Audio") == 0) {
+ viewmgr_update_view(VIEW_MPLAYER, UPDATE_CONTENT_WITH_MEDIA_ID, media_file_path);
+ viewmgr_push_view(VIEW_MPLAYER);
+ }
+}
+
static void _app_control(app_control_h app_control, void *data)
{
struct _appdata *ad;
- char *media_id;
- char *caller_id;
+ char *media_id = NULL;
+ char *caller_id = NULL;
int r;
+
if (!data) {
_ERR("failed to get data");
return;
if (r != APP_CONTROL_ERROR_NONE)
caller_id = NULL;
- r = app_control_get_extra_data(app_control, PARAM_MEDIA_ID, &media_id);
- if (r != APP_CONTROL_ERROR_NONE)
- media_id = NULL;
-
- if (media_id && caller_id) {
- if (!strcmp(caller_id, APP_ID_FAVORITE)) {
- while (viewmgr_active_view_count() > 0)
- viewmgr_pop_view();
- viewmgr_update_view(VIEW_BASE,
- UPDATE_FAVORITE, media_id);
- } else if (!strcmp(caller_id, APP_ID_RECENT)) {
+ if (caller_id == NULL) {
+ r = app_control_get_extra_data(app_control, PARAM_MEDIA_ID, &media_id);
+ if (r != APP_CONTROL_ERROR_NONE)
+ media_id = NULL;
+
+ if (media_id && caller_id) {
+ if (!strcmp(caller_id, APP_ID_FAVORITE)) {
+ while (viewmgr_active_view_count() > 0)
+ viewmgr_pop_view();
+
+ viewmgr_update_view(VIEW_BASE,
+ UPDATE_FAVORITE, media_id);
+ } else if (!strcmp(caller_id, APP_ID_RECENT)) {
+ viewmgr_push_view(VIEW_BASE);
+ viewmgr_update_view(VIEW_BASE,
+ UPDATE_RECENT, media_id);
+ }
+ } else {
viewmgr_push_view(VIEW_BASE);
- viewmgr_update_view(VIEW_BASE,
- UPDATE_RECENT, media_id);
+ viewmgr_update_view(VIEW_BASE, UPDATE_RECENT, media_id);
}
- } else
- viewmgr_push_view(VIEW_BASE);
- free(media_id);
- free(caller_id);
+ } else if (strcmp("org.tizen.myfiles", caller_id) == 0) {
+ char *file_path = NULL;
+ char *media_type = NULL;
+
+ app_control_get_extra_data(app_control, "Path", &file_path);
+ app_control_get_extra_data(app_control, "Media type", &media_type);
+
+ if (file_path == NULL) {
+ _DBG("file_path is NULL");
+ app_control_get_uri(app_control, &file_path);
+ }
+
+ if (file_path != NULL) {
+ if (media_type != NULL) {
+ _open_media_file(media_type, file_path);
+ }
+ }
+ }
+ if (media_id)
+ free(media_id);
+ if (caller_id)
+ free(caller_id);
+
}
static void _pause(void *data)
#include <app_control.h>
#include <app_debug.h>
#include <app_contents.h>
+#include <unicode/ustring.h>
#include "define.h"
#include "util/util.h"
return o;
}
-i18n_uchar* util_convert_to_UTF16_string(const char *source_string)
+UChar* util_convert_to_UTF16_string(const char *source_string)
{
int buffer_length = 0;
- i18n_error_code_e error_from_i18n;
- i18n_uchar *converted_string = NULL;
+ UErrorCode error_from_icu = 0;
+ UChar *converted_string = NULL;
/* Calc buffer size for converted UTF16 string */
- i18n_ustring_from_UTF8(NULL, 0, &buffer_length, source_string, -1, &error_from_i18n);
-
- converted_string = malloc((buffer_length + 2) * sizeof(i18n_uchar));
+ u_strFromUTF8(NULL, 0, &buffer_length, source_string, -1, &error_from_icu);
+ if (buffer_length == 0) {
+ _ERR("error form icu[%d][%s]", error_from_icu, u_errorName(error_from_icu));
+ goto OUT;
+ }
+ /* NOTE:
+ * Calling u_strFromUTF8 with 0 capacity always causes U_BUFFER_OVERFLOW_ERROR.
+ * When u_strFromUTF8 is succeeded, u_strFromUTF8 doesn't change error_from_icu.
+ * It means error_from_icu have U_BUFFER_OVERFLOW_ERROR even though there is no problem.
+ * So, error_from_icu should be reset as U_ZERO_ERROR here*/
+ error_from_icu = U_ZERO_ERROR;
+
+ converted_string = malloc((buffer_length + 2) * sizeof(UChar));
if (converted_string == NULL) {
_ERR("malloc failed");
goto OUT;
}
/* Convert to i18n(UTF16) string */
- i18n_ustring_from_UTF8(converted_string, buffer_length + 1, &buffer_length, source_string, -1, &error_from_i18n);
- if (error_from_i18n != I18N_ERROR_NONE) {
- _ERR("i18n_ustring_from_UTF8 returns [%d]", error_from_i18n);
+ u_strFromUTF8(converted_string, buffer_length + 1, &buffer_length, source_string, -1, &error_from_icu);
+ if (U_FAILURE(error_from_icu)) {
+ _ERR("error form icu[%d][%s]", error_from_icu, u_errorName(error_from_icu));
free(converted_string);
+ converted_string = NULL;
goto OUT;
}
- converted_string[buffer_length] = (i18n_uchar)0;
+
+ converted_string[buffer_length] = (UChar)0;
OUT:
return converted_string;
}
-char* util_convert_to_UTF8_string(i18n_uchar *sourct_string)
+char* util_convert_to_UTF8_string(UChar *source_string)
{
int buffer_length = 0;
- i18n_error_code_e error_from_i18n;
+ UErrorCode error_from_icu;
char *converted_string = NULL;
- i18n_ustring_to_UTF8(NULL, 0, &buffer_length, sourct_string, -1, &error_from_i18n);
+ u_strToUTF8(NULL, 0, &buffer_length, source_string, -1, &error_from_icu);
+ if (buffer_length == 0) {
+ _ERR("error form icu[%d][%s]", error_from_icu, u_errorName(error_from_icu));
+ goto OUT;
+ }
+ /* NOTE:
+ * Calling u_strToUTF8 with 0 capacity always causes U_BUFFER_OVERFLOW_ERROR.
+ * When u_strFromUTF8 is succeeded, u_strFromUTF8 doesn't change error_from_icu.
+ * It means error_from_icu have U_BUFFER_OVERFLOW_ERROR even though there is no problem.
+ * So, error_from_icu should be reset as U_ZERO_ERROR here */
+ error_from_icu = U_ZERO_ERROR;
converted_string = malloc((buffer_length + 2) * sizeof(char));
if (converted_string == NULL) {
}
/* Convert to UTF8 */
- i18n_ustring_to_UTF8(converted_string, buffer_length + 1, &buffer_length, sourct_string, -1, &error_from_i18n);
- if (error_from_i18n != I18N_ERROR_NONE) {
- _ERR("i18n_ustring_to_UTF8 returns [%d]", error_from_i18n);
+ u_strToUTF8(converted_string, buffer_length + 1, &buffer_length, source_string, -1, &error_from_icu);
+ if (U_FAILURE(error_from_icu)) {
+ _ERR("error form icu[%d][%s]", error_from_icu, u_errorName(error_from_icu));
free(converted_string);
converted_string = NULL;
goto OUT;
}
+
converted_string[buffer_length] = '\0';
OUT:
}
priv->content_type = _get_content_type(mi);
+ if (priv->content_type >= E_CONTENT_MAX) {
+ _ERR("content_type[%d] exceeded E_CONTENT_MAX", priv->content_type);
+ return false;
+ }
_update_menu_area(priv);
_update_favorite_area(priv);
type = _get_layout_type(info);
+ if (type >= E_LAYOUT_MAX) {
+ _ERR("type[%d] exceeded E_LAYOUT_MAX", type);
+ return;
+ }
+
_set_current_layout(priv, type);
layoutmgr_update_layout(priv->lmgr, g_menu_item[type].layout_id,
#include "util/playermgr.h"
#include "util/progressbar.h"
#include "util/util.h"
+#include "data/mediadata.h"
+
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
{
struct _priv *priv;
struct view_update_data *vdata;
+ struct view_update_data temp_update_data;
if (!view_data || !data) {
_ERR("failed to get view data");
}
priv = view_data;
- vdata = data;
+
+ if (update_type == UPDATE_CONTENT_WITH_MEDIA_ID) {
+ app_media *am = NULL;
+
+ am = mediadata_get_app_media_by_file_path(data);
+ temp_update_data.list = eina_list_append(NULL, am);
+ temp_update_data.index = 0;
+ temp_update_data.id = NULL;
+ vdata = &temp_update_data;
+ update_type = UPDATE_CONTENT;
+ } else {
+ vdata = data;
+ }
switch (update_type) {
case UPDATE_CONTENT:
#include "util/playermgr.h"
#include "util/progressbar.h"
#include "util/util.h"
+#include "data/mediadata.h"
#define STYLE_VIEWER_BTN "viewer_btn"
#define PART_VIEWER_BTN "control_btn"
{
struct _priv *priv;
struct view_update_data *vdata;
+ struct view_update_data temp_update_data;
if (!view_data) {
_ERR("failed to get view data");
}
priv = view_data;
- vdata = data;
+
+ if (update_type == UPDATE_CONTENT_WITH_MEDIA_ID) {
+ app_media *am = NULL;
+ am = mediadata_get_app_media_by_file_path(data);
+ temp_update_data.list = eina_list_append(NULL, am);
+ temp_update_data.index = 0;
+ temp_update_data.id = NULL;
+ vdata = &temp_update_data;
+ update_type = UPDATE_CONTENT;
+ } else {
+ vdata = data;
+ }
switch (update_type) {
case UPDATE_CONTENT: