diff --git a/e_mod_main.c b/e_mod_main.c index a317021..18868a5 100644 --- a/e_mod_main.c +++ b/e_mod_main.c @@ -32,6 +32,11 @@ static void _mpdule_menu_cb_configure (void *data, E_Menu * m, E_Menu_Item * mi); static void _mpdule_menu_cb_post (void *data, E_Menu * m); static int _mpdule_cb_check (void *data); +static void _mpdule_cb_play(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _mpdule_cb_stop(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _mpdule_cb_pause(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _mpdule_cb_next(void *data, Evas_Object *obj, const char *emission, const char *source); +static void _mpdule_cb_previous(void *data, Evas_Object *obj, const char *emission, const char *source); static Config_Item *_mpdule_config_item_get (const char *id); static E_Config_DD *conf_edd = NULL; @@ -113,6 +118,16 @@ _gc_init (E_Gadcon * gc, const char *name, const char *id, const char *style) _mpdule_cb_mouse_in, inst); evas_object_event_callback_add(inst->mpdule, EVAS_CALLBACK_MOUSE_OUT, _mpdule_cb_mouse_out, inst); + edje_object_signal_callback_add(o, "mpdule,play", "", _mpdule_cb_play, inst); + edje_object_signal_callback_add(o, "mpdule,stop", "", _mpdule_cb_stop, inst); + edje_object_signal_callback_add(o, "mpdule,pause", "", _mpdule_cb_pause, inst); + edje_object_signal_callback_add(o, "mpdule,next", "", _mpdule_cb_next, inst); + edje_object_signal_callback_add(o, "mpdule,previous", "", _mpdule_cb_previous, inst); + edje_object_signal_callback_add(o_popup, "mpdule,play", "", _mpdule_cb_play, inst); + edje_object_signal_callback_add(o_popup, "mpdule,stop", "", _mpdule_cb_stop, inst); + edje_object_signal_callback_add(o_popup, "mpdule,pause", "", _mpdule_cb_pause, inst); + edje_object_signal_callback_add(o_popup, "mpdule,next", "", _mpdule_cb_next, inst); + edje_object_signal_callback_add(o_popup, "mpdule,previous", "", _mpdule_cb_previous, inst); _mpdule_connect(inst); _mpdule_update_song(inst); inst->update_timer = ecore_timer_add((double)inst->ci->poll_time, @@ -223,7 +238,6 @@ _mpdule_cb_mouse_down (void *data, Evas * e, Evas_Object * obj, evas_event_feed_mouse_up (inst->gcc->gadcon->evas, ev->button, EVAS_BUTTON_NONE, ev->timestamp, NULL); } else if (ev->button == 1) { - printf("POPUP3"); e_gadcon_popup_toggle_pinned(inst->popup); } } @@ -235,7 +249,6 @@ _mpdule_cb_mouse_in(void *data, Evas *e, Evas_Object *obj, void *event_info) Instance *inst; E_Gadcon_Popup *popup; - printf("POPUP1"); if (!(inst = data)) return; popup = inst->popup; e_gadcon_popup_show(inst->popup); @@ -247,7 +260,6 @@ _mpdule_cb_mouse_out(void *data, Evas *e, Evas_Object *obj, void *event_info) Instance *inst; E_Gadcon_Popup *popup; - printf("POPUP2"); if (!(inst = data)) return; popup = inst->popup; e_gadcon_popup_hide(inst->popup); @@ -266,7 +278,7 @@ static void _mpdule_menu_cb_configure (void *data, E_Menu * m, E_Menu_Item * mi) { Instance *inst; - + inst = data; _config_mpdule_module (inst->ci); } @@ -299,6 +311,60 @@ _mpdule_config_updated (Config_Item *ci) } } +static void +_mpdule_cb_play(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Instance *inst; + mpd_Connection *mpd; + + inst = data; + mpd = inst->mpd; + mpd_sendPlayCommand(mpd, -1); +} + +static void +_mpdule_cb_previous(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Instance *inst; + mpd_Connection *mpd; + + inst = data; + mpd = inst->mpd; + mpd_sendPrevCommand(mpd); +} + +static void +_mpdule_cb_next(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Instance *inst; + mpd_Connection *mpd; + + inst = data; + mpd = inst->mpd; + mpd_sendNextCommand(mpd); +} + +static void +_mpdule_cb_stop(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Instance *inst; + mpd_Connection *mpd; + + inst = data; + mpd = inst->mpd; + mpd_sendStopCommand(mpd); +} + +static void +_mpdule_cb_pause(void *data, Evas_Object *obj, const char *emission, const char *source) +{ + Instance *inst; + mpd_Connection *mpd; + + inst = data; + mpd = inst->mpd; + mpd_sendPauseCommand(mpd, 1); +} static Config_Item * _mpdule_config_item_get (const char *id) @@ -645,9 +711,7 @@ _mpdule_popup_resize(Evas_Object *obj, int *w, int *h) int x, y; if (!(*w)) *w = 0; if (!(*h)) *h = 0; - printf("SIZES: %dx%d", w, h); edje_object_size_min_calc (obj, &x, &y); - printf("SIZES2: %dx%d", x, y); *w = x; *h = y; } diff --git a/mpdule.edc b/mpdule.edc index b2d5bae..8a71313 100644 --- a/mpdule.edc +++ b/mpdule.edc @@ -7,6 +7,11 @@ spectra { color_classes { } images { + image: "next.png" COMP; + image: "pause.png" COMP; + image: "play.png" COMP; + image: "prev.png" COMP; + image: "stop.png" COMP; } data { } @@ -209,6 +214,12 @@ collections { } } programs { + program { + name: "show"; + signal: "show"; + source: ""; + action: SIGNAL_EMIT "mpdule,play" ""; + } } } group { @@ -221,7 +232,7 @@ collections { description { state: "default" 0.00; visible: 1; - min: 200 65; + min: 200 105; rel1 { relative: 0.00 0.00; offset: 5 5; @@ -547,8 +558,153 @@ collections { } } } + part { + name: "mpdule.previous"; + type: IMAGE; + description { + state: "default" 0.0; + visible: 1; + rel1 { + relative: 0.0 1.0; + offset: 0 0; + to_x: "base"; + to_y: "mpdule.genre_label"; + } + rel2 { + relative: 0.0 1.0; + offset: 32 32; + to_x: "base"; + to_y: "mpdule.genre_label"; + } + image { + normal: "prev.png"; + } + } + } + part { + name: "mpdule.play"; + type: IMAGE; + description { + state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "mpdule.previous"; + to_y: "mpdule.genre_label"; + } + rel2 { + relative: 1.0 1.0; + offset: 32 32; + to_x: "mpdule.previous"; + to_y: "mpdule.genre_label"; + } + image { + normal: "play.png"; + } + } + } + part { + name: "mpdule.pause"; + type: IMAGE; + description { + state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "mpdule.play"; + to_y: "mpdule.genre_label"; + } + rel2 { + relative: 1.0 1.0; + offset: 32 32; + to_x: "mpdule.play"; + to_y: "mpdule.genre_label"; + } + image { + normal: "pause.png"; + } + } + } + part { + name: "mpdule.stop"; + type: IMAGE; + description { + state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "mpdule.pause"; + to_y: "mpdule.genre_label"; + } + rel2 { + relative: 1.0 1.0; + offset: 32 32; + to_x: "mpdule.pause"; + to_y: "mpdule.genre_label"; + } + image { + normal: "stop.png"; + } + } + } + part { + name: "mpdule.next"; + type: IMAGE; + description { + state: "default" 0.0; + visible: 1; + rel1 { + relative: 1.0 1.0; + offset: 0 0; + to_x: "mpdule.stop"; + to_y: "mpdule.genre_label"; + } + rel2 { + relative: 1.0 1.0; + offset: 32 32; + to_x: "mpdule.stop"; + to_y: "mpdule.genre_label"; + } + image { + normal: "next.png"; + } + } + } } programs { + program { + name: "mouse_play"; + signal: "mouse,clicked,1"; + source: "mpdule.play"; + action: SIGNAL_EMIT "mpdule,play" ""; + } + program { + name: "mouse_pause"; + signal: "mouse,clicked,1"; + source: "mpdule.pause"; + action: SIGNAL_EMIT "mpdule,pause" ""; + } + program { + name: "mouse_stop"; + signal: "mouse,clicked,1"; + source: "mpdule.stop"; + action: SIGNAL_EMIT "mpdule,stop" ""; + } + program { + name: "mouse_previous"; + signal: "mouse,clicked,1"; + source: "mpdule.previous"; + action: SIGNAL_EMIT "mpdule,previous" ""; + } + program { + name: "mouse_next"; + signal: "mouse,clicked,1"; + source: "mpdule.next"; + action: SIGNAL_EMIT "mpdule,next" ""; + } } } } diff --git a/next.png b/next.png new file mode 100644 index 0000000..6ac2670 Binary files /dev/null and b/next.png differ diff --git a/pause.png b/pause.png new file mode 100644 index 0000000..f71747b Binary files /dev/null and b/pause.png differ diff --git a/play.png b/play.png new file mode 100644 index 0000000..748db90 Binary files /dev/null and b/play.png differ diff --git a/prev.png b/prev.png new file mode 100644 index 0000000..3639cc4 Binary files /dev/null and b/prev.png differ diff --git a/stop.png b/stop.png new file mode 100644 index 0000000..e8ba110 Binary files /dev/null and b/stop.png differ