feat(apk): Settings -> Copy and search, deux cases pour le retour apres copie et le clavier sur la recherche

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-09-18 14:33:18 +01:00
parent 946880ecf4
commit f7ad65c02d
2 changed files with 82 additions and 3 deletions
+58 -3
View File
@@ -154,6 +154,12 @@ type
FPwdUserSet: Boolean;
// Synchro a reprendre une fois le nouveau mot de passe verifie.
FSyncAfterVerify: Boolean;
// Reglages d'usage (Settings -> Copy and search), vrais par defaut. Rien de
// secret : un petit fichier en clair dans le dossier prive de l'app.
FUiBackAfterCopy, FUiKbdOnSearch: Boolean;
procedure LoadUiPrefs;
procedure SaveUiPrefs;
procedure PushUiPrefs;
// La cle du verrouillage d'ecran est morte (schema retire ou reinitialise) :
// on ouvre la copie de secours, scellee sous le mot de passe.
FRecover: Boolean;
@@ -1681,6 +1687,45 @@ begin
end);
end;
function UiPrefsPath: string;
begin
Result := TPath.Combine(TPath.GetHomePath, 'ui-prefs.txt');
end;
procedure TForm8.LoadUiPrefs;
var
LText: string;
begin
FUiBackAfterCopy := True;
FUiKbdOnSearch := True;
try
if not TFile.Exists(UiPrefsPath) then Exit;
LText := TFile.ReadAllText(UiPrefsPath);
FUiBackAfterCopy := not LText.Contains('back=0');
FUiKbdOnSearch := not LText.Contains('kbd=0');
except
// Illisible : on garde les valeurs par defaut.
end;
end;
procedure TForm8.SaveUiPrefs;
begin
try
TFile.WriteAllText(UiPrefsPath,
'back=' + IfThen(FUiBackAfterCopy, '1', '0') + sLineBreak +
'kbd=' + IfThen(FUiKbdOnSearch, '1', '0'));
except
on E: Exception do Log('ui prefs not saved: ' + E.Message);
end;
end;
procedure TForm8.PushUiPrefs;
begin
WebCall(Format('PM.setUiPrefs(%s, %s)',
[LowerCase(BoolToStr(FUiBackAfterCopy, True)),
LowerCase(BoolToStr(FUiKbdOnSearch, True))]));
end;
procedure TForm8.PushConfig;
var
LUrl, LToken: string;
@@ -1689,6 +1734,8 @@ begin
FToken := FIRSTRUN_TOKEN;
FPwd := TEST_PWD;
FPwdShown := FPwd;
LoadUiPrefs;
PushUiPrefs;
// Ce que l'appareil a retenu l'emporte sur les valeurs de premier lancement.
if LoadDeviceSettings(LUrl, LToken) then
begin
@@ -1943,6 +1990,13 @@ begin
else if LAction = 'kbd' then
ShowSoftKeyboard
else if LAction = 'uipref' then
begin
FUiBackAfterCopy := Param('back') = '1';
FUiKbdOnSearch := Param('kbd') = '1';
SaveUiPrefs;
end
else if LAction = 'copy' then
begin
// LES SECRETS NE TRANSITENT PAS PAR LE PONT. La page envoie un rang,
@@ -2398,7 +2452,8 @@ begin
try
LSw := TStopwatch.StartNew;
AdoptVault(LPlain);
WebCall('PM.focusSearch()'); // on ouvre pour chercher : clavier pret
if FUiKbdOnSearch then
WebCall('PM.focusSearch()'); // on ouvre pour chercher : clavier pret
Log(' displayed in ' + LSw.ElapsedMilliseconds.ToString + ' ms');
// Afficher d'abord, synchroniser ensuite : le coffre est a l'ecran, le
// reseau se debrouille derriere. Sans mot de passe range, on ne peut
@@ -3023,7 +3078,7 @@ begin
// COPIER POUR COLLER AILLEURS : on rend la main a l'app d'ou l'on venait,
// il ne reste qu'a coller. Le retour dans Vault retrouve la liste telle
// quelle (delai de grace avant verrouillage).
MoveAppToBack;
if FUiBackAfterCopy then MoveAppToBack;
end;
procedure TForm8.OnClipTimer(Sender: TObject);
@@ -3100,7 +3155,7 @@ begin
FBackgroundAt := 0;
// RETOUR DANS VAULT = on vient chercher un mot de passe : la recherche
// est prete, texte precedent selectionne pour etre remplace.
if (FWebView = 'list') and (FPlain <> '') then
if FUiKbdOnSearch and (FWebView = 'list') and (FPlain <> '') then
WebCall('PM.focusSearch()');
end;
end;