From ca7a3dde58dd71f5761b8373c062a0eeca6b8a2c Mon Sep 17 00:00:00 2001 From: Sophie Krause Date: Mon, 10 Feb 2025 17:43:14 +0100 Subject: [PATCH] small fixes and description --- README.md | 20 +++++++++++++++++++- meson.build | 6 +++--- src/database.c | 30 +++++++++++++++++------------- src/flashcardsappwin.c | 26 +++++++++++++++++++------- 4 files changed, 58 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 12a89bc..2bb72f7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,25 @@ # Flashcards +## Dependencies + +- Meson +- C Compiler +- GTK4 +- Libadwaita +- SQLite + +## Build + +``` +meson setup builddir +cd ./builddir +meson compile +``` + ## Docs + [Flashcards.pdf](https://gitlab.cvh-server.de/skrause/flashcards/-/jobs/artifacts/main/raw/Flashcards.pdf?job=docs) ## Download -[Flatpak](https://gitlab.cvh-server.de/skrause/flashcards/-/jobs/artifacts/main/raw/li.sopht.Flashcards.flatpak?job=flatpak) \ No newline at end of file + +[Flatpak](https://gitlab.cvh-server.de/skrause/flashcards/-/jobs/artifacts/main/raw/li.sopht.Flashcards.flatpak?job=flatpak) diff --git a/meson.build b/meson.build index 622d7e9..42d743e 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,7 @@ project('flashcards', 'c', version: '1.0.0', meson_version: '>= 1.0.0', - default_options: [ 'warning_level=2', 'werror=false', 'c_std=gnu11', ], + default_options: [ 'warning_level=2', 'werror=false', 'c_std=gnu23', ], ) flashcards_deps = [ @@ -90,7 +90,7 @@ foreach arg: test_c_args project_c_args += arg endif endforeach -# add_project_arguments(project_c_args, language: 'c') +add_project_arguments(project_c_args, language: 'c') executable('flashcards', sourcefiles, @@ -103,4 +103,4 @@ gnome.post_install( glib_compile_schemas: true, gtk_update_icon_cache: true, update_desktop_database: true, -) \ No newline at end of file +) diff --git a/src/database.c b/src/database.c index 25ec181..9ed6363 100644 --- a/src/database.c +++ b/src/database.c @@ -5,9 +5,11 @@ sqlite3 *database_connect(const char *path) { int rc; - - gchar *file = g_build_filename(path, "cards.db", NULL); + gchar *file; sqlite3 *db; + + file = g_build_filename(path, "cards.db", NULL); + rc = sqlite3_open(file, &db); if (rc) @@ -33,12 +35,13 @@ void database_create_tables(sqlite3 *db) { int rc; sqlite3_stmt *stmt; + const char *sql; - char *sql = "CREATE TABLE IF NOT EXISTS `cards` (" - "`category` INTEGER NOT NULL," - "`task` TEXT NOT NULL," - "`solution` TEXT NOT NULL" - ")"; + sql = "CREATE TABLE IF NOT EXISTS `cards` (" + "`category` INTEGER NOT NULL," + "`task` TEXT NOT NULL," + "`solution` TEXT NOT NULL" + ")"; rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0); @@ -94,11 +97,12 @@ void database_save_category(sqlite3 *db, const char *c) GArray *database_load_categories(sqlite3 *db) { - GArray *categories = g_array_new(TRUE, FALSE, sizeof(category)); - + GArray *categories; int rc; sqlite3_stmt *stmt; + categories = g_array_new(TRUE, FALSE, sizeof(category)); + rc = sqlite3_prepare_v2(db, "SELECT * FROM categories", -1, &stmt, 0); if (rc != SQLITE_OK) @@ -109,10 +113,8 @@ GArray *database_load_categories(sqlite3 *db) while (sqlite3_step(stmt) == SQLITE_ROW) { int id = sqlite3_column_int(stmt, 0); - const char *temp_name = (const char *)sqlite3_column_text(stmt, 1); + char *name = strdup((const char *)sqlite3_column_text(stmt, 1)); - char *name = g_new0(char, strlen(temp_name) + 1); - strncpy(name, temp_name, strlen(temp_name) + 1); category c = {id, name}; g_array_append_val(categories, c); } @@ -146,7 +148,9 @@ void database_save_card(sqlite3 *db, card c) GArray *database_load_cards(sqlite3 *db) { - GArray *cards = g_array_new(TRUE, FALSE, sizeof(card)); + GArray *cards; + + cards = g_array_new(TRUE, FALSE, sizeof(card)); return cards; } \ No newline at end of file diff --git a/src/flashcardsappwin.c b/src/flashcardsappwin.c index 3141537..e642bf9 100644 --- a/src/flashcardsappwin.c +++ b/src/flashcardsappwin.c @@ -31,15 +31,18 @@ G_DEFINE_TYPE(FlashcardsAppWindow, flashcards_app_window, ADW_TYPE_APPLICATION_W static void on_category_selected(GtkListBox *box, GtkListBoxRow *row, gpointer user_data) { + FlashcardsAppWindow *win; + int id; + if (row == NULL) { return; } printf("Test\n"); - FlashcardsAppWindow *win = user_data; + win = user_data; adw_navigation_split_view_set_show_content(ADW_NAVIGATION_SPLIT_VIEW(win->split_view), TRUE); - int id = gtk_list_box_row_get_index(gtk_list_box_get_selected_row(win->topics)); + id = gtk_list_box_row_get_index(gtk_list_box_get_selected_row(win->topics)); printf("%d\n", id); } @@ -47,15 +50,19 @@ static void on_add_category(GtkButton *self, gpointer user_data) { - FlashcardsCreateCategoryDialog *dialog = flashcards_create_category_dialog_new(user_data); + FlashcardsCreateCategoryDialog *dialog; + + dialog = flashcards_create_category_dialog_new(user_data); adw_dialog_present(ADW_DIALOG(dialog), GTK_WIDGET(user_data)); } void flashcards_app_window_test(FlashcardsAppWindow *win, const gchar *test) { + GtkWidget *child; + database_save_category(win->db, test); - GtkWidget *child = adw_action_row_new(); + child = adw_action_row_new(); adw_preferences_row_set_title(ADW_PREFERENCES_ROW(child), test); gtk_list_box_append(GTK_LIST_BOX(win->topics), child); @@ -64,20 +71,25 @@ void flashcards_app_window_test(FlashcardsAppWindow *win, const gchar *test) static void flashcards_app_window_init(FlashcardsAppWindow *win) { + GArray *categories; + gtk_widget_init_template(GTK_WIDGET(win)); win->db = database_connect(g_get_user_data_dir()); database_create_tables(win->db); win->categories = database_load_categories(win->db); - GArray *categories = win->categories; + categories = win->categories; for (int i = 0; i < categories->len; i++) { - category c = g_array_index(categories, category, i); + GtkWidget *child; + category c; + + c = g_array_index(categories, category, i); printf("%d: %s\n", c.id, c.name); - GtkWidget *child = adw_action_row_new(); + child = adw_action_row_new(); adw_preferences_row_set_title(ADW_PREFERENCES_ROW(child), c.name); gtk_list_box_append(GTK_LIST_BOX(win->topics), child);