gui/sidebar: Remove unused sidebar liststore

Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2016-05-18 07:54:18 -04:00 committed by Anna Schumaker
parent 017da02827
commit 69b39ea717
7 changed files with 36 additions and 300 deletions

View File

@ -6,7 +6,9 @@
#include <gui/builder.h>
#include <gui/collection.h>
#include <gui/idle.h>
#include <gui/model.h>
#include <gui/playlist.h>
#include <gui/queue.h>
#include <gui/sidebar.h>
#include <gui/tempq.h>
#include <gui/view.h>

View File

@ -5,7 +5,7 @@
#include <core/string.h>
#include <gui/builder.h>
#include <gui/playlist.h>
#include <gui/sidebar.h>
#include <gui/queue.h>
enum playlist_sidebar_columns {
P_SB_IMAGE,
@ -90,7 +90,7 @@ void __playlist_selection_changed(GtkTreeSelection *selection, gpointer data)
p_name = __playlist_name(&iter);
queue = playlist_get_queue(__playlist_type(&iter), p_name);
gui_sidebar_selected(SB_PLAYLIST, gui_queue(queue));
gui_queue_show(gui_queue(queue));
}
}

View File

@ -1,180 +1,23 @@
/*
* Copyright 2015 (c) Anna Schumaker.
*/
#include <core/queue.h>
#include <core/settings.h>
#include <core/tempq.h>
#include <gui/builder.h>
#include <gui/queue.h>
#include <gui/sidebar.h>
const gchar *SIDEBAR_SETTING = "gui.sidebar.pos";
const gchar *COLLECTION_FMT = "<big>Collection</big>\n%d track%s";
const gchar *HISTORY_FMT = "<big>History</big>\n%d track%s";
static GtkListStore *sb_store;
enum sidebar_columns {
SB_IMAGE,
SB_IMAGE_SZ,
SB_TEXT,
SB_QUEUE,
};
static void __sidebar_set_size(GtkTreeIter *iter, const gchar *name,
unsigned int size)
{
const gchar *fmt = "<big>%s</big>\n%d track%s";
gchar *text;
text = g_strdup_printf(fmt, name, size, (size == 1) ? "" : "s");
gtk_list_store_set(sb_store, iter, SB_TEXT, text, -1);
g_free(text);
}
static struct gui_queue *__sidebar_get_queue(GtkTreeIter *iter)
{
struct gui_queue *queue;
gtk_tree_model_get(GTK_TREE_MODEL(sb_store), iter, SB_QUEUE, &queue, -1);
return queue;
}
static bool __sidebar_find_queue(struct gui_queue *queue, GtkTreeIter *iter)
{
gtk_tree_model_get_iter_first(GTK_TREE_MODEL(sb_store), iter);
do {
if (__sidebar_get_queue(iter) == queue)
return true;
} while (gtk_tree_model_iter_next(GTK_TREE_MODEL(sb_store), iter));
return false;
}
void __sidebar_resize(GtkPaned *pane, GParamSpec *pspec, gpointer data)
{
settings_set(SIDEBAR_SETTING, gtk_paned_get_position(pane));
}
bool __sidebar_keypress(GtkTreeView *treeview, GdkEventKey *event, gpointer data)
{
GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
GtkTreeModel *model = GTK_TREE_MODEL(sb_store);
struct gui_queue *queue;
GtkTreePath *path;
GtkTreeIter iter;
GList *rows;
if (event->keyval != GDK_KEY_Delete)
return false;
rows = gtk_tree_selection_get_selected_rows(selection, &model);
path = rows->data;
if (gtk_tree_model_get_iter(model, &iter, path))
queue = __sidebar_get_queue(&iter);
if (tempq_index(queue->gq_queue) == -1)
goto out;
tempq_free(queue->gq_queue);
out:
g_list_free_full(rows, (GDestroyNotify)gtk_tree_path_free);
return true;
}
void __sidebar_selection_changed(GtkTreeSelection *selection, gpointer data)
{
GtkTreeModel *model = GTK_TREE_MODEL(sb_store);
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
GtkTreePath *path = gtk_tree_model_get_path(model, &iter);
gui_sidebar_selected(SB_SIDEBAR, __sidebar_get_queue(&iter));
gtk_tree_path_free(path);
}
}
void __sidebar_deselect(const gchar *widget)
{
GtkTreeView *treeview = GTK_TREE_VIEW(gui_builder_widget(widget));
GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
gtk_tree_selection_unselect_all(selection);
}
void gui_sidebar_init()
{
GtkPaned *pane = GTK_PANED(gui_builder_widget("o_sidebar"));
int pos;
int pos = settings_get(SIDEBAR_SETTING);
/* Set up entries in the liststore. */
sb_store = GTK_LIST_STORE(gui_builder_object("o_sidebar_store"));
/* Set sidebar width. */
pos = settings_get(SIDEBAR_SETTING);
if (pos > 0)
gtk_paned_set_position(pane, pos);
}
gboolean gui_sidebar_on_select(GtkTreeSelection *selection,
GtkTreeModel *model, GtkTreePath *path,
gboolean selected, gpointer data)
{
return gtk_tree_path_get_depth(path) != 1;
}
void gui_sidebar_selected(enum sidebar_selection_t selected,
struct gui_queue *queue)
{
if (selected != SB_PLAYLIST)
__sidebar_deselect("o_playlist_view");
if (selected != SB_SIDEBAR)
__sidebar_deselect("o_sidebar_view");
gui_queue_show(queue);
}
void gui_sidebar_add(struct gui_queue *queue)
{
const gchar *text = "<big>Queued Tracks</big>\n0 tracks";
GtkTreeIter iter, sibling;
if (!GTK_IS_TREE_MODEL(sb_store))
return;
if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(sb_store),
&sibling, NULL,
tempq_index(queue->gq_queue)))
gtk_list_store_insert_before(sb_store, &iter, &sibling);
else
gtk_list_store_insert(sb_store, &iter, -1);
gtk_list_store_set(sb_store, &iter, SB_IMAGE, "audio-x-generic",
SB_IMAGE_SZ, GTK_ICON_SIZE_BUTTON,
SB_TEXT, text,
SB_QUEUE, queue, -1);
__sidebar_set_size(&iter, queue->gq_text, queue_size(queue->gq_queue));
}
void gui_sidebar_remove(struct gui_queue *queue)
{
GtkTreeIter iter;
if (__sidebar_find_queue(queue, &iter))
gtk_list_store_remove(sb_store, &iter);
}
void gui_sidebar_set_size(struct gui_queue *queue)
{
GtkTreeIter iter;
if (!GTK_IS_TREE_MODEL(sb_store))
return;
if (__sidebar_find_queue(queue, &iter))
__sidebar_set_size(&iter, queue->gq_text,
queue_size(queue->gq_queue));
}

