summaryrefslogtreecommitdiff
path: root/window_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'window_main.c')
-rw-r--r--window_main.c59
1 files changed, 21 insertions, 38 deletions
diff --git a/window_main.c b/window_main.c
index e5cd3b7..d327177 100644
--- a/window_main.c
+++ b/window_main.c
@@ -11,6 +11,7 @@
#include "window_tag.h"
#include "preload.h"
#include "window_config.h"
+#include "tag_model.h"
enum zoom_mode_t {
ZOOM_BESTFIT,
@@ -80,6 +81,9 @@ inline static void tagview_create_model(GtkTreeView *tagview) {
struct tag_t *tag;
GtkTreeIter iter;
+ gtk_tree_view_set_model(tagview, GTK_TREE_MODEL(tag_model_new()));
+ return;
+
model = gtk_list_store_new(3, G_TYPE_BOOLEAN, G_TYPE_STRING, G_TYPE_UINT64);
if(db_get_tags_all(&array)) {
@@ -114,7 +118,7 @@ inline static void tagview_init(GtkTreeView *tagview) {
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_end(col2, renderer, TRUE);
- gtk_tree_view_column_add_attribute(col2, renderer, "text", 1);
+ gtk_tree_view_column_add_attribute(col2, renderer, "text", 2);
tagview_create_model(tagview);
}
@@ -493,10 +497,8 @@ void display_from_tagview() {
GtkTreeIter iter;
GtkTreeModel *model, *old_model;
GtkListStore *liststore;
- GValue value = {0};
- gboolean active;
GArray *tagarray, *wallarray;
- guint64 id;
+ struct tag_t *tag;
model = gtk_tree_view_get_model(GTK_TREE_VIEW(tagview));
@@ -506,18 +508,12 @@ void display_from_tagview() {
tagarray = g_array_new(FALSE, FALSE, sizeof(guint64));
do {
- gtk_tree_model_get_value(model, &iter, 0, &value);
- active = g_value_get_boolean(&value);
- g_value_unset(&value);
-
- if(!active)
+ if(!tag_model_get_checked(model, &iter))
continue;
- gtk_tree_model_get_value(model, &iter, 2, &value);
- id = g_value_get_uint64(&value);
- g_value_unset(&value);
+ tag_model_get_tag_record(GTK_TREE_MODEL(model), &iter, &tag);
- g_array_append_val(tagarray, id);
+ g_array_append_val(tagarray, tag->id);
} while(gtk_tree_model_iter_next(model, &iter));
if(!db_get_walls_by_tags(tagarray, &wallarray)) {
@@ -542,17 +538,14 @@ void display_from_tagview() {
void on_main_tagview_cell_toggled(GtkCellRendererToggle *cell_renderer, gchar *path_string, gpointer user_data) {
GtkTreeIter iter;
GtkTreeModel *model;
- GValue value = {0};
gboolean active;
model = gtk_tree_view_get_model(GTK_TREE_VIEW(tagview));
gtk_tree_model_get_iter_from_string(model, &iter, path_string);
- gtk_tree_model_get_value(model, &iter, 0, &value);
- active = g_value_get_boolean(&value);
- g_value_unset(&value);
- gtk_list_store_set(GTK_LIST_STORE(model), &iter, 0, !active, -1);
+ active = tag_model_get_checked(GTK_TREE_MODEL(model), &iter);
+ tag_model_set_checked(GTK_TREE_MODEL(model), &iter, !active);
display_from_tagview();
}
@@ -813,36 +806,26 @@ inline static void update_wall_tags(GArray *wallarray, guint64 tagid, gboolean a
/**
* Update tags for wallpapers.
*/
-static void update_tags(GArray *wallarray, GtkListStore *liststore) {
+static void update_tags(GArray *wallarray, GtkTreeModel *model) {
GtkTreeIter iter;
- GValue value = {0};
- gboolean active, inconsistent;
- guint64 tagid;
+ gboolean active;
+ struct tag_t *tag;
/* No tags available. */
- if(!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(liststore), &iter)) {
+ if(!gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter)) {
return;
}
do {
- gtk_tree_model_get_value(GTK_TREE_MODEL(liststore), &iter, 1, &value);
- inconsistent = g_value_get_boolean(&value);
- g_value_unset(&value);
-
/* Don't update inconsistent tags. */
- if(inconsistent)
+ if(tag_model_get_inconsistent(GTK_TREE_MODEL(model), &iter))
continue;
- gtk_tree_model_get_value(GTK_TREE_MODEL(liststore), &iter, 0, &value);
- active = g_value_get_boolean(&value);
- g_value_unset(&value);
-
- gtk_tree_model_get_value(GTK_TREE_MODEL(liststore), &iter, 3, &value);
- tagid = g_value_get_uint64(&value);
- g_value_unset(&value);
+ active = tag_model_get_checked(GTK_TREE_MODEL(model), &iter);
+ tag_model_get_tag_record(GTK_TREE_MODEL(model), &iter, &tag);
- update_wall_tags(wallarray, tagid, active);
- } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(liststore), &iter));
+ update_wall_tags(wallarray, tag->id, active);
+ } while(gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter));
}
void on_tags_activate(GtkMenuItem *menuitem, gpointer user_data) {
@@ -855,7 +838,7 @@ void on_tags_activate(GtkMenuItem *menuitem, gpointer user_data) {
data = window_tagview_new(GTK_WIDGET(window), array);
if(gtk_dialog_run(GTK_DIALOG(data->dialog)) == GTK_RESPONSE_APPLY) {
- update_tags(array, GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(data->tagview))));
+ update_tags(array, GTK_TREE_MODEL(gtk_tree_view_get_model(GTK_TREE_VIEW(data->tagview))));
}
gtk_widget_destroy(GTK_WIDGET(data->dialog));