panel: allow building the applet without X11

This commit is contained in:
Pierre Pronchery 2024-10-10 09:55:34 +02:00
parent 39c84f1faf
commit fb36a3f24b

View File

@ -34,9 +34,11 @@
#endif
#include <string.h>
#include <gtk/gtk.h>
#if defined(GDK_WINDOWING_X11)
# if GTK_CHECK_VERSION(3, 0, 0)
# include <gtk/gtkx.h>
# endif
#endif
#include <Desktop.h>
#include "Phone.h"
@ -73,6 +75,7 @@ typedef struct _PhonePlugin
{
PhonePluginHelper * helper;
#if defined(GDK_WINDOWING_X11)
guint timeout;
GtkWidget * plug;
GtkWidget * hbox;
@ -92,6 +95,7 @@ typedef struct _PhonePlugin
GtkWidget * window;
GtkWidget * battery;
GtkWidget * truncate;
#endif
} Panel;
@ -101,12 +105,14 @@ static void _panel_destroy(Panel * panel);
static int _panel_event(Panel * panel, PhoneEvent * event);
static void _panel_settings(Panel * panel);
#if defined(GDK_WINDOWING_X11)
static void _panel_set_battery_level(Panel * panel, gdouble level,
gboolean charging);
static void _panel_set_operator(Panel * panel, ModemRegistrationStatus status,
char const * _operator);
static void _panel_set_signal_level(Panel * panel, gdouble level);
static void _panel_set_status(Panel * panel, gboolean data, gboolean roaming);
#endif
/* public */
@ -126,12 +132,15 @@ PhonePluginDefinition plugin =
/* private */
/* functions */
/* panel_init */
#if defined(GDK_WINDOWING_X11)
static gboolean _on_plug_delete_event(gpointer data);
static void _on_plug_embedded(gpointer data);
static gboolean _on_battery_timeout(gpointer data);
#endif
static Panel * _panel_init(PhonePluginHelper * helper)
{
#if defined(GDK_WINDOWING_X11)
Panel * panel;
PangoFontDescription * bold;
char const * p;
@ -208,8 +217,15 @@ static Panel * _panel_init(PhonePluginHelper * helper)
pango_font_description_free(bold);
_on_plug_delete_event(panel);
return panel;
#else
(void) helper;
error_set_code(-ENOSYS, "%s", "X11 support not detected");
return NULL;
#endif
}
#if defined(GDK_WINDOWING_X11)
static gboolean _on_plug_delete_event(gpointer data)
{
Panel * panel = data;
@ -250,25 +266,33 @@ static gboolean _on_battery_timeout(gpointer data)
panel->helper->request(panel->helper->phone, &request);
return TRUE;
}
#endif
/* panel_destroy */
static void _panel_destroy(Panel * panel)
{
#if defined(GDK_WINDOWING_X11)
if(panel->battery_timeout != 0)
g_source_remove(panel->battery_timeout);
if(panel->timeout != 0)
g_source_remove(panel->timeout);
gtk_widget_destroy(panel->hbox);
object_delete(panel);
#else
(void) panel;
#endif
}
/* panel_event */
#if defined(GDK_WINDOWING_X11)
static int _event_modem_event(Panel * panel, ModemEvent * event);
#endif
static int _panel_event(Panel * panel, PhoneEvent * event)
{
#if defined(GDK_WINDOWING_X11)
switch(event->type)
{
case PHONE_EVENT_TYPE_MODEM_EVENT:
@ -297,9 +321,15 @@ static int _panel_event(Panel * panel, PhoneEvent * event)
default:
break;
}
#else
(void) panel;
(void) event;
#endif
return 0;
}
#if defined(GDK_WINDOWING_X11)
static int _event_modem_event(Panel * panel, ModemEvent * event)
{
char const * media = "";
@ -328,8 +358,10 @@ static int _event_modem_event(Panel * panel, ModemEvent * event)
}
return 0;
}
#endif
#if defined(GDK_WINDOWING_X11)
/* panel_set_battery_level */
static void _set_battery_image(Panel * panel, PanelBattery battery,
gboolean charging);
@ -489,15 +521,19 @@ static void _panel_set_status(Panel * panel, gboolean data, gboolean roaming)
else
gtk_widget_hide(panel->roaming);
}
#endif
/* panel_settings */
#if defined(GDK_WINDOWING_X11)
static void _on_settings_cancel(gpointer data);
static gboolean _on_settings_closex(gpointer data);
static void _on_settings_ok(gpointer data);
#endif
static void _panel_settings(Panel * panel)
{
#if defined(GDK_WINDOWING_X11)
GtkWidget * vbox;
GtkWidget * bbox;
GtkWidget * widget;
@ -548,8 +584,13 @@ static void _panel_settings(Panel * panel)
gtk_container_add(GTK_CONTAINER(panel->window), vbox);
_on_settings_cancel(panel);
gtk_widget_show_all(panel->window);
#else
(void) panel;
#endif
}
#if defined(GDK_WINDOWING_X11)
static void _on_settings_cancel(gpointer data)
{
Panel * panel = data;
@ -610,3 +651,4 @@ static void _on_settings_ok(gpointer data)
helper->config_set(helper->phone, "panel", "truncate", value
? "1" : "0");
}
#endif