Forráskód Böngészése

Premier liststore fonctionnel

vetetix 2 hónapja
szülő
commit
61c2731451
2 módosított fájl, 37 hozzáadás és 27 törlés
  1. 34 24
      src/oupis-window.c
  2. 3 3
      src/oupis-window.ui

+ 34 - 24
src/oupis-window.c

@@ -31,7 +31,7 @@ struct _OupisWindow
   GtkScrolledWindow   *scrolledwindow;
   GtkListView         *listview;
   GtkSingleSelection  *singleselection;
-  GtkDirectoryList    *directorylist;
+  GListStore          *liststore;
 };
 
 G_DEFINE_FINAL_TYPE (OupisWindow, oupis_window, ADW_TYPE_APPLICATION_WINDOW)
@@ -46,17 +46,26 @@ str_to_lc_ascii (const gchar* string)
 
 static void
 oupis_window__search_request (GtkSearchEntry *self,
-                              gpointer        userdata)
+                              OupisWindow    *window)
 {
-  const char* request;
-  char* request_lc_ascii;
-  GFile * directory;
-  GFileEnumerator * direnum;
-  GError *error = NULL;
-  GFileInfo *info;
-  const gchar *infoname;
-  gchar *infoname_lc_ascii;
-
+  const char*      request;
+  char*            request_lc_ascii;
+  GFile           *directory;
+  GFileEnumerator *direnum;
+  GError          *error = NULL;
+  GFileInfo       *info;
+  GFile           *file;
+  const gchar *    infoname;
+  gchar *          infoname_lc_ascii;
+
+  gchar *          procdir = "/home/vetetix/Code/Gendarmerie/Oupis/procedures";
+  gchar *proctype[] = { "Administratif",
+                        "Judiciaire",
+                        "Courriers",
+                        "MainCourante",
+                        "Militaire"};
+
+  g_list_store_remove_all (window->liststore);
 
   request = gtk_editable_get_text (GTK_EDITABLE (self));
   g_print ("Request: %s\n", request);
@@ -64,7 +73,6 @@ oupis_window__search_request (GtkSearchEntry *self,
   g_print ("  R_l_a: %s\n", request_lc_ascii);
 
   directory = g_file_new_for_path (".");
-
   direnum = g_file_enumerate_children (directory,
                                         "standard::name,standard::display-name",
                                         G_FILE_QUERY_INFO_NONE,
@@ -74,7 +82,7 @@ oupis_window__search_request (GtkSearchEntry *self,
 
   while (TRUE)
     {
-      if (!g_file_enumerator_iterate (direnum, &info, NULL, NULL, &error))
+      if (!g_file_enumerator_iterate (direnum, &info, &file, NULL, &error))
         goto out;
       if (!info)
         break;
@@ -83,6 +91,7 @@ oupis_window__search_request (GtkSearchEntry *self,
 
       if (g_strrstr (infoname_lc_ascii, request_lc_ascii)) {
         g_print ("%s\n", infoname);
+        g_list_store_insert (window->liststore, 0, file);
       }
 
     }
@@ -99,14 +108,14 @@ oupis_window__search_request (GtkSearchEntry *self,
 }
 
 static void
-listview_activate (GtkListView *listview, int position, gpointer user_data) {
-  GFile *file;
+listview_activate (GtkListView *listview, int position, OupisWindow *window) {
   GError *error = NULL;
-  GFileInfo *info = G_FILE_INFO (g_list_model_get_item (G_LIST_MODEL (gtk_list_view_get_model (listview)), position));
+  GFile *file = G_FILE (g_list_model_get_item (G_LIST_MODEL (gtk_list_view_get_model (listview)), position));;
+  //GFileInfo *info = G_FILE_INFO (g_list_model_get_item (G_LIST_MODEL (gtk_list_view_get_model (listview)), position));
 
-  g_print ("%s\n", g_file_info_get_name (info));
+  g_print ("%s\n", g_file_get_basename (file));
 
-  file = G_FILE (g_file_info_get_attribute_object (info, "standard::file"));
+  //file = G_FILE (g_file_info_get_attribute_object (info, "standard::file"));
 
   //TODO rendre cet appel async et gérer les éventuelles erreurs
   g_app_info_launch_default_for_uri (g_file_get_uri (file), NULL, &error);
@@ -115,22 +124,23 @@ listview_activate (GtkListView *listview, int position, gpointer user_data) {
     g_print ("%s\n", error->message);
   }
 
-  g_object_unref (info);
+  g_object_unref (file);
 }
 
 
 static GIcon *
-get_icon (GtkListItem *item, GFileInfo *info) {
+get_icon (GtkListItem *item, GFile *file) {
   GIcon *icon;
    /* g_file_info_get_icon can return NULL */
+  //TODO corriger ou supprimer
   icon = G_IS_FILE_INFO (info) ? g_file_info_get_icon (info) : NULL;
   return icon ? g_object_ref (icon) : NULL;
 }
 
 
 static char *
-get_file_name (GtkListItem *item, GFileInfo *info) {
-  return G_IS_FILE_INFO (info) ? g_strdup (g_file_info_get_name (info)) : NULL;
+get_file_name (GtkListItem *item, GFile *file) {
+  return G_IS_FILE (file) ? g_strdup (g_file_get_basename (file)) : NULL;
 }
 
 static void
@@ -143,7 +153,7 @@ oupis_window_class_init (OupisWindowClass *klass)
   gtk_widget_class_bind_template_child (widget_class, OupisWindow, scrolledwindow);
   gtk_widget_class_bind_template_child (widget_class, OupisWindow, listview);
   gtk_widget_class_bind_template_child (widget_class, OupisWindow, singleselection);
-  gtk_widget_class_bind_template_child (widget_class, OupisWindow, directorylist);
+  gtk_widget_class_bind_template_child (widget_class, OupisWindow, liststore);
 
   gtk_widget_class_bind_template_callback (widget_class, oupis_window__search_request);
   gtk_widget_class_bind_template_callback (widget_class, listview_activate);
@@ -160,6 +170,6 @@ oupis_window_init (OupisWindow *self)
   gtk_widget_init_template (GTK_WIDGET (self) );
 
   file = g_file_new_for_path (".");
-  gtk_directory_list_set_file (GTK_DIRECTORY_LIST (self->directorylist), file);
+  //gtk_directory_list_set_file (GTK_DIRECTORY_LIST (self->directorylist), file);
   g_object_unref (file);
 }

+ 3 - 3
src/oupis-window.ui

@@ -12,7 +12,7 @@
           <object class="AdwHeaderBar">
             <child type="start">
               <object class="GtkSearchEntry" id="searchentry">
-                <property name="placeholder-text">Rechercher…</property>
+                <property name="placeholder-text" translatable="yes">Search…</property>
                 <property name="margin-start">10</property>
                 <signal name="activate" handler="oupis_window__search_request"/>
               </object>
@@ -36,8 +36,8 @@
                 <property name="model">
                   <object class="GtkSingleSelection" id="singleselection">
                     <property name="model">
-                      <object class="GtkDirectoryList" id="directorylist">
-                        <property name="attributes">standard::name,standard::icon,standard::content-type</property>
+                      <object class="GListStore" id="liststore">
+                        <property name="item-type">GFile</property>
                       </object>
                     </property>
                   </object>