ewk_file_chooser.h   [plain text]


/*
    Copyright (C) 2012 Samsung Electronics

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Library General Public License for more details.

    You should have received a copy of the GNU Library General Public License
    along with this library; see the file COPYING.LIB.  If not, write to
    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
    Boston, MA 02110-1301, USA.
*/

/**
 * @file    ewk_file_chooser.h
 * @brief   File Chooser API.
 *
 * File Chooser supports APIs for file selection dialog.
 * This support attributes of file chooser regarding:
 * - allowance of multiple files selection
 * - allowance of upload directory
 * - list of accepted mime types
 * - list of accepted file extensions
 * - list of initial selected file names
 * - capture attribute for HTML media capture
 */

#ifndef ewk_file_chooser_h
#define ewk_file_chooser_h

#include <Eina.h>

#ifdef __cplusplus
extern "C" {
#endif

typedef struct _Ewk_File_Chooser Ewk_File_Chooser;

/**
 * \enum    _Ewk_File_Chooser_Capture_Type
 * @brief   Types of capture attribute of file chooser to support the HTML media capture.
 */
enum _Ewk_File_Chooser_Capture_Type {
    EWK_FILE_CHOOSER_CAPTURE_TYPE_INVALID,
    EWK_FILE_CHOOSER_CAPTURE_TYPE_FILESYSTEM,
    EWK_FILE_CHOOSER_CAPTURE_TYPE_CAMERA,
    EWK_FILE_CHOOSER_CAPTURE_TYPE_CAMCORDER,
    EWK_FILE_CHOOSER_CAPTURE_TYPE_MICROPHONE
};
typedef enum _Ewk_File_Chooser_Capture_Type Ewk_File_Chooser_Capture_Type;

/**
 * Query if multiple files are supported by file chooser.
 *
 * @param f file chooser object.
 *
 * It returns a boolean value which indicates if multiple file is supported or not.
 *
 * @return @c EINA_TRUE on support multiple files or @c EINA_FALSE otherwise.
 */
EAPI Eina_Bool ewk_file_chooser_allows_multiple_files_get(const Ewk_File_Chooser *f);

/**
 * Query if directory upload is supported by file chooser.
 *
 * @param f file chooser object.
 *
 * It returns a boolean value which indicates if directory upload is supported or not.
 *
 * @return @c EINA_TRUE on support directory upload or @c EINA_FALSE otherwise.
 */
EAPI Eina_Bool ewk_file_chooser_allows_directory_upload_get(const Ewk_File_Chooser *f);

/**
 * Returns the list of accepted mimetypes of the file chooser.
 *
 * @param f file chooser object.
 *
 * @return Eina_List of accepted mimetypes on success, or @c NULL on failure,
 *         the Eina_List and its items should be freed after use. Use eina_stringshare_del()
 *         to free the items.
 */
EAPI Eina_List *ewk_file_chooser_accept_mimetypes_get(const Ewk_File_Chooser *f);

/**
 * Returns the list of accepted file extensions of the file chooser.
 *
 * @param f file chooser object.
 *
 * @return @c Eina_List of accepted file extensions on success, or @c NULL on failure,
 *         the Eina_List and its items should be freed after use. Use eina_stringshare_del()
 *         to free the items.
 */
EAPI Eina_List *ewk_file_chooser_accept_file_extentions_get(const Ewk_File_Chooser *f);

/**
 * Returns the list of selected file names of the file chooser.
 *
 * This list indicates previously selected file names of the file chooser.
 * These can be used by initial values of the file dialog.
 *
 * @param f file chooser object.
 *
 * @return @c Eina_List of selected file names on success, or @c NULL on failure,
 *         the Eina_List and its items should be freed after use. Use eina_stringshare_del()
 *         to free the items.
 */
EAPI Eina_List *ewk_file_chooser_selected_files_get(const Ewk_File_Chooser *f);

/**
 * Returns the capture attribute of the file chooser to support HTML media capture.
 *
 * @see http://www.w3.org/TR/html-media-capture/ for the semantics of the capture attribute.
 *
 * @param f file chooser object.
 *
 * @return @c Ewk_File_Chooser_Capture_Type on supporting HTML media capture or
 *         @c EWK_FILE_CHOOSER_CAPTURE_TYPE_INVALID on failure.
 */
EAPI Ewk_File_Chooser_Capture_Type ewk_file_chooser_capture_get(const Ewk_File_Chooser *f);

#ifdef __cplusplus
}
#endif

#endif // ewk_file_chooser_h