[Goodies-commits] r2321 - xfce4-mpc-plugin/trunk/panel-plugin

Landry Breuil landry at xfce.org
Mon Jan 8 22:56:10 CET 2007


Author: landry
Date: 2007-01-08 21:56:10 +0000 (Mon, 08 Jan 2007)
New Revision: 2321

Modified:
   xfce4-mpc-plugin/trunk/panel-plugin/simple-libmpd.c
   xfce4-mpc-plugin/trunk/panel-plugin/simple-libmpd.h
   xfce4-mpc-plugin/trunk/panel-plugin/xfce4-mpc-plugin.c
Log:
- various style fixes in mpc-plugin.c => real indent pass just before next release
- working on simple-libmpd to implement functions needed by playlist window
(svn users, don't try to make this work without libmpd atm)


Modified: xfce4-mpc-plugin/trunk/panel-plugin/simple-libmpd.c
===================================================================
--- xfce4-mpc-plugin/trunk/panel-plugin/simple-libmpd.c	2007-01-08 21:47:25 UTC (rev 2320)
+++ xfce4-mpc-plugin/trunk/panel-plugin/simple-libmpd.c	2007-01-08 21:56:10 UTC (rev 2321)
@@ -53,6 +53,7 @@
    mo->repeat = 0;
    mo->random = 0;
    mo->curvol = 0;
+   mo->cursong = 0;
    mo->error = 0;
    mo->buffer[0] = '\0';
    mo->buflen = 0;
@@ -267,7 +268,7 @@
 {
    int nbwri;
    void *res = NULL;
-   /* write 'status' to socket */
+   /* write 'cmd' to socket */
    if (mo->socket) 
    {
       DBG("Sending \"%s\"",cmd);
@@ -315,6 +316,7 @@
       if      (0 == strcmp("volume",key)) mo->curvol = atoi(value);
       else if (0 == strcmp("repeat",key)) mo->repeat = atoi(value);
       else if (0 == strcmp("random",key)) mo->random = atoi(value);
+      else if (0 == strcmp("song",key)) mo->cursong = atoi(value);
       else if (0 == strcmp("state", key)) 
       {
          if      (0 == strcmp("play", value)) mo->status = MPD_PLAYER_PLAY;
@@ -366,6 +368,14 @@
    return (void*) ms;
 }
 
+void* parse_playlistinfo_answer(MpdObj *mo)
+{
+   MpdData* md = (MpdData*) calloc(1, sizeof(MpdData));
+   /* mimic parse_currentsong_answer on a large loop */
+   /* TODO HERE */
+   return (void*) md;
+}
+
 mpd_Song* mpd_playlist_get_current_song(MpdObj* mo)
 {
    mpd_Song* ms;
@@ -375,6 +385,35 @@
    return ((!mo->error) ? ms : NULL);
 }
 
+int mpd_player_get_current_song_pos(MpdObj* mo)
+{
+   DBG("!");
+   return ((mpd_status_update(mo) != MPD_OK) ? -1 : mo->cursong);
+}
+
+MpdData* mpd_playlist_get_changes(MpdObj* mo, int old_playlist_id)
+{
+   MpdData* md;
+   DBG("!");
+   md = (MpdData*) send_complex_cmd(mo, "playlistinfo\n", parse_playlistinfo_answer);
+   /* return NULL if error */
+   return ((!mo->error) ? md : NULL);
+}
+
+MpdData* mpd_data_get_next(MpdData* md)
+{
+   md->cur++;
+   /* return NULL if after last */
+   if (md->cur == md->nb)
+   {
+      /* free recursively(md) */
+      /* TODO HERE */
+      return NULL;
+   }
+   md->song = md->allsongs[md->cur];
+   return md;
+}
+
 void mpd_status_set_volume(MpdObj* mo, int newvol)
 {
    char outbuf[15];
@@ -452,6 +491,14 @@
    return mpd_send_single_cmd(mo,"play\n");
 }
 
+int mpd_player_play_id(MpdObj* mo, int id)
+{
+   char outbuf[15];
+   DBG("!");
+   sprintf(outbuf,"play %d\n",id);
+   return mpd_send_single_cmd(mo,outbuf);
+}
+
 int mpd_check_error(MpdObj* mo)
 {
    DBG("! return %d",mo->error);

Modified: xfce4-mpc-plugin/trunk/panel-plugin/simple-libmpd.h
===================================================================
--- xfce4-mpc-plugin/trunk/panel-plugin/simple-libmpd.h	2007-01-08 21:47:25 UTC (rev 2320)
+++ xfce4-mpc-plugin/trunk/panel-plugin/simple-libmpd.h	2007-01-08 21:56:10 UTC (rev 2321)
@@ -46,6 +46,7 @@
    int socket;
    int status;
    int curvol;
+   int cursong;
    int repeat;
    int random;
    int error;
@@ -58,8 +59,18 @@
    char* album;
    char* track;
    char* title;
+   int pos;
+   int id;
 } mpd_Song;
 
+typedef struct {
+   /* here, i must cheat, too hard to follow libmpd's behaviour */
+   mpd_Song* song;
+   mpd_Song** allsongs;
+   int nb;
+   int cur;
+} MpdData;
+
 MpdObj* mpd_new(char*, int, char*);
 void mpd_free(MpdObj*);
 void mpd_connect(MpdObj*);
@@ -73,6 +84,10 @@
 int mpd_player_stop(MpdObj*);
 int mpd_player_pause(MpdObj*);
 int mpd_player_play(MpdObj*);
+int mpd_player_play_id(MpdObj*, int);
+int mpd_player_get_current_song_pos(MpdObj*);
+MpdData* mpd_playlist_get_changes(MpdObj*, int);
+MpdData* mpd_data_get_next(MpdData*);
 mpd_Song* mpd_playlist_get_current_song(MpdObj*);
 int mpd_check_error(MpdObj*);
 void mpd_set_hostname(MpdObj*, char*);

Modified: xfce4-mpc-plugin/trunk/panel-plugin/xfce4-mpc-plugin.c
===================================================================
--- xfce4-mpc-plugin/trunk/panel-plugin/xfce4-mpc-plugin.c	2007-01-08 21:47:25 UTC (rev 2320)
+++ xfce4-mpc-plugin/trunk/panel-plugin/xfce4-mpc-plugin.c	2007-01-08 21:56:10 UTC (rev 2321)
@@ -16,7 +16,7 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
- 
+
 /* double inclusion ?*/
 #ifdef HAVE_CONFIG_H
 #include <config.h>
@@ -37,25 +37,25 @@
 mpc_free (XfcePanelPlugin * plugin, t_mpc * mpc)
 {
    DBG ("!");
-   
+
    g_object_unref (mpc->tips);
    mpd_free(mpc->mo);
    g_free (mpc);
 }
 
-static void 
+static void
 mpc_set_orientation (XfcePanelPlugin * plugin, GtkOrientation orientation, t_mpc * mpc)
 {
    DBG ("!");
-   
+
    xfce_hvbox_set_orientation(XFCE_HVBOX(mpc->box), orientation);
 }
 
-static gboolean 
+static gboolean
 mpc_set_size (XfcePanelPlugin * plugin, int size, t_mpc * mpc)
 {
    DBG ("size=%d",size);
-   
+
    if (size > 26)
    {
       gtk_container_set_border_width (GTK_CONTAINER (mpc->frame), 2);
@@ -69,7 +69,7 @@
    return TRUE;
 }
 
-static void 
+static void
 mpc_read_config (XfcePanelPlugin * plugin, t_mpc * mpc)
 {
    char *file;
@@ -89,7 +89,7 @@
       return;
 
    xfce_rc_set_group (rc, "Settings");
-   
+
    if (mpc->mpd_host != NULL)
       g_free (mpc->mpd_host);
    if (mpc->mpd_password != NULL)
@@ -127,7 +127,7 @@
    /* if necessary, get rid of old settings */
    if (xfce_rc_has_group (rc, "Settings"))
       xfce_rc_delete_group (rc, "Settings", TRUE);
-   
+
    xfce_rc_set_group (rc, "Settings");
 
    xfce_rc_write_entry (rc, "mpd_host", mpc->mpd_host);
@@ -187,7 +187,7 @@
 
    mpc_dialog_apply_options (dialog);
    g_free (dialog);
-    
+
    gtk_widget_destroy (dlg);
    xfce_panel_plugin_unblock_menu (mpc->plugin);
    mpc_write_config (mpc->plugin, mpc);
@@ -196,8 +196,8 @@
 static void
 mpc_dialog_show_frame_toggled (GtkWidget *w, t_mpc_dialog *dialog)
 {
-   t_mpc* mpc = dialog->mpc; 
-   
+   t_mpc* mpc = dialog->mpc;
+
    DBG ("!");
 
    mpc->show_frame = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dialog->checkbox_frame));
@@ -210,9 +210,9 @@
    GtkWidget *dlg, *vbox, *table;
    gchar str_port[20];
    t_mpc_dialog *dialog;
-   
+
    DBG("!");
-   
+
    dialog = g_new0 (t_mpc_dialog, 1);
 
    dialog->mpc = mpc;
@@ -236,7 +236,7 @@
    gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
    gtk_widget_show (vbox);
    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dlg)->vbox), vbox, TRUE, TRUE, 0);
-    
+
    table = gtk_table_new(4,2,FALSE);
    gtk_table_attach_defaults(GTK_TABLE(table),gtk_label_new(_("Host : ")),0,1,0,1);
    gtk_table_attach_defaults(GTK_TABLE(table),gtk_label_new(_("Port : ")),0,1,1,2);
@@ -247,24 +247,24 @@
    gtk_entry_set_width_chars(GTK_ENTRY(dialog->textbox_host),DIALOG_ENTRY_WIDTH);
    gtk_entry_set_text(GTK_ENTRY(dialog->textbox_host),mpc->mpd_host);
    gtk_table_attach_defaults(GTK_TABLE(table),dialog->textbox_host,1,2,0,1);
-    
+
    dialog->textbox_port = gtk_entry_new();
    gtk_entry_set_width_chars(GTK_ENTRY(dialog->textbox_port),DIALOG_ENTRY_WIDTH);
    g_snprintf(str_port,sizeof(str_port),"%d",mpc->mpd_port);
    gtk_entry_set_text(GTK_ENTRY(dialog->textbox_port),str_port);
    gtk_table_attach_defaults(GTK_TABLE(table),dialog->textbox_port,1,2,1,2);
-   
+
    dialog->textbox_password = gtk_entry_new();
    gtk_entry_set_visibility(GTK_ENTRY(dialog->textbox_password),FALSE);
    gtk_entry_set_width_chars(GTK_ENTRY(dialog->textbox_password),DIALOG_ENTRY_WIDTH);
    gtk_entry_set_text(GTK_ENTRY(dialog->textbox_password),mpc->mpd_password);
    gtk_table_attach_defaults(GTK_TABLE(table),dialog->textbox_password,1,2,2,3);
-   
+
    dialog->textbox_client_appl = gtk_entry_new();
    gtk_entry_set_width_chars(GTK_ENTRY(dialog->textbox_client_appl),DIALOG_ENTRY_WIDTH);
    gtk_entry_set_text(GTK_ENTRY(dialog->textbox_client_appl),mpc->client_appl);
    gtk_table_attach_defaults(GTK_TABLE(table),dialog->textbox_client_appl,1,2,3,4);
-    
+
    gtk_widget_show_all (table);
    gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
 
@@ -274,70 +274,70 @@
    gtk_box_pack_start (GTK_BOX (vbox), dialog->checkbox_frame, FALSE, FALSE, 0);
 
    g_signal_connect (dialog->checkbox_frame, "toggled", G_CALLBACK (mpc_dialog_show_frame_toggled), dialog);
-    
+
    /* show the dialog */
    gtk_widget_show (dlg);
 }
 
