commit a0c15b43e12b1ad08b6059596dd55f29e784f488
Author: phantomjinx <p.g.richard...@phantomjinx.co.uk>
Date:   Wed Jan 6 16:59:36 2010 +0000

    display sorttab plugin responds to playlist signal
    
    - display_sorttabs.c
       - callback sorttab_display_select_playlist_cb called in response to 
select
         playlist signal from libgtkpod.
    
    - fewer_sort_tabs action added to ui and callback added to sorttab display 
actions

 plugins/sorttab_display/display_sorttabs.h        |    3 +
 plugins/sorttab_display/plugin.c                  |   19 ++-
 plugins/sorttab_display/sorttab_display.ui        |    6 +-
 plugins/sorttab_display/sorttab_display_actions.c |    9 +-
 plugins/sorttab_display/sorttab_display_actions.h |    2 +
 src/display_sorttabs.c                            |  192 ++++++++++++---------
 6 files changed, 137 insertions(+), 94 deletions(-)
---
diff --git a/plugins/sorttab_display/display_sorttabs.h 
b/plugins/sorttab_display/display_sorttabs.h
index 76db408..0071ce8 100644
--- a/plugins/sorttab_display/display_sorttabs.h
+++ b/plugins/sorttab_display/display_sorttabs.h
@@ -37,6 +37,7 @@
 #include <gtk/gtk.h>
 #include "date_parser.h"
 #include "sorttab_conversion.h"
+#include "libgtkpod/gtkpod_app_iface.h"
 
 /* Number of search tabs to be supported. */
 #define SORT_TAB_MAX (ST_CAT_NUM-1)
@@ -132,4 +133,6 @@ void st_update_paned_position();
 
 void cal_open_calendar(gint inst, T_item item);
 
+void sorttab_display_select_playlist_cb(GtkPodApp *app, gpointer pl, gpointer 
data);
+
 #endif /* __DISPLAY_SORTTAB_H__ */
diff --git a/plugins/sorttab_display/plugin.c b/plugins/sorttab_display/plugin.c
index 73730a9..c47bc93 100644
--- a/plugins/sorttab_display/plugin.c
+++ b/plugins/sorttab_display/plugin.c
@@ -49,7 +49,15 @@ static GtkActionEntry sorttab_actions[] =
             NULL, /* short-cut */
             NULL, /* Tooltip */
             G_CALLBACK (on_more_sort_tabs_activate) /* callback */
