You are here: Links of Interest » HEIG-VD » [PRO] Virtual Comics Library » Rapport » Implémentation » Application Desktop » Bibliothèque
Bibliothèque
This is an old revision of the document!
Table of Contents
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 CatalogItem
s qui lui même possède plusieurs CatalogItem
s 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.