Dim 22/07/2012 - Actualités

Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Dim 22/07/2012 - Actualités

Message non lu par Xavier »

Dossiers


Les outils existants (Contacts et Identifiants) utilisent les dossiers comme des containers de données, de l'exacte même façon que les répertoires sont des containers de fichiers dans un Explorateur.

Les dossiers de l'Agenda doivent fonctionner différemment, car il doit absolument être possible de voir la totalité des évènements et rendez-vous d'une journée, sans avoir à se construire mentalement cette image globale en "additionnant" les rendez-vous stockés dans les différents dossiers.


Les premières discussions sur le sujet avaient abouties a l'idée que les dossiers de l'Agenda devaient fonctionner soit en mode normal (container) soit en mode filtre.

Le mode filtre correspondrait en fait à une sorte d'héritage mais inversé, le patriarche héritant de ses descendants. (Ce type de vue avait également été évoqué pour la recherche de Contacts.) Illustrons cette notion avec un exemple basé sur un arbre de dossier comprenant :

Code : Tout sélectionner

[-] Agenda
    [-] Perso
    [-] Pro
        [-] Projet A
        [-] Projet B
Quand l'arbre serait basculé en mode filtre :
  • Sélectionner Agenda afficherait la totalité des données (et non seulement celles de la racine)
  • Sélectionner Perso n'afficherait que les données Perso.
  • Sélectionner Pro afficherait les données du dossier Pro et de ses sous-dossiers Projet A et Projet B.
Cet exemple simple montre assez bien le besoin, n'est ce pas ?
Malheureusement, permettre à un arbre de dossiers de fonctionner selon deux modes opposés n'est pas standard et risque de perturber voire bloquer certains utilisateurs (partant désormais sur l'hypothèse que l'aide n'est jamais déclenchée).


Tout utilisateur Windows étant par contre habitué à filtrer ses données avec des CheckBoxes, c'est cette solution qui a été retenue. Le résultat sera différent, mais les capacités de filtrages seront supérieures. Ainsi, il sera possible de cocher les dossiers Perso et Projet A et d'obtenir un filtre que l'arbre en mode filtre ne permet pas.

Le besoin de filtrer des dossiers a déjà été rencontré dans le Gestionnaire de données. L'impossibilité d'associer des CheckBoxes à un TreeView a forcé l'utilisation d'un ListView, l'impression de hiérarchie des dossiers étant recréée grâce à l'indentation des dossiers :
Export.png
Cette liste à plat ne permettant pas de réduire (et cacher) une branche, c'est bien la solution du TreeView qui est visée. La première idée a été d'utiliser huit icônes de 32x16 qui combineraient les deux états (Checked / Unchecked) et les quatre types de dossier (outil / utilisateur x ouvert / fermé).

Mais un paragraphe de l'aide parle d'une liste d'images secondaire, ce qui correspond exactement au besoin :
StateImage.png
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Dim 22/07/2012 - Actualités

Message non lu par Xavier »

StateIndex


Impossible d'assigner une image de la bibiothèque qui a un index supérieur à 15, Delphi (ou Windows ?) fait un joli modulo 16 et affiche l'une des 16 premières images. :shock:
L'index de l'image d'état semble donc codé sur 4 bits. lol

Et pas question d'insérer les icônes de CheckBoxes au début de la bibiothèque, ça ferait une centaine d'icône à renuméroter. Elles vont donc avoir droit à leur propre bibilothèque.
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Dim 22/07/2012 - Actualités

Message non lu par Xavier »

StateIndex


Delphi refuse également d'afficher la première image d'une bibliothèque, donc comme conseillé sur les sites Delphi qui parlent du problème, une première icône vide permet de contourner le problème :
StateImages.png
Le résultat est satisfaisant :
CheckedFolders.png
Il existe des portions de code qui permettent de ne changer l'image d'état que lorsque le clic souris est réalisé sur l'icône ou le texte du dossier agissant normalement (sélection). :mrgreen:
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Dim 22/07/2012 - Actualités

Message non lu par Xavier »

Cellules


La gestion des cellules du Calendrier va être assurée par deux modules.

Le premier module, qui est nouveau, sera chargé d'adapter le nombre de semaines à la largeur de la fenêtre. Il fonctionnera grâce à la comparaison de deux variables WeeksToDisplay et WeeksDisplayed :
  • A la création de la fenêtre, la première variable sera calculée, la seconde valant zéro, et les cellules nécessaires au replissage des semaines à afficher seront créées.
  • Lors du redimensionnement de la fenêtre, la comparaison se fera à nouveau et des colonnes de cellules seront ajoutées ou détruites en fonction des besoin.
Le second module sera une adaptation de la routine actuelle qui "remplit" les cellules existantes avec les données temporelles ou de l'utilisateur (date, couleur etc).


La gestion des mois sera étudiée après l'implémentation des colonnes de semaines.
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Dim 22/07/2012 - Actualités

Message non lu par Xavier »

Création de cellules


Le premier module est capable de créer des cellules dynamiquement. Il s'avère qu'un écran de 1920 pixels de large permet d'afficher 45 semaines. Avoir une telle vision de son avenir est... déconcertant. :o

La seconde partie du module devait détruire les cellules devenues inutiles quand la largeur de la fenêtre est diminuée. Mais le système va être revu pour que ces cellules soit cachées plutôt que détruites, ce qui est plus rapide à faire, et évite de les recréer à nouveau si la fenêtre est re-élargie par la suite.

Il y aura donc trois variables en jeu : Weeks_Needed, Weeks_Created, Weeks_Visible, et le module tentera d'abord d'afficher le maximum de cellules cachées avant d'en créer de nouvelles.
Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Dim 22/07/2012 - Actualités

Message non lu par Xavier »

Calendar_AdjustWeeks


Le module marche parfaitement, le resizing est en fait aussi fluide en mode "création de nouvelles cellules" qu'en mode "affichage de cellules cachées".
WideCalendar.png
Reste à gérer les semaines (facile) avant de s'attaquer aux mois (ouch).
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Répondre