Afficher les preuves dans la sidebar et leur fiche dans le workspace #52

Closed
opened 2026-07-20 09:40:51 +02:00 by fy59 · 0 comments
Owner

Afficher la liste des preuves importées

Objectif

Ajouter dans l’interface GTK une page permettant de consulter les preuves
enregistrées dans la base SQLite de l’enquête active.

Cette liste doit représenter les données persistées dans la table preuves,
et non simplement les fichiers présents dans 01_Preuves_Originales.

Parcours utilisateur

  1. L’utilisateur ouvre ou crée une enquête.
  2. L’action « Afficher les preuves » devient disponible.
  3. L’utilisateur ouvre la page des preuves.
  4. L’application charge les preuves depuis SQLite.
  5. Les preuves sont affichées dans un tableau.
  6. Après un nouvel import réussi, la liste est actualisée.

Colonnes initiales

Le tableau affiche :

  • nom original ;
  • type de preuve ;
  • taille ;
  • date de collecte ;
  • source ;
  • statut d’intégrité.

L’identifiant, le nom interne, le chemin relatif, le SHA-256, la description
et la date d’import seront utilisés dans une future fiche détaillée.

Architecture

Application

Application doit :

  • utiliser la connexion de l’InvestigationSession active ;
  • créer un EvidenceDao ;
  • appeler evidence_dao_list_all() ;
  • transmettre les enregistrements à MainWindow ;
  • présenter les erreurs SQLite à l’utilisateur ;
  • actualiser la liste après un import réussi.

MainWindow

MainWindow doit :

  • ajouter une action compacte « Afficher les preuves » ;
  • transmettre cette demande à Application par callback ;
  • transmettre les données reçues au Workspace ;
  • ne jamais accéder directement à SQLite.

Workspace

Workspace doit ajouter une page nommée evidence-list.

Cette page contient :

  • un titre ;
  • le nombre de preuves ;
  • un état vide lorsqu’aucune preuve n’existe ;
  • une liste ou un tableau GTK ;
  • les colonnes prévues.

Le widget ne doit pas accéder directement à SQLite.

Modèle GTK

Les EvidenceRecord restent des modèles métier opaques.

Pour utiliser un GtkColumnView, créer un modèle GTK privé ou un objet
d’affichage qui copie uniquement les valeurs nécessaires.

La vue ne doit pas conserver de pointeurs empruntés vers des
EvidenceRecord susceptibles d’être libérés lors d’un rafraîchissement.

Gestion de la mémoire

  • le tableau retourné par evidence_dao_list_all() appartient à l’appelant ;
  • chaque élément utilise evidence_record_free() ;
  • les données nécessaires à GTK sont copiées ;
  • le tableau métier peut être libéré après alimentation de la vue ;
  • un rafraîchissement remplace proprement l’ancien modèle GTK.

Cas d’erreur

Gérer proprement :

  • aucune enquête ouverte ;
  • connexion SQLite absente ;
  • DAO impossible à créer ;
  • requête impossible à préparer ;
  • ligne SQLite invalide ;
  • tableau vide ;
  • allocation impossible.

Une erreur de lecture ne doit ni fermer l’application ni détruire la session.

Tests attendus

Tester au minimum :

  • création du modèle d’affichage depuis un EvidenceRecord valide ;
  • copie indépendante des chaînes ;
  • valeurs facultatives absentes ;
  • taille correctement conservée ;
  • remplacement complet du contenu ;
  • liste vide ;
  • arguments invalides ;
  • libération avec NULL ;
  • rafraîchissements successifs.

Critères d’acceptation

  • les preuves affichées proviennent de SQLite ;
  • aucune requête SQLite n’est exécutée dans un widget ;
  • le tableau affiche les six colonnes prévues ;
  • une enquête sans preuve affiche un état vide ;
  • la liste est actualisée après un import ;
  • un changement d’enquête remplace l’ancienne liste ;
  • aucune donnée de l’enquête précédente ne reste affichée ;
  • la compilation passe avec C17, -Wall, -Wextra et -Werror ;
  • tous les tests passent ;
  • git diff --check ne signale rien.

Hors périmètre

Ce ticket ne couvre pas encore :

  • la fiche détaillée d’une preuve ;
  • l’ouverture du fichier ;
  • la modification des métadonnées ;
  • la suppression d’une preuve ;
  • la vérification d’intégrité ;
  • les aperçus image, PDF, audio ou vidéo ;
  • l’analyse ExifTool.
