extra: refactor site creation
extra_private has grown quite big so extra_util.h is now a seperated header.
This commit is contained in:
parent
890e1b0558
commit
4cdeff4506
|
@ -132,17 +132,10 @@ _item_selected(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
|
||||||
_show_tooltip(elm_object_item_data_get(it));
|
_show_tooltip(elm_object_item_data_get(it));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Extra_Ui_Site_Template background_site = {
|
||||||
static Extra_Ui_Site_Template temp = {
|
|
||||||
extra_backgrounds_list,
|
extra_backgrounds_list,
|
||||||
"thumb",
|
"thumb",
|
||||||
_content_basic_get,
|
_content_basic_get,
|
||||||
_text_basic_get,
|
_text_basic_get,
|
||||||
_item_selected,
|
_item_selected,
|
||||||
};
|
};
|
||||||
|
|
||||||
Evas_Object*
|
|
||||||
extra_background_selector_create(void)
|
|
||||||
{
|
|
||||||
return extra_ui_site_add(&temp);
|
|
||||||
}
|
|
||||||
|
|
|
@ -48,10 +48,10 @@ _extra_win_sync_done_cb(void *data EINA_UNUSED)
|
||||||
evas_object_size_hint_align_set(table, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
evas_object_size_hint_align_set(table, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
evas_object_show(table);
|
evas_object_show(table);
|
||||||
|
|
||||||
_ui.background_selector = extra_background_selector_create();
|
_ui.background_selector = extra_ui_site_add(&background_site);
|
||||||
elm_table_pack(table, _ui.background_selector, 0, 1, 1, 1);
|
elm_table_pack(table, _ui.background_selector, 0, 1, 1, 1);
|
||||||
|
|
||||||
_ui.theme_selector = extra_theme_selector_create();
|
_ui.theme_selector = extra_ui_site_add(&theme_site);
|
||||||
elm_table_pack(table, _ui.theme_selector, 0, 1, 1, 1);
|
elm_table_pack(table, _ui.theme_selector, 0, 1, 1, 1);
|
||||||
|
|
||||||
segcontrol = elm_segment_control_add(table);
|
segcontrol = elm_segment_control_add(table);
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
# define EXTRA_PRIVATE_H_
|
# define EXTRA_PRIVATE_H_
|
||||||
|
|
||||||
#include "../lib/extra.h"
|
#include "../lib/extra.h"
|
||||||
|
#include "extra_util.h"
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Evas_Object *win;
|
Evas_Object *win;
|
||||||
|
@ -11,36 +12,7 @@ typedef struct {
|
||||||
} Ui;
|
} Ui;
|
||||||
|
|
||||||
extern Ui _ui;
|
extern Ui _ui;
|
||||||
|
extern Extra_Ui_Site_Template theme_site;
|
||||||
|
extern Extra_Ui_Site_Template background_site;
|
||||||
|
|
||||||
Evas_Object* extra_theme_selector_create(void);
|
|
||||||
Evas_Object* extra_background_selector_create(void);
|
|
||||||
|
|
||||||
void extra_ui_theme_ask_for_default(Extra_Theme *theme);
|
|
||||||
Extra_Progress* extra_ui_progress_popup_show(const char *title, Extra_Done_Cb done, void *data);
|
|
||||||
|
|
||||||
typedef char *(Extra_ui_preview_get)(void *obj);
|
|
||||||
typedef Extra_Request *(Extra_ui_preview_download)(Extra_Progress *progress, void *obj);
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
Extra_ui_preview_get *preview_get;
|
|
||||||
Extra_ui_preview_download *preview_download;
|
|
||||||
} Extra_Ui_Small_Preview_Accessor;
|
|
||||||
|
|
||||||
Evas_Object* extra_ui_small_preview_new(Extra_Ui_Small_Preview_Accessor acc, Evas_Object *par, void *data);
|
|
||||||
Evas_Object* extra_ui_base_object_detail(void *real_obj, Extra_Base_Object *obj, Extra_Ui_Small_Preview_Accessor acc, Evas_Object *par);
|
|
||||||
void extra_ui_details_window_show(Evas_Object *content);
|
|
||||||
void extra_ui_fullscreen_preview(char *path);
|
|
||||||
void extra_ui_show_popup_toolbar(Evas_Object *content);
|
|
||||||
void gengrid_reapply_state(Evas_Object *grid);
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
Eina_List* (*list)(void);
|
|
||||||
const char *item_style;
|
|
||||||
Elm_Gen_Item_Content_Get_Cb content;
|
|
||||||
Elm_Gen_Item_Text_Get_Cb text;
|
|
||||||
Evas_Smart_Cb selected;
|
|
||||||
} Extra_Ui_Site_Template;
|
|
||||||
|
|
||||||
Evas_Object* extra_ui_site_add(Extra_Ui_Site_Template *site_temp);
|
|
||||||
void extra_ui_site_refill(Evas_Object *site);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -189,20 +189,6 @@ _item_selected(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
|
||||||
extra_ui_show_popup_toolbar(box);
|
extra_ui_show_popup_toolbar(box);
|
||||||
}
|
}
|
||||||
|
|
||||||
static Extra_Ui_Site_Template temp = {
|
|
||||||
extra_themes_list,
|
|
||||||
"thumb",
|
|
||||||
_content_basic_get,
|
|
||||||
_text_basic_get,
|
|
||||||
_item_selected,
|
|
||||||
};
|
|
||||||
|
|
||||||
Evas_Object*
|
|
||||||
extra_theme_selector_create(void)
|
|
||||||
{
|
|
||||||
return extra_ui_site_add(&temp);
|
|
||||||
}
|
|
||||||
|
|
||||||
//==== Small preview
|
//==== Small preview
|
||||||
|
|
||||||
static Evas_Object*
|
static Evas_Object*
|
||||||
|
@ -254,3 +240,13 @@ extra_theme_small_new(Evas_Object *par, Extra_Theme *theme)
|
||||||
}
|
}
|
||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//external accessable
|
||||||
|
|
||||||
|
Extra_Ui_Site_Template theme_site = {
|
||||||
|
extra_themes_list,
|
||||||
|
"thumb",
|
||||||
|
_content_basic_get,
|
||||||
|
_text_basic_get,
|
||||||
|
_item_selected,
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,133 @@
|
||||||
|
#ifndef EXTRA_UTIL_H
|
||||||
|
#define EXTRA_UTIL_H
|
||||||
|
|
||||||
|
#include "../lib/extra.h"
|
||||||
|
|
||||||
|
/* Typedefs for later use */
|
||||||
|
typedef struct _Extra_Ui_Small_Preview_Accessor Extra_Ui_Small_Preview_Accessor;
|
||||||
|
typedef struct _Extra_Ui_Site_Template Extra_Ui_Site_Template;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* General purpose helper functions that displays dialogs / windows / and visual representation
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ask if the given theme should be displayed as default
|
||||||
|
*
|
||||||
|
* @param theme the extra theme to ask for
|
||||||
|
*/
|
||||||
|
void extra_ui_theme_ask_for_default(Extra_Theme *theme);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a popup that shows a popup with a progressbar and a label
|
||||||
|
*
|
||||||
|
* @param title the title to display in the popup
|
||||||
|
* @param down_cb once the progress hit 100% this function is called
|
||||||
|
* @param data the data to pass to down_cb
|
||||||
|
*
|
||||||
|
* @return a extra_progress you can pass this value to other api functions, the
|
||||||
|
progress of this function will then be directly displayed in this object
|
||||||
|
*/
|
||||||
|
Extra_Progress* extra_ui_progress_popup_show(const char *title, Extra_Done_Cb done, void *data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fill a Evas_Object with the data passed in by obj
|
||||||
|
*
|
||||||
|
* @param real_obj the object that gets passed to the accessor functions
|
||||||
|
* @param obj the object that specifies the base data
|
||||||
|
* @param acc the accessor to get preview and download path from a real_obj
|
||||||
|
* @param parent the parent to use when creating the objects
|
||||||
|
*
|
||||||
|
* @return A Elm_Table that contains contents from
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
Evas_Object* extra_ui_base_object_detail(void *real_obj, Extra_Base_Object *obj, Extra_Ui_Small_Preview_Accessor acc, Evas_Object *par);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Display a inwin in the extra window with the given content
|
||||||
|
*
|
||||||
|
* @param content the content to display in the inwin
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void extra_ui_details_window_show(Evas_Object *content);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Preview a path as fullscreen window on the desktop
|
||||||
|
*
|
||||||
|
* @param path the path to load the image from
|
||||||
|
*/
|
||||||
|
void extra_ui_fullscreen_preview(char *path);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Popups a toolbar at the top center of the window with the specified content
|
||||||
|
*
|
||||||
|
* @param content the content to display
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void extra_ui_show_popup_toolbar(Evas_Object *content);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Util function to get the state of the current selected item reapplied
|
||||||
|
*
|
||||||
|
* @param grid a Elm_Gengrid
|
||||||
|
*/
|
||||||
|
void gengrid_reapply_state(Evas_Object *grid);
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Helperfunctions to create a visually representation of a preview or a progressbar
|
||||||
|
* that displays the progress on downloading the preview
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the function returns NULL download is called
|
||||||
|
*/
|
||||||
|
typedef char *(Extra_ui_preview_get)(void *obj);
|
||||||
|
typedef Extra_Request *(Extra_ui_preview_download)(Extra_Progress *progress, void *obj);
|
||||||
|
struct _Extra_Ui_Small_Preview_Accessor{
|
||||||
|
Extra_ui_preview_get *preview_get;
|
||||||
|
Extra_ui_preview_download *preview_download;
|
||||||
|
} ;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a object that previews the visualy component of a object
|
||||||
|
* If a object is not ready to be displayed the data is downloaded, or the progressbar is displayed
|
||||||
|
*
|
||||||
|
* @param acc a struct that defines how to get the preview and download function out of data
|
||||||
|
* @param obj the parent to use
|
||||||
|
* @param data the data to pass to the functions of the acc functions
|
||||||
|
*
|
||||||
|
* @return a evas image that displayes the previews from the data ptr
|
||||||
|
*/
|
||||||
|
Evas_Object* extra_ui_small_preview_new(Extra_Ui_Small_Preview_Accessor acc, Evas_Object *par, void *data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper functions to define a site
|
||||||
|
*
|
||||||
|
* A site is just a gengrid that gets filled with the items returned by the list function pointer
|
||||||
|
*/
|
||||||
|
struct _Extra_Ui_Site_Template{
|
||||||
|
Eina_List* (*list)(void);
|
||||||
|
const char *item_style;
|
||||||
|
Elm_Gen_Item_Content_Get_Cb content;
|
||||||
|
Elm_Gen_Item_Text_Get_Cb text;
|
||||||
|
Evas_Smart_Cb selected;
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a Evas Object out of a site template
|
||||||
|
*
|
||||||
|
* @param site_temp the content is later copied into the internal struct and
|
||||||
|
does not need to be present after this call
|
||||||
|
*/
|
||||||
|
Evas_Object* extra_ui_site_add(Extra_Ui_Site_Template *site_temp);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Call again the list function to renew all items in the previously created site.
|
||||||
|
*
|
||||||
|
* @param site the evas object, returned by extra_ui_site_add
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void extra_ui_site_refill(Evas_Object *site);
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue