{NULL, NULL}
};
+static Eina_Error PHOTO_FILE_LOAD_ERROR_GENERIC;
+static Eina_Error PHOTO_FILE_LOAD_ERROR_DOES_NOT_EXIST;
+static Eina_Error PHOTO_FILE_LOAD_ERROR_PERMISSION_DENIED;
+static Eina_Error PHOTO_FILE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED;
+static Eina_Error PHOTO_FILE_LOAD_ERROR_CORRUPT_FILE;
+static Eina_Error PHOTO_FILE_LOAD_ERROR_UNKNOWN_FORMAT;
+
static Eina_Bool _key_action_move(Evas_Object *obj, const char *params);
static Eina_Bool _key_action_zoom(Evas_Object *obj, const char *params);
"http://", "https://", "ftp://"
};
-EOLIAN static Evas_Load_Error
-_elm_photocam_file_set(Eo *obj, Elm_Photocam_Data *sd, const char *file)
+static Evas_Load_Error
+_elm_photocam_file_set_internal(Eo *obj, Elm_Photocam_Data *sd, const char *file)
{
Evas_Load_Error ret = EVAS_LOAD_ERROR_NONE;
unsigned int i;
return ret;
}
-EOLIAN static const char*
-_elm_photocam_file_get(Eo *obj EINA_UNUSED, Elm_Photocam_Data *sd)
+EOLIAN static Eina_Bool
+_elm_photocam_efl_file_file_set(Eo *obj, Elm_Photocam_Data *sd, const char *file, const char *key EINA_UNUSED)
{
- return sd->file;
+ Evas_Load_Error ret = _elm_photocam_file_set_internal(obj, sd, file);
+
+ if (ret == EVAS_LOAD_ERROR_NONE) return EINA_TRUE;
+
+ eina_error_set(
+ ret == EVAS_LOAD_ERROR_DOES_NOT_EXIST ? PHOTO_FILE_LOAD_ERROR_DOES_NOT_EXIST :
+ ret == EVAS_LOAD_ERROR_PERMISSION_DENIED ? PHOTO_FILE_LOAD_ERROR_PERMISSION_DENIED :
+ ret == EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED ? PHOTO_FILE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED :
+ ret == EVAS_LOAD_ERROR_CORRUPT_FILE ? PHOTO_FILE_LOAD_ERROR_CORRUPT_FILE :
+ ret == EVAS_LOAD_ERROR_UNKNOWN_FORMAT ? PHOTO_FILE_LOAD_ERROR_UNKNOWN_FORMAT :
+ PHOTO_FILE_LOAD_ERROR_GENERIC
+ );
+ return EINA_FALSE;
+}
+
+EAPI Evas_Load_Error
+elm_photocam_file_set(Elm_Photocam *obj, const char *file)
+{
+ Eina_Bool ret;
+ if (eo_do_ret(obj, ret, efl_file_set(file, NULL))) return EVAS_LOAD_ERROR_NONE;
+
+ Eina_Error err = eina_error_get();
+ return err == PHOTO_FILE_LOAD_ERROR_DOES_NOT_EXIST ?
+ EVAS_LOAD_ERROR_DOES_NOT_EXIST :
+ err == PHOTO_FILE_LOAD_ERROR_PERMISSION_DENIED ?
+ EVAS_LOAD_ERROR_PERMISSION_DENIED :
+ err == PHOTO_FILE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED ?
+ EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED :
+ err == PHOTO_FILE_LOAD_ERROR_CORRUPT_FILE ?
+ EVAS_LOAD_ERROR_CORRUPT_FILE :
+ err == PHOTO_FILE_LOAD_ERROR_UNKNOWN_FORMAT ?
+ EVAS_LOAD_ERROR_UNKNOWN_FORMAT :
+ EVAS_LOAD_ERROR_GENERIC;
+}
+
+EOLIAN static void
+_elm_photocam_efl_file_file_get(Eo *obj EINA_UNUSED, Elm_Photocam_Data *sd, const char **file, const char **key)
+{
+ if (file) *file = sd->file;
+ if (key) *key = NULL;
+}
+
+EAPI const char*
+elm_photocam_file_get(const Elm_Photocam *obj)
+{
+ const char *ret = NULL;
+ eo_do(obj, efl_file_get(&ret, NULL));
+ return ret;
}
EOLIAN static void
_elm_photocam_class_constructor(Eo_Class *klass)
{
evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
+
+ PHOTO_FILE_LOAD_ERROR_GENERIC = eina_error_msg_static_register("Generic load error");
+ PHOTO_FILE_LOAD_ERROR_DOES_NOT_EXIST = eina_error_msg_static_register("File does not exist");
+ PHOTO_FILE_LOAD_ERROR_PERMISSION_DENIED = eina_error_msg_static_register("Permission denied to an existing file");
+ PHOTO_FILE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = eina_error_msg_static_register("Allocation of resources failure prevented load");
+ PHOTO_FILE_LOAD_ERROR_CORRUPT_FILE = eina_error_msg_static_register("File corrupt (but was detected as a known format)");
+ PHOTO_FILE_LOAD_ERROR_UNKNOWN_FORMAT = eina_error_msg_static_register("File is not a known format");
}
EOLIAN const Elm_Atspi_Action *
class Elm.Photocam (Elm.Widget, Elm_Interface_Scrollable,
- Elm_Interface_Atspi_Widget_Action)
+ Elm_Interface_Atspi_Widget_Action, Efl.File)
{
eo_prefix: elm_obj_photocam;
properties {
bool paused; /*@ The pause state to set */
}
}
- file {
- set {
- /*@
- @brief Set the photo file to be shown
-
- @return The return error (see EVAS_LOAD_ERROR_NONE, EVAS_LOAD_ERROR_GENERIC etc.)
-
- This sets (and shows) the specified file (with a relative or absolute
- path) and will return a load error (same error that
- evas_object_image_load_error_get() will return). The image will change and
- adjust its size at this point and begin a background load process for this
- photo that at some time in the future will be displayed at the full
- quality needed.
-
- @ingroup Photocam */
- return: Evas_Load_Error;
- }
- get {
- /*@
- @brief Returns the path of the current image file
-
- @return Returns the path
-
- @see elm_photocam_file_set()
-
- @ingroup Photocam */
- }
- values {
- const(char)* file; /*@ The photo file */
- }
- }
gesture_enabled {
set {
/*@
Elm.Widget.event;
Elm_Interface_Scrollable.region_bring_in;
Elm_Interface_Atspi_Widget_Action.elm_actions.get;
+ Efl.File.file.set;
+ Efl.File.file.get;
}
events {
clicked;
*/
EAPI void elm_photocam_image_region_bring_in(Evas_Object *obj, int x, int y, int w, int h);
+/**
+ *
+ * @brief Set the photo file to be shown
+ *
+ * @return The return error (see EVAS_LOAD_ERROR_NONE, EVAS_LOAD_ERROR_GENERIC etc.)
+ *
+ * This sets (and shows) the specified file (with a relative or absolute
+ * path) and will return a load error (same error that
+ * evas_object_image_load_error_get() will return). The image will change and
+ * adjust its size at this point and begin a background load process for this
+ * photo that at some time in the future will be displayed at the full
+ * quality needed.
+ *
+ * @ingroup Photocam
+ *
+ * @param[in] file The photo file
+ */
+EAPI Evas_Load_Error elm_photocam_file_set(Evas_Object *obj, const char *file);
+
+/**
+ *
+ * @brief Returns the path of the current image file
+ *
+ * @return Returns the path
+ *
+ * @see elm_photocam_file_set()
+ *
+ * @ingroup Photocam
+ *
+ */
+EAPI const char *elm_photocam_file_get(const Evas_Object *obj);
+
#include "elm_photocam.eo.legacy.h"
\ No newline at end of file