Dégradation harmonieuse d'interfaces utilisateur - UsiXML
Dégradation harmonieuse d'interfaces utilisateur - UsiXML
Dégradation harmonieuse d'interfaces utilisateur - UsiXML
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Il existe 16 différentes vues possibles pour afficher l’heure, du simple écran type HH:MM à<br />
l’écran complexe composé d’une horloge analogique, d’une horloge digitale et d’un<br />
calendrier. Celles-ci existent simultanément à l’intérieur de l’application, et il n’y a donc<br />
aucune différence entre l’écran qui est visible pour l’<strong>utilisateur</strong> et les autres écrans possibles.<br />
Chacune des vues (views) est caractérisée par trois points essentiels :<br />
- le modèle de la présentation (la structure abstraite est définie via QTk)<br />
- la manière de mettre à jour l’heure sur les écrans (chacun d’entre eux la définit via une<br />
procédure à un argument prenant le temps comme paramètre)<br />
- la manière de choisir l’écran à afficher (chacune des 16 présentations est également<br />
définie avec leur taille (hauteur#largeur) respective en pixels. Ainsi, cette information<br />
permet de choisir les candidats potentiels pour affichage)<br />
La règle de sélection utilise alors l’information sur la taille pour déterminer le meilleur<br />
candidat à afficher à l’écran. De manière plus formelle, si nous posons wh et ww, la hauteur et<br />
la largeur de la fenêtre courante (en pixels) et mhi et mwi , la hauteur et la largeur minimale de<br />
l’écran i (en pixels également), l’écran choisi sera alors celui :<br />
- qui est affichable pour mhi > wh et mwi > ww<br />
- qui minimise (wh - mhi)² + (ww - mwi)² (si on trouve plusieurs candidats possibles, on<br />
en choisira un au hasard)<br />
Remarquons que chaque écran définit en réalité une taille minimale mais pas maximale :<br />
chacune des vues peut être élargie (le replacement des objets s’effectuera de manière<br />
automatisée) jusqu’à arriver à une taille caractérisant une autre vue.<br />
Le déclenchement de la procédure de sélection de l’écran se réalise de manière assez simple.<br />
En effet, QTk fournit un ensemble d’événements que nous pouvons affecter à la plupart des<br />
widgets. Parmi ceux-ci se trouve l’événement Configure qui se lance à chaque fois qu’une<br />
fenêtre est redimensionnée. Aussi, nous attribuons à cet événement la responsabilité de lancer<br />
la procédure Place, qui calculera la prochaine fenêtre à afficher (règle de sélection) et<br />
effectuera la mise à jour (réaction).<br />
Voici ces éléments isolés dans le code de la procédure Place :<br />
Règle de<br />
Sélection<br />
Réaction<br />
proc{Place}<br />
WW={QTk.wInfo width(P)}<br />
WH={QTk.wInfo height(P)}<br />
fun{Select Views Max#CH}<br />
case Views of W#H#Handle|R then This=(W-WW)*(W-WW)+(H-WH)*(H-WH) in<br />
if W