Tizen 2.0 Release
[apps/home/settings.git] / include / setting-plugin.h
1 #ifndef _SETTING_PLUGIN_H_
2 #define _SETTING_PLUGIN_H_
3
4 #include <setting.h>
5 #include <Elementary.h>
6 #include <Eina.h>
7
8 #include <libxml/xmlmemory.h>
9 #include <libxml/parser.h>
10
11 #ifndef bool
12 #define bool int
13 #define TRUE 1
14 #define FALSE 0
15 #endif
16
17 #if 1
18 #define PLUGIN_INIT( context ) \
19 {\
20         setting_drawer_list_init();\
21         setting_dbus_handler_init( context );\
22 }
23 #define PLUGIN_FINI \
24 {\
25         setting_dbus_handler_fini();\
26         setting_drawer_list_fini();\
27 }
28 #else
29
30 #define PLUGIN_INIT
31 #define PLUGIN_FINI
32
33 #endif
34
35 extern int setting_dbus_handler_init(void* data);
36 extern int setting_dbus_handler_fini(void);
37 extern void setting_drawer_list_init();
38 extern void setting_drawer_list_fini();
39
40 typedef void* (*drawer_fp)(void *data, xmlNode *xmlObj);
41
42 // draw handler
43 typedef struct
44 {
45         const char* type;                       // ui type
46         drawer_fp draw;
47 } Object_Drawer;
48
49 // draw handler
50 typedef struct
51 {
52         xmlDocPtr doc;
53         xmlNode *root;
54
55         const char *cfg_file;
56         //Evas_Object *win_get;
57         Evas_Object *ly_main;
58         Evas_Object *scroller;
59         Evas_Object *navi_bar;
60 } Draw_Data;
61
62 typedef struct PluginNode PluginNode;
63
64
65 struct PluginNode
66 {
67         char* plugin_path;
68         Draw_Data *pd;
69         Eina_Hash *ui_list;     // UI element to be udpated
70 };
71
72 extern PluginNode* setting_plugin_create();
73 extern bool setting_plugin_load(PluginNode* context, const char *cfg_file);
74 extern void setting_plugin_destroy(PluginNode* node);
75
76 #endif //_SETTING_PLUGIN_H_
77