Dot.Blog

C#, XAML, Xamarin, UWP/Android/iOS

Xamarin.Forms et le presse-papiers

Dernièrement je vous parlais de la fonction de partage que je disais aussi indispensable que le copier/coller… Et bien parlons-en justement !

Le plus grand progrès de l’informatique quotidienne

N’ayons pas peur des mots, le copier/coller ou couper/coller est l’invention du siècle précédent qui marquera l’informatique encore longtemps. Rien à voir avec la débauche d’effets spéciaux de la 3D en 120 images secondes en 8K réclamant des monstres de puissance et des monitors qui n’existent même pas encore, rien à voir avec les usines à gaz dangereuses que sont les Clouds et la dématérialisation totale des données personnelles qui fait perdre tout sens à ce dernier mot (d’où le danger évoqué). Non. Rien de compliqué.

Il s’agit juste de pouvoir placer dans une zone tampon un bout de texte (voire plus comme une image) et plus tard au sein de la même application ou d’une autre surtout de pouvoir récupérer cette information depuis le fameux tampon en mémoire.

Les mêmes symboles sont utilisés sur la plupart des OS, de CTRL-C, CTRL-V à “Pomme C” “Pomme V”, le presse-papier EST l’archétype du progrès, simple, mais changeant le monde. Gloire à son Inventeur ! Larry Tesler ancien chercheur de Xerox qui inventa cette fonction. Mort à 74 ans en début d’année 2020 je pense qu’il est temps de lui rendre l’hommage qu’il mérite.

Hélas il est comme la fonction Share trop souvent oublier dans les Apps (et je ne parle pas d'une gestion correcte du CTRL-Z autre invention géniale dont je parlerai peut-être un jour).

Ainsi je me trouve devant une fiche client, et la seule possibilité que j’ai c’est de copier chaque champ un par un car ça c’est l’OS qui l’offre. Quel crétin de développeur… il n’a pas prévu un bouton pour “copier” toute la fiche client en un seul clic. Je le hais profondément, je lui ferai même du mal physiquement s’il était devant moi…

Et pourtant ce crétin c’est nous tous car même moi j’oublie parfois d’implémenter ce genre de petites fonctions si simples mais qui changent la vie des utilisateurs.

Une fois la coulpe battue, prenons conscience tous ensemble que cela n’est pas digne d’une informatique moderne.

Heureusement les Xamarin.Essentials propose une API pour gérer le Clipboard, le presse-papiers.

Comme pour le Share mon but n’est pas ici de copier la doc, surtout que l’API est simple, mais bien de mette l’accent sur une fonction indispensable trop souvent absente. Pas le copier/coller de l’OS, il est par force présent, non je parle bien d’un Copier/Coller conjoncturel, intelligent sachant prendre les infos essentielles d’une fiche voir sachant parser dans l’autre sens (coller) pour recréer ou remplir une fiche.

Cet article n’est pas un article technique de développeur, c’est une supplique d’architecte qui pleure sur les UX ratées qu’il rencontre tous les jours…

J’espère que cela réveillera en vous l’envie de vous soucier de ces petites choses qui changent tout !

Dans les faits

Dans les faits et de base pas grand-chose de bien époustouflant grâce aux Xamarin.Essentials et sa classe Clipboard.

HasText permet de savoir s’il y a ou non du texte dans le presse-papiers ; SetTextAsync(string msg) permet de déposer du texte dans le presse-papiers de façon asynchrone et bien entendu GetTextAsync() permet de récupérer le contenu s’il y en a un.

Il est possible de s’abonner à l’événement ClipboardContentChanged pour être prévenu d’un changement de contenu.

Et puis c’est tout…

On peut donc partager du texte, voir une URI, mais de base pas d’image. On passera pour cela par la fonction Share dont j’ai parlé il y a deux semaines il me semble (Xamarin.Forms : Partager des informations).

Conclusion

Oh je le sais bien… Cet article n’a rien d’un papier de fond de 12 pages comme j’ai l’habitude d’en écrire… Certes il semble n’être qu’une modeste copie d’une documentation pour débutant agrémenté de digressions superfétatoires…

Ceux qui ne verront que ça n’auront rien compris au véritable message que j’ai essayé de délivrer, et c’est dommage.

Les autres savent déjà à quel point ce post est l’un des plus essentiels jamais postés sur Dot.Blog…

Stay Tuned !

blog comments powered by Disqus