-static void 
+static void
 mpc_launch_client(GtkWidget *widget, t_mpc* mpc)
 {
    DBG("Going to xfce_exec(\"%s\")", mpc->client_appl);
    xfce_exec(mpc->client_appl, FALSE, TRUE, NULL);
 }
 
-static void 
+static void
 mpc_random_toggled(GtkWidget *widget, t_mpc* mpc)
 {
    DBG("!");
    mpd_player_set_random(mpc->mo, gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
 }
 
-static void 
+static void
 mpc_repeat_toggled(GtkWidget *widget, t_mpc* mpc)
 {
    DBG("!");
    mpd_player_set_repeat(mpc->mo, gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
 }
 
-static void 
+static void
 enter_cb(GtkWidget *widget, GdkEventCrossing* event, t_mpc* mpc) 
 {
    mpd_Song *song;
    gchar str[512];
-   
+
    DBG("!");
 
    if (mpd_status_update(mpc->mo) != MPD_OK)
    {
       if (!mpc_plugin_reconnect (mpc) || mpd_status_update (mpc->mo) != MPD_OK)
       {
-	 gtk_tooltips_set_tip (mpc->tips, widget, _(".... not connected ?"), NULL);
-	 return;
+         gtk_tooltips_set_tip (mpc->tips, widget, _(".... not connected ?"), NULL);
+         return;
       }
    }
 
    switch (mpd_player_get_state(mpc->mo))
    {
-      case MPD_PLAYER_PLAY:  
-	 sprintf(str, "Mpd Playing");
-	 break;
-      case MPD_PLAYER_PAUSE:   
-	 sprintf(str, "Mpd Paused");
-	 break;
+      case MPD_PLAYER_PLAY:
+         sprintf(str, "Mpd Playing");
+         break;
+      case MPD_PLAYER_PAUSE:
+         sprintf(str, "Mpd Paused");
+         break;
       case MPD_PLAYER_STOP:
-	 sprintf(str, "Mpd Stopped");
-	 break;
+         sprintf(str, "Mpd Stopped");
+         break;
       default:
-	 sprintf(str, "Mpd state ?");
-	 break;
+         sprintf(str, "Mpd state ?");
+         break;
    }
    song = mpd_playlist_get_current_song(mpc->mo);
-   if (song) 
+   if (song)
       g_sprintf(str,"%s - [%s - %s] -/- (#%s) %s", str, song->artist, song->album, song->track, song->title);
    else
       g_sprintf(str,"%s - Failed to get song info ?", str);
-   
+
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mpc->random), mpd_player_get_random(mpc->mo));
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mpc->repeat), mpd_player_get_repeat(mpc->mo));
 
