[Goodies-commits] r3930 - xfmpc/trunk/src
Mike Massonnet
mmassonnet at xfce.org
Fri Feb 8 12:34:57 CET 2008
Author: mmassonnet
Date: 2008-02-08 11:34:57 +0000 (Fri, 08 Feb 2008)
New Revision: 3930
Modified:
xfmpc/trunk/src/extended-interface.c
xfmpc/trunk/src/extended-interface.h
xfmpc/trunk/src/interface.c
xfmpc/trunk/src/interface.h
xfmpc/trunk/src/mpdclient.c
xfmpc/trunk/src/mpdclient.h
Log:
Make use of g_type_class_add_private in each GObject
* src/extended-interface.c, src/extended-interface.h,
src/interface.c, src/interface.h,
src/mpdclient.c, src/mpdclient.h:
- Create the private data structure with g_type_class_add_private instead of
allocating the private structure with g_slice_new
Modified: xfmpc/trunk/src/extended-interface.c
===================================================================
--- xfmpc/trunk/src/extended-interface.c 2008-02-08 11:34:49 UTC (rev 3929)
+++ xfmpc/trunk/src/extended-interface.c 2008-02-08 11:34:57 UTC (rev 3930)
@@ -26,8 +26,11 @@
#define BORDER 4
+#define XFMPC_EXTENDED_INTERFACE_GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE ((o), XFMPC_TYPE_EXTENDED_INTERFACE, XfmpcExtendedInterfacePrivate))
+
/* List store identifiers */
enum
{
@@ -50,20 +53,20 @@
struct _XfmpcExtendedInterfaceClass
{
- GtkVBoxClass parent_class;
+ GtkVBoxClass parent_class;
};
struct _XfmpcExtendedInterface
{
- GtkVBox parent;
- XfmpcExtendedInterfacePriv *priv;
+ GtkVBox parent;
+ XfmpcExtendedInterfacePrivate *priv;
};
-struct _XfmpcExtendedInterfacePriv
+struct _XfmpcExtendedInterfacePrivate
{
- GtkListStore *list_store;
- GtkWidget *combobox;
- GtkWidget *notebook;
+ GtkListStore *list_store;
+ GtkWidget *combobox;
+ GtkWidget *notebook;
};
@@ -105,6 +108,8 @@
{
GObjectClass *gobject_class;
+ g_type_class_add_private (klass, sizeof (XfmpcExtendedInterfacePrivate));
+
parent_class = g_type_class_peek_parent (klass);
gobject_class = G_OBJECT_CLASS (klass);
@@ -115,26 +120,24 @@
static void
xfmpc_extended_interface_init (XfmpcExtendedInterface *extended_interface)
{
- extended_interface->priv = g_slice_new0 (XfmpcExtendedInterfacePriv);
+ XfmpcExtendedInterfacePrivate *priv = XFMPC_EXTENDED_INTERFACE_GET_PRIVATE (extended_interface);
/* Combo box */
- GtkListStore *list_store = extended_interface->priv->list_store =
- gtk_list_store_new (N_COLUMNS,
- G_TYPE_STRING,
- G_TYPE_POINTER);
+ priv->list_store = gtk_list_store_new (N_COLUMNS,
+ G_TYPE_STRING,
+ G_TYPE_POINTER);
- GtkWidget *combobox = extended_interface->priv->combobox =
- gtk_combo_box_new_with_model (GTK_TREE_MODEL (list_store));
+ priv->combobox = gtk_combo_box_new_with_model (GTK_TREE_MODEL (priv->list_store));
GtkCellRenderer *cell = gtk_cell_renderer_text_new ();
- gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combobox), cell, TRUE);
- gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combobox),
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (priv->combobox), cell, TRUE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (priv->combobox),
cell, "text", COLUMN_STRING,
NULL);
/* Notebook */
- GtkWidget *notebook = extended_interface->priv->notebook = gtk_notebook_new ();
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (notebook), FALSE);
+ priv->notebook = gtk_notebook_new ();
+ gtk_notebook_set_show_tabs (GTK_NOTEBOOK (priv->notebook), FALSE);
/* Extended interface widgets */
GtkWidget *child = gtk_label_new ("Hello world!");
@@ -144,11 +147,11 @@
xfmpc_extended_interface_append_child (extended_interface, child, "Good bye world!");
/* Containers */
- gtk_box_pack_start (GTK_BOX (extended_interface), combobox, FALSE, FALSE, BORDER);
- gtk_box_pack_start (GTK_BOX (extended_interface), notebook, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (extended_interface), priv->combobox, FALSE, FALSE, BORDER);
+ gtk_box_pack_start (GTK_BOX (extended_interface), priv->notebook, TRUE, TRUE, 0);
/* Signals */
- g_signal_connect (combobox, "changed",
+ g_signal_connect (priv->combobox, "changed",
G_CALLBACK (cb_xfmpc_extended_interface_combobox_changed), extended_interface);
}
@@ -177,25 +180,29 @@
GtkWidget *child,
const gchar *title)
{
+ XfmpcExtendedInterfacePrivate *priv = XFMPC_EXTENDED_INTERFACE_GET_PRIVATE (extended_interface);
+
GtkTreeIter iter;
- gtk_list_store_append (extended_interface->priv->list_store, &iter);
- gtk_list_store_set (extended_interface->priv->list_store, &iter,
+ gtk_list_store_append (priv->list_store, &iter);
+ gtk_list_store_set (priv->list_store, &iter,
COLUMN_STRING, title,
COLUMN_POINTER, child,
-1);
- if (gtk_combo_box_get_active(GTK_COMBO_BOX (extended_interface->priv->combobox)) == -1)
- gtk_combo_box_set_active (GTK_COMBO_BOX (extended_interface->priv->combobox), 0);
+ if (gtk_combo_box_get_active(GTK_COMBO_BOX (priv->combobox)) == -1)
+ gtk_combo_box_set_active (GTK_COMBO_BOX (priv->combobox), 0);
- gtk_notebook_append_page (GTK_NOTEBOOK (extended_interface->priv->notebook), child, NULL);
- gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (extended_interface->priv->notebook), child, TRUE, TRUE, GTK_PACK_START);
+ gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook), child, NULL);
+ gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (priv->notebook), child, TRUE, TRUE, GTK_PACK_START);
}
static void
cb_xfmpc_extended_interface_combobox_changed (GtkComboBox *widget,
XfmpcExtendedInterface *extended_interface)
{
+ XfmpcExtendedInterfacePrivate *priv = XFMPC_EXTENDED_INTERFACE_GET_PRIVATE (extended_interface);
+
GtkWidget *child;
GtkTreeIter iter;
gint i;
@@ -203,12 +210,12 @@
if (gtk_combo_box_get_active_iter (widget, &iter) == FALSE)
return;
- gtk_tree_model_get (GTK_TREE_MODEL (extended_interface->priv->list_store), &iter,
+ gtk_tree_model_get (GTK_TREE_MODEL (priv->list_store), &iter,
COLUMN_POINTER, &child,
-1);
g_return_if_fail (G_LIKELY (GTK_IS_WIDGET (child)));
- i = gtk_notebook_page_num (GTK_NOTEBOOK (extended_interface->priv->notebook), child);
- gtk_notebook_set_current_page (GTK_NOTEBOOK (extended_interface->priv->notebook), i);
+ i = gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook), child);
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), i);
}
Modified: xfmpc/trunk/src/extended-interface.h
===================================================================
--- xfmpc/trunk/src/extended-interface.h 2008-02-08 11:34:49 UTC (rev 3929)
+++ xfmpc/trunk/src/extended-interface.h 2008-02-08 11:34:57 UTC (rev 3930)
@@ -33,7 +33,7 @@
typedef struct _XfmpcExtendedInterfaceClass XfmpcExtendedInterfaceClass;
typedef struct _XfmpcExtendedInterface XfmpcExtendedInterface;
-typedef struct _XfmpcExtendedInterfacePriv XfmpcExtendedInterfacePriv;
+typedef struct _XfmpcExtendedInterfacePrivate XfmpcExtendedInterfacePrivate;
GType xfmpc_extended_interface_get_type () G_GNUC_CONST;
Modified: xfmpc/trunk/src/interface.c
===================================================================
--- xfmpc/trunk/src/interface.c 2008-02-08 11:34:49 UTC (rev 3929)
+++ xfmpc/trunk/src/interface.c 2008-02-08 11:34:57 UTC (rev 3930)
@@ -32,8 +32,11 @@
#define BORDER 4
+#define XFMPC_INTERFACE_GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE ((o), XFMPC_TYPE_INTERFACE, XfmpcInterfacePrivate))
+
static void xfmpc_interface_class_init (XfmpcInterfaceClass *klass);
static void xfmpc_interface_init (XfmpcInterface *interface);
static void xfmpc_interface_dispose (GObject *object);
@@ -62,27 +65,27 @@
struct _XfmpcInterfaceClass
{
- GtkWindowClass parent_class;
+ GtkWindowClass parent_class;
};
struct _XfmpcInterface
{
- GtkWindow parent;
- XfmpcInterfacePriv *priv;
- GtkWidget *extended_interface;
- XfmpcPreferences *preferences;
- XfmpcMpdclient *mpdclient;
+ GtkWindow parent;
+ XfmpcInterfacePrivate *priv;
+ GtkWidget *extended_interface;
+ XfmpcPreferences *preferences;
+ XfmpcMpdclient *mpdclient;
};
-struct _XfmpcInterfacePriv
+struct _XfmpcInterfacePrivate
{
- GtkWidget *button_prev;
- GtkWidget *button_pp; /* play/pause */
- GtkWidget *button_next;
- GtkWidget *button_volume;
- GtkWidget *progress_bar; /* position in song */
- GtkWidget *title;
- GtkWidget *subtitle;
+ GtkWidget *button_prev;
+ GtkWidget *button_pp; /* play/pause */
+ GtkWidget *button_next;
+ GtkWidget *button_volume;
+ GtkWidget *progress_bar; /* position in song */
+ GtkWidget *title;
+ GtkWidget *subtitle;
};
@@ -136,6 +139,8 @@
{
GObjectClass *gobject_class;
+ g_type_class_add_private (klass, sizeof (XfmpcInterfacePrivate));
+
parent_class = g_type_class_peek_parent (klass);
gobject_class = G_OBJECT_CLASS (klass);
@@ -146,7 +151,8 @@
static void
xfmpc_interface_init (XfmpcInterface *interface)
{
- interface->priv = g_slice_new0 (XfmpcInterfacePriv);
+ XfmpcInterfacePrivate *priv = XFMPC_INTERFACE_GET_PRIVATE (interface);
+
interface->preferences = xfmpc_preferences_get ();
interface->mpdclient = xfmpc_mpdclient_new ();
@@ -171,25 +177,25 @@
/* === Interface widgets === */
GtkWidget *image = gtk_image_new_from_stock (GTK_STOCK_MEDIA_PREVIOUS, GTK_ICON_SIZE_BUTTON);
- GtkWidget *control = interface->priv->button_prev = gtk_button_new ();
+ GtkWidget *control = priv->button_prev = gtk_button_new ();
gtk_button_set_relief (GTK_BUTTON (control), GTK_RELIEF_NONE);
gtk_container_add (GTK_CONTAINER (control), image);
image = gtk_image_new_from_stock (GTK_STOCK_MEDIA_PLAY, GTK_ICON_SIZE_BUTTON);
- control = interface->priv->button_pp = gtk_button_new ();
+ control = priv->button_pp = gtk_button_new ();
gtk_button_set_relief (GTK_BUTTON (control), GTK_RELIEF_NONE);
gtk_container_add (GTK_CONTAINER (control), image);
image = gtk_image_new_from_stock (GTK_STOCK_MEDIA_NEXT, GTK_ICON_SIZE_BUTTON);
- control = interface->priv->button_next = gtk_button_new ();
+ control = priv->button_next = gtk_button_new ();
gtk_button_set_relief (GTK_BUTTON (control), GTK_RELIEF_NONE);
gtk_container_add (GTK_CONTAINER (control), image);
- control = interface->priv->button_volume = gtk_volume_button_new ();
+ control = priv->button_volume = gtk_volume_button_new ();
gtk_button_set_relief (GTK_BUTTON (control), GTK_RELIEF_NONE);
GtkWidget *progress_box = gtk_event_box_new ();
- control = interface->priv->progress_bar = gtk_progress_bar_new ();
+ control = priv->progress_bar = gtk_progress_bar_new ();
gtk_progress_bar_set_text (GTK_PROGRESS_BAR (control), "0:00 / 0:00");
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (control), 1.0);
gtk_container_add (GTK_CONTAINER (progress_box), control);
@@ -208,7 +214,7 @@
attr->end_index = -1;
pango_attr_list_insert (attrs, attr);
- GtkWidget *label = interface->priv->title = gtk_label_new (_("Not connected"));
+ GtkWidget *label = priv->title = gtk_label_new (_("Not connected"));
gtk_label_set_attributes (GTK_LABEL (label), attrs);
gtk_label_set_selectable (GTK_LABEL (label), TRUE);
gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
@@ -221,7 +227,7 @@
attr->end_index = -1;
pango_attr_list_insert (attrs, attr);
- label = interface->priv->subtitle = gtk_label_new (PACKAGE_STRING);
+ label = priv->subtitle = gtk_label_new (PACKAGE_STRING);
gtk_label_set_attributes (GTK_LABEL (label), attrs);
gtk_label_set_selectable (GTK_LABEL (label), TRUE);
gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END);
@@ -233,16 +239,16 @@
GtkWidget *box = gtk_hbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (box), interface->priv->button_prev, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (box), interface->priv->button_pp, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (box), interface->priv->button_next, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (box), priv->button_prev, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (box), priv->button_pp, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (box), priv->button_next, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (box), progress_box, TRUE, TRUE, BORDER);
- gtk_box_pack_start (GTK_BOX (box), interface->priv->button_volume, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (box), priv->button_volume, FALSE, FALSE, 0);
box = gtk_vbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, TRUE, 0);
- gtk_container_add (GTK_CONTAINER (box), interface->priv->title);
- gtk_container_add (GTK_CONTAINER (box), interface->priv->subtitle);
+ gtk_container_add (GTK_CONTAINER (box), priv->title);
+ gtk_container_add (GTK_CONTAINER (box), priv->subtitle);
gtk_box_pack_start (GTK_BOX (vbox), interface->extended_interface, TRUE, TRUE, 0);
@@ -258,13 +264,13 @@
gtk_window_add_accel_group (GTK_WINDOW (interface), accel_group);
/* === Signals === */
- g_signal_connect_swapped (interface->priv->button_prev, "clicked",
+ g_signal_connect_swapped (priv->button_prev, "clicked",
G_CALLBACK (xfmpc_mpdclient_previous), interface->mpdclient);
- g_signal_connect_swapped (interface->priv->button_pp, "clicked",
+ g_signal_connect_swapped (priv->button_pp, "clicked",
G_CALLBACK (xfmpc_interface_pp_clicked), interface);
- g_signal_connect_swapped (interface->priv->button_next, "clicked",
+ g_signal_connect_swapped (priv->button_next, "clicked",
G_CALLBACK (xfmpc_mpdclient_next), interface->mpdclient);
- g_signal_connect_swapped (interface->priv->button_volume, "value-changed",
+ g_signal_connect_swapped (priv->button_volume, "value-changed",
G_CALLBACK (xfmpc_interface_volume_changed), interface);
g_signal_connect_swapped (progress_box, "button-press-event",
G_CALLBACK (xfmpc_interface_progress_box_press_event), interface);
@@ -300,31 +306,36 @@
xfmpc_interface_set_title (XfmpcInterface *interface,
const gchar *title)
{
- gtk_label_set_text (GTK_LABEL (interface->priv->title), title);
+ XfmpcInterfacePrivate *priv = XFMPC_INTERFACE_GET_PRIVATE (interface);
+
+ gtk_label_set_text (GTK_LABEL (priv->title), title);
}
void
xfmpc_interface_set_subtitle (XfmpcInterface *interface,
const gchar *subtitle)
{
- gtk_label_set_text (GTK_LABEL (interface->priv->subtitle), subtitle);
+ XfmpcInterfacePrivate *priv = XFMPC_INTERFACE_GET_PRIVATE (interface);
+
+ gtk_label_set_text (GTK_LABEL (priv->subtitle), subtitle);
}
void
xfmpc_interface_pp_clicked (XfmpcInterface *interface)
{
- XfmpcMpdclient *mpdclient = interface->mpdclient;
- if (G_UNLIKELY (!xfmpc_mpdclient_pp (mpdclient)))
+ if (G_UNLIKELY (!xfmpc_mpdclient_pp (interface->mpdclient)))
return;
- xfmpc_interface_set_pp (interface, xfmpc_mpdclient_is_playing (mpdclient));
+ xfmpc_interface_set_pp (interface, xfmpc_mpdclient_is_playing (interface->mpdclient));
}
void
xfmpc_interface_set_pp (XfmpcInterface *interface,
gboolean play)
{
- GtkWidget *image = gtk_bin_get_child (GTK_BIN (interface->priv->button_pp));
+ XfmpcInterfacePrivate *priv = XFMPC_INTERFACE_GET_PRIVATE (interface);
+ GtkWidget *image = gtk_bin_get_child (GTK_BIN (priv->button_pp));
+
if (play == TRUE)
gtk_image_set_from_stock (GTK_IMAGE (image), GTK_STOCK_MEDIA_PAUSE, GTK_ICON_SIZE_BUTTON);
else
@@ -335,18 +346,19 @@
xfmpc_interface_progress_box_press_event (XfmpcInterface *interface,
GdkEventButton *event)
{
+ XfmpcInterfacePrivate *priv = XFMPC_INTERFACE_GET_PRIVATE (interface);
+
if (G_UNLIKELY (event->type != GDK_BUTTON_PRESS || event->button != 1))
return FALSE;
- XfmpcMpdclient *mpdclient = interface->mpdclient;
- gint time_total = xfmpc_mpdclient_get_total_time (mpdclient);
+ gint time_total = xfmpc_mpdclient_get_total_time (interface->mpdclient);
if (G_UNLIKELY (time_total < 0))
return FALSE;
- gdouble time = event->x / interface->priv->progress_bar->allocation.width;
+ gdouble time = event->x / priv->progress_bar->allocation.width;
time *= time_total;
- xfmpc_mpdclient_set_song_time (mpdclient, (guint)time);
+ xfmpc_mpdclient_set_song_time (interface->mpdclient, (guint)time);
return TRUE;
}
@@ -355,15 +367,16 @@
xfmpc_interface_volume_changed (XfmpcInterface *interface,
gdouble value)
{
- guint8 volume = value * 100;
- xfmpc_mpdclient_set_volume (interface->mpdclient, volume);
+ xfmpc_mpdclient_set_volume (interface->mpdclient, (guint8)(value * 100));
}
void
xfmpc_interface_set_volume (XfmpcInterface *interface,
guint8 volume)
{
- gtk_scale_button_set_value (GTK_SCALE_BUTTON (interface->priv->button_volume), (gdouble)volume / 100);
+ XfmpcInterfacePrivate *priv = XFMPC_INTERFACE_GET_PRIVATE (interface);
+
+ gtk_scale_button_set_value (GTK_SCALE_BUTTON (priv->button_volume), (gdouble)volume / 100);
}
void
@@ -371,6 +384,8 @@
gint time,
gint time_total)
{
+ XfmpcInterfacePrivate *priv = XFMPC_INTERFACE_GET_PRIVATE (interface);
+
gint min, sec, min_total, sec_total;
gchar *text;
gdouble fraction = 1.0;
@@ -382,24 +397,23 @@
sec_total = time_total % 60;
text = g_strdup_printf ("%d:%02d / %d:%02d", min, sec, min_total, sec_total);
- gtk_progress_bar_set_text (GTK_PROGRESS_BAR (interface->priv->progress_bar), text);
+ gtk_progress_bar_set_text (GTK_PROGRESS_BAR (priv->progress_bar), text);
g_free (text);
if (G_LIKELY (time_total > 0))
fraction = (gfloat)time / (gfloat)time_total;
- gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (interface->priv->progress_bar), fraction);
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (priv->progress_bar), fraction);
}
static gboolean
xfmpc_interface_refresh (XfmpcInterface *interface)
{
- XfmpcMpdclient *mpdclient = interface->mpdclient;
gchar *text = NULL;
- if (G_UNLIKELY (xfmpc_mpdclient_connect (mpdclient) == FALSE))
+ if (G_UNLIKELY (xfmpc_mpdclient_connect (interface->mpdclient) == FALSE))
{
g_warning ("Failed to connect to MPD");
- xfmpc_mpdclient_disconnect (mpdclient);
+ xfmpc_mpdclient_disconnect (interface->mpdclient);
xfmpc_interface_set_pp (interface, FALSE);
xfmpc_interface_set_time (interface, 0, 0);
xfmpc_interface_set_volume (interface, 0);
@@ -411,18 +425,18 @@
return FALSE;
}
- xfmpc_mpdclient_update_status (mpdclient);
+ xfmpc_mpdclient_update_status (interface->mpdclient);
- if (G_UNLIKELY (xfmpc_mpdclient_status (mpdclient, VOLUME_CHANGED)))
+ if (G_UNLIKELY (xfmpc_mpdclient_status (interface->mpdclient, VOLUME_CHANGED)))
{
/* volume */
- xfmpc_interface_set_volume (interface, xfmpc_mpdclient_get_volume (mpdclient));
+ xfmpc_interface_set_volume (interface, xfmpc_mpdclient_get_volume (interface->mpdclient));
}
- if (G_UNLIKELY (xfmpc_mpdclient_is_stopped (mpdclient)))
+ if (G_UNLIKELY (xfmpc_mpdclient_is_stopped (interface->mpdclient)))
{
/* stopped */
- if (xfmpc_mpdclient_status (mpdclient, STOP_CHANGED))
+ if (xfmpc_mpdclient_status (interface->mpdclient, STOP_CHANGED))
{
xfmpc_interface_set_pp (interface, FALSE);
xfmpc_interface_set_time (interface, 0, 0);
@@ -433,30 +447,30 @@
return TRUE;
}
- if (G_LIKELY (xfmpc_mpdclient_status (mpdclient, TIME_CHANGED)))
+ if (G_LIKELY (xfmpc_mpdclient_status (interface->mpdclient, TIME_CHANGED)))
{
/* song time */
xfmpc_interface_set_time (interface,
- xfmpc_mpdclient_get_time (mpdclient),
- xfmpc_mpdclient_get_total_time (mpdclient));
+ xfmpc_mpdclient_get_time (interface->mpdclient),
+ xfmpc_mpdclient_get_total_time (interface->mpdclient));
}
- if (G_UNLIKELY (xfmpc_mpdclient_status (mpdclient, PP_CHANGED)))
+ if (G_UNLIKELY (xfmpc_mpdclient_status (interface->mpdclient, PP_CHANGED)))
{
/* play/pause */
- xfmpc_interface_set_pp (interface, xfmpc_mpdclient_is_playing (mpdclient));
+ xfmpc_interface_set_pp (interface, xfmpc_mpdclient_is_playing (interface->mpdclient));
}
- if (G_UNLIKELY (xfmpc_mpdclient_status (mpdclient, SONG_CHANGED)))
+ if (G_UNLIKELY (xfmpc_mpdclient_status (interface->mpdclient, SONG_CHANGED)))
{
/* title */
- xfmpc_interface_set_title (interface, xfmpc_mpdclient_get_title (mpdclient));
+ xfmpc_interface_set_title (interface, xfmpc_mpdclient_get_title (interface->mpdclient));
/* subtitle "by \"artist\" from \"album\" (year)" */
text = g_strdup_printf (_("by \"%s\" from \"%s\" (%s)"),
- xfmpc_mpdclient_get_artist (mpdclient),
- xfmpc_mpdclient_get_album (mpdclient),
- xfmpc_mpdclient_get_date (mpdclient));
+ xfmpc_mpdclient_get_artist (interface->mpdclient),
+ xfmpc_mpdclient_get_album (interface->mpdclient),
+ xfmpc_mpdclient_get_date (interface->mpdclient));
/* text = xfmpc_interface_get_subtitle (interface); to avoid "n/a" values */
xfmpc_interface_set_subtitle (interface, text);
g_free (text);
@@ -549,6 +563,8 @@
xfmpc_interface_action_volume (GtkAction *action,
XfmpcInterface *interface)
{
+ XfmpcInterfacePrivate *priv = XFMPC_INTERFACE_GET_PRIVATE (interface);
+
g_signal_emit_by_name (interface->priv->button_volume, "popup", G_TYPE_NONE);
}
Modified: xfmpc/trunk/src/interface.h
===================================================================
--- xfmpc/trunk/src/interface.h 2008-02-08 11:34:49 UTC (rev 3929)
+++ xfmpc/trunk/src/interface.h 2008-02-08 11:34:57 UTC (rev 3930)
@@ -33,7 +33,7 @@
typedef struct _XfmpcInterfaceClass XfmpcInterfaceClass;
typedef struct _XfmpcInterface XfmpcInterface;
-typedef struct _XfmpcInterfacePriv XfmpcInterfacePriv;
+typedef struct _XfmpcInterfacePrivate XfmpcInterfacePrivate;
GType xfmpc_interface_get_type () G_GNUC_CONST;
Modified: xfmpc/trunk/src/mpdclient.c
===================================================================
--- xfmpc/trunk/src/mpdclient.c 2008-02-08 11:34:49 UTC (rev 3929)
+++ xfmpc/trunk/src/mpdclient.c 2008-02-08 11:34:57 UTC (rev 3930)
@@ -28,8 +28,11 @@
#define MPD_HOST "localhost"
#define MPD_PORT 6600
+#define XFMPC_MPDCLIENT_GET_PRIVATE(o) \
+ (G_TYPE_INSTANCE_GET_PRIVATE ((o), XFMPC_TYPE_MPDCLIENT, XfmpcMpdclientPrivate))
+
static void xfmpc_mpdclient_class_init (XfmpcMpdclientClass *klass);
static void xfmpc_mpdclient_init (XfmpcMpdclient *mpdclient);
static void xfmpc_mpdclient_finalize (GObject *object);
@@ -44,23 +47,23 @@
struct _XfmpcMpdclientClass
{
- GObjectClass parent_class;
+ GObjectClass parent_class;
};
struct _XfmpcMpdclient
{
- GObject parent;
- XfmpcMpdclientPriv *priv;
+ GObject parent;
+ XfmpcMpdclientPrivate *priv;
};
-struct _XfmpcMpdclientPriv
+struct _XfmpcMpdclientPrivate
{
- MpdObj *mi;
- gchar *host;
- guint port;
- gchar *passwd;
+ MpdObj *mi;
+ gchar *host;
+ guint port;
+ gchar *passwd;
- StatusField status;
+ StatusField status;
};
@@ -102,6 +105,8 @@
{
GObjectClass *gobject_class;
+ g_type_class_add_private (klass, sizeof (XfmpcMpdclientPrivate));
+
parent_class = g_type_class_peek_parent (klass);
gobject_class = G_OBJECT_CLASS (klass);
@@ -111,17 +116,20 @@
static void
xfmpc_mpdclient_init (XfmpcMpdclient *mpdclient)
{
- mpdclient->priv = g_slice_new0 (XfmpcMpdclientPriv);
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
xfmpc_mpdclient_initenv (mpdclient);
- mpdclient->priv->mi = mpd_new (mpdclient->priv->host, mpdclient->priv->port, mpdclient->priv->passwd);
- mpd_signal_connect_status_changed (mpdclient->priv->mi, (StatusChangedCallback)cb_xfmpc_mpdclient_status_changed, mpdclient);
+ priv->mi = mpd_new (priv->host, priv->port, priv->passwd);
+ mpd_signal_connect_status_changed (priv->mi, (StatusChangedCallback)cb_xfmpc_mpdclient_status_changed, mpdclient);
}
static void
xfmpc_mpdclient_finalize (GObject *object)
{
XfmpcMpdclient *mpdclient = XFMPC_MPDCLIENT (object);
- mpd_free (mpdclient->priv->mi);
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ mpd_free (priv->mi);
(*G_OBJECT_CLASS (parent_class)->finalize) (object);
}
@@ -146,24 +154,26 @@
static void
xfmpc_mpdclient_initenv (XfmpcMpdclient *mpdclient)
{
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
/* Hostname */
- mpdclient->priv->host = (g_getenv ("MPD_HOST") != NULL) ?
+ priv->host = (g_getenv ("MPD_HOST") != NULL) ?
g_strdup (g_getenv ("MPD_HOST")) :
g_strdup (MPD_HOST);
/* Port */
- mpdclient->priv->port = (g_getenv ("MPD_PORT") != NULL) ?
+ priv->port = (g_getenv ("MPD_PORT") != NULL) ?
(gint) g_ascii_strtoll (g_getenv ("MPD_PORT"), NULL, 0) :
MPD_PORT;
/* Check for password */
- mpdclient->priv->passwd = NULL;
- gchar **split = g_strsplit (mpdclient->priv->host, "@", 2);
+ priv->passwd = NULL;
+ gchar **split = g_strsplit (priv->host, "@", 2);
if (g_strv_length (split) == 2)
{
- g_free (mpdclient->priv->host);
- mpdclient->priv->host = g_strdup (split[0]);
- mpdclient->priv->passwd = g_strdup (split[1]);
+ g_free (priv->host);
+ priv->host = g_strdup (split[0]);
+ priv->passwd = g_strdup (split[1]);
}
g_strfreev (split);
}
@@ -171,13 +181,15 @@
gboolean
xfmpc_mpdclient_connect (XfmpcMpdclient *mpdclient)
{
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
if (xfmpc_mpdclient_is_connected (mpdclient))
return TRUE;
- if (mpd_connect (mpdclient->priv->mi) != MPD_OK)
+ if (mpd_connect (priv->mi) != MPD_OK)
return FALSE;
- mpd_send_password (mpdclient->priv->mi);
+ mpd_send_password (priv->mi);
return TRUE;
}
@@ -185,20 +197,26 @@
void
xfmpc_mpdclient_disconnect (XfmpcMpdclient *mpdclient)
{
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
if (xfmpc_mpdclient_is_connected (mpdclient))
- mpd_disconnect (mpdclient->priv->mi);
+ mpd_disconnect (priv->mi);
}
gboolean
xfmpc_mpdclient_is_connected (XfmpcMpdclient *mpdclient)
{
- return mpd_check_connected (mpdclient->priv->mi);
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ return mpd_check_connected (priv->mi);
}
gboolean
xfmpc_mpdclient_previous (XfmpcMpdclient *mpdclient)
{
- if (mpd_player_prev (mpdclient->priv->mi) != MPD_OK)
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ if (mpd_player_prev (priv->mi) != MPD_OK)
return FALSE;
else
return TRUE;
@@ -216,7 +234,9 @@
gboolean
xfmpc_mpdclient_play (XfmpcMpdclient *mpdclient)
{
- if (mpd_player_play (mpdclient->priv->mi) != MPD_OK)
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ if (mpd_player_play (priv->mi) != MPD_OK)
return FALSE;
else
return TRUE;
@@ -225,7 +245,9 @@
gboolean
xfmpc_mpdclient_pause (XfmpcMpdclient *mpdclient)
{
- if (mpd_player_pause (mpdclient->priv->mi) != MPD_OK)
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ if (mpd_player_pause (priv->mi) != MPD_OK)
return FALSE;
else
return TRUE;
@@ -234,7 +256,9 @@
gboolean
xfmpc_mpdclient_stop (XfmpcMpdclient *mpdclient)
{
- if (mpd_player_stop (mpdclient->priv->mi) != MPD_OK)
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ if (mpd_player_stop (priv->mi) != MPD_OK)
return FALSE;
else
return TRUE;
@@ -243,7 +267,9 @@
gboolean
xfmpc_mpdclient_next (XfmpcMpdclient *mpdclient)
{
- if (mpd_player_next (mpdclient->priv->mi) != MPD_OK)
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ if (mpd_player_next (priv->mi) != MPD_OK)
return FALSE;
else
return TRUE;
@@ -253,7 +279,9 @@
xfmpc_mpdclient_set_volume (XfmpcMpdclient *mpdclient,
guint8 volume)
{
- if (mpd_status_set_volume (mpdclient->priv->mi, volume) < 0)
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ if (mpd_status_set_volume (priv->mi, volume) < 0)
return FALSE;
else
return TRUE;
@@ -263,7 +291,9 @@
xfmpc_mpdclient_set_song_time (XfmpcMpdclient *mpdclient,
guint time)
{
- if (mpd_player_seek (mpdclient->priv->mi, time) != MPD_OK)
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ if (mpd_player_seek (priv->mi, time) != MPD_OK)
return FALSE;
else
return TRUE;
@@ -272,7 +302,9 @@
const gchar *
xfmpc_mpdclient_get_artist (XfmpcMpdclient *mpdclient)
{
- mpd_Song *song = mpd_playlist_get_current_song (mpdclient->priv->mi);
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ mpd_Song *song = mpd_playlist_get_current_song (priv->mi);
if (G_UNLIKELY (NULL == song))
return NULL;
@@ -285,7 +317,9 @@
const gchar *
xfmpc_mpdclient_get_title (XfmpcMpdclient *mpdclient)
{
- mpd_Song *song = mpd_playlist_get_current_song (mpdclient->priv->mi);
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ mpd_Song *song = mpd_playlist_get_current_song (priv->mi);
if (G_UNLIKELY (NULL == song))
return NULL;
@@ -298,7 +332,9 @@
const gchar *
xfmpc_mpdclient_get_album (XfmpcMpdclient *mpdclient)
{
- mpd_Song *song = mpd_playlist_get_current_song (mpdclient->priv->mi);
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ mpd_Song *song = mpd_playlist_get_current_song (priv->mi);
if (G_UNLIKELY (NULL == song))
return NULL;
@@ -311,7 +347,9 @@
const gchar *
xfmpc_mpdclient_get_date (XfmpcMpdclient *mpdclient)
{
- mpd_Song *song = mpd_playlist_get_current_song (mpdclient->priv->mi);
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ mpd_Song *song = mpd_playlist_get_current_song (priv->mi);
if (G_UNLIKELY (NULL == song))
return NULL;
@@ -324,47 +362,61 @@
gint
xfmpc_mpdclient_get_time (XfmpcMpdclient *mpdclient)
{
- return mpd_status_get_elapsed_song_time (mpdclient->priv->mi);
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ return mpd_status_get_elapsed_song_time (priv->mi);
}
gint
xfmpc_mpdclient_get_total_time (XfmpcMpdclient *mpdclient)
{
- return mpd_status_get_total_song_time (mpdclient->priv->mi);
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ return mpd_status_get_total_song_time (priv->mi);
}
guint8
xfmpc_mpdclient_get_volume (XfmpcMpdclient *mpdclient)
{
- gint volume = mpd_status_get_volume (mpdclient->priv->mi);
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ gint volume = mpd_status_get_volume (priv->mi);
return (volume < 0) ? 100 : volume;
}
gboolean
xfmpc_mpdclient_is_playing (XfmpcMpdclient *mpdclient)
{
- return mpd_player_get_state (mpdclient->priv->mi) == MPD_PLAYER_PLAY;
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ return mpd_player_get_state (priv->mi) == MPD_PLAYER_PLAY;
}
gboolean
xfmpc_mpdclient_is_stopped (XfmpcMpdclient *mpdclient)
{
- return mpd_player_get_state (mpdclient->priv->mi) == MPD_PLAYER_STOP;
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ return mpd_player_get_state (priv->mi) == MPD_PLAYER_STOP;
}
void
xfmpc_mpdclient_update_status (XfmpcMpdclient *mpdclient)
{
- mpd_status_update (mpdclient->priv->mi);
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ mpd_status_update (priv->mi);
}
gboolean
xfmpc_mpdclient_status (XfmpcMpdclient *mpdclient,
gint bits)
{
- if (mpdclient->priv->status & bits)
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
+
+ if (priv->status & bits)
{
- mpdclient->priv->status &= ~bits;
+ priv->status &= ~bits;
return TRUE;
}
@@ -378,22 +430,22 @@
{
XfmpcMpdclient *mpdclient = user_data;
g_return_if_fail (G_LIKELY (NULL != user_data));
+ XfmpcMpdclientPrivate *priv = XFMPC_MPDCLIENT_GET_PRIVATE (mpdclient);
if (what & MPD_CST_STATE)
{
switch (mpd_player_get_state (mi))
{
case MPD_PLAYER_STOP:
- mpdclient->priv->status |= STOP_CHANGED;
- mpdclient->priv->status |= SONG_CHANGED; /* as to say that the next time
- the song plays again, it needs
- to update its title in the
- interface */
+ priv->status |= STOP_CHANGED;
+ priv->status |= SONG_CHANGED; /* as to say that the next time the
+ song plays again, it needs to update
+ its title in the interface */
break;
case MPD_PLAYER_PLAY:
case MPD_PLAYER_PAUSE:
- mpdclient->priv->status |= PP_CHANGED;
+ priv->status |= PP_CHANGED;
break;
default:
@@ -402,12 +454,12 @@
}
if (what & MPD_CST_SONGID)
- mpdclient->priv->status |= SONG_CHANGED;
+ priv->status |= SONG_CHANGED;
if (what & MPD_CST_VOLUME)
- mpdclient->priv->status |= VOLUME_CHANGED;
+ priv->status |= VOLUME_CHANGED;
if (what & (MPD_CST_ELAPSED_TIME|MPD_CST_TOTAL_TIME))
- mpdclient->priv->status |= TIME_CHANGED;
+ priv->status |= TIME_CHANGED;
}
Modified: xfmpc/trunk/src/mpdclient.h
===================================================================
--- xfmpc/trunk/src/mpdclient.h 2008-02-08 11:34:49 UTC (rev 3929)
+++ xfmpc/trunk/src/mpdclient.h 2008-02-08 11:34:57 UTC (rev 3930)
@@ -42,7 +42,7 @@
typedef struct _XfmpcMpdclientClass XfmpcMpdclientClass;
typedef struct _XfmpcMpdclient XfmpcMpdclient;
-typedef struct _XfmpcMpdclientPriv XfmpcMpdclientPriv;
+typedef struct _XfmpcMpdclientPrivate XfmpcMpdclientPrivate;
GType xfmpc_mpdclient_get_type () G_GNUC_CONST;
More information about the Goodies-commits
mailing list