diff --git a/mainApk.pas b/mainApk.pas index 3a4cc02..f437bab 100644 --- a/mainApk.pas +++ b/mainApk.pas @@ -29,6 +29,7 @@ uses FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Platform, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Memo, FMX.Memo.Types, FMX.ScrollBox, FMX.Layouts, FMX.Edit, FMX.ListBox, FMX.Objects, + FMX.WebBrowser, PMA.Vault; const @@ -100,7 +101,11 @@ type // --- ecran 1 : deverrouillage FLayUnlock: TLayout; FUrl, FToken, FPwd: TEdit; - FBtnOpen, FBtnSync, FBtnSettings, FBtnLog: TRectangle; + FBtnOpen, FBtnSync, FBtnSettings, FBtnLog, FBtnHtml: TRectangle; + /// Sondage HTML, cree au premier appui seulement : un moteur de rendu + /// entier ne se paie pas au lancement pour un essai. + FLayWeb: TLayout; + FWeb: TWebBrowser; FLaySettings: TLayout; FStatus: TLabel; FLog: TMemo; @@ -197,6 +202,8 @@ type procedure OnBackTap(Sender: TObject); procedure OnToggleSettings(Sender: TObject); procedure OnToggleLog(Sender: TObject); + procedure OnHtmlTest(Sender: TObject); + procedure OnHtmlClose(Sender: TObject); procedure OnClipTimer(Sender: TObject); procedure OnHardwareBack(Sender: TObject; var Key: Word; var KeyChar: WideChar; Shift: TShiftState); @@ -350,10 +357,15 @@ begin FLaySettings := TLayout.Create(Self); FLaySettings.Parent := FLayUnlock; FLaySettings.Align := TAlignLayout.Top; - FLaySettings.Height := 116; - FLaySettings.Visible := False; + FLaySettings.Height := 174; + // Les trois vont ensemble : ce sont les coordonnees du serveur, dont le mot + // de passe fait partie. Il occupait l'ecran d'accueil en permanence alors + // qu'on n'y touche qu'une fois. TopEdit empile du bas vers le haut, d'ou + // l'ordre inverse ici. + FPwd := TopEdit(FLaySettings, 'sync password', TEST_PWD, True); FToken := TopEdit(FLaySettings, 'bearer token', FIRSTRUN_TOKEN); FUrl := TopEdit(FLaySettings, 'endpoint URL', FIRSTRUN_URL); + FPwd.Margins.Rect := RectF(16, 8, 16, 0); FToken.Margins.Rect := RectF(16, 8, 16, 0); FUrl.Margins.Rect := RectF(16, 8, 16, 0); // Ce que l'appareil a retenu l'emporte sur les valeurs de premier lancement. @@ -362,6 +374,9 @@ begin FUrl.Text := LUrl; if LToken <> '' then FToken.Text := LToken; end; + // Replier des champs vides revient a cacher la seule chose a faire. + FLaySettings.Visible := (FUrl.Text.Trim = '') or (FToken.Text.Trim = '') + or (FPwd.Text = ''); // Deux commandes discretes cote a cote : elles ne servent qu'au reglage et // au diagnostic, et n'ont pas a peser autant que les actions principales. @@ -379,14 +394,18 @@ begin FBtnSettings := FlatButton(LRow, 'Server settings', OnToggleSettings); FBtnSettings.Align := TAlignLayout.Client; + // Sondage, pas une fonction : il repond a une seule question, celle de + // savoir si une page HTML peinte par le moteur du systeme rend mieux que + // ces controles-ci. A retirer des que la reponse est prise. + FBtnHtml := FlatButton(LRow, 'HTML', OnHtmlTest); + FBtnHtml.Align := TAlignLayout.Left; + FBtnHtml.Width := 90; + FBtnHtml.Margins.Right := 8; + FBtnSync := TopButton(FLayUnlock, 'Sync', DoSync); // Accentue : c'est l'action attendue quand aucun coffre n'est encore la. FBtnOpen := TopButton(FLayUnlock, 'Open vault', DoOpenLocal, 52, True); - // Pre-rempli depuis le fichier local, jamais depuis ce fichier-ci. - FPwd := TopEdit(FLayUnlock, 'sync password', TEST_PWD, True); - FPwd.Margins.Rect := RectF(16, 16, 16, 0); - FStatus := TLabel.Create(Self); FStatus.Parent := FLayUnlock; FStatus.Align := TAlignLayout.Top; @@ -892,6 +911,89 @@ begin FLog.Visible := not FLog.Visible; end; +/// Sondage HTML : la meme liste, les memes blocs, mais peints par le moteur du +/// systeme au lieu de FMX. Ce qu'il faut regarder : le rendu de l'arabe, la +/// fluidite du defilement, et si la page se fond dans le degrade ou flotte +/// dans un rectangle blanc. Contenu factice - rien du coffre ne passe ici. +procedure TForm8.OnHtmlTest(Sender: TObject); +const + PAGE = + // SANS LA DECLARATION DE JEU DE CARACTERES l'arabe sort en charabia : le + // moteur recoit de l'UTF-8 et le lit en latin-1 faute d'indication. + '' + + '' + + '