@@ -348,7 +348,6 @@
 static void
 playlist_title_dblclicked (GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *col, t_mpc* mpc)
 {
-#ifdef HAVE_LIBMPD
    GtkTreeModel *model;
    GtkTreeIter iter;
    gint id = 0, pos = 0;
@@ -361,13 +360,11 @@
       mpd_player_play_id(mpc->mo, id);
    }
    gtk_widget_destroy(mpc->playlist);
-#endif
 }
 
 static void
 show_playlist (t_mpc* mpc)
 {
-#ifdef HAVE_LIBMPD
    DBG("!");
    GtkWidget *scrolledwin,*treeview;
    GtkListStore *liststore;
@@ -419,13 +416,12 @@
          gtk_tree_path_free(path_to_cur);
       }
       else
-         gtk_list_store_set (liststore, &iter, 0, NULL, 1, str, 2, mpd_data->song->pos, 3, mpd_data->song->id, -1);
+         gtk_list_store_set (liststore, &iter, 0, "gtk-cdrom", 1, str, 2, mpd_data->song->pos, 3, mpd_data->song->id, -1);
    }
    gtk_widget_show_all(mpc->playlist);
-#endif
 }
 
-static void 
+static void
 toggle(GtkWidget *widget, GdkEventButton* event, t_mpc* mpc)
 {
    if (1 == event->button)
@@ -450,8 +446,8 @@
       show_playlist(mpc);
 }
 
