24.06.2013 Views

Dégradation harmonieuse d'interfaces utilisateur - UsiXML

Dégradation harmonieuse d'interfaces utilisateur - UsiXML

Dégradation harmonieuse d'interfaces utilisateur - UsiXML

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!