summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db.c14
-rw-r--r--db.h2
-rw-r--r--window_tag.c2
3 files changed, 14 insertions, 4 deletions
diff --git a/db.c b/db.c
index 6b0bd22..e6f0368 100644
--- a/db.c
+++ b/db.c
@@ -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);
diff --git a/db.h b/db.h
index 771b5e3..a2c19b1 100644
--- a/db.h
+++ b/db.h
@@ -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);