-static void 
-prev(GtkWidget *widget, GdkEventButton* event, t_mpc* mpc) 
+static void
+prev(GtkWidget *widget, GdkEventButton* event, t_mpc* mpc)
 {
    if (1 == event->button)
    {
@@ -470,8 +466,8 @@
       show_playlist(mpc);
 }
 
-static void 
-stop(GtkWidget *widget, GdkEventButton* event, t_mpc* mpc) 
+static void
+stop(GtkWidget *widget, GdkEventButton* event, t_mpc* mpc)
 {
    if (1 == event->button)
    {
@@ -490,8 +486,8 @@
       show_playlist(mpc);
 }
 
-static void 
-next(GtkWidget *widget, GdkEventButton* event, t_mpc* mpc) 
+static void
+next(GtkWidget *widget, GdkEventButton* event, t_mpc* mpc)
 {
    if (1 == event->button)
    {
@@ -510,11 +506,11 @@
       show_playlist(mpc);
 }
 
-static void 
+static void
 scroll_cb(GtkWidget *widget, GdkEventScroll* event, t_mpc* mpc)
 {
    int curvol=-1;
-   
+
    if (event->type != GDK_SCROLL)
       return;
    else if (mpd_status_update (mpc->mo) != MPD_OK)
@@ -533,7 +529,7 @@
    mpd_status_set_volume(mpc->mo,curvol);
 }
 
-static void 
+static void
 new_button_with_img(XfcePanelPlugin * plugin, GtkWidget *parent, GtkWidget *button, gchar *icon, gpointer cb, gpointer data) 
 {
    GtkWidget *image;
@@ -548,20 +544,20 @@
    gtk_box_pack_start (GTK_BOX(parent), button, TRUE,TRUE,0);
 }
 
-static t_mpc* 
+static t_mpc*
 mpc_create (XfcePanelPlugin * plugin)
 {
    t_mpc *mpc;
 
    DBG("!");
-   
+
    mpc = g_new0 (t_mpc, 1);
-   
+
    mpc->plugin = plugin;
    mpc->tips = gtk_tooltips_new ();
    g_object_ref (mpc->tips);
    gtk_object_sink (GTK_OBJECT (mpc->tips));
-    
+
    mpc->frame = gtk_frame_new (NULL);
    gtk_frame_set_shadow_type (GTK_FRAME (mpc->frame), GTK_SHADOW_IN);
    gtk_widget_show (mpc->frame);
@@ -570,17 +566,17 @@
    g_signal_connect (G_OBJECT(mpc->ebox), "enter_notify_event", G_CALLBACK(enter_cb), mpc);
    g_signal_connect (G_OBJECT(mpc->ebox), "scroll_event", G_CALLBACK(scroll_cb), mpc);
    gtk_widget_show (mpc->ebox);
-   
+
    mpc->box = (GtkWidget*) xfce_hvbox_new(xfce_panel_plugin_get_orientation(plugin), FALSE, 0);
-   
+
    gtk_container_add (GTK_CONTAINER(mpc->ebox), mpc->box);
    gtk_container_add (GTK_CONTAINER(mpc->frame), mpc->ebox);
-   
+
    new_button_with_img(plugin, mpc->box, mpc->prev, GTK_STOCK_MEDIA_PREVIOUS, G_CALLBACK(prev), mpc);
    new_button_with_img(plugin, mpc->box, mpc->stop, GTK_STOCK_MEDIA_STOP, G_CALLBACK(stop), mpc);
    new_button_with_img(plugin, mpc->box, mpc->toggle, GTK_STOCK_MEDIA_PAUSE, G_CALLBACK(toggle), mpc);
    new_button_with_img(plugin, mpc->box, mpc->next, GTK_STOCK_MEDIA_NEXT, G_CALLBACK(next), mpc);
-   
+
    mpc->random = gtk_check_menu_item_new_with_label (_("Random"));
    g_signal_connect (G_OBJECT(mpc->random), "toggled", G_CALLBACK (mpc_random_toggled), mpc);
    mpc->repeat = gtk_check_menu_item_new_with_label (_("Repeat"));
@@ -594,7 +590,7 @@
    gtk_widget_show (mpc->random);
    gtk_widget_show (mpc->appl);
    gtk_widget_show_all (mpc->box);
-    
+
    return mpc;
 }
 
@@ -623,14 +619,10 @@
    mpc->playlist = NULL;
 
    mpc_read_config (plugin, mpc);
-   
+
    /* create a connection*/
    mpc->mo = mpd_new(mpc->mpd_host,mpc->mpd_port,mpc->mpd_password);
-/* no need to connect now, as we show configure dialog first then reconnect
-   mpd_connect(mpc->mo);
-   if (mpc->mpd_password)
-      mpd_send_password(mpc->mo);
-*/   
+
    gtk_container_add (GTK_CONTAINER (plugin), mpc->frame);
    gtk_frame_set_shadow_type (GTK_FRAME (mpc->frame), ((mpc->show_frame) ? GTK_SHADOW_IN : GTK_SHADOW_NONE));
 




More information about the Goodies-commits mailing list