-        }
+        },
+        {
+            "ActionViewFewerFilterTabs", /* Action name */
+            NULL, /* Stock icon */
+            N_("_Fewer Filter Tabs"), /* Display label */
+            NULL, /* short-cut */
+            NULL, /* Tooltip */
+            G_CALLBACK (on_fewer_sort_tabs_activate) /* callback */
+        },
     };
 
 static gboolean activate_plugin(AnjutaPlugin *plugin) {
@@ -75,8 +83,10 @@ static gboolean activate_plugin(AnjutaPlugin *plugin) {
     sorttab_display_plugin->st_paned = gtk_hpaned_new();
     st_create_tabs(GTK_PANED(sorttab_display_plugin->st_paned));
 
-//    g_signal_connect (gtkpod_app, "sorttab_selected", G_CALLBACK 
(sorttab_display_select_sorttab_cb), NULL);
-//    g_signal_connect (gtkpod_app, "itdb_updated", G_CALLBACK 
(sorttab_display_update_itdb_cb), NULL);
+    g_signal_connect (gtkpod_app, "playlist_selected", G_CALLBACK 
(sorttab_display_select_playlist_cb), NULL);
+
+    //    g_signal_connect (gtkpod_app, "sorttab_selected", G_CALLBACK 
(sorttab_display_select_sorttab_cb), NULL);
+    //    g_signal_connect (gtkpod_app, "itdb_updated", G_CALLBACK 
(sorttab_display_update_itdb_cb), NULL);
 
     gtk_widget_show(sorttab_display_plugin->st_paned);
     anjuta_shell_add_widget(plugin->shell, sorttab_display_plugin->st_paned, 
"SorttabDisplayPlugin", "Track Filter", NULL, ANJUTA_SHELL_PLACEMENT_BOTTOM, 
NULL);
@@ -126,5 +136,4 @@ static void sorttab_display_plugin_class_init(GObjectClass 
*klass) {
 ANJUTA_PLUGIN_BEGIN (SorttabDisplayPlugin, sorttab_display_plugin);
 ANJUTA_PLUGIN_END;
 
-ANJUTA_SIMPLE_PLUGIN (SorttabDisplayPlugin, sorttab_display_plugin)
-;
+ANJUTA_SIMPLE_PLUGIN (SorttabDisplayPlugin, sorttab_display_plugin);
diff --git a/plugins/sorttab_display/sorttab_display.ui 
b/plugins/sorttab_display/sorttab_display.ui
index e450537..ecc33d2 100644
--- a/plugins/sorttab_display/sorttab_display.ui
+++ b/plugins/sorttab_display/sorttab_display.ui
@@ -2,8 +2,10 @@
 <ui>
        <menubar name="MenuMain">
                <menu name="MenuView" action="ActionMenuView">
-                       <menuitem name="More Filter Tabs" 
action="ActionViewMoreFilterTabs"/>
-                       <menuitem name="Less Filter Tabs" 
action="ActionViewLessFilterTabs"/>
+                       <placeholder 
name="PlaceholderSorttabDisplayActionMenuView">
+                               <menuitem name="More Filter Tabs" 
action="ActionViewMoreFilterTabs"/>
+                               <menuitem name="Less Filter Tabs" 
action="ActionViewFewerFilterTabs"/>
+                       </placeholder>
                </menu>
        </menubar>
        <toolbar name="ToolbarMain">
diff --git a/plugins/sorttab_display/sorttab_display_actions.c 
b/plugins/sorttab_display/sorttab_display_actions.c
index cfacdf5..8d3cfe1 100644
--- a/plugins/sorttab_display/sorttab_display_actions.c
+++ b/plugins/sorttab_display/sorttab_display_actions.c
@@ -35,6 +35,11 @@
 #include "display_sorttabs.h"
 
 void on_more_sort_tabs_activate (GtkAction *action, SorttabDisplayPlugin* 
plugin) {
-//    prefs_set_int("sort_tab_num", prefs_get_int("sort_tab_num") + 1);
-//    st_show_visible();
+    prefs_set_int("sort_tab_num", prefs_get_int("sort_tab_num") + 1);
+    st_show_visible();
+}
+
+void on_fewer_sort_tabs_activate (GtkAction *action, SorttabDisplayPlugin* 
plugin) {
+    prefs_set_int("sort_tab_num", prefs_get_int("sort_tab_num") - 1);
+    st_show_visible();
 }
diff --git a/plugins/sorttab_display/sorttab_display_actions.h 
b/plugins/sorttab_display/sorttab_display_actions.h
index 6c47a48..515249a 100644
--- a/plugins/sorttab_display/sorttab_display_actions.h
+++ b/plugins/sorttab_display/sorttab_display_actions.h
@@ -38,4 +38,6 @@
 
 void on_more_sort_tabs_activate (GtkAction *action, SorttabDisplayPlugin* 
plugin);
 
+void on_fewer_sort_tabs_activate (GtkAction *action, SorttabDisplayPlugin* 
plugin);
+
 #endif
diff --git a/src/display_sorttabs.c b/src/display_sorttabs.c
index 5c1c529..5ab76f7 100644
--- a/src/display_sorttabs.c
+++ b/src/display_sorttabs.c
@@ -1,6 +1,6 @@
 /*
- |  Copyright (C) 2002-2005 Jorg Schuler <jcsjcs at users sourceforge net>
-                                   2010 Paul Richardson  <phantom_sf at users 
sourceforge net>
+ |  Copyright (C) 2002-2010 Jorg Schuler <jcsjcs at users sourceforge net>
+ |                                          Paul Richardson  <phantom_sf at 
users sourceforge net>
  |  Part of the gtkpod project.
  |
  |  URL: http://www.gtkpod.org/
@@ -1338,7 +1338,7 @@ static void st_track_changed_normal(Track *track, 
gboolean removed, guint32 inst
 void st_track_changed(Track *track, gboolean removed, guint32 inst) {
     if (inst == prefs_get_int("sort_tab_num")) {
         g_warning("st_track_changed: signal that a track has been changed");
-//        tm_track_changed(track);
+        //        tm_track_changed(track);
         return;
     }
     else if (inst < prefs_get_int("sort_tab_num")) {
@@ -1533,7 +1533,7 @@ void st_add_track(Track *track, gboolean final, gboolean 
display, guint32 inst)
     if (inst == prefs_get_int("sort_tab_num")) { /* just add to track model */
         if ((track != NULL) && display) {
             g_warning ("st_add_track: signal that a track should be added to 
the track display");
-//            tm_add_track_to_track_model(track, NULL);
+            //            tm_add_track_to_track_model(track, NULL);
         }
         if (final)
             gtkpod_tracks_statusbar_update();
@@ -1585,7 +1585,7 @@ static void st_remove_track_normal(Track *track, guint32 
inst) {
 void st_remove_track(Track *track, guint32 inst) {
     if (inst == prefs_get_int("sort_tab_num")) {
         g_warning("st_remove_track: signal a track should be removed");
-//        tm_remove_track(track);
+        //        tm_remove_track(track);
     }
     else if (inst < prefs_get_int("sort_tab_num")) {
         switch (sorttab[inst]->current_category) {
@@ -1614,7 +1614,7 @@ void st_remove_track(Track *track, guint32 inst) {
 void st_init(ST_CAT_item new_category, guint32 inst) {
     if (inst == prefs_get_int("sort_tab_num")) {
         g_warning("st_init: signal that all tracks in track display should be 
removed");
-//        tm_remove_all_tracks();
+        //        tm_remove_all_tracks();
         gtkpod_tracks_statusbar_update();
         return;
     }
@@ -1802,7 +1802,7 @@ void st_sort(GtkSortType order) {
      * ie. easy to sort ascending and descending but difficult to return to 
unsorted state
      */
     g_warning("st_sort - signal coverart display to update itself");
-//    coverart_display_update(order == SORT_NONE);
+    //    coverart_display_update(order == SORT_NONE);
 }
 
 gint st_get_sorttab_page_number(int inst) {
@@ -1945,16 +1945,16 @@ static gboolean st_selection_changed_cb(gpointer data) {
 
         /* Select the cover in the coverart_display */
         g_warning("st_selection_changed_cb: signal that track selection has 
changed");
-//        GList *gl = g_list_first(new_entry->members);
-//        if (gl != NULL) {
-//            Track *track = gl->data;
-//            if (track != NULL)
-//                coverart_select_cover(track);
-//        }
+        //        GList *gl = g_list_first(new_entry->members);
+        //        if (gl != NULL) {
+        //            Track *track = gl->data;
+        //            if (track != NULL)
+        //                coverart_select_cover(track);
+        //        }
     }
 
     g_warning("st_selection_changed_cb: space_data_update");
-//    space_data_update();
+    //    space_data_update();
 
 #if DEBUG_TIMING
     g_get_current_time (&time);
@@ -2068,7 +2068,7 @@ static void st_cell_edited(GtkCellRendererText *renderer, 
const gchar *path_stri
                 }
                 track->time_modified = time(NULL);
                 g_warning("st_cell_edited: signal that a track has changed");
-//                pm_track_changed(track);
+                //                pm_track_changed(track);
                 /* If prefs say to write changes to file, do so */
                 if (prefs_get_int("id3_write")) {
                     /* T_item tag_id;*/
@@ -2205,7 +2205,7 @@ void st_enable_disable_view_sort(gint inst, gboolean 
enable) {
 
     if (inst >= prefs_get_int("sort_tab_num")) {
         g_warning("st_enable_disable_view_sort: signal that track view should 
be enabled/disabled");
-//        tm_enable_disable_view_sort(enable);
+        //        tm_enable_disable_view_sort(enable);
         return;
     }
 
@@ -2271,7 +2271,7 @@ void st_select_current_position(gint inst, gint x, gint 
y) {
  * needed. */
 static void st_adjust_visible(void) {
     gint i, n;
-//    GtkWidget *w;
+    //    GtkWidget *w;
 
     if (!st_paned[0])
         return;
@@ -2296,19 +2296,19 @@ static void st_adjust_visible(void) {
     }
 
     g_warning("Need to work out how to disable more and less sort tab 
actions");
-//    /* activate / deactiveate "less sort tabs" menu item */
-//    w = gtkpod_xml_get_widget(main_window_xml, "less_sort_tabs");
-//    if (n == 0)
-//        gtk_widget_set_sensitive(w, FALSE);
-//    else
-//        gtk_widget_set_sensitive(w, TRUE);
-//
-//    /* activate / deactiveate "more sort tabs" menu item */
-//    w = gtkpod_xml_get_widget(main_window_xml, "more_sort_tabs");
-//    if (n == SORT_TAB_MAX)
-//        gtk_widget_set_sensitive(w, FALSE);
-//    else
-//        gtk_widget_set_sensitive(w, TRUE);
+    //    /* activate / deactiveate "less sort tabs" menu item */
+    //    w = gtkpod_xml_get_widget(main_window_xml, "less_sort_tabs");
+    //    if (n == 0)
+    //        gtk_widget_set_sensitive(w, FALSE);
+    //    else
+    //        gtk_widget_set_sensitive(w, TRUE);
+    //
+    //    /* activate / deactiveate "more sort tabs" menu item */
+    //    w = gtkpod_xml_get_widget(main_window_xml, "more_sort_tabs");
+    //    if (n == SORT_TAB_MAX)
+    //        gtk_widget_set_sensitive(w, FALSE);
+    //    else
+    //        gtk_widget_set_sensitive(w, TRUE);
 }
 
 /* Make the appropriate number of sort tab instances visible */
@@ -2326,25 +2326,25 @@ void st_show_visible(void) {
  * structure. This function is called when first creating the paned
  * elements and from within st_arrange_visible_sort_tabs() */
 static void st_set_visible_sort_tab_paned(void) {
-//    gint i, x, y, p0, num, width;
+    //    gint i, x, y, p0, num, width;
 
     g_warning("Determine whether to need to store the paned sizes and 
positions anymore?");
-//    num = prefs_get_int("sort_tab_num");
-//    if (num > 0) {
-//        gchar *buf;
-//        GtkWidget *w;
-//
-//        gtk_window_get_size(GTK_WINDOW (gtkpod_window), &x, &y);
-//        buf = g_strdup_printf("paned%d", PANED_PLAYLIST);
-//        if ((w = gtkpod_xml_get_widget(main_window_xml, buf))) {
-//            p0 = gtk_paned_get_position(GTK_PANED (w));
-//            width = (x - p0) / num;
-//            for (i = 0; i < num; ++i) {
-//                prefs_set_int_index("paned_pos_", PANED_NUM_GLADE + i, 
width);
-//            }
-//        }
-//        g_free(buf);
-//    }
+    //    num = prefs_get_int("sort_tab_num");
+    //    if (num > 0) {
+    //        gchar *buf;
+    //        GtkWidget *w;
+    //
+    //        gtk_window_get_size(GTK_WINDOW (gtkpod_window), &x, &y);
+    //        buf = g_strdup_printf("paned%d", PANED_PLAYLIST);
+    //        if ((w = gtkpod_xml_get_widget(main_window_xml, buf))) {
+    //            p0 = gtk_paned_get_position(GTK_PANED (w));
+    //            width = (x - p0) / num;
+    //            for (i = 0; i < num; ++i) {
+    //                prefs_set_int_index("paned_pos_", PANED_NUM_GLADE + i, 
width);
+    //            }
+    //        }
+    //        g_free(buf);
+    //    }
 }
 
 /* Regularly arrange the visible sort tabs */
@@ -2402,7 +2402,7 @@ static gboolean st_button_press_event(GtkWidget *w, 
GdkEventButton *e, gpointer
         case 3:
             st_select_current_position(GPOINTER_TO_INT(data), e->x, e->y);
             g_warning("TODO: context menu for sorttabs display");
-//            st_context_menu_init(GPOINTER_TO_INT(data));
+            //            st_context_menu_init(GPOINTER_TO_INT(data));
             return TRUE;
         default:
             break;
@@ -2813,28 +2813,28 @@ void st_cleanup(void) {
  colums is set when setting up the colums in the listview. Called by
  display_set_default_sizes() */
 void st_set_default_sizes(void) {
-//    gint i;
+    //    gint i;
 
     /* GtkPaned elements */
     g_return_if_fail (gtkpod_app);
     g_warning("Not sure whether to set positions of paneds based on prefs");
-//    /* Elements defined with glade */
-//    for (i = 0; i < PANED_NUM_GLADE; ++i) {
-//        gchar *buf = g_strdup_printf("paned%d", i);
-//        GtkWidget *w = gtkpod_xml_get_widget(main_window_xml, buf);
-//        g_free(buf);
-//        g_return_if_fail (w);
-//        if (prefs_get_int_index("paned_pos_", i) != -1) {
-//            gtk_paned_set_position(GTK_PANED (w), 
prefs_get_int_index("paned_pos_", i));
-//        }
-//    }
-//    /* Elements defined with display.c (sort tab hpaned) */
-//    for (i = 0; i < PANED_NUM_ST; ++i) {
-//        g_return_if_fail (st_paned[i]);
-//        if (prefs_get_int_index("paned_pos_", PANED_NUM_GLADE + i) != -1) {
-//            gtk_paned_set_position(st_paned[i], 
prefs_get_int_index("paned_pos_", PANED_NUM_GLADE + i));
-//        }
-//    }
+    //    /* Elements defined with glade */
+    //    for (i = 0; i < PANED_NUM_GLADE; ++i) {
+    //        gchar *buf = g_strdup_printf("paned%d", i);
+    //        GtkWidget *w = gtkpod_xml_get_widget(main_window_xml, buf);
+    //        g_free(buf);
+    //        g_return_if_fail (w);
+    //        if (prefs_get_int_index("paned_pos_", i) != -1) {
+    //            gtk_paned_set_position(GTK_PANED (w), 
prefs_get_int_index("paned_pos_", i));
+    //        }
+    //    }
+    //    /* Elements defined with display.c (sort tab hpaned) */
+    //    for (i = 0; i < PANED_NUM_ST; ++i) {
+    //        g_return_if_fail (st_paned[i]);
+    //        if (prefs_get_int_index("paned_pos_", PANED_NUM_GLADE + i) != 
-1) {
+    //            gtk_paned_set_position(st_paned[i], 
prefs_get_int_index("paned_pos_", PANED_NUM_GLADE + i));
+    //        }
+    //    }
 }
 
 /* update the cfg structure (preferences) with the current sizes /
@@ -2843,24 +2843,24 @@ void st_set_default_sizes(void) {
 void st_update_default_sizes(void) {
     /* GtkPaned elements */
     g_warning("Not sure whether need to update default size of sorttabs");
-//    if (gtkpod_window) {
-//        gint i;
-//        /* Elements defined with glade */
-//        for (i = 0; i < PANED_NUM_GLADE; ++i) {
-//            gchar *buf;
-//            GtkWidget *w;
-//            buf = g_strdup_printf("paned%d", i);
-//            if ((w = gtkpod_xml_get_widget(main_window_xml, buf))) {
-//                prefs_set_int_index("paned_pos_", i, 
gtk_paned_get_position(GTK_PANED (w)));
-//            }
-//            g_free(buf);
-//        }
-//        /* Elements defined with display.c (sort tab hpaned) */
-//        for (i = 0; i < PANED_NUM_ST; ++i) {
-//            if (st_paned[i])
-//                prefs_set_int_index("paned_pos_", i + PANED_NUM_GLADE, 
gtk_paned_get_position(st_paned[i]));
-//        }
-//    }
+    //    if (gtkpod_window) {
+    //        gint i;
+    //        /* Elements defined with glade */
+    //        for (i = 0; i < PANED_NUM_GLADE; ++i) {
+    //            gchar *buf;
+    //            GtkWidget *w;
+    //            buf = g_strdup_printf("paned%d", i);
+    //            if ((w = gtkpod_xml_get_widget(main_window_xml, buf))) {
+    //                prefs_set_int_index("paned_pos_", i, 
gtk_paned_get_position(GTK_PANED (w)));
+    //            }
+    //            g_free(buf);
+    //        }
+    //        /* Elements defined with display.c (sort tab hpaned) */
+    //        for (i = 0; i < PANED_NUM_ST; ++i) {
+    //            if (st_paned[i])
+    //                prefs_set_int_index("paned_pos_", i + PANED_NUM_GLADE, 
gtk_paned_get_position(st_paned[i]));
+    //        }
+    //    }
 }
 
 /* make the tooltips visible or hide it depending on the value set in
@@ -2894,7 +2894,7 @@ void st_update_paned_position() {
 
     GtkWidget *top = gtk_paned_get_child1(sorttab_parent);
     GtkWidget *bottom = gtk_paned_get_child2(sorttab_parent);
-    if (! top || ! bottom)
+    if (!top || !bottom)
         return; // sorttab_parent currently lacks either top or bottom panes
 
     gboolean top_is_st_paned = g_object_get_data(G_OBJECT (top), "paned_id") 
!= NULL;
@@ -3338,3 +3338,25 @@ void cal_open_calendar(gint inst, T_item item) {
 
     gtk_widget_show(cal);
 }
+
+void sorttab_display_select_playlist_cb(GtkPodApp *app, gpointer pl, gpointer 
data) {
+    /* Remove all data from tab */
+    st_init(-1, 0);
+
+    Playlist *new_playlist = pl;
+    /* Add the tracks from the selected playlist to the sorttabs */
+    if (new_playlist && new_playlist->members) {
+        GList *gl;
+
+        st_enable_disable_view_sort(0, FALSE);
+
+        for (gl = new_playlist->members; gl; gl = gl->next) {
+            /* add all tracks to sort tab 0 */
+            Track *track = gl->data;
+            st_add_track(track, FALSE, TRUE, 0);
+        }
+
+        st_enable_disable_view_sort(0, TRUE);
+        st_add_track(NULL, TRUE, TRUE, 0);
+    }
+}

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
gtkpod-cvs2 mailing list
gtkpod-cvs2@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gtkpod-cvs2

Reply via email to