# Afficher la liste des preuves importées ## Objectif Ajouter dans l’interface GTK une page permettant de consulter les preuves enregistrées dans la base SQLite de l’enquête active. Cette liste doit représenter les données persistées dans la table `preuves`, et non simplement les fichiers présents dans `01_Preuves_Originales`. ## Parcours utilisateur 1. L’utilisateur ouvre ou crée une enquête. 2. L’action « Afficher les preuves » devient disponible. 3. L’utilisateur ouvre la page des preuves. 4. L’application charge les preuves depuis SQLite. 5. Les preuves sont affichées dans un tableau. 6. Après un nouvel import réussi, la liste est actualisée. ## Colonnes initiales Le tableau affiche : - nom original ; - type de preuve ; - taille ; - date de collecte ; - source ; - statut d’intégrité. L’identifiant, le nom interne, le chemin relatif, le SHA-256, la description et la date d’import seront utilisés dans une future fiche détaillée. ## Architecture ### Application `Application` doit : - utiliser la connexion de l’`InvestigationSession` active ; - créer un `EvidenceDao` ; - appeler `evidence_dao_list_all()` ; - transmettre les enregistrements à `MainWindow` ; - présenter les erreurs SQLite à l’utilisateur ; - actualiser la liste après un import réussi. ### MainWindow `MainWindow` doit : - ajouter une action compacte « Afficher les preuves » ; - transmettre cette demande à `Application` par callback ; - transmettre les données reçues au `Workspace` ; - ne jamais accéder directement à SQLite. ### Workspace `Workspace` doit ajouter une page nommée `evidence-list`. Cette page contient : - un titre ; - le nombre de preuves ; - un état vide lorsqu’aucune preuve n’existe ; - une liste ou un tableau GTK ; - les colonnes prévues. Le widget ne doit pas accéder directement à SQLite. ### Modèle GTK Les `EvidenceRecord` restent des modèles métier opaques. Pour utiliser un `GtkColumnView`, créer un modèle GTK privé ou un objet d’affichage qui copie uniquement les valeurs nécessaires. La vue ne doit pas conserver de pointeurs empruntés vers des `EvidenceRecord` susceptibles d’être libérés lors d’un rafraîchissement. ## Gestion de la mémoire - le tableau retourné par `evidence_dao_list_all()` appartient à l’appelant ; - chaque élément utilise `evidence_record_free()` ; - les données nécessaires à GTK sont copiées ; - le tableau métier peut être libéré après alimentation de la vue ; - un rafraîchissement remplace proprement l’ancien modèle GTK. ## Cas d’erreur Gérer proprement : - aucune enquête ouverte ; - connexion SQLite absente ; - DAO impossible à créer ; - requête impossible à préparer ; - ligne SQLite invalide ; - tableau vide ; - allocation impossible. Une erreur de lecture ne doit ni fermer l’application ni détruire la session. ## Tests attendus Tester au minimum : - création du modèle d’affichage depuis un `EvidenceRecord` valide ; - copie indépendante des chaînes ; - valeurs facultatives absentes ; - taille correctement conservée ; - remplacement complet du contenu ; - liste vide ; - arguments invalides ; - libération avec NULL ; - rafraîchissements successifs. ## Critères d’acceptation - les preuves affichées proviennent de SQLite ; - aucune requête SQLite n’est exécutée dans un widget ; - le tableau affiche les six colonnes prévues ; - une enquête sans preuve affiche un état vide ; - la liste est actualisée après un import ; - un changement d’enquête remplace l’ancienne liste ; - aucune donnée de l’enquête précédente ne reste affichée ; - la compilation passe avec C17, `-Wall`, `-Wextra` et `-Werror` ; - tous les tests passent ; - `git diff --check` ne signale rien. ## Hors périmètre Ce ticket ne couvre pas encore : - la fiche détaillée d’une preuve ; - l’ouverture du fichier ; - la modification des métadonnées ; - la suppression d’une preuve ; - la vérification d’intégrité ; - les aperçus image, PDF, audio ou vidéo ; - l’analyse ExifTool.
fy59 changed title from Afficher la liste des preuves importées to Afficher les preuves dans la sidebar et leur fiche dans le workspace 2026-07-20 10:06:57 +02:00
fy59 closed this issue 2026-07-20 12:40:55 +02:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: fy59/labfy-investigation#52
No description provided.