extra/src/bin/extra_background_selector.c

144 lines
3.7 KiB
C

#include <Elementary.h>
#include <Elementary_Cursor.h>
#include "extra_private.h"
#include "../lib/extra.h"
static Extra_Ui_Small_Preview_Accessor acc = {
((Extra_ui_preview_get*) extra_background_preview_get),
((Extra_ui_preview_download*) extra_background_preview_download),
};
static void
_background_installed(void *data EINA_UNUSED)
{
/*TODO FIND A WAY TO REMOTE OPEN ENLIGHTENMENT BACKGROUND SELECTOR*/
gengrid_reapply_state(_ui.background_selector);
}
static void
_install_background(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Extra_Background *b = data;
Extra_Progress *p;
p = extra_ui_progress_popup_show(_("Installing background"), _background_installed, b);
extra_background_download(p, b);
}
static void
_uninstall_background(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Extra_Background *b = data;
extra_background_delete(b);
gengrid_reapply_state(_ui.background_selector);
}
static void
_fullscreen_background(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Extra_Background *b = data;
char *path;
path = extra_background_preview_get(b);
if (!path) return;
extra_ui_fullscreen_preview(path);
}
static void
_show_details(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
{
Extra_Background *background = data;
Evas_Object *o;
o = extra_ui_base_object_detail(background, &background->obj, acc, _ui.win);
extra_ui_details_window_show(o);
evas_object_del(_ui.popup_toolbar);
}
static void
_show_tooltip(Extra_Background *b)
{
Evas_Object *box, *o, *icon;
box = elm_box_add(_ui.win);
elm_box_horizontal_set(box, EINA_TRUE);
o = elm_button_add(box);
icon = elm_icon_add(o);
if (extra_background_installed(b))
{
elm_object_text_set(o, _("Uninstall"));
elm_icon_standard_set(icon, "edit-delete");
evas_object_smart_callback_add(o, "clicked", _uninstall_background, b);
}
else
{
elm_object_text_set(o, _("Install"));
elm_icon_standard_set(icon, "emblem-downloads");
evas_object_smart_callback_add(o, "clicked", _install_background, b);
}
elm_object_part_content_set(o, "icon", icon);
elm_box_pack_end(box, o);
evas_object_show(o);
//view-fullscreen
o = elm_button_add(box);
elm_object_text_set(o, _("Show fullscreen"));
evas_object_smart_callback_add(o, "clicked", _fullscreen_background , b);
elm_box_pack_end(box, o);
evas_object_show(o);
icon = elm_icon_add(o);
elm_icon_standard_set(icon, "view-fullscreen");
elm_object_part_content_set(o, "icon", icon);
//show details
o = elm_button_add(box);
evas_object_smart_callback_add(o, "clicked", _show_details, b);
elm_object_text_set(o, _("Show Details"));
evas_object_show(o);
elm_box_pack_end(box, o);
icon = elm_icon_add(o);
elm_icon_standard_set(icon, "document-properties");
elm_object_part_content_set(o, "icon", icon);
extra_ui_show_popup_toolbar(box);
}
static Evas_Object*
_content_basic_get(void *data, Evas_Object *obj, const char *source)
{
if (!strcmp(source, "elm.swallow.end"))
return NULL;
return extra_ui_small_preview_new(acc, obj, data);
}
static char*
_text_basic_get(void *data, Evas_Object *obj EINA_UNUSED, const char *source EINA_UNUSED)
{
Extra_Background *t = data;
return strdup(t->obj.name);
}
static void
_item_selected(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
{
Elm_Widget_Item *it = event_info;
_show_tooltip(elm_object_item_data_get(it));
}
Extra_Ui_Site_Template background_site = {
extra_backgrounds_list,
"thumb",
_content_basic_get,
_text_basic_get,
_item_selected,
};