This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch main
in repository eradio.
View the commit online.
commit 28bcc9830c923dc567741fa1080db810804482cc
Author: politebot <[email protected]>
AuthorDate: Wed Oct 22 17:24:00 2025 -0500
Add fullscreen toggle for visualizer
---
src/appdata.h | 1 +
src/visualizer.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
2 files changed, 63 insertions(+), 2 deletions(-)
diff --git a/src/appdata.h b/src/appdata.h
index c80bfbb..95b344e 100644
--- a/src/appdata.h
+++ b/src/appdata.h
@@ -64,4 +64,5 @@ typedef struct _AppData
Evas_Object *visualizer_win;
Evas_Object *visualizer_emotion;
Eina_Bool visualizer_active;
+ Eina_Bool visualizer_fullscreen;
} AppData;
diff --git a/src/visualizer.c b/src/visualizer.c
index 9cb5224..634aec5 100644
--- a/src/visualizer.c
+++ b/src/visualizer.c
@@ -3,6 +3,9 @@
static void _visualizer_win_del_cb(void *data, Evas_Object *obj, void *event_info);
static void _visualizer_title_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void _visualizer_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _visualizer_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info);
+static void _fullscreen_toggle_cb(void *data, Evas_Object *obj, void *event_info);
void
visualizer_init(AppData *ad)
@@ -10,6 +13,7 @@ visualizer_init(AppData *ad)
ad->visualizer_win = NULL;
ad->visualizer_emotion = NULL;
ad->visualizer_active = EINA_FALSE;
+ ad->visualizer_fullscreen = EINA_FALSE;
}
static void
@@ -52,7 +56,7 @@ visualizer_show(AppData *ad)
ad->visualizer_emotion = emotion_object_add(ad->visualizer_win);
// Set GOOM visualization
- emotion_object_vis_set(ad->visualizer_emotion, EMOTION_VIS_GOOM);
+ emotion_object_vis_set(ad->visualizer_emotion, EMOTION_VIS_LIBVISUAL_DANCING_PARTICLES);
// Set initial volume to match the current volume slider setting
if (ad->volume_slider) {
@@ -69,6 +73,9 @@ visualizer_show(AppData *ad)
elm_win_resize_object_add(ad->visualizer_win, ad->visualizer_emotion);
evas_object_show(ad->visualizer_emotion);
+ // Add mouse down callback for right-click context menu
+ evas_object_event_callback_add(ad->visualizer_emotion, EVAS_CALLBACK_MOUSE_DOWN, _visualizer_mouse_down_cb, ad);
+
// If there's already a station playing, connect the visualizer to it
// BUT pause the main player to prevent dual audio
if (ad->playing && ad->emotion)
@@ -115,6 +122,7 @@ visualizer_hide(AppData *ad)
}
ad->visualizer_active = EINA_FALSE;
+ ad->visualizer_fullscreen = EINA_FALSE; // Reset fullscreen state
}
void
@@ -176,4 +184,56 @@ void
visualizer_shutdown(AppData *ad)
{
visualizer_hide(ad);
-}
\ No newline at end of file
+}
+
+// Mouse down callback to show context menu
+static void
+_visualizer_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ AppData *ad = data;
+ Evas_Event_Mouse_Down *ev = event_info;
+
+ if (ev->button == 3) // Right click
+ {
+ Evas_Object *menu = elm_ctxpopup_add(ad->visualizer_win);
+ elm_ctxpopup_auto_hide_disabled_set(menu, EINA_FALSE);
+ evas_object_smart_callback_add(menu, "dismissed", _visualizer_menu_dismissed_cb, ad);
+
+ // Add fullscreen/window mode toggle
+ const char *menu_text = ad->visualizer_fullscreen ? "Window Mode" : "Fullscreen Mode";
+ elm_ctxpopup_item_append(menu, menu_text, NULL, _fullscreen_toggle_cb, ad);
+
+ // Position and show the menu
+ evas_object_move(menu, ev->canvas.x, ev->canvas.y);
+ evas_object_show(menu);
+ }
+}
+
+// Menu dismissed callback
+static void
+_visualizer_menu_dismissed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ evas_object_del(obj);
+}
+
+// Fullscreen toggle callback
+static void
+_fullscreen_toggle_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ AppData *ad = data;
+
+ if (ad->visualizer_fullscreen)
+ {
+ // Switch to window mode
+ elm_win_fullscreen_set(ad->visualizer_win, EINA_FALSE);
+ ad->visualizer_fullscreen = EINA_FALSE;
+ printf("Switched to window mode\n");
+ }
+ else
+ {
+ // Switch to fullscreen mode
+ elm_win_fullscreen_set(ad->visualizer_win, EINA_TRUE);
+ ad->visualizer_fullscreen = EINA_TRUE;
+ printf("Switched to fullscreen mode\n");
+ }
+}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.