add meta image loader+infra for loading from X-AlbumImage metadata tag
This commit is contained in:
parent
762ba11d4d
commit
321c9cfbc6
|
@ -183,6 +183,12 @@ AC_ARG_ENABLE([module-google-image],
|
|||
[want_google_image=$enableval], [])
|
||||
AM_CONDITIONAL([MOD_GOOGLE_IMAGE], [test "x$want_google_image" = "xyes"])
|
||||
|
||||
want_meta=yes
|
||||
AC_ARG_ENABLE([module-meta],
|
||||
[AC_HELP_STRING([--disable-module-meta], [disable meta image module. @<:@default=detect@:>@])],
|
||||
[want_meta=$enableval], [])
|
||||
AM_CONDITIONAL([MOD_META], [test "x$want_meta" = "xyes"])
|
||||
|
||||
########################################
|
||||
|
||||
want_auto_playlist_manager=yes
|
||||
|
@ -277,6 +283,7 @@ Modules:
|
|||
* glyr_gmpc............: $want_glyr_gmpc
|
||||
* glyr.................: $want_glyr
|
||||
* google_image.........: $want_google_image
|
||||
* meta.................: $want_meta
|
||||
* elyr.................: $want_elyr
|
||||
* eet_saver............: $want_eet_saver
|
||||
* eet_loader...........: $want_eet_loader
|
||||
|
|
|
@ -92,6 +92,7 @@ static int empd_song_track = -1;
|
|||
static Eina_Stringshare *empd_song_title = NULL;
|
||||
static Eina_Stringshare *empd_song_artist = NULL;
|
||||
static Eina_Stringshare *empd_song_album = NULL;
|
||||
static Eina_Stringshare *empd_song_albumimage = NULL;
|
||||
static Elm_Object_Item *empd_song_item = NULL;
|
||||
static unsigned int empd_song_length = 0;
|
||||
static unsigned int empd_song_elapsed = 0;
|
||||
|
@ -720,6 +721,7 @@ fetch_req_free(Empc_Fetch_Request_Internal *ireq)
|
|||
eina_stringshare_del(ireq->req.album);
|
||||
eina_stringshare_del(ireq->req.song);
|
||||
eina_stringshare_del(ireq->req.uri);
|
||||
eina_stringshare_del(ireq->req.albumimage);
|
||||
ecore_job_del(ireq->fail_job);
|
||||
E_FREE_LIST(ireq->results, free);
|
||||
E_FREE_LIST(ireq->urls_pending, eina_stringshare_del);
|
||||
|
@ -810,7 +812,7 @@ bg_changed(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *sig
|
|||
}
|
||||
|
||||
static Empc_Fetch_Request *
|
||||
bg_update(int num, Eina_Stringshare *artist, Eina_Stringshare *album, Eina_Stringshare *uri)
|
||||
bg_update(int num, Eina_Stringshare *artist, Eina_Stringshare *album, Eina_Stringshare *uri, Eina_Stringshare *albumimage)
|
||||
{
|
||||
Evas_Object *o;
|
||||
|
||||
|
@ -819,7 +821,7 @@ bg_update(int num, Eina_Stringshare *artist, Eina_Stringshare *album, Eina_Strin
|
|||
{
|
||||
bgselector_clear(o);
|
||||
bgselector_info_set(o, artist, album);
|
||||
return metadata_fetch_begin(EMPC_METADATA_TYPE_IMAGE, o, artist, album, uri, EINA_FALSE, EINA_FALSE, bg_add, NULL);
|
||||
return metadata_fetch_begin(EMPC_METADATA_TYPE_IMAGE, o, artist, album, uri, albumimage, EINA_FALSE, EINA_FALSE, bg_add, NULL);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1046,7 +1048,7 @@ status_update(int state)
|
|||
static int
|
||||
songid_update(int songid)
|
||||
{
|
||||
Eina_Bool artist, album, first = (empd_songid == -1);
|
||||
Eina_Bool artist, album, albumimage, first = (empd_songid == -1);
|
||||
Elm_Object_Item *it, *itp = NULL;
|
||||
Empd_Empdd_Song *so, *sop = NULL;
|
||||
int ret, uid = background_num;
|
||||
|
@ -1069,10 +1071,11 @@ songid_update(int songid)
|
|||
eina_stringshare_refplace(&empd_song_title, so->title);
|
||||
artist = eina_stringshare_refplace(&empd_song_artist, so->artist);
|
||||
album = eina_stringshare_refplace(&empd_song_album, so->album);
|
||||
if (artist || album)
|
||||
albumimage = eina_stringshare_refplace(&empd_song_albumimage, so->albumimage);
|
||||
if (artist || album || albumimage)
|
||||
{
|
||||
uid = first ? background_num : bg_next_get();
|
||||
bg_update(uid, empd_song_artist, empd_song_album, so->uri);
|
||||
bg_update(uid, empd_song_artist, empd_song_album, so->uri, so->albumimage);
|
||||
}
|
||||
ret = songid - empd_songid;
|
||||
empd_songid = songid;
|
||||
|
@ -1100,7 +1103,7 @@ songid_update(int songid)
|
|||
elm_genlist_item_fields_update(it, EMPC_TEXT_TIME, ELM_GENLIST_ITEM_FIELD_TEXT);
|
||||
elm_object_part_content_set(layout, EMPC_SWALLOW_LYRICS, NULL);
|
||||
if (lyrics_visible)
|
||||
metadata_fetch_begin(EMPC_METADATA_TYPE_TEXT, layout, empd_song_artist, empd_song_title, so->uri, EINA_FALSE, EINA_FALSE, lyrics_set, NULL);
|
||||
metadata_fetch_begin(EMPC_METADATA_TYPE_TEXT, layout, empd_song_artist, empd_song_title, so->uri, NULL, EINA_FALSE, EINA_FALSE, lyrics_set, NULL);
|
||||
so = elm_object_item_data_get(it);
|
||||
if ((!itp) || (so->album != sop->album) || (so->artist != sop->artist))
|
||||
{
|
||||
|
@ -1653,14 +1656,14 @@ filesystem_item_content_get(Empc_Entity *ent, Evas_Object *obj, const char *part
|
|||
if (img || uri)
|
||||
save_image(EINA_TRUE, uri ? NULL : img, uri, artist, album, uri ? filesystem_item_content_get_post_save : NULL);
|
||||
else
|
||||
req = metadata_fetch_begin(EMPC_METADATA_TYPE_IMAGE, obj, artist, album, dir->uri, EINA_FALSE, EINA_FALSE, filesystem_item_image, cur);
|
||||
req = metadata_fetch_begin(EMPC_METADATA_TYPE_IMAGE, obj, artist, album, dir->uri, NULL, EINA_FALSE, EINA_FALSE, filesystem_item_image, cur);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (img || uri)
|
||||
save_image(EINA_TRUE, uri ? NULL : img, uri, artist, p, uri ? filesystem_item_content_get_post_save : NULL);
|
||||
else
|
||||
req = metadata_fetch_begin(EMPC_METADATA_TYPE_IMAGE, obj, artist, p, dir->uri, EINA_FALSE, EINA_FALSE, filesystem_item_image, cur);
|
||||
req = metadata_fetch_begin(EMPC_METADATA_TYPE_IMAGE, obj, artist, p, dir->uri, NULL, EINA_FALSE, EINA_FALSE, filesystem_item_image, cur);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1668,7 +1671,7 @@ filesystem_item_content_get(Empc_Entity *ent, Evas_Object *obj, const char *part
|
|||
if (img || uri)
|
||||
save_image(EINA_TRUE, uri ? NULL : img, uri, dir->uri, NULL, uri ? filesystem_item_content_get_post_save : NULL);
|
||||
else
|
||||
req = metadata_fetch_begin(EMPC_METADATA_TYPE_IMAGE, obj, dir->uri, NULL, dir->uri, EINA_FALSE, EINA_FALSE, filesystem_item_image, cur);
|
||||
req = metadata_fetch_begin(EMPC_METADATA_TYPE_IMAGE, obj, dir->uri, NULL, dir->uri, NULL, EINA_FALSE, EINA_FALSE, filesystem_item_image, cur);
|
||||
}
|
||||
if (img)
|
||||
evas_object_unref(img);
|
||||
|
@ -1909,7 +1912,7 @@ empc_bg_changed()
|
|||
}
|
||||
background_num = bg_next_get();
|
||||
bgselector_clear(bg[background_num]);
|
||||
req = bg_update(background_num, empd_song_artist, empd_song_album, uri);
|
||||
req = bg_update(background_num, empd_song_artist, empd_song_album, uri, empd_song_albumimage);
|
||||
metadata_fetch_cb_add(req, bg_changed_post, NULL);
|
||||
elm_object_signal_emit(layout, "empc,bg,next", "empc");
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
|
@ -2103,8 +2106,8 @@ empc_status(void *d EINA_UNUSED, int t EINA_UNUSED, Empd_Empdd_Status_Data *ev)
|
|||
if (!it)
|
||||
it = elm_genlist_first_item_get(queue_list);
|
||||
so = elm_object_item_data_get(it);
|
||||
if ((so->artist != empd_song_artist) || (so->album != empd_song_album))
|
||||
bg_update(bg_next_get(), so->artist, so->album, so->uri);
|
||||
if ((so->artist != empd_song_artist) || (so->album != empd_song_album) || (so->albumimage != empd_song_albumimage))
|
||||
bg_update(bg_next_get(), so->artist, so->album, so->uri, so->albumimage);
|
||||
}
|
||||
//if (empd_song_item && queue_list_state)
|
||||
//elm_genlist_item_fields_update(empd_song_item, EMPC_TEXT_TIME, ELM_GENLIST_ITEM_FIELD_TEXT);
|
||||
|
@ -2564,7 +2567,7 @@ queue_list_header_content_get(Empd_Empdd_Song *so, Evas_Object *obj, const char
|
|||
cur = evas_object_box_add(evas_object_evas_get(obj));
|
||||
EXPAND(cur);
|
||||
FILL(cur);
|
||||
req = metadata_fetch_begin(EMPC_METADATA_TYPE_IMAGE, obj, so->artist, so->album, so->uri, EINA_FALSE, EINA_FALSE, queue_list_header_image, cur);
|
||||
req = metadata_fetch_begin(EMPC_METADATA_TYPE_IMAGE, obj, so->artist, so->album, so->uri, so->albumimage, EINA_FALSE, EINA_FALSE, queue_list_header_image, cur);
|
||||
evas_object_event_callback_add(cur, EVAS_CALLBACK_DEL, queue_list_header_content_del, req);
|
||||
return cur;
|
||||
}
|
||||
|
@ -3001,8 +3004,8 @@ queue_list_handler(Eina_Value *value, Eina_Bool update)
|
|||
|
||||
empd_song_item = it;
|
||||
/* force updates in case song info has changed */
|
||||
if ((so->artist != empd_song_artist) || (so->album != empd_song_album))
|
||||
bg_update(bg_next_get(), so->artist, so->album, so->uri);
|
||||
if ((so->artist != empd_song_artist) || (so->album != empd_song_album) || (so->albumimage != empd_song_albumimage))
|
||||
bg_update(bg_next_get(), so->artist, so->album, so->uri, so->albumimage);
|
||||
eina_stringshare_refplace(&empd_song_album, so->album);
|
||||
title = eina_stringshare_refplace(&empd_song_title, so->title);
|
||||
if (title || (empd_song_track != so->track))
|
||||
|
@ -3519,7 +3522,7 @@ lyrics_request()
|
|||
so = elm_object_item_data_get(empd_song_item);
|
||||
uri = so->uri;
|
||||
}
|
||||
metadata_fetch_begin(EMPC_METADATA_TYPE_TEXT, layout, empd_song_artist, empd_song_title, uri, EINA_FALSE, EINA_FALSE, lyrics_set, NULL);
|
||||
metadata_fetch_begin(EMPC_METADATA_TYPE_TEXT, layout, empd_song_artist, empd_song_title, uri, NULL, EINA_FALSE, EINA_FALSE, lyrics_set, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3574,7 +3577,7 @@ bg_chooser_show(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char
|
|||
}
|
||||
bgchooser = EINA_TRUE;
|
||||
bgs = elm_object_part_content_get(layout, EMPC_SWALLOW_BACKGROUND);
|
||||
bgfetch = metadata_fetch_begin(EMPC_METADATA_TYPE_IMAGE, bgs, empd_song_artist, empd_song_album, uri, EINA_TRUE, EINA_FALSE, bg_add, NULL);
|
||||
bgfetch = metadata_fetch_begin(EMPC_METADATA_TYPE_IMAGE, bgs, empd_song_artist, empd_song_album, uri, empd_song_albumimage, EINA_TRUE, EINA_FALSE, bg_add, NULL);
|
||||
bgselector_active_set(bgs, EINA_TRUE);
|
||||
elm_object_tooltip_hide(bgs);
|
||||
}
|
||||
|
@ -3733,7 +3736,7 @@ dbus_getbg(const Eldbus_Service_Interface *iface EINA_UNUSED, const Eldbus_Messa
|
|||
return ret;
|
||||
}
|
||||
so = elm_object_item_data_get(empd_song_item);
|
||||
metadata_fetch_begin(EMPC_METADATA_TYPE_IMAGE, win, empd_song_artist, empd_song_title, so->uri, EINA_FALSE, EINA_TRUE, dbus_getbg_fetch_cb, ret);
|
||||
metadata_fetch_begin(EMPC_METADATA_TYPE_IMAGE, win, empd_song_artist, empd_song_title, so->uri, so->albumimage, EINA_FALSE, EINA_TRUE, dbus_getbg_fetch_cb, ret);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -63,6 +63,7 @@ struct Empc_Fetch_Request
|
|||
Eina_Stringshare *album;
|
||||
Eina_Stringshare *song;
|
||||
Eina_Stringshare *uri;
|
||||
Eina_Stringshare *albumimage;
|
||||
Empc_Metadata_Type type;
|
||||
Eina_Bool local : 1; //only local fetches
|
||||
Eina_Bool force : 1;
|
||||
|
|
|
@ -158,7 +158,7 @@ metadata_fail_cb(Empc_Fetch_Request_Internal *ireq)
|
|||
}
|
||||
|
||||
Empc_Fetch_Request *
|
||||
metadata_fetch_begin(Empc_Metadata_Type type, Evas_Object *obj, const char *attr1, const char *attr2, const char *uri, Eina_Bool force, Eina_Bool local, Empc_Module_Metadata_Fetch_Result_Cb cb, const void *data)
|
||||
metadata_fetch_begin(Empc_Metadata_Type type, Evas_Object *obj, const char *attr1, const char *attr2, const char *uri, const char *albumimage, Eina_Bool force, Eina_Bool local, Empc_Module_Metadata_Fetch_Result_Cb cb, const void *data)
|
||||
{
|
||||
Empc_Fetch_Request_Internal *ireq;
|
||||
Empc_Fetch_Request *req;
|
||||
|
@ -202,6 +202,7 @@ metadata_fetch_begin(Empc_Metadata_Type type, Evas_Object *obj, const char *attr
|
|||
ireq->req.local = !!local;
|
||||
ireq->req.type = type;
|
||||
ireq->req.uri = eina_stringshare_add(uri);
|
||||
ireq->req.albumimage = eina_stringshare_add(albumimage);
|
||||
res = malloc(sizeof(Empc_Metadata_Result_Cb));
|
||||
res->cb = cb;
|
||||
res->data = (void*)data;
|
||||
|
|
|
@ -75,7 +75,7 @@ extern int empc_log_dom;
|
|||
extern Eina_Inlist *empc_modules[];
|
||||
extern Eina_Hash *empc_metadata_fetch_reqs[];
|
||||
|
||||
Empc_Fetch_Request *metadata_fetch_begin(Empc_Metadata_Type type, Evas_Object *obj, const char *attr1, const char *attr2, const char *uri, Eina_Bool force, Eina_Bool local, Empc_Module_Metadata_Fetch_Result_Cb cb, const void *data);
|
||||
Empc_Fetch_Request *metadata_fetch_begin(Empc_Metadata_Type type, Evas_Object *obj, const char *attr1, const char *attr2, const char *uri, const char *albumimage, Eina_Bool force, Eina_Bool local, Empc_Module_Metadata_Fetch_Result_Cb cb, const void *data);
|
||||
void metadata_fetch_cancel(Empc_Fetch_Request *req, Evas_Object *obj, Empc_Module_Metadata_Fetch_Result_Cb cb, const void *data);
|
||||
void metadata_fetch_cb_add(Empc_Fetch_Request *req, Ecore_End_Cb cb, const void *data);
|
||||
void metadata_shutdown(void);
|
||||
|
|
|
@ -80,6 +80,29 @@ src_modules_google_image_la_LDFLAGS = -module -avoid-version
|
|||
src_modules_google_image_la_LIBTOOLFLAGS = --tag=disable-static
|
||||
endif
|
||||
|
||||
if MOD_META
|
||||
mod_LTLIBRARIES += src/modules/meta.la
|
||||
|
||||
src_modules_meta_la_SOURCES = \
|
||||
src/modules/meta.c \
|
||||
src/bin/empc.h
|
||||
|
||||
src_modules_meta_la_CPPFLAGS = \
|
||||
$(AM_CFLAGS) \
|
||||
$(mod_cppflags) \
|
||||
@EFL_CFLAGS@ \
|
||||
@ELM_CFLAGS@ \
|
||||
-I$(top_srcdir)/src/bin \
|
||||
-I$(top_builddir)
|
||||
|
||||
src_modules_meta_la_LIBADD = \
|
||||
@EFL_LIBS@
|
||||
|
||||
src_modules_meta_la_LDFLAGS = -module -avoid-version
|
||||
|
||||
src_modules_meta_la_LIBTOOLFLAGS = --tag=disable-static
|
||||
endif
|
||||
|
||||
if MOD_ELYR
|
||||
ELYR_AZY_SRC = \
|
||||
src/modules/Lyricwiki_Common_Azy.c \
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
#ifdef HAVE_CONFIG_H
|
||||
# include "config.h"
|
||||
#endif
|
||||
|
||||
#include "empdd.h"
|
||||
#include "empc.h"
|
||||
|
||||
EAPI Eina_Bool
|
||||
empc_module_metadata_fetch(Empc_Fetch_Request *req)
|
||||
{
|
||||
if (req->type != EMPC_METADATA_TYPE_IMAGE) return EINA_FALSE;
|
||||
if ((!req->albumimage) || (!req->albumimage[0])) return EINA_FALSE;
|
||||
if (req->force)
|
||||
empc_metadata_image_download(req, req->albumimage);
|
||||
else
|
||||
empc_metadata_image_download_queue(req, req->albumimage);
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
empc_module_remote(void)
|
||||
{
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
EAPI Empc_Module_Type
|
||||
empc_module_type(void)
|
||||
{
|
||||
return EMPC_MODULE_TYPE_METADATA_FETCH;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
empc_module_priority(void)
|
||||
{
|
||||
return 6;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
meta_init(void)
|
||||
{
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
meta_shutdown(void)
|
||||
{
|
||||
}
|
||||
|
||||
EINA_MODULE_INIT(meta_init);
|
||||
EINA_MODULE_SHUTDOWN(meta_shutdown);
|
Loading…
Reference in New Issue