Vue d’ensemble
L’alerte intégrée d’AIR sur Mac semble venir d’une autre décennie. KlugDialog affiche la vraie : de véritables feuilles d’alerte macOS attachées à la fenêtre de votre application, avec l’icône de l’app, la police système et les styles de boutons familiers.
Au-delà des simples alertes, il couvre ce dont les applications de bureau ont besoin chaque jour : des dialogues avec champs de texte (par exemple nom d’utilisateur et mot de passe, y compris en champs sécurisés), plusieurs boutons avec leurs propres styles et une feuille de progression (« Connexion… ») que votre code met à jour et ferme une fois le travail terminé.
Tout est asynchrone : show() retourne immédiatement, et votre callback reçoit le bouton choisi. KlugDialog fonctionne dans la version Mac de nos applications, notre preuve de concept.
Nouveau sur Android : les mêmes dialogues sous forme de boîtes de dialogue Android natives. Les champs de texte restent au-dessus du clavier sur tous les écrans, y compris en paysage sur tablette, où les boutons disparaissaient auparavant derrière lui ; les mots de passe, noms d’utilisateur et adresses e-mail ne sont jamais mis automatiquement en majuscules, et les champs e-mail affichent le clavier e-mail. La version Android empile aussi les longues listes de boutons, propose un simple indicateur de chargement (spinner), et fonctionne dans la version Android de nos applications.
Aussi sur iOS : depuis la version 1.2, la même API affiche des alertes iOS natives, des dialogues avec champs de texte et une boîte de progression : un seul chemin de code sert Android, iOS et macOS.
Fonctionnalités
- Autonome : une seule ANE, sans bibliothèque centrale ni ANE de dépendance à ajouter
- Feuilles d’alerte macOS natives avec jusqu’à trois boutons
- Styles informatif, avertissement et critique
- Dialogues avec un nombre quelconque de boutons et de champs de texte, y compris des champs sécurisés
- Feuille de progression pouvant être mise à jour et fermée depuis le code
- Dialogues pouvant être fermés depuis le code
- Callbacks avec le bouton choisi et les valeurs saisies
- Android : champs au-dessus du clavier, pas de mots de passe en majuscules automatiques, claviers e-mail / numérique, thème clair et sombre
Plateformes prises en charge
Sur les autres plateformes, isSupported renvoie false : votre application peut alors se rabattre sur ses dialogues habituels.
Prise en main
Ajoutez l’extension au descripteur de votre application :
<extensions>
<extensionID>com.klug.dialog.Dialog</extensionID>
</extensions>
Exemples de code
Cinq flux complets. Chaque appel retourne immédiatement ; le résultat arrive plus tard dans votre callback, de sorte que l’application ne se bloque jamais pendant l’affichage d’un dialogue. Documentation complète →
import com.klug.dialog.Dialog; var dialog:Dialog = Dialog.getInstance(); if ( dialog.isSupported ) { dialog.show( "Saved", "The recording is in your library." ); // one "OK" button } else { showAppAlert( "Saved" ); // your app's own fallback dialog, e.g. on Windows }
dialog.show( "Delete recording?", "This cannot be undone.", [ "Delete", "Keep" ], function( index:int ):void { // index = position in the buttons array; // -1 = closed without a button, e.g. the Android back key if ( index == 0 ) deleteRecording(); // your app }, Dialog.STYLE_WARNING ); // alert style of the macOS sheet
var buttons:Array = [ { label:"Cancel", style:4, tag:0 }, // style 4 = cancel, 3 = destructive { label:"Sign in", style:0, tag:1 } ]; var fields:Array = [ { placeholder:"E-mail", text:lastEmail, keyboardType:7 }, // 7 = e-mail keyboard { placeholder:"Password", secure:true } // never auto-capitalised ]; dialog.present( "Sign in", "Please enter your account.", true, buttons, fields, function( tag:int, values:Array, cancelled:Boolean = false ):void { if ( cancelled ) return; // closed without a button (tag -1) if ( tag == 1 ) signIn( values[0], values[1] ); // values in field order }, null, "dark" ); // theme on Android and iOS; macOS follows the system
// your own id: the same dialog is updated and closed with it dialog.progressShow( "connect", "Connecting", "Contacting the server…", false, function():void { trace( "progress dialog closed" ); } ); // fires once dialog.progressUpdate( "connect", "Signing in…" ); // when the work is done, or has failed dialog.progressDismiss( "connect" );
// pass your own id as the 7th parameter to close the dialog later dialog.present( "Waiting for the camera", "Tap Cancel to stop waiting.", false, [ { label:"Cancel", style:4, tag:0 } ], null, function( tag:int, values:Array ):void { stopWaiting(); }, // your app "waitCamera" ); // the camera has answered: close the dialog, no callback fires dialog.presentDismiss( "waitCamera" );
Aperçu de l’API
| Dialog.getInstance() | Renvoie l’instance unique. |
| isSupported | Vrai sur Android, iOS et macOS ; faux ailleurs, par exemple sur Windows. |
| show(title, message, buttons, callback, style) | Alerte avec jusqu’à trois boutons (« OK » par défaut) ; callback(index), -1 si fermée sans bouton. Renvoie false si non pris en charge. |
| present(title, message, cancelable, buttons, fields, callback, id, theme) | Dialogue avec un nombre quelconque de boutons et de champs de texte ; callback(tag, values, cancelled). Passez votre propre id pour le fermer plus tard ; thème "light" ou "dark" sur Android et iOS. |
| presentDismiss(id) | Ferme un dialogue present() depuis le code ; aucun callback n’est déclenché. |
| progressShow(id, title, message, cancelable, closeCallback, theme) | Boîte de progression avec indicateur de chargement ; closeCallback se déclenche une fois lorsqu’elle a disparu. |
| progressUpdate(id, message) / progressDismiss(id) | Modifie le texte de la boîte de progression / la ferme. |
| STYLE_INFO, STYLE_WARNING, STYLE_CRITICAL | Styles d’alerte pour show(), utilisés par la feuille d’alerte macOS. |
| Button {label, style, tag} | style : 0 par défaut, 1 positif, 2 négatif, 3 destructif, 4 annulation, 5 neutre. Android les utilise tous, iOS utilise 3 et 4, macOS affiche tous les boutons de la même façon. |
| Field {placeholder, secure, text, keyboardType, autocorrect, autocap} | keyboardType : 0 par défaut, 3 URL, 4 nombre, 5 téléphone, 7 e-mail, 8 décimal. autocap : 0 aucune (par défaut), 1 phrases, 2 mots, 3 tout. Les trois dernières valeurs s’appliquent sur Android et iOS. |
Acheter KlugDialog
Une licence annuelle pour une application AIR, avec toutes les mises à jour pendant 12 mois. Après le paiement, vous recevez l’extension, la bibliothèque ActionScript et la documentation par e-mail, généralement sous un jour ouvré. Licence et conditions
- Licence pour une application AIR
- Toutes les mises à jour pendant 12 mois
- Sans support
- Licence pour une application AIR
- Toutes les mises à jour pendant 12 mois
- Réponse par e-mail sous 7 jours
- Licence pour une application AIR
- Toutes les mises à jour pendant 12 mois
- Réponse par e-mail sous 48 heures
Prérequis
| SDK AIR | 51.x (HARMAN) |
| Android | Android 6 ou version ultérieure |
| iOS | iOS 13 ou version ultérieure |
| macOS | macOS 11 ou version ultérieure |