311 lines
11 KiB
C
311 lines
11 KiB
C
#include "elm_app_server_eet.h"
|
|
|
|
struct _Elm_App_Server_View_Props {
|
|
const char * id;
|
|
const char * title;
|
|
const char * icon_name;
|
|
int new_events;
|
|
char progress;
|
|
};
|
|
|
|
struct _Elm_App_Server_Views_Eet {
|
|
unsigned int version;
|
|
Eina_List * views_entries;
|
|
const char *__eet_filename;
|
|
};
|
|
|
|
static const char ELM_APP_SERVER_VIEWS_EET_ENTRY[] = "elm_app_server_views_eet";
|
|
|
|
static Eet_Data_Descriptor *_elm_app_server_view_props_descriptor = NULL;
|
|
static Eet_Data_Descriptor *_elm_app_server_views_eet_descriptor = NULL;
|
|
|
|
static inline void
|
|
_elm_app_server_view_props_init(void)
|
|
{
|
|
Eet_Data_Descriptor_Class eddc;
|
|
|
|
if (_elm_app_server_view_props_descriptor) return;
|
|
|
|
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Elm_App_Server_View_Props);
|
|
_elm_app_server_view_props_descriptor = eet_data_descriptor_stream_new(&eddc);
|
|
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_elm_app_server_view_props_descriptor, Elm_App_Server_View_Props, "id", id, EET_T_STRING);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_elm_app_server_view_props_descriptor, Elm_App_Server_View_Props, "title", title, EET_T_STRING);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_elm_app_server_view_props_descriptor, Elm_App_Server_View_Props, "icon_name", icon_name, EET_T_STRING);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_elm_app_server_view_props_descriptor, Elm_App_Server_View_Props, "new_events", new_events, EET_T_INT);
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_elm_app_server_view_props_descriptor, Elm_App_Server_View_Props, "progress", progress, EET_T_CHAR);
|
|
}
|
|
|
|
static inline void
|
|
_elm_app_server_view_props_shutdown(void)
|
|
{
|
|
if (!_elm_app_server_view_props_descriptor) return;
|
|
eet_data_descriptor_free(_elm_app_server_view_props_descriptor);
|
|
_elm_app_server_view_props_descriptor = NULL;
|
|
}
|
|
|
|
Elm_App_Server_View_Props *
|
|
elm_app_server_view_props_new(const char * id, const char * title, const char * icon_name, int new_events, char progress)
|
|
{
|
|
Elm_App_Server_View_Props *elm_app_server_view_props = calloc(1, sizeof(Elm_App_Server_View_Props));
|
|
|
|
if (!elm_app_server_view_props)
|
|
{
|
|
fprintf(stderr, "ERROR: could not calloc Elm_App_Server_View_Props\n");
|
|
return NULL;
|
|
}
|
|
|
|
elm_app_server_view_props->id = eina_stringshare_add(id ? id : "");
|
|
elm_app_server_view_props->title = eina_stringshare_add(title ? title : "");
|
|
elm_app_server_view_props->icon_name = eina_stringshare_add(icon_name ? icon_name : "");
|
|
elm_app_server_view_props->new_events = new_events;
|
|
elm_app_server_view_props->progress = progress;
|
|
|
|
return elm_app_server_view_props;
|
|
}
|
|
|
|
void
|
|
elm_app_server_view_props_free(Elm_App_Server_View_Props *elm_app_server_view_props)
|
|
{
|
|
eina_stringshare_del(elm_app_server_view_props->id);
|
|
eina_stringshare_del(elm_app_server_view_props->title);
|
|
eina_stringshare_del(elm_app_server_view_props->icon_name);
|
|
free(elm_app_server_view_props);
|
|
}
|
|
|
|
inline const char *
|
|
elm_app_server_view_props_id_get(const Elm_App_Server_View_Props *elm_app_server_view_props)
|
|
{
|
|
return elm_app_server_view_props->id;
|
|
}
|
|
|
|
inline void
|
|
elm_app_server_view_props_id_set(Elm_App_Server_View_Props *elm_app_server_view_props, const char *id)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(elm_app_server_view_props);
|
|
eina_stringshare_replace(&(elm_app_server_view_props->id), id);
|
|
}
|
|
|
|
inline const char *
|
|
elm_app_server_view_props_title_get(const Elm_App_Server_View_Props *elm_app_server_view_props)
|
|
{
|
|
return elm_app_server_view_props->title;
|
|
}
|
|
|
|
inline void
|
|
elm_app_server_view_props_title_set(Elm_App_Server_View_Props *elm_app_server_view_props, const char *title)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(elm_app_server_view_props);
|
|
eina_stringshare_replace(&(elm_app_server_view_props->title), title);
|
|
}
|
|
|
|
inline const char *
|
|
elm_app_server_view_props_icon_name_get(const Elm_App_Server_View_Props *elm_app_server_view_props)
|
|
{
|
|
return elm_app_server_view_props->icon_name;
|
|
}
|
|
|
|
inline void
|
|
elm_app_server_view_props_icon_name_set(Elm_App_Server_View_Props *elm_app_server_view_props, const char *icon_name)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(elm_app_server_view_props);
|
|
eina_stringshare_replace(&(elm_app_server_view_props->icon_name), icon_name);
|
|
}
|
|
|
|
inline int
|
|
elm_app_server_view_props_new_events_get(const Elm_App_Server_View_Props *elm_app_server_view_props)
|
|
{
|
|
return elm_app_server_view_props->new_events;
|
|
}
|
|
|
|
inline void
|
|
elm_app_server_view_props_new_events_set(Elm_App_Server_View_Props *elm_app_server_view_props, int new_events)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(elm_app_server_view_props);
|
|
elm_app_server_view_props->new_events = new_events;
|
|
}
|
|
|
|
inline char
|
|
elm_app_server_view_props_progress_get(const Elm_App_Server_View_Props *elm_app_server_view_props)
|
|
{
|
|
return elm_app_server_view_props->progress;
|
|
}
|
|
|
|
inline void
|
|
elm_app_server_view_props_progress_set(Elm_App_Server_View_Props *elm_app_server_view_props, char progress)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(elm_app_server_view_props);
|
|
elm_app_server_view_props->progress = progress;
|
|
}
|
|
|
|
static inline void
|
|
_elm_app_server_views_eet_init(void)
|
|
{
|
|
Eet_Data_Descriptor_Class eddc;
|
|
|
|
if (_elm_app_server_views_eet_descriptor) return;
|
|
|
|
EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eddc, Elm_App_Server_Views_Eet);
|
|
_elm_app_server_views_eet_descriptor = eet_data_descriptor_stream_new(&eddc);
|
|
|
|
EET_DATA_DESCRIPTOR_ADD_BASIC(_elm_app_server_views_eet_descriptor, Elm_App_Server_Views_Eet, "version", version, EET_T_UINT);
|
|
EET_DATA_DESCRIPTOR_ADD_LIST(_elm_app_server_views_eet_descriptor, Elm_App_Server_Views_Eet, "views_entries", views_entries, _elm_app_server_view_props_descriptor);
|
|
}
|
|
|
|
static inline void
|
|
_elm_app_server_views_eet_shutdown(void)
|
|
{
|
|
if (!_elm_app_server_views_eet_descriptor) return;
|
|
eet_data_descriptor_free(_elm_app_server_views_eet_descriptor);
|
|
_elm_app_server_views_eet_descriptor = NULL;
|
|
}
|
|
|
|
Elm_App_Server_Views_Eet *
|
|
elm_app_server_views_eet_new(unsigned int version, Eina_List * views_entries)
|
|
{
|
|
Elm_App_Server_Views_Eet *elm_app_server_views_eet = calloc(1, sizeof(Elm_App_Server_Views_Eet));
|
|
|
|
if (!elm_app_server_views_eet)
|
|
{
|
|
fprintf(stderr, "ERROR: could not calloc Elm_App_Server_Views_Eet\n");
|
|
return NULL;
|
|
}
|
|
|
|
elm_app_server_views_eet->version = version;
|
|
elm_app_server_views_eet->views_entries = views_entries;
|
|
|
|
return elm_app_server_views_eet;
|
|
}
|
|
|
|
void
|
|
elm_app_server_views_eet_free(Elm_App_Server_Views_Eet *elm_app_server_views_eet)
|
|
{
|
|
if (elm_app_server_views_eet->views_entries)
|
|
{
|
|
Elm_App_Server_View_Props *views_entries_elem;
|
|
EINA_LIST_FREE(elm_app_server_views_eet->views_entries, views_entries_elem)
|
|
elm_app_server_view_props_free(views_entries_elem);
|
|
}
|
|
free(elm_app_server_views_eet);
|
|
}
|
|
|
|
inline unsigned int
|
|
elm_app_server_views_eet_version_get(const Elm_App_Server_Views_Eet *elm_app_server_views_eet)
|
|
{
|
|
return elm_app_server_views_eet->version;
|
|
}
|
|
|
|
inline void
|
|
elm_app_server_views_eet_version_set(Elm_App_Server_Views_Eet *elm_app_server_views_eet, unsigned int version)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(elm_app_server_views_eet);
|
|
elm_app_server_views_eet->version = version;
|
|
}
|
|
|
|
inline void
|
|
elm_app_server_views_eet_views_entries_add(Elm_App_Server_Views_Eet *elm_app_server_views_eet, Elm_App_Server_View_Props *elm_app_server_view_props)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(elm_app_server_views_eet);
|
|
elm_app_server_views_eet->views_entries = eina_list_append(elm_app_server_views_eet->views_entries, elm_app_server_view_props);
|
|
}
|
|
|
|
inline void
|
|
elm_app_server_views_eet_views_entries_del(Elm_App_Server_Views_Eet *elm_app_server_views_eet, Elm_App_Server_View_Props *elm_app_server_view_props)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(elm_app_server_views_eet);
|
|
elm_app_server_views_eet->views_entries = eina_list_remove(elm_app_server_views_eet->views_entries, elm_app_server_view_props);
|
|
}
|
|
|
|
inline Elm_App_Server_View_Props *
|
|
elm_app_server_views_eet_views_entries_get(const Elm_App_Server_Views_Eet *elm_app_server_views_eet, unsigned int nth)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(elm_app_server_views_eet, NULL);
|
|
return eina_list_nth(elm_app_server_views_eet->views_entries, nth);
|
|
}
|
|
|
|
inline unsigned int
|
|
elm_app_server_views_eet_views_entries_count(const Elm_App_Server_Views_Eet *elm_app_server_views_eet)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(elm_app_server_views_eet, 0);
|
|
return eina_list_count(elm_app_server_views_eet->views_entries);
|
|
}
|
|
|
|
void
|
|
elm_app_server_views_eet_views_entries_list_clear(Elm_App_Server_Views_Eet *elm_app_server_views_eet)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(elm_app_server_views_eet);
|
|
Elm_App_Server_View_Props *data;
|
|
EINA_LIST_FREE(elm_app_server_views_eet->views_entries, data) elm_app_server_view_props_free(data);
|
|
}
|
|
|
|
inline Eina_List *
|
|
elm_app_server_views_eet_views_entries_list_get(const Elm_App_Server_Views_Eet *elm_app_server_views_eet)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN_VAL(elm_app_server_views_eet, NULL);
|
|
return elm_app_server_views_eet->views_entries;
|
|
}
|
|
|
|
inline void
|
|
elm_app_server_views_eet_views_entries_list_set(Elm_App_Server_Views_Eet *elm_app_server_views_eet, Eina_List *list)
|
|
{
|
|
EINA_SAFETY_ON_NULL_RETURN(elm_app_server_views_eet);
|
|
elm_app_server_views_eet->views_entries = list;
|
|
}
|
|
|
|
Elm_App_Server_Views_Eet *
|
|
elm_app_server_views_eet_load(const char *filename)
|
|
{
|
|
Elm_App_Server_Views_Eet *elm_app_server_views_eet = NULL;
|
|
Eet_File *ef = eet_open(filename, EET_FILE_MODE_READ);
|
|
if (!ef)
|
|
{
|
|
fprintf(stderr, "ERROR: could not open '%s' for read\n", filename);
|
|
return NULL;
|
|
}
|
|
|
|
elm_app_server_views_eet = eet_data_read(ef, _elm_app_server_views_eet_descriptor, ELM_APP_SERVER_VIEWS_EET_ENTRY);
|
|
if (!elm_app_server_views_eet) goto end;
|
|
elm_app_server_views_eet->__eet_filename = eina_stringshare_add(filename);
|
|
|
|
end:
|
|
eet_close(ef);
|
|
return elm_app_server_views_eet;
|
|
}
|
|
|
|
Eina_Bool
|
|
elm_app_server_views_eet_save(Elm_App_Server_Views_Eet *elm_app_server_views_eet, const char *filename)
|
|
{
|
|
Eet_File *ef;
|
|
Eina_Bool ret;
|
|
|
|
if (filename) eina_stringshare_replace(&(elm_app_server_views_eet->__eet_filename), filename);
|
|
else if (elm_app_server_views_eet->__eet_filename) filename = elm_app_server_views_eet->__eet_filename;
|
|
else return EINA_FALSE;
|
|
|
|
ef = eet_open(filename, EET_FILE_MODE_READ_WRITE);
|
|
if (!ef)
|
|
{
|
|
fprintf(stderr, "ERROR: could not open '%s' for write\n", filename);
|
|
return EINA_FALSE;
|
|
}
|
|
|
|
ret = !!eet_data_write(ef, _elm_app_server_views_eet_descriptor, ELM_APP_SERVER_VIEWS_EET_ENTRY, elm_app_server_views_eet, EINA_TRUE);
|
|
eet_close(ef);
|
|
|
|
return ret;
|
|
}
|
|
|
|
void
|
|
app_server_views_eet_init(void)
|
|
{
|
|
_elm_app_server_view_props_init();
|
|
_elm_app_server_views_eet_init();
|
|
}
|
|
|
|
void
|
|
app_server_views_eet_shutdown(void)
|
|
{
|
|
_elm_app_server_view_props_shutdown();
|
|
_elm_app_server_views_eet_shutdown();
|
|
}
|