diff options
Diffstat (limited to 'src/include/mf-ug-fs-util.h')
-rwxr-xr-x | src/include/mf-ug-fs-util.h | 257 |
1 files changed, 257 insertions, 0 deletions
diff --git a/src/include/mf-ug-fs-util.h b/src/include/mf-ug-fs-util.h new file mode 100755 index 0000000..1e3e08f --- /dev/null +++ b/src/include/mf-ug-fs-util.h @@ -0,0 +1,257 @@ +/* + * 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 __DEF_MF_UG_FS_UTIL_H_ +#define __DEF_MF_UG_FS_UTIL_H_ + +#include <stdio.h> +#include <stdbool.h> +#include <string.h> +#include <stdlib.h> +#include <dirent.h> +#include <sys/stat.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <linux/fs.h> +#include <Eina.h> + +#include <Elementary.h> +#include <visual-svc.h> +#include <media-svc.h> + +#include "mf-ug-dlog.h" + + +/* File system related value definition */ +#define FILE_EXT_LEN_MAX 8 +#define MYFILE_DIR_PATH_LEN_MAX 4096 +#define MYFILE_FILE_NAME_LEN_MAX 256 +#define MYFILE_FILE_PATH_LEN_MAX MYFILE_DIR_PATH_LEN_MAX + MYFILE_FILE_NAME_LEN_MAX + + +/* File system related String definition */ +#define PHONE_FOLDER "/opt/media" +#define MEMORY_FOLDER "/opt/storage/sdcard" +#define DEBUG_FOLDER "SLP_debug" + +#define MYFILE_NAME_PATTERN "[\\:;*\"<>|?/]" + +#define IMAGE_AND_VIDEO "Images and videos" +#define SOUND_AND_MUSIC "Sounds and music" +#define DOWNLOADS "Downloads" +#define CAMERA_SHOTS "Camera shots" + + +#define WALLPAPER "Wallpapers" +#define MY_PHOTO_CLIPS "My photo clips" +#define MY_ALBUM "My album" /*/_("IDS_MF_BODY_ACCESS_MORE_MY_ALBUM") */ +#define MY_VIDEO_CLIPS "My video clips" /*/_("IDS_MF_BODY_MY_VIDEO_CLIPS") */ + +#define FM_RADIO "FM Radio" /*/dgettext("sys_string", "IDS_COM_HEADER_FMRADIO") */ +#define MUSIC "Music" /*/_("IDS_MF_BODY_MUSIC") */ +#define RINGTONES "Ringtones" +#define VOICE_RECORDER "Voice recorder" /*/dgettext("sys_string", "IDS_COM_BODY_VOICE_RECORDER") */ +#define ALERTS "Alerts" +#define OTHERS "Others" /*/dgettext("sys_string","IDS_COM_BODY_OTHERS") */ + +/* File system define default folder */ + +/* compile option */ +#define UG_DEBUG_FOLDER_OPTION + +#ifndef UG_ICON_PATH +#define UG_ICON_PATH "/opt/ug/res/images/ug-myfile-efl" +#endif + +#ifndef UG_DEFAULT_ICON +#define UG_DEFAULT_ICON UG_ICON_PATH"/60_myfiles_file_etc.png" +#endif + +#define UG_ICON_FOLDER UG_ICON_PATH"/47_myfiles_icon_folder.png" +#define UG_ICON_IMAGE UG_ICON_PATH"/60_myfiles_icon_images.png" +#define UG_ICON_VIDEO UG_ICON_PATH"/47_myfiles_icon_video.png" +#define UG_ICON_MUSIC UG_ICON_PATH"/47_myfiles_icon_music.png" +#define UG_ICON_SOUND UG_ICON_PATH"/60_myfiles_icon_music_default.png" +#define UG_ICON_PDF UG_ICON_PATH"/47_myfiles_icon_pdf.png" +#define UG_ICON_DOC UG_ICON_PATH"/47_myfiles_icon_word.png" +#define UG_ICON_PPT UG_ICON_PATH"/47_myfiles_icon_ppt.png" +#define UG_ICON_EXCEL UG_ICON_PATH"/47_myfiles_icon_excel.png" +#define UG_ICON_VOICE UG_ICON_PATH"/60_myfiles_file_amr.png" +#define UG_ICON_HTML UG_ICON_PATH"/47_myfiles_icon_html.png" +#define UG_ICON_FLASH UG_ICON_PATH"/47_myfiles_icon_swf.png" +#define UG_ICON_TXT UG_ICON_PATH"/47_myfiles_icon_text.png" +#define UG_ICON_VCONTACT UG_ICON_PATH"/60_myfiles_icon_vcard.png" +#define UG_ICON_VCALENDAR UG_ICON_PATH"/60_myfiles_icon_vcalender.png" +#define UG_ICON_VNOTE UG_ICON_PATH"/60_myfiles_icon_vText.png" +#define UG_ICON_RSS UG_ICON_PATH"/47_myfiles_icon_rss.png" +#define UG_ICON_JAVA UG_ICON_PATH"/60_myfiles_icon_java.png" +#define UG_ICON_MEMORY_SUB UG_ICON_PATH"/60_myfiles_memorycard_sub.png" +#define UG_ICON_MUSIC_PLAY UG_ICON_PATH"/34_control_play.png" +#define UG_ICON_MUSIC_PAUSE UG_ICON_PATH"/34_control_pause.png" +#define UG_ICON_MUSIC_PLAY_WHITE UG_ICON_PATH"/47_myfiles_icon_play_focus.png" +#define UG_ICON_MUSIC_PAUSE_WHITE UG_ICON_PATH"/47_myfiles_icon_pause_focus.png" +#define UG_ICON_UPPER UG_ICON_PATH"/47_myfiles_icon_upper_folder_white_theme.png" + +#define UG_ICON_FOLDER_CREATED UG_ICON_PATH"/47_myfiles_icon_folder_created.png" +#define UG_ICON_FOLDER_SINCED UG_ICON_PATH"/47_myfiles_icon_folder_sinced.png" +#define UG_ICON_PHONE UG_ICON_PATH"/60_myfiles_phone.png" +#define UG_ICON_MEMORY UG_ICON_PATH"/60_myfiles_memorycard.png" + +typedef enum _mf_ug_fs_file_type mf_ug_fs_file_type; + +enum _mf_ug_fs_file_type { + UG_FILE_TYPE_NONE = 0, + UG_FILE_TYPE_DIR, /**< Folder category */ + UG_FILE_TYPE_FILE, /**< File category */ + UG_FILE_TYPE_IMAGE, /**< Image category */ + UG_FILE_TYPE_VIDEO, /**< Video category */ + UG_FILE_TYPE_MUSIC, /**< Music category */ + UG_FILE_TYPE_SOUND, /**< Sound category */ + UG_FILE_TYPE_PDF, /**< Pdf category */ + UG_FILE_TYPE_DOC, /**< Word category */ + UG_FILE_TYPE_PPT, /**< Powerpoint category */ + UG_FILE_TYPE_EXCEL, /**< Excel category */ + UG_FILE_TYPE_VOICE, /**< Voice category */ + UG_FILE_TYPE_HTML, /**< Html category */ + UG_FILE_TYPE_FLASH, /**< Flash category */ + UG_FILE_TYPE_GAME, /**< Game category */ + UG_FILE_TYPE_APP, /**< Application category */ + UG_FILE_TYPE_THEME, /**< Theme category */ + UG_FILE_TYPE_TXT, /**< Txt category */ + UG_FILE_TYPE_VCONTACT, /**< Vcontact category */ + UG_FILE_TYPE_VCALENDAR, /**< Vcalendar category */ + UG_FILE_TYPE_VNOTE, /**< Vnote category */ + UG_FILE_TYPE_VBOOKMARK, /**< Vbookmark category */ + UG_FILE_TYPE_VIDEO_PROJECT, /**< Video editor project category */ + UG_FILE_TYPE_RADIO_RECORDED, /**< radio recorded clips category */ + UG_FILE_TYPE_MOVIE_MAKER, /**< Movie maker project category */ + UG_FILE_TYPE_SVG, /**< Svg category */ + UG_FILE_TYPE_RSS, /**< Rss reader file, *.opml */ + UG_FILE_TYPE_CERTIFICATION, /**< certification file, *.pem */ + UG_FILE_TYPE_JAVA, /**< java file, *.jad, *.jar */ + UG_FILE_TYPE_WGT, /**< wrt , *.wgt, *.wgt */ + UG_FILE_TYPE_ETC, /**< Other files category */ + UG_FILE_TYPE_MAX +}; + +typedef enum _mf_ug_iter_category_filter_t mf_ug_iter_category_filter_t; +enum _mf_ug_iter_category_filter_t { + UG_FILTER_CATEGORY_NONE = 0x00000000, /**< Default */ + UG_FILTER_CATEGORY_IMAGE = 0x00000001, /**< Image category */ + UG_FILTER_CATEGORY_VIDEO = 0x00000002, /**< Video category */ + UG_FILTER_CATEGORY_SOUND = 0x00000004, /**< Sound category */ + UG_FILTER_CATEGORY_VOICE = 0x00000008, /**< Voice category */ + UG_FILTER_CATEGORY_MUSIC = 0x00000010, /**< Music category */ + UG_FILTER_CATEGORY_HTML = 0x00000020, /**< Html category */ + UG_FILTER_CATEGORY_FLASH = 0x00000040, /**< Flash category */ + UG_FILTER_CATEGORY_GAME = 0x00000080, /**< Game category */ + UG_FILTER_CATEGORY_APP = 0x00000100, /**< Application category */ + UG_FILTER_CATEGORY_THEME = 0x00000200, /**< Theme category */ + UG_FILTER_CATEGORY_DOC = 0x00000400, /**< Word category */ + UG_FILTER_CATEGORY_EXCEL = 0x00000800, /**< Excel category */ + UG_FILTER_CATEGORY_PPT = 0x00001000, /**< Powerpoint category */ + UG_FILTER_CATEGORY_PDF = 0x00002000, /**< Pdf category */ + UG_FILTER_CATEGORY_TXT = 0x00004000, /**< Txt category */ + UG_FILTER_CATEGORY_VCONTACT = 0x00008000, /**< Vcontact category */ + UG_FILTER_CATEGORY_VCALENDAR = 0x00010000, /**< Vcalendar category */ + UG_FILTER_CATEGORY_VNOTE = 0x00020000, /**< Vnote category */ + UG_FILTER_CATEGORY_VBOOKMARK = 0x00040000, /**< Vbookmark category */ + UG_FILTER_CATEGORY_VIDEO_PROJECT = 0x00080000, /**< Video editor project category */ + UG_FILTER_CATEGORY_SVG = 0x00100000, /**< SVG category */ + UG_FILTER_CATEGORY_RSS = 0x00200000, /**< RSS category */ + UG_FILTER_CATEGORY_ETC = 0x00400000, /**< Other files category */ + +}; + +typedef enum _mf_ug_storage_type mf_ug_storage_type; +enum _mf_ug_storage_type { + MF_UG_NONE, + MF_UG_PHONE, + MF_UG_MMC, + MF_UG_MAX +}; + + +/* File operation error check options definition */ +#define MF_ERROR_CHECK_SRC_ARG_VALID 0x0001 +#define MF_ERROR_CHECK_SRC_EXIST 0x0002 +#define MF_ERROR_CHECK_SRC_PATH_VALID 0x0004 + +/* File system error definition */ +#define MF_ERROR_MASKL16 0xFFFF + +#define MF_ERROR_SET(X) (X & MF_ERROR_MASKL16) + +#define MID_CONTENTS_MGR_ERROR 0 + +#define MYFILE_ERR_NONE (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x00)) /**< No error */ + +/*/1-10*/ +#define MYFILE_ERR_SRC_ARG_INVALID (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x01)) /**< invalid src argument */ +#define MYFILE_ERR_DST_ARG_INVALID (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x02)) /**< invalid dst argument */ +#define MYFILE_ERR_DIR_OPEN_FAIL (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x03)) /**< exception of dir open*/ +#define MYFILE_ERR_INVALID_DIR_PATH (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x04)) /**< exception of invalid dir path */ +#define MYFILE_ERR_INVALID_FILE_NAME (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x05)) /**< exception of invalid file name */ +#define MYFILE_ERR_INVALID_FILE_PATH (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x06)) /**< exception of invalid file path */ +#define MYFILE_ERR_SRC_NOT_EXIST (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x08)) /**< source not found */ +#define MYFILE_ERR_STORAGE_TYPE_ERROR (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x09)) /**< storage type error */ +#define MYFILE_ERR_EXT_GET_ERROR (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x0a)) /**< get ext type failed */ +#define MYFILE_ERR_GET_STAT_FAIL (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x0b)) /**< get stat failed */ +#define MYFILE_ERR_GET_CATEGORY_FAIL (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x0c)) /**< get file category failed */ +#define MYFILE_ERR_GET_VCONF_FAIL (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x0d)) /**< get vconf value failed */ +#define MYFILE_ERR_INVALID_ARG (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x0e)) /**< argument of function is not valid */ +#define MYFILE_ERR_ALLOCATE_FAIL (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x0f)) +#define MYFILE_ERR_LIST_PLAY_FAIL (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x10)) +#define MYFILE_ERR_INVALID_PATH (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x11)) /**< invalid path string */ +#define MYFILE_ERR_GET_THUMBNAIL_FAILED (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x12)) /**<get thumbnail failed */ +#define MYFILE_ERR_UNKNOW_ERROR (MID_CONTENTS_MGR_ERROR - MF_ERROR_SET(0x13)) /**<unknow error */ +/* File system related callback definition */ + +typedef struct _ugFsNodeInfo ugFsNodeInfo; +struct _ugFsNodeInfo { + char path[MYFILE_DIR_PATH_LEN_MAX]; + char name[MYFILE_FILE_NAME_LEN_MAX]; + time_t date; + mf_ug_fs_file_type type; + char ext[FILE_EXT_LEN_MAX]; + unsigned int size; +}; + + +/********** File Attribute Related **********/ +int mf_ug_file_attr_get_file_stat(const char *filename, ugFsNodeInfo ** node); + +int mf_ug_file_attr_get_file_category(const char *filepath, mf_ug_fs_file_type * category); +int mf_ug_file_attr_is_dir(const char *filepath); +int mf_ug_file_attr_get_store_type_by_full(const char *filepath, mf_ug_storage_type * store_type); +int mf_ug_file_attr_get_file_ext(const char *filepath, char *file_ext); +int mf_ug_file_attr_is_right_dir_path(const char *dir_path); +int mf_ug_file_attr_is_right_file_path(const char *file_path); + +/********** File Operation Related **********/ +int mf_ug_fs_oper_read_dir(const char *path, Eina_List **dir_list, Eina_List **file_list); +int mf_ug_fs_oper_list_filter(Eina_List *in_list, Eina_List **out_list, int option); +int mf_ug_fs_oper_list_filter_by_extension(Eina_List *in_list, Eina_List **out_list, char *ext); +char *mf_ug_file_attr_get_file_icon(MediaSvcHandle *handle, const char *file_path, int *error_code); +int mf_ug_file_attr_is_system_dir(char *fullpath, bool * result); +mf_ug_fs_file_type mf_ug_file_attr_get_file_type_by_mime(const char *file_path); + +#endif |