parent
0059874954
commit
f858957c8d
|
@ -103,6 +103,12 @@ if test -n "$want_glyr" ; then
|
||||||
fi
|
fi
|
||||||
AM_CONDITIONAL([MOD_GLYR], [test "x$want_glyr" = "xyes"])
|
AM_CONDITIONAL([MOD_GLYR], [test "x$want_glyr" = "xyes"])
|
||||||
|
|
||||||
|
want_eet_saver=yes
|
||||||
|
AC_ARG_ENABLE([module-eet-saver],
|
||||||
|
[AC_HELP_STRING([--disable-module-eet-saver], [disable eet-saver module. @<:@default=detect@:>@])],
|
||||||
|
[want_eet_saver=$enableval], [])
|
||||||
|
AM_CONDITIONAL([MOD_EET_SAVER], [test "x$want_eet_saver" = "xyes"])
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
|
|
||||||
case "$host_os" in
|
case "$host_os" in
|
||||||
|
@ -159,6 +165,7 @@ cat << MODULES_EOF
|
||||||
Modules:
|
Modules:
|
||||||
* glyr_gmpc...........: $want_glyr_gmpc
|
* glyr_gmpc...........: $want_glyr_gmpc
|
||||||
* glyr................: $want_glyr
|
* glyr................: $want_glyr
|
||||||
|
* eet_saver...........: $want_eet_saver
|
||||||
MODULES_EOF
|
MODULES_EOF
|
||||||
echo
|
echo
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#include "empc.h"
|
#include "empc.h"
|
||||||
#include "empc_parts.h"
|
#include "empc_parts.h"
|
||||||
|
|
||||||
#define EMPC_METADATA_TYPE_COUNT 1
|
#define EMPC_METADATA_TYPE_COUNT 3
|
||||||
|
|
||||||
#define DBG(...) EINA_LOG_DOM_DBG(empc_log_dom, __VA_ARGS__)
|
#define DBG(...) EINA_LOG_DOM_DBG(empc_log_dom, __VA_ARGS__)
|
||||||
#define INF(...) EINA_LOG_DOM_INFO(empc_log_dom, __VA_ARGS__)
|
#define INF(...) EINA_LOG_DOM_INFO(empc_log_dom, __VA_ARGS__)
|
||||||
|
@ -42,11 +42,18 @@ typedef struct Empc_Module
|
||||||
Eina_Module *module;
|
Eina_Module *module;
|
||||||
} Empc_Module;
|
} Empc_Module;
|
||||||
|
|
||||||
typedef struct Empc_Module_Metadata
|
typedef struct Empc_Module_Metadata_Fetch
|
||||||
{
|
{
|
||||||
Empc_Module module;
|
Empc_Module module;
|
||||||
Empc_Module_Metadata_Fetch_Cb fetch;
|
Empc_Module_Metadata_Fetch_Cb fetch;
|
||||||
} Empc_Module_Metadata;
|
} Empc_Module_Metadata_Fetch;
|
||||||
|
|
||||||
|
typedef struct Empc_Module_Metadata_Save
|
||||||
|
{
|
||||||
|
Empc_Module module;
|
||||||
|
Empc_Module_Metadata_Save_Image_Cb save_image;
|
||||||
|
Empc_Module_Metadata_Save_Image_Cb save_text;
|
||||||
|
} Empc_Module_Metadata_Save;
|
||||||
|
|
||||||
typedef struct Empc_Fetch_Request_Internal
|
typedef struct Empc_Fetch_Request_Internal
|
||||||
{
|
{
|
||||||
|
@ -95,10 +102,12 @@ static Eina_Inlist *empc_modules[EMPC_MODULE_TYPE_LAST];
|
||||||
|
|
||||||
static size_t empc_module_size[EMPC_MODULE_TYPE_LAST] =
|
static size_t empc_module_size[EMPC_MODULE_TYPE_LAST] =
|
||||||
{
|
{
|
||||||
[EMPC_MODULE_TYPE_METADATA_IMAGE] = sizeof(Empc_Module_Metadata),
|
[EMPC_MODULE_TYPE_METADATA_IMAGE] = sizeof(Empc_Module_Metadata_Fetch),
|
||||||
|
[EMPC_MODULE_TYPE_METADATA_TEXT] = sizeof(Empc_Module_Metadata_Fetch),
|
||||||
|
[EMPC_MODULE_TYPE_METADATA_SAVER] = sizeof(Empc_Module_Metadata_Save),
|
||||||
};
|
};
|
||||||
|
|
||||||
static Eina_Bool empc_metadata_image_fetch(Empc_Fetch_Request_Internal *ireq, Evas_Object *obj, const char *artist, const char *album);
|
static Eina_Bool metadata_image_fetch(Empc_Fetch_Request_Internal *ireq, Evas_Object *obj, const char *artist, const char *album);
|
||||||
|
|
||||||
static inline unsigned char
|
static inline unsigned char
|
||||||
bg_next_get(void)
|
bg_next_get(void)
|
||||||
|
@ -288,7 +297,7 @@ songid_update(int songid)
|
||||||
}
|
}
|
||||||
|
|
||||||
static Empc_Fetch_Request_Internal *
|
static Empc_Fetch_Request_Internal *
|
||||||
empc_metadata_fetch_req_new(const char *artist, const char *album, const char *song)
|
metadata_fetch_req_new(const char *artist, const char *album, const char *song)
|
||||||
{
|
{
|
||||||
Empc_Fetch_Request_Internal *ireq;
|
Empc_Fetch_Request_Internal *ireq;
|
||||||
|
|
||||||
|
@ -299,8 +308,21 @@ empc_metadata_fetch_req_new(const char *artist, const char *album, const char *s
|
||||||
return ireq;
|
return ireq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
metadata_image_done(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||||
|
{
|
||||||
|
Empc_Module *mod;
|
||||||
|
|
||||||
|
EINA_INLIST_FOREACH(empc_modules[EMPC_MODULE_TYPE_METADATA_SAVER], mod)
|
||||||
|
{
|
||||||
|
Empc_Module_Metadata_Save *es = (Empc_Module_Metadata_Save *)mod;
|
||||||
|
INF("IMAGE SAVE(%s)", strrchr(eina_module_file_get(mod->module), '/') + 1);
|
||||||
|
es->save_image(obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
empc_cover_done(Empc_Fetch_Request *req, Eina_Bool success)
|
metadata_image_fetch_done(Empc_Fetch_Request *req, Eina_Bool success)
|
||||||
{
|
{
|
||||||
Empc_Fetch_Request_Internal *ireq = (Empc_Fetch_Request_Internal*)req;
|
Empc_Fetch_Request_Internal *ireq = (Empc_Fetch_Request_Internal*)req;
|
||||||
|
|
||||||
|
@ -308,7 +330,7 @@ empc_cover_done(Empc_Fetch_Request *req, Eina_Bool success)
|
||||||
INF("COVER RETURN(%s) %d", strrchr(eina_module_file_get(ireq->module->module), '/') + 1, success);
|
INF("COVER RETURN(%s) %d", strrchr(eina_module_file_get(ireq->module->module), '/') + 1, success);
|
||||||
if (!success)
|
if (!success)
|
||||||
{
|
{
|
||||||
empc_metadata_image_fetch((void*)req, NULL, NULL, NULL);
|
metadata_image_fetch((void*)req, NULL, NULL, NULL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
eina_stringshare_del(evas_object_data_del(req->obj, "artist"));
|
eina_stringshare_del(evas_object_data_del(req->obj, "artist"));
|
||||||
|
@ -320,7 +342,7 @@ empc_cover_done(Empc_Fetch_Request *req, Eina_Bool success)
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
empc_metadata_image_fetch(Empc_Fetch_Request_Internal *ireq, Evas_Object *obj, const char *artist, const char *album)
|
metadata_image_fetch(Empc_Fetch_Request_Internal *ireq, Evas_Object *obj, const char *artist, const char *album)
|
||||||
{
|
{
|
||||||
Empc_Module *mod;
|
Empc_Module *mod;
|
||||||
char buf[2048];
|
char buf[2048];
|
||||||
|
@ -340,15 +362,15 @@ empc_metadata_image_fetch(Empc_Fetch_Request_Internal *ireq, Evas_Object *obj, c
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ireq = empc_metadata_fetch_req_new(artist, album, NULL);
|
ireq = metadata_fetch_req_new(artist, album, NULL);
|
||||||
ireq->req.result = empc_cover_done;
|
ireq->req.result = metadata_image_fetch_done;
|
||||||
ireq->req.obj = obj;
|
ireq->req.obj = obj;
|
||||||
eina_hash_add(empc_metadata_fetch_reqs[EMPC_MODULE_TYPE_METADATA_IMAGE], buf, ireq);
|
eina_hash_add(empc_metadata_fetch_reqs[EMPC_MODULE_TYPE_METADATA_IMAGE], buf, ireq);
|
||||||
mods = empc_modules[EMPC_MODULE_TYPE_METADATA_IMAGE];
|
mods = empc_modules[EMPC_MODULE_TYPE_METADATA_IMAGE];
|
||||||
}
|
}
|
||||||
EINA_INLIST_FOREACH(mods, mod)
|
EINA_INLIST_FOREACH(mods, mod)
|
||||||
{
|
{
|
||||||
Empc_Module_Metadata *em = (Empc_Module_Metadata*)mod;
|
Empc_Module_Metadata_Fetch *em = (Empc_Module_Metadata_Fetch*)mod;
|
||||||
if (!em->fetch((Empc_Fetch_Request*)ireq)) continue;
|
if (!em->fetch((Empc_Fetch_Request*)ireq)) continue;
|
||||||
INF("COVER FETCH(%s)", strrchr(eina_module_file_get(mod->module), '/') + 1);
|
INF("COVER FETCH(%s)", strrchr(eina_module_file_get(mod->module), '/') + 1);
|
||||||
ireq->module = mod;
|
ireq->module = mod;
|
||||||
|
@ -388,7 +410,7 @@ empc_current_song(void *d EINA_UNUSED, int t EINA_UNUSED, Empd_Empc_CurrentSong_
|
||||||
title_update();
|
title_update();
|
||||||
/* always fetch on first run */
|
/* always fetch on first run */
|
||||||
if (!palbum)
|
if (!palbum)
|
||||||
empc_metadata_image_fetch(NULL, bg[background_num], empd_song_artist, empd_song_album);
|
metadata_image_fetch(NULL, bg[background_num], empd_song_artist, empd_song_album);
|
||||||
/* check for update fails */
|
/* check for update fails */
|
||||||
else if (artist || album)
|
else if (artist || album)
|
||||||
{
|
{
|
||||||
|
@ -397,7 +419,7 @@ empc_current_song(void *d EINA_UNUSED, int t EINA_UNUSED, Empd_Empc_CurrentSong_
|
||||||
o = bg[bg_next_get()];
|
o = bg[bg_next_get()];
|
||||||
if ((empd_song_artist != evas_object_data_get(o, "artist")) ||
|
if ((empd_song_artist != evas_object_data_get(o, "artist")) ||
|
||||||
(empd_song_album != evas_object_data_get(o, "album")))
|
(empd_song_album != evas_object_data_get(o, "album")))
|
||||||
empc_metadata_image_fetch(NULL, o, empd_song_artist, empd_song_album);
|
metadata_image_fetch(NULL, o, empd_song_artist, empd_song_album);
|
||||||
|
|
||||||
}
|
}
|
||||||
elm_object_part_text_set(layout, EMPC_BASE_TEXT_ARTIST, empd_song_artist);
|
elm_object_part_text_set(layout, EMPC_BASE_TEXT_ARTIST, empd_song_artist);
|
||||||
|
@ -432,7 +454,7 @@ empc_status(void *d EINA_UNUSED, int t EINA_UNUSED, Empd_Empc_Status_Data *ev)
|
||||||
{
|
{
|
||||||
o = bg[bg_next_get()];
|
o = bg[bg_next_get()];
|
||||||
if ((so->artist != evas_object_data_get(o, "artist")) || (so->album != evas_object_data_get(o, "album")))
|
if ((so->artist != evas_object_data_get(o, "artist")) || (so->album != evas_object_data_get(o, "album")))
|
||||||
empc_metadata_image_fetch(NULL, o, so->artist, so->album);
|
metadata_image_fetch(NULL, o, so->artist, so->album);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (empd_song_item && queue_list_state)
|
if (empd_song_item && queue_list_state)
|
||||||
|
@ -785,11 +807,19 @@ module_check(Eina_Module *m, void *d EINA_UNUSED)
|
||||||
{
|
{
|
||||||
case EMPC_MODULE_TYPE_METADATA_IMAGE:
|
case EMPC_MODULE_TYPE_METADATA_IMAGE:
|
||||||
{
|
{
|
||||||
Empc_Module_Metadata *em = (Empc_Module_Metadata*)mod;
|
Empc_Module_Metadata_Fetch *em = (Empc_Module_Metadata_Fetch*)mod;
|
||||||
|
|
||||||
em->fetch = eina_module_symbol_get(m, "empc_module_metadata_fetch");
|
em->fetch = eina_module_symbol_get(m, "empc_module_metadata_fetch");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case EMPC_MODULE_TYPE_METADATA_SAVER:
|
||||||
|
{
|
||||||
|
Empc_Module_Metadata_Save *es = (Empc_Module_Metadata_Save*)mod;
|
||||||
|
|
||||||
|
es->save_image = eina_module_symbol_get(m, "empc_module_metadata_save_image");
|
||||||
|
es->save_text = eina_module_symbol_get(m, "empc_module_metadata_save_text");
|
||||||
|
break;
|
||||||
|
}
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
INF("MODULE LOAD(%s)", strrchr(eina_module_file_get(mod->module), '/') + 1);
|
INF("MODULE LOAD(%s)", strrchr(eina_module_file_get(mod->module), '/') + 1);
|
||||||
|
@ -896,6 +926,7 @@ main(int argc, char *argv[])
|
||||||
for (i = 0; i < 2; i++)
|
for (i = 0; i < 2; i++)
|
||||||
{
|
{
|
||||||
bg[i] = elm_image_add(win);
|
bg[i] = elm_image_add(win);
|
||||||
|
evas_object_smart_callback_add(bg[i], "download,done", metadata_image_done, NULL);
|
||||||
elm_image_fill_outside_set(bg[i], EINA_FALSE);
|
elm_image_fill_outside_set(bg[i], EINA_FALSE);
|
||||||
evas_object_show(bg[i]);
|
evas_object_show(bg[i]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
EMPC_MODULE_TYPE_METADATA_IMAGE,
|
EMPC_MODULE_TYPE_METADATA_IMAGE,
|
||||||
|
EMPC_MODULE_TYPE_METADATA_TEXT,
|
||||||
|
EMPC_MODULE_TYPE_METADATA_SAVER,
|
||||||
EMPC_MODULE_TYPE_LAST,
|
EMPC_MODULE_TYPE_LAST,
|
||||||
} Empc_Module_Type;
|
} Empc_Module_Type;
|
||||||
|
|
||||||
|
@ -10,6 +12,7 @@ typedef struct Empc_Fetch_Request Empc_Fetch_Request;
|
||||||
|
|
||||||
typedef Empc_Module_Type (*Empc_Module_Type_Cb)(void);
|
typedef Empc_Module_Type (*Empc_Module_Type_Cb)(void);
|
||||||
typedef int (*Empc_Module_Priority_Cb)(void);
|
typedef int (*Empc_Module_Priority_Cb)(void);
|
||||||
|
typedef void (*Empc_Module_Metadata_Save_Image_Cb)(Evas_Object *obj);
|
||||||
typedef Eina_Bool (*Empc_Module_Metadata_Fetch_Cb)(const Empc_Fetch_Request *);
|
typedef Eina_Bool (*Empc_Module_Metadata_Fetch_Cb)(const Empc_Fetch_Request *);
|
||||||
typedef void (*Empc_Module_Metadata_Fetch_Result_Cb)(Empc_Fetch_Request *, Eina_Bool success);
|
typedef void (*Empc_Module_Metadata_Fetch_Result_Cb)(Empc_Fetch_Request *, Eina_Bool success);
|
||||||
|
|
||||||
|
|
|
@ -53,3 +53,27 @@ src_modules_glyr_la_LDFLAGS = -module -avoid-version
|
||||||
|
|
||||||
src_modules_glyr_la_LIBTOOLFLAGS = --tag=disable-static
|
src_modules_glyr_la_LIBTOOLFLAGS = --tag=disable-static
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
if MOD_EET_SAVER
|
||||||
|
mod_LTLIBRARIES += src/modules/eet_saver.la
|
||||||
|
|
||||||
|
src_modules_eet_saver_la_SOURCES = \
|
||||||
|
src/modules/eet_saver.c
|
||||||
|
|
||||||
|
src_modules_eet_saver_la_CPPFLAGS = \
|
||||||
|
$(AM_CFLAGS) \
|
||||||
|
$(mod_cppflags) \
|
||||||
|
@EFL_CFLAGS@ \
|
||||||
|
@ELM_CFLAGS@ \
|
||||||
|
-I$(top_srcdir)/src/bin \
|
||||||
|
-I$(top_builddir)
|
||||||
|
|
||||||
|
src_modules_eet_saver_la_LIBADD = \
|
||||||
|
@EFL_LIBS@ \
|
||||||
|
@ELM_LIBS@
|
||||||
|
|
||||||
|
src_modules_eet_saver_la_LDFLAGS = -module -avoid-version
|
||||||
|
|
||||||
|
src_modules_eet_saver_la_LIBTOOLFLAGS = --tag=disable-static
|
||||||
|
endif
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "empdd.h"
|
||||||
|
#include "empc.h"
|
||||||
|
#include <Ecore.h>
|
||||||
|
#include <Efreet.h>
|
||||||
|
#include <Elementary.h>
|
||||||
|
#include <Eet.h>
|
||||||
|
|
||||||
|
static Eet_File *ef = NULL;
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
empc_module_metadata_save_image(Evas_Object *obj)
|
||||||
|
{
|
||||||
|
Evas_Object *o;
|
||||||
|
void *img;
|
||||||
|
int w, h;
|
||||||
|
char buf[4096];
|
||||||
|
Eina_Stringshare *artist, *album;
|
||||||
|
char *a, *b;
|
||||||
|
|
||||||
|
artist = evas_object_data_get(obj, "artist");
|
||||||
|
if (artist)
|
||||||
|
{
|
||||||
|
a = strdupa(artist);
|
||||||
|
eina_str_tolower(&a);
|
||||||
|
}
|
||||||
|
album = evas_object_data_get(obj, "album");
|
||||||
|
if (album)
|
||||||
|
{
|
||||||
|
b = strdupa(album);
|
||||||
|
eina_str_tolower(&b);
|
||||||
|
}
|
||||||
|
snprintf(buf, sizeof(buf), "%s:::%s", a ?: "", b ?: "");
|
||||||
|
o = elm_image_object_get(obj);
|
||||||
|
img = evas_object_image_data_get(o, EINA_FALSE);
|
||||||
|
evas_object_image_size_get(o, &w, &h);
|
||||||
|
eet_data_image_write(ef, buf, img, w, h, 0, 1, 100, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI Empc_Module_Type
|
||||||
|
empc_module_type(void)
|
||||||
|
{
|
||||||
|
return EMPC_MODULE_TYPE_METADATA_SAVER;
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI int
|
||||||
|
empc_module_priority(void)
|
||||||
|
{
|
||||||
|
return 50;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Eina_Bool
|
||||||
|
eet_saver_init(void)
|
||||||
|
{
|
||||||
|
char buf[PATH_MAX];
|
||||||
|
|
||||||
|
eet_init();
|
||||||
|
snprintf(buf, sizeof(buf), "%s/empc/metadata/images.eet", efreet_cache_home_get());
|
||||||
|
ef = eet_open(buf, EET_FILE_MODE_WRITE);
|
||||||
|
return EINA_TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
eet_saver_shutdown(void)
|
||||||
|
{
|
||||||
|
eet_close(ef);
|
||||||
|
eet_shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
EINA_MODULE_INIT(eet_saver_init);
|
||||||
|
EINA_MODULE_SHUTDOWN(eet_saver_shutdown);
|
Loading…
Reference in New Issue