2022-01-16 02:22:08 +01:00
|
|
|
#include <openmg/manga.h>
|
|
|
|
|
|
|
|
#include <openmg/backend/readmng.h>
|
|
|
|
|
2022-01-16 01:32:46 +01:00
|
|
|
#include <openmg/view/search.h>
|
2022-01-16 02:22:08 +01:00
|
|
|
#include <openmg/view/list_view_manga.h>
|
|
|
|
|
|
|
|
static void
|
2022-01-18 20:23:12 +01:00
|
|
|
search_text_changed (GtkEntry *entry,
|
2022-01-16 19:53:58 +01:00
|
|
|
gpointer user_data);
|
2022-01-16 01:32:46 +01:00
|
|
|
|
|
|
|
GtkWidget *
|
|
|
|
create_search_view (ControlsAdwaita *controls) {
|
2022-01-16 02:22:08 +01:00
|
|
|
GtkWidget *search_view = gtk_box_new (GTK_ORIENTATION_VERTICAL, 10);
|
2022-01-16 01:32:46 +01:00
|
|
|
|
|
|
|
GtkWidget *search_entry = gtk_entry_new ();
|
2022-01-16 02:22:08 +01:00
|
|
|
GtkWidget *scroll = gtk_scrolled_window_new ();
|
|
|
|
GListStore *mangas = g_list_store_new(MG_TYPE_MANGA);
|
|
|
|
GtkListView *list_view_mangas;
|
|
|
|
|
|
|
|
gtk_box_append (GTK_BOX (search_view), search_entry);
|
|
|
|
|
|
|
|
list_view_mangas = create_list_view_mangas (mangas, controls);
|
2022-01-18 20:23:12 +01:00
|
|
|
g_signal_connect (search_entry, "activate",
|
2022-01-16 02:22:08 +01:00
|
|
|
G_CALLBACK (search_text_changed), list_view_mangas);
|
|
|
|
|
|
|
|
gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (scroll),
|
|
|
|
GTK_WIDGET (list_view_mangas));
|
|
|
|
gtk_box_append (GTK_BOX (search_view), scroll);
|
|
|
|
gtk_widget_set_valign (scroll, GTK_ALIGN_FILL);
|
|
|
|
gtk_widget_set_vexpand (scroll, 1);
|
|
|
|
|
2022-01-16 01:32:46 +01:00
|
|
|
return search_view;
|
|
|
|
}
|
2022-01-16 02:22:08 +01:00
|
|
|
|
|
|
|
static void
|
2022-01-18 20:23:12 +01:00
|
|
|
search_text_changed (GtkEntry *entry,
|
2022-01-16 02:22:08 +01:00
|
|
|
gpointer user_data) {
|
2022-01-16 19:53:58 +01:00
|
|
|
GtkListView *list_view_mangas = GTK_LIST_VIEW (user_data);
|
2022-01-18 20:23:12 +01:00
|
|
|
GtkEntryBuffer *buffer = gtk_entry_get_buffer (entry);
|
|
|
|
MgBackendReadmng *readmng = mg_backend_readmng_new ();
|
|
|
|
const char *search_string = gtk_entry_buffer_get_text (buffer);
|
|
|
|
GListStore *mangas = mg_backend_readmng_search (readmng, search_string);
|
2022-01-16 19:53:58 +01:00
|
|
|
if (!mangas) return;
|
|
|
|
GtkSingleSelection *selection = GTK_SINGLE_SELECTION (
|
|
|
|
gtk_list_view_get_model (list_view_mangas));
|
|
|
|
gtk_single_selection_set_model (selection,
|
|
|
|
G_LIST_MODEL (mangas));
|
|
|
|
}
|