View File

@ -9,23 +9,17 @@
static void *__tempq_init(struct queue *queue, void *data)
{
struct gui_queue *gq;
gq = gui_queue_alloc(NULL, queue, "Queued Tracks", TEMPQ_FLAGS);
gui_sidebar_add(gq);
return gq;
return gui_queue_alloc(NULL, queue, "Queued Tracks", TEMPQ_FLAGS);
}
static void __tempq_deinit(struct queue *queue)
{
gui_sidebar_remove(gui_queue(queue));
gui_queue_free(queue);
}
static void __tempq_added(struct queue *queue, unsigned int pos)
{
gui_queue_model_add(queue, pos);
gui_sidebar_set_size(gui_queue(queue));
tempq_save(queue, Q_ENABLED);
}
@ -37,14 +31,12 @@ static bool __tempq_erase(struct queue *queue, struct track *track)
static void __tempq_removed(struct queue *queue, unsigned int pos)
{
gui_queue_model_remove(queue, pos);
gui_sidebar_set_size(gui_queue(queue));
tempq_save(queue, Q_ENABLED);
}
static void __tempq_cleared(struct queue *queue, unsigned int n)
{
gui_queue_model_clear(queue, n);
gui_sidebar_set_size(gui_queue(queue));
}
struct queue_ops tempq_ops = {

View File

@ -204,7 +204,6 @@ static void __view_delete_selection(GtkTreeSelection *selection)
static void __view_process_selection(GtkTreeView *treeview, unsigned int keyval)
{
GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
unsigned int flags = 0;
struct queue *queue;
switch (keyval) {
@ -221,12 +220,10 @@ static void __view_process_selection(GtkTreeView *treeview, unsigned int keyval)
__view_add_to_playlist,
"Favorites");
break;
case GDK_KEY_r:
flags = Q_RANDOM;
case GDK_KEY_q:
queue = tempq_alloc(flags);
gtk_tree_selection_selected_foreach(selection,
__view_add_to_queue, queue);
__view_add_to_playlist,
"Queued Tracks");
break;
case GDK_KEY_Delete:
__view_delete_selection(selection);

View File

@ -4,31 +4,8 @@
#ifndef OCARINA_GUI_SIDEBAR_H
#define OCARINA_GUI_SIDEBAR_H
#include <gui/queue.h>
#include <gtk/gtk.h>
enum sidebar_selection_t {
SB_PLAYLIST,
SB_SIDEBAR,
};
/* Called to initialize the sidebar. */
void gui_sidebar_init();
/* Called when a row in the sidebar is selected. */
gboolean gui_sidebar_on_select(GtkTreeSelection *, GtkTreeModel *,
GtkTreePath *path, gboolean, gpointer);
/* Called to tell the sidebar that the selection has changed. */
void gui_sidebar_selected(enum sidebar_selection_t, struct gui_queue *);
/* Called to add a queue to the sidebar. */
void gui_sidebar_add(struct gui_queue *);
/* Called to remove a queue from the sidebar. */
void gui_sidebar_remove(struct gui_queue *);
/* Called to set the size of sidebar entries. */
void gui_sidebar_set_size(struct gui_queue *);
#endif /* OCARINA_GUI_SIDEBAR_H */

View File

@ -225,18 +225,6 @@
<property name="step_increment">1000000000</property>
<property name="page_increment">10000000000</property>
</object>
<object class="GtkListStore" id="o_sidebar_store">
<columns>
<!-- column-name Image -->
<column type="gchararray"/>
<!-- column-name ImageSize -->
<column type="GtkIconSize"/>
<!-- column-name Text -->
<column type="gchararray"/>
<!-- column-name Queue -->
<column type="gpointer"/>
</columns>
</object>
<object class="GtkWindow" id="o_window">
<property name="visible">True</property>
<property name="can_focus">True</property>
@ -853,103 +841,40 @@
<property name="margin_right">1</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkViewport" id="viewport1">
<object class="GtkTreeView" id="o_playlist_view">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="can_focus">True</property>
<property name="model">o_playlist_store</property>
<property name="headers_visible">False</property>
<property name="search_column">1</property>
<property name="enable_tree_lines">True</property>
<signal name="key-press-event" handler="__playlist_keypress" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection3">
<signal name="changed" handler="__playlist_selection_changed" swapped="no"/>
</object>
</child>
<child>
<object class="GtkBox" id="box9">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<object class="GtkTreeViewColumn" id="treeviewcolumn2">
<property name="title" translatable="yes">Image</property>
<child>
<object class="GtkTreeView" id="o_sidebar_view">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">o_sidebar_store</property>
<property name="headers_visible">False</property>
<property name="show_expanders">False</property>
<property name="level_indentation">10</property>
<property name="enable_tree_lines">True</property>
<signal name="key-press-event" handler="__sidebar_keypress" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection4">
<signal name="changed" handler="__sidebar_selection_changed" swapped="no"/>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn6">
<property name="title" translatable="yes">Image</property>
<child>
<object class="GtkCellRendererPixbuf" id="cellrendererpixbuf3"/>
<attributes>
<attribute name="icon-name">0</attribute>
<attribute name="stock-size">1</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn7">
<property name="title" translatable="yes">Text</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext2"/>
<attributes>
<attribute name="markup">2</attribute>
</attributes>
</child>
</object>
</child>
<object class="GtkCellRendererPixbuf" id="cellrendererpixbuf2">
<property name="stock_size">1</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
<attributes>
<attribute name="icon-name">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn3">
<property name="title" translatable="yes">column</property>
<child>
<object class="GtkTreeView" id="o_playlist_view">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="model">o_playlist_store</property>
<property name="headers_visible">False</property>
<property name="search_column">1</property>
<property name="enable_tree_lines">True</property>
<signal name="key-press-event" handler="__playlist_keypress" swapped="no"/>
<child internal-child="selection">
<object class="GtkTreeSelection" id="treeview-selection3">
<signal name="changed" handler="__playlist_selection_changed" swapped="no"/>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn2">
<property name="title" translatable="yes">Image</property>
<child>
<object class="GtkCellRendererPixbuf" id="cellrendererpixbuf2">
<property name="stock_size">1</property>
</object>
<attributes>
<attribute name="icon-name">0</attribute>
</attributes>
</child>
</object>
</child>
<child>
<object class="GtkTreeViewColumn" id="treeviewcolumn3">
<property name="title" translatable="yes">column</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext1"/>
<attributes>
<attribute name="markup">1</attribute>
</attributes>
</child>
</object>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
<object class="GtkCellRendererText" id="cellrenderertext1"/>
<attributes>
<attribute name="markup">1</attribute>
</attributes>
</child>
</object>
</child>