#ifndef _ELM_APP_SERVER_EO_H_
#define _ELM_APP_SERVER_EO_H_

/**

 */
#define ELM_APP_SERVER_CLASS elm_app_server_class_get()

const Eo_Class *elm_app_server_class_get(void) EINA_CONST;

/**
 * @def elm_app_server_constructor
 *
 * No description supplied.
 *
 * @param[in] packageid package of application
 * @param[in] create_view_cb callback to be called when user whants to open some application view
 *
 */
EAPI void  elm_app_server_constructor(const char *packageid, Elm_App_Server_Create_View_Cb create_view_cb);

/**
 * @def elm_app_server_icon_set
 *
 * No description supplied.
 *
 * @param[in] icon title of icon
 *
 */
EAPI void  elm_app_server_icon_set(Eina_Stringshare *icon);

/**
 * @def elm_app_server_icon_get
 *
 * No description supplied.
 *
 *
 */
EAPI Eina_Stringshare * elm_app_server_icon_get(void);

/**
 * @def elm_app_server_views_get
 *
 * Return a iterator with all views of application
 *
 *
 */
EAPI Eina_Iterator * elm_app_server_views_get(void);

/**
 * @def elm_app_server_path_get
 *
 * No description supplied.
 *
 *
 */
EAPI const char * elm_app_server_path_get(void);

/**
 * @def elm_app_server_package_get
 *
 * No description supplied.
 *
 *
 */
EAPI Eina_Stringshare * elm_app_server_package_get(void);

/**
 * @def elm_app_server_pixels_set
 *
 * Set icon to application, using the raw pixels of image.
 *
 * @param[in] w No description supplied.
 * @param[in] h No description supplied.
 * @param[in] has_alpha No description supplied.
 * @param[in] pixels No description supplied.
 *
 */
EAPI void  elm_app_server_pixels_set(unsigned int w, unsigned int h, Eina_Bool has_alpha, const unsigned char *pixels);

/**
 * @def elm_app_server_pixels_get
 *
 * Get application raw icon.
 *
 * @param[out] w No description supplied.
 * @param[out] h No description supplied.
 * @param[out] has_alpha No description supplied.
 * @param[out] pixels No description supplied.
 *
 */
EAPI void  elm_app_server_pixels_get(unsigned int *w, unsigned int *h, Eina_Bool *has_alpha, const unsigned char **pixels);

/**
 * @def elm_app_server_close_all
 *
 * Close all views of application
 *
 *
 */
EAPI void  elm_app_server_close_all(void);

/**
 * @def elm_app_server_view_check
 *
 * If view id is available and unique, return the full DBus object path of view
 *
 * @param[in] id view identifier
 *
 */
EAPI Eina_Bool  elm_app_server_view_check(const char *id);

/**
 * @def elm_app_server_view_add
 *
 * Add a view to elm_app_server. This should only be used if the application open a view that was not requested by create_view_cb.
 *
 * @param[in] view elm_app_server_view
 *
 */
EAPI void  elm_app_server_view_add(Elm_App_Server_View *view);

/**
 * @def elm_app_server_title_set
 *
 * Set a title to application.
 *
 * @param[in] title title of application
 *
 */
EAPI void  elm_app_server_title_set(const char *title);

/**
 * @def elm_app_server_title_get
 *
 * Get title of application
 *
 *
 */
EAPI Eina_Stringshare * elm_app_server_title_get(void);

/**
 * @def elm_app_server_save
 *
 * Save the state of all views
 *
 *
 */
EAPI void  elm_app_server_save(void);

EAPI extern const Eo_Event_Description _ELM_APP_SERVER_EVENT_TERMINATE;

/**
 * Called when application must be terminated.
 */
#define ELM_APP_SERVER_EVENT_TERMINATE (&(_ELM_APP_SERVER_EVENT_TERMINATE))

#endif