diff options
-rw-r--r-- | db.c | 14 | ||||
-rw-r--r-- | db.h | 2 | ||||
-rw-r--r-- | window_tag.c | 2 |
3 files changed, 14 insertions, 4 deletions
@@ -515,11 +515,11 @@ int db_get_walls_by_tags(GArray *tags, GArray **array) { return 1; } -sqlite_uint64 db_add_tag(const char *name) { +sqlite_uint64 db_add_tag(const char *name, sqlite_uint64 parent) { sqlite3_stmt *stmt; int rc; - rc = sqlite3_prepare_v2(db, "INSERT INTO tag (name) VALUES (?)", -1, &stmt, NULL); + rc = sqlite3_prepare_v2(db, "INSERT INTO tag (name, parent) VALUES (?, ?)", -1, &stmt, NULL); if(rc != SQLITE_OK) { return 0; @@ -531,6 +531,16 @@ sqlite_uint64 db_add_tag(const char *name) { return 0; } + if(parent == 0) { + rc = sqlite3_bind_null(stmt, 2); + } else { + rc = sqlite3_bind_int64(stmt, 2, parent); + } + if(rc != SQLITE_OK) { + sqlite3_finalize(stmt); + return 0; + } + rc = sqlite3_step(stmt); sqlite3_finalize(stmt); @@ -37,7 +37,7 @@ int db_get_wallpaper_data(sqlite_uint64, struct wallpaper_t*); int db_get_wall_tags(sqlite_uint64, GArray**); int db_get_wallpapers(sqlite_uint64, GArray**); int db_get_walls_by_tags(GArray*, GArray**); -sqlite_uint64 db_add_tag(const char*); +sqlite_uint64 db_add_tag(const char*, sqlite_uint64); int db_get_tags_all(GArray**); int db_add_wall_tag(sqlite_uint64, sqlite_uint64); void db_remove_tag(sqlite_uint64); diff --git a/window_tag.c b/window_tag.c index e6ea986..ca6d6f4 100644 --- a/window_tag.c +++ b/window_tag.c @@ -139,7 +139,7 @@ void on_tags_addbtn_clicked(GtkButton *button, gpointer user_data) { dialog = text_input_dialog_new(data->dialog, "Enter the name of the new tag:"); if(gtk_dialog_run(dialog) == GTK_RESPONSE_OK) { s = text_input_dialog_get_text(GTK_WIDGET(dialog)); - if(db_add_tag(s)) + if(db_add_tag(s, 0)) tagview_create_model(GTK_TREE_VIEW(data->tagview), user_data); else g_warning("Failed to add tag \"%s\"\n", s); |