gui/model: Update runtime label when the model changes
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
043536380a
commit
48bcbef128
13
gui/model.c
13
gui/model.c
|
@ -4,6 +4,7 @@
|
||||||
#include <core/audio.h>
|
#include <core/audio.h>
|
||||||
#include <core/queue.h>
|
#include <core/queue.h>
|
||||||
#include <core/string.h>
|
#include <core/string.h>
|
||||||
|
#include <gui/builder.h>
|
||||||
#include <gui/model.h>
|
#include <gui/model.h>
|
||||||
|
|
||||||
static const GTypeInfo queue_type_info;
|
static const GTypeInfo queue_type_info;
|
||||||
|
@ -233,6 +234,13 @@ static void _queue_tree_model_init(GtkTreeModelIface *iface)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void __gui_queue_model_set_runtime(void)
|
||||||
|
{
|
||||||
|
gchar *len = string_sec2str_long(queue_model->gqm_queue->q_length);
|
||||||
|
gtk_label_set_text(GTK_LABEL(gui_builder_widget("o_runtime")), len);
|
||||||
|
g_free(len);
|
||||||
|
}
|
||||||
|
|
||||||
void gui_queue_model_init(void)
|
void gui_queue_model_init(void)
|
||||||
{
|
{
|
||||||
queue_model = g_object_new(GUI_QUEUE_MODEL_TYPE, NULL);
|
queue_model = g_object_new(GUI_QUEUE_MODEL_TYPE, NULL);
|
||||||
|
@ -275,6 +283,7 @@ void gui_queue_model_add(GuiQueueModel *model, unsigned int row)
|
||||||
|
|
||||||
_queue_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
|
_queue_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
|
||||||
gtk_tree_model_row_inserted(GTK_TREE_MODEL(model), path, &iter);
|
gtk_tree_model_row_inserted(GTK_TREE_MODEL(model), path, &iter);
|
||||||
|
__gui_queue_model_set_runtime();
|
||||||
gtk_tree_path_free(path);
|
gtk_tree_path_free(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -282,6 +291,7 @@ void gui_queue_model_remove(GuiQueueModel *model, unsigned int row)
|
||||||
{
|
{
|
||||||
GtkTreePath *path = gtk_tree_path_new_from_indices(row, -1);
|
GtkTreePath *path = gtk_tree_path_new_from_indices(row, -1);
|
||||||
gtk_tree_model_row_deleted(GTK_TREE_MODEL(model), path);
|
gtk_tree_model_row_deleted(GTK_TREE_MODEL(model), path);
|
||||||
|
__gui_queue_model_set_runtime();
|
||||||
gtk_tree_path_free(path);
|
gtk_tree_path_free(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -295,6 +305,7 @@ void gui_queue_model_clear(GuiQueueModel *model, unsigned int n)
|
||||||
gtk_tree_path_prev(path);
|
gtk_tree_path_prev(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__gui_queue_model_set_runtime();
|
||||||
gtk_tree_path_free(path);
|
gtk_tree_path_free(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -305,6 +316,7 @@ void gui_queue_model_update(GuiQueueModel *model, unsigned int row)
|
||||||
|
|
||||||
_queue_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
|
_queue_model_get_iter(GTK_TREE_MODEL(model), &iter, path);
|
||||||
gtk_tree_model_row_changed(GTK_TREE_MODEL(model), path, &iter);
|
gtk_tree_model_row_changed(GTK_TREE_MODEL(model), path, &iter);
|
||||||
|
__gui_queue_model_set_runtime();
|
||||||
gtk_tree_path_free(path);
|
gtk_tree_path_free(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -316,6 +328,7 @@ void gui_queue_model_set_queue(GuiQueueModel *model, struct queue *queue)
|
||||||
gui_queue_model_clear(model, queue_size(cur));
|
gui_queue_model_clear(model, queue_size(cur));
|
||||||
|
|
||||||
model->gqm_queue = queue;
|
model->gqm_queue = queue;
|
||||||
|
__gui_queue_model_set_runtime();
|
||||||
|
|
||||||
if (queue && queue_size(queue) > 0)
|
if (queue && queue_size(queue) > 0)
|
||||||
gui_queue_model_add(model, 0);
|
gui_queue_model_add(model, 0);
|
||||||
|
|
17
gui/queue.c
17
gui/queue.c
|
@ -19,18 +19,6 @@ enum gq_filter_how {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static void __queue_set_runtime(struct gui_queue *queue)
|
|
||||||
{
|
|
||||||
gchar *len;
|
|
||||||
|
|
||||||
if (queue != gq_queue)
|
|
||||||
return;
|
|
||||||
|
|
||||||
len = string_sec2str_long(queue->gq_queue->q_length);
|
|
||||||
gtk_label_set_text(GTK_LABEL(gui_builder_widget("o_runtime")), len);
|
|
||||||
g_free(len);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __queue_toggle_flag(bool active, GtkWidget *widget,
|
static void __queue_toggle_flag(bool active, GtkWidget *widget,
|
||||||
enum queue_flags flag)
|
enum queue_flags flag)
|
||||||
{
|
{
|
||||||
|
@ -204,7 +192,6 @@ void gui_queue_show(struct gui_queue *queue)
|
||||||
is_enabled = queue_has_flag(queue->gq_queue, Q_ENABLED);
|
is_enabled = queue_has_flag(queue->gq_queue, Q_ENABLED);
|
||||||
gui_queue_model_set_queue(queue->gq_model, queue->gq_queue);
|
gui_queue_model_set_queue(queue->gq_model, queue->gq_queue);
|
||||||
gui_view_set_model(GTK_TREE_MODEL_FILTER(queue->gq_filter));
|
gui_view_set_model(GTK_TREE_MODEL_FILTER(queue->gq_filter));
|
||||||
__queue_set_runtime(queue);
|
|
||||||
} else
|
} else
|
||||||
gtk_label_set_text(runtime, "");
|
gtk_label_set_text(runtime, "");
|
||||||
|
|
||||||
|
@ -233,23 +220,19 @@ void gui_queue_show(struct gui_queue *queue)
|
||||||
void gui_queue_added(struct queue *queue, unsigned int row)
|
void gui_queue_added(struct queue *queue, unsigned int row)
|
||||||
{
|
{
|
||||||
gui_queue_model_add(gui_queue(queue)->gq_model, row);
|
gui_queue_model_add(gui_queue(queue)->gq_model, row);
|
||||||
__queue_set_runtime(gui_queue(queue));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void gui_queue_removed(struct queue *queue, unsigned int row)
|
void gui_queue_removed(struct queue *queue, unsigned int row)
|
||||||
{
|
{
|
||||||
gui_queue_model_remove(gui_queue(queue)->gq_model, row);
|
gui_queue_model_remove(gui_queue(queue)->gq_model, row);
|
||||||
__queue_set_runtime(gui_queue(queue));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void gui_queue_cleared(struct queue *queue, unsigned int n)
|
void gui_queue_cleared(struct queue *queue, unsigned int n)
|
||||||
{
|
{
|
||||||
gui_queue_model_clear(gui_queue(queue)->gq_model, n);
|
gui_queue_model_clear(gui_queue(queue)->gq_model, n);
|
||||||
__queue_set_runtime(gui_queue(queue));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void gui_queue_updated(struct queue *queue, unsigned int row)
|
void gui_queue_updated(struct queue *queue, unsigned int row)
|
||||||
{
|
{
|
||||||
gui_queue_model_update(gui_queue(queue)->gq_model, row);
|
gui_queue_model_update(gui_queue(queue)->gq_model, row);
|
||||||
__queue_set_runtime(gui_queue(queue));
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include <core/idle.h>
|
#include <core/idle.h>
|
||||||
#include <core/core.h>
|
#include <core/core.h>
|
||||||
#include <core/playlist.h>
|
#include <core/playlist.h>
|
||||||
|
#include <gui/builder.h>
|
||||||
#include <gui/model.h>
|
#include <gui/model.h>
|
||||||
#include <tests/test.h>
|
#include <tests/test.h>
|
||||||
|
|
||||||
|
@ -171,16 +172,21 @@ static void test_model()
|
||||||
GtkTreeModel *model;
|
GtkTreeModel *model;
|
||||||
GtkTreePath *path;
|
GtkTreePath *path;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
|
GtkLabel *label;
|
||||||
GValue value;
|
GValue value;
|
||||||
int argc = 0;
|
int argc = 0;
|
||||||
|
|
||||||
|
gtk_init(&argc, NULL);
|
||||||
core_init(&argc, NULL, &init_data);
|
core_init(&argc, NULL, &init_data);
|
||||||
|
gui_builder_init("share/ocarina/ocarina6.glade");
|
||||||
gui_queue_model_init();
|
gui_queue_model_init();
|
||||||
while (idle_run_task() == true) {}
|
while (idle_run_task() == true) {}
|
||||||
|
|
||||||
model = GTK_TREE_MODEL(gui_queue_model_get());
|
model = GTK_TREE_MODEL(gui_queue_model_get());
|
||||||
|
label = GTK_LABEL(gui_builder_widget("o_runtime"));
|
||||||
gui_queue_model_set_queue(GUI_QUEUE_MODEL(model),
|
gui_queue_model_set_queue(GUI_QUEUE_MODEL(model),
|
||||||
playlist_get_queue(PL_SYSTEM, "Collection"));
|
playlist_get_queue(PL_SYSTEM, "Collection"));
|
||||||
|
test_equal(gtk_label_get_text(label), "");
|
||||||
memset(&value, 0, sizeof(GValue));
|
memset(&value, 0, sizeof(GValue));
|
||||||
|
|
||||||
g_signal_connect(model, "row-inserted", (GCallback)on_row_inserted, NULL);
|
g_signal_connect(model, "row-inserted", (GCallback)on_row_inserted, NULL);
|
||||||
|
@ -199,6 +205,7 @@ static void test_model()
|
||||||
playlist_add(PL_SYSTEM, "Favorites", track_get(1));
|
playlist_add(PL_SYSTEM, "Favorites", track_get(1));
|
||||||
playlist_add(PL_SYSTEM, "Favorites", track_get(2));
|
playlist_add(PL_SYSTEM, "Favorites", track_get(2));
|
||||||
test_equal(playlist_size(PL_SYSTEM, "Favorites"), 3);
|
test_equal(playlist_size(PL_SYSTEM, "Favorites"), 3);
|
||||||
|
test_equal(gtk_label_get_text(label), "42 minutes, 45 seconds");
|
||||||
|
|
||||||
/* ... and test again */
|
/* ... and test again */
|
||||||
test_equal(gtk_tree_model_get_iter_first(model, &iter), true);
|
test_equal(gtk_tree_model_get_iter_first(model, &iter), true);
|
||||||
|
@ -268,8 +275,11 @@ static void test_model()
|
||||||
test_equal(count_delete, 13);
|
test_equal(count_delete, 13);
|
||||||
test_equal(count_insert, 14);
|
test_equal(count_insert, 14);
|
||||||
test_equal(gtk_tree_model_iter_n_children(model, NULL), 3);
|
test_equal(gtk_tree_model_iter_n_children(model, NULL), 3);
|
||||||
|
test_equal(gtk_label_get_text(label), "10 minutes, 46 seconds");
|
||||||
|
|
||||||
gui_queue_model_set_queue(GUI_QUEUE_MODEL(model),
|
gui_queue_model_set_queue(GUI_QUEUE_MODEL(model),
|
||||||
playlist_get_queue(PL_SYSTEM, "Collection"));
|
playlist_get_queue(PL_SYSTEM, "Collection"));
|
||||||
|
test_equal(gtk_label_get_text(label), "42 minutes, 45 seconds");
|
||||||
test_equal(count_delete, 16);
|
test_equal(count_delete, 16);
|
||||||
test_equal(count_insert, 15);
|
test_equal(count_insert, 15);
|
||||||
|
|
||||||
|
|
|
@ -154,22 +154,17 @@ static void test_tracks()
|
||||||
{
|
{
|
||||||
struct db_entry *dbe, *next;
|
struct db_entry *dbe, *next;
|
||||||
struct gui_queue *gq;
|
struct gui_queue *gq;
|
||||||
GtkLabel *runtime;
|
|
||||||
GtkEntry *search;
|
GtkEntry *search;
|
||||||
int argc = 0;
|
int argc = 0;
|
||||||
|
|
||||||
runtime = GTK_LABEL(gui_builder_widget("o_runtime"));
|
|
||||||
search = GTK_ENTRY(gui_builder_widget("o_search"));
|
search = GTK_ENTRY(gui_builder_widget("o_search"));
|
||||||
|
|
||||||
core_init(&argc, NULL, &init_data);
|
core_init(&argc, NULL, &init_data);
|
||||||
gq = gui_queue(playlist_get_queue(PL_SYSTEM, "Collection"));
|
gq = gui_queue(playlist_get_queue(PL_SYSTEM, "Collection"));
|
||||||
|
|
||||||
gui_queue_show(gq);
|
gui_queue_show(gq);
|
||||||
test_equal(gtk_label_get_text(runtime), "");
|
|
||||||
|
|
||||||
playlist_new(PL_LIBRARY, "tests/Music/Hyrule Symphony");
|
playlist_new(PL_LIBRARY, "tests/Music/Hyrule Symphony");
|
||||||
while (idle_run_task() == true) {}
|
while (idle_run_task() == true) {}
|
||||||
test_equal(gtk_label_get_text(runtime), "42 minutes, 45 seconds");
|
|
||||||
|
|
||||||
test_not_equal((void *)gq, NULL);
|
test_not_equal((void *)gq, NULL);
|
||||||
test_not_equal((void *)gq->gq_filter, NULL);
|
test_not_equal((void *)gq->gq_filter, NULL);
|
||||||
|
@ -191,10 +186,7 @@ static void test_tracks()
|
||||||
}
|
}
|
||||||
|
|
||||||
test_equal(gtk_tree_model_iter_n_children(gq->gq_filter, NULL), 12);
|
test_equal(gtk_tree_model_iter_n_children(gq->gq_filter, NULL), 12);
|
||||||
test_equal(gtk_label_get_text(runtime), "40 minutes, 35 seconds");
|
|
||||||
|
|
||||||
gui_queue_show(NULL);
|
gui_queue_show(NULL);
|
||||||
test_equal(gtk_label_get_text(runtime), "");
|
|
||||||
|
|
||||||
core_deinit();
|
core_deinit();
|
||||||
gui_builder_deinit();
|
gui_builder_deinit();
|
||||||
|
|
Loading…
Reference in New Issue