Laureline's Wiki

Laureline's Wiki

Bibliothèque

This is an old revision of the document!


Bibliothèque

Bibliothèque

La bibliothèque est implémentés à l'aide de plusieurs controlleurs. Un controlleur principal qui gère la TreeView qui affiche les catalogues et un controlleur secondaire qui se charge de l'affichage des volumes. Chaque volume possède aussi son propre controlleur afin de pouvoir gérer l'affichage et les actions d'un volume de manière isolée.

Affichage des Catalogues

L'affichage des catalogues utilise une TreeView pour afficher les catalogues. Pour pouvoir appliquer des filtres au contenu de la TreeView, les classes RootCatalogItem et CatalogItem on été crées. La classe RootCatalogItem se place comme élémet racine (La TreeView est configurée pour ne pas afficher son élément racine mais uniquement ses enfants) et expose comme enfants les catégories racines des catalogues enregistrés dans le système sous la forme de CatalogItems qui lui même possède plusieurs CatalogItems pour leur enfants. Ceci forme un arbe parallèle à la structure des catalogues sous-jacents. Ces objets peuvent être considérés comme des “proxy” vers la vértiable structure.

<uml> hide empty fields hide empty methods

TreeView → “1” RootCatalogItem RootCatalogItem → “*” CatalogItem CatalogItem –> “*” CatalogItem CatalogItem –> CatalogNode RootCatalogItem –> “1” Catalog Catalog → “1” Category CatalogNode <|– Category CatalogNode <|– Series

</uml>

Ces objets proxy permettent d'implémenter un système de filtre sur l'arborecence sans qu'il soit nécéssaire de recréer toute la structure. La classe CatalogItem expose une méthode refresh() qui synchronise ses enfants avec l'objet sous-jacent et conserve l'ordre des enfants.

Filtrer un Catalogue

Une méthode applyFilter(filter) est aussi disponnible sur les CatalogItems. Cette méthode permet de restreindre quels noeuds sont affichés. Le filtre est appliqué de manière recursive aux enfants. Le noeud est considéré comme ayant une correspondance si il remplis les critères du filtre ou si un de ses enfants remplis le critère du filtre. Si un enfant ne correspons pas au filtre il est retiré de la liste des enfants du noeud (si il y figure), de même si un enfant correspond au critères il sera ajouté à la liste des enfants (si il n'y figure pas). La liste des enfants est ensuite retriée en fonction de l'ordre d'origine.

Ce fonctionnement permet d'afficher des noeuds qui correspondent au filtre même si leur parents ne le sont pas.

Affichage des Volumes

Les volumes sont affichés dans une TilePane. Chaque volume est un tile qui affiche sa couverture (obtenue à l'aide du ThumbnailStore de son catalogue) ainsi que son titre.