From 06323d6a6e0c737738d947b41a379e71c664a623 Mon Sep 17 00:00:00 2001 From: crschnick Date: Sat, 8 Jun 2024 10:13:25 +0000 Subject: [PATCH] Add sync button to welcome page --- .../xpipe/app/comp/store/StoreIntroComp.java | 61 +++++++++++++++++-- lang/app/strings/translations_da.properties | 3 + lang/app/strings/translations_de.properties | 3 + lang/app/strings/translations_en.properties | 3 + lang/app/strings/translations_es.properties | 3 + lang/app/strings/translations_fr.properties | 3 + lang/app/strings/translations_it.properties | 3 + lang/app/strings/translations_ja.properties | 3 + lang/app/strings/translations_nl.properties | 3 + lang/app/strings/translations_pt.properties | 3 + lang/app/strings/translations_ru.properties | 3 + lang/app/strings/translations_tr.properties | 3 + lang/app/strings/translations_zh.properties | 3 + 13 files changed, 92 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreIntroComp.java b/app/src/main/java/io/xpipe/app/comp/store/StoreIntroComp.java index 7b3602c2..a58ba24c 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreIntroComp.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreIntroComp.java @@ -1,13 +1,15 @@ package io.xpipe.app.comp.store; +import atlantafx.base.theme.Styles; import io.xpipe.app.core.AppFont; import io.xpipe.app.core.AppI18n; import io.xpipe.app.fxcomps.SimpleComp; import io.xpipe.app.fxcomps.impl.PrettySvgComp; +import io.xpipe.app.prefs.AppPrefs; import io.xpipe.app.storage.DataStorage; import io.xpipe.app.util.ScanAlert; - import javafx.beans.property.SimpleStringProperty; +import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.control.Button; import javafx.scene.control.Label; @@ -15,14 +17,11 @@ import javafx.scene.layout.HBox; import javafx.scene.layout.Region; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; - -import atlantafx.base.theme.Styles; import org.kordamp.ikonli.javafx.FontIcon; public class StoreIntroComp extends SimpleComp { - @Override - public Region createSimple() { + private Region createIntro() { var title = new Label(); title.textProperty().bind(AppI18n.observable("storeIntroTitle")); title.getStyleClass().add(Styles.TEXT_BOLD); @@ -56,8 +55,60 @@ public class StoreIntroComp extends SimpleComp { v.setSpacing(10); v.getStyleClass().add("intro"); + return v; + } + + + private Region createImportIntro() { + var title = new Label(); + title.textProperty().bind(AppI18n.observable("importConnectionsTitle")); + title.getStyleClass().add(Styles.TEXT_BOLD); + AppFont.setSize(title, 7); + + var importDesc = new Label(); + importDesc.textProperty().bind(AppI18n.observable("storeIntroImportDescription")); + importDesc.setWrapText(true); + importDesc.setMaxWidth(550); + + var importButton = new Button(null, new FontIcon("mdi2g-git")); + importButton.textProperty().bind(AppI18n.observable("importConnections")); + importButton.setOnAction(event -> AppPrefs.get().selectCategory("sync")); + var importPane = new StackPane(importButton); + importPane.setAlignment(Pos.CENTER); + + var img = new Region(); + img.setPrefHeight(150); + var text = new VBox(title, importDesc); + text.setSpacing(5); + text.setAlignment(Pos.CENTER_LEFT); + var hbox = new HBox(img, text); + hbox.setSpacing(35); + hbox.setAlignment(Pos.CENTER); + + var v = new VBox(hbox, importPane); + v.setMinWidth(Region.USE_PREF_SIZE); + v.setMaxWidth(Region.USE_PREF_SIZE); + v.setMinHeight(Region.USE_PREF_SIZE); + v.setMaxHeight(Region.USE_PREF_SIZE); + + v.setSpacing(10); + v.getStyleClass().add("intro"); + return v; + } + + @Override + public Region createSimple() { + var intro = createIntro(); + var introImport = createImportIntro(); + var v = new VBox(intro, introImport); + v.setSpacing(80); + v.setMinWidth(Region.USE_PREF_SIZE); + v.setMaxWidth(Region.USE_PREF_SIZE); + v.setMinHeight(Region.USE_PREF_SIZE); + v.setMaxHeight(Region.USE_PREF_SIZE); var sp = new StackPane(v); + sp.setPadding(new Insets(40, 0, 0, 0)); sp.setAlignment(Pos.CENTER); sp.setPickOnBounds(false); return sp; diff --git a/lang/app/strings/translations_da.properties b/lang/app/strings/translations_da.properties index 045c5148..95d7b210 100644 --- a/lang/app/strings/translations_da.properties +++ b/lang/app/strings/translations_da.properties @@ -470,3 +470,6 @@ apiKeyDescription=API-nøglen til godkendelse af XPipe-dæmonens API-anmodninger disableApiAuthentication=Deaktiver API-godkendelse disableApiAuthenticationDescription=Deaktiverer alle nødvendige godkendelsesmetoder, så enhver uautoriseret anmodning vil blive håndteret.\n\nAutentificering bør kun deaktiveres til udviklingsformål.\n\nKræver en genstart for at blive anvendt. api=API +storeIntroImportDescription=Bruger du allerede XPipe på et andet system? Synkroniser dine eksisterende forbindelser på tværs af flere systemer via et eksternt git-repository. Du kan også synkronisere senere når som helst, hvis det ikke er sat op endnu. +importConnections=Synkroniser forbindelser +importConnectionsTitle=Importer forbindelser diff --git a/lang/app/strings/translations_de.properties b/lang/app/strings/translations_de.properties index 00e3ffe7..878658da 100644 --- a/lang/app/strings/translations_de.properties +++ b/lang/app/strings/translations_de.properties @@ -464,3 +464,6 @@ apiKeyDescription=Der API-Schlüssel zur Authentifizierung von XPipe Daemon API- disableApiAuthentication=API-Authentifizierung deaktivieren disableApiAuthenticationDescription=Deaktiviert alle erforderlichen Authentifizierungsmethoden, so dass jede nicht authentifizierte Anfrage bearbeitet wird.\n\nDie Authentifizierung sollte nur zu Entwicklungszwecken deaktiviert werden.\n\nErfordert einen Neustart zur Anwendung. api=API +storeIntroImportDescription=Benutzt du XPipe bereits auf einem anderen System? Synchronisiere deine bestehenden Verbindungen über mehrere Systeme hinweg über ein Remote-Git-Repository. Du kannst auch später jederzeit synchronisieren, wenn es noch nicht eingerichtet ist. +importConnections=Synchronisierte Verbindungen +importConnectionsTitle=Verbindungen importieren diff --git a/lang/app/strings/translations_en.properties b/lang/app/strings/translations_en.properties index d7d0df8b..f5aaca1e 100644 --- a/lang/app/strings/translations_en.properties +++ b/lang/app/strings/translations_en.properties @@ -470,3 +470,6 @@ apiKeyDescription=The API key to authenticate XPipe daemon API requests. For mor disableApiAuthentication=Disable API authentication disableApiAuthenticationDescription=Disables all required authentication methods so that any unauthenticated request will be handled.\n\nAuthentication should only be disabled for development purposes.\n\nRequires a restart to apply. api=API +storeIntroImportDescription=Already using XPipe on another system? Synchronize your existing connections across multiple systems through a remote git repository. You can also sync later at any time if it is not set up yet. +importConnections=Sync connections +importConnectionsTitle=Import Connections diff --git a/lang/app/strings/translations_es.properties b/lang/app/strings/translations_es.properties index 685edbad..3228c8a9 100644 --- a/lang/app/strings/translations_es.properties +++ b/lang/app/strings/translations_es.properties @@ -451,3 +451,6 @@ apiKeyDescription=La clave API para autenticar las peticiones API del demonio XP disableApiAuthentication=Desactivar la autenticación de la API disableApiAuthenticationDescription=Desactiva todos los métodos de autenticación requeridos para que se gestione cualquier solicitud no autenticada.\n\nLa autenticación sólo debe desactivarse con fines de desarrollo.\n\nRequiere un reinicio para aplicarse. api=API +storeIntroImportDescription=¿Ya utilizas XPipe en otro sistema? Sincroniza tus conexiones existentes en varios sistemas a través de un repositorio git remoto. También puedes sincronizar más tarde en cualquier momento si aún no está configurado. +importConnections=Sincronizar conexiones +importConnectionsTitle=Importar conexiones diff --git a/lang/app/strings/translations_fr.properties b/lang/app/strings/translations_fr.properties index 7f2ea61c..5059c846 100644 --- a/lang/app/strings/translations_fr.properties +++ b/lang/app/strings/translations_fr.properties @@ -451,3 +451,6 @@ apiKeyDescription=La clé API pour authentifier les demandes API du démon XPipe disableApiAuthentication=Désactiver l'authentification de l'API disableApiAuthenticationDescription=Désactive toutes les méthodes d'authentification requises, de sorte que toute demande non authentifiée sera traitée.\n\nL'authentification ne doit être désactivée qu'à des fins de développement.\n\nNécessite un redémarrage pour être appliqué. api=API +storeIntroImportDescription=Tu utilises déjà XPipe sur un autre système ? Synchronise tes connexions existantes sur plusieurs systèmes grâce à un dépôt git distant. Tu peux aussi synchroniser plus tard à tout moment si ce n'est pas encore configuré. +importConnections=Synchronisation des connexions +importConnectionsTitle=Importer des connexions diff --git a/lang/app/strings/translations_it.properties b/lang/app/strings/translations_it.properties index 15ded5d3..6344b77d 100644 --- a/lang/app/strings/translations_it.properties +++ b/lang/app/strings/translations_it.properties @@ -451,3 +451,6 @@ apiKeyDescription=La chiave API per autenticare le richieste API del demone XPip disableApiAuthentication=Disabilita l'autenticazione API disableApiAuthenticationDescription=Disabilita tutti i metodi di autenticazione richiesti in modo che qualsiasi richiesta non autenticata venga gestita.\n\nL'autenticazione dovrebbe essere disabilitata solo per scopi di sviluppo.\n\nRichiede un riavvio per essere applicata. api=API +storeIntroImportDescription=Stai già usando XPipe su un altro sistema? Sincronizza le connessioni esistenti su più sistemi attraverso un repository git remoto. Puoi anche sincronizzare in seguito, in qualsiasi momento, se non è ancora stato configurato. +importConnections=Connessioni di sincronizzazione +importConnectionsTitle=Importazione di connessioni diff --git a/lang/app/strings/translations_ja.properties b/lang/app/strings/translations_ja.properties index a31c13e1..a3c33cc6 100644 --- a/lang/app/strings/translations_ja.properties +++ b/lang/app/strings/translations_ja.properties @@ -451,3 +451,6 @@ apiKeyDescription=XPipeデーモンAPIリクエストを認証するためのAPI disableApiAuthentication=API認証を無効にする disableApiAuthenticationDescription=認証されていないリクエストが処理されるように、必要な認証方法をすべて無効にする。\n\n認証は開発目的でのみ無効にすべきである。\n\n適用するには再起動が必要である。 api=API +storeIntroImportDescription=すでに他のシステムでXPipeを使っている?リモートgitリポジトリを通して、複数のシステム間で既存の接続を同期する。まだ設定されていない場合は、後からいつでも同期することもできる。 +importConnections=シンク接続 +importConnectionsTitle=コネクションのインポート diff --git a/lang/app/strings/translations_nl.properties b/lang/app/strings/translations_nl.properties index 484518a3..f5fc6bf9 100644 --- a/lang/app/strings/translations_nl.properties +++ b/lang/app/strings/translations_nl.properties @@ -451,3 +451,6 @@ apiKeyDescription=De API sleutel om XPipe daemon API verzoeken te authenticeren. disableApiAuthentication=API-authenticatie uitschakelen disableApiAuthenticationDescription=Schakelt alle vereiste authenticatiemethoden uit, zodat elk niet-geauthenticeerd verzoek wordt afgehandeld.\n\nAuthenticatie zou alleen uitgeschakeld moeten worden voor ontwikkelingsdoeleinden.\n\nVereist een herstart om toe te passen. api=API +storeIntroImportDescription=Gebruik je XPipe al op een ander systeem? Synchroniseer je bestaande verbindingen over meerdere systemen via een remote git repository. Je kunt ook later synchroniseren op elk gewenst moment als het nog niet is ingesteld. +importConnections=Synchronisatieverbindingen +importConnectionsTitle=Verbindingen importeren diff --git a/lang/app/strings/translations_pt.properties b/lang/app/strings/translations_pt.properties index 83a8e08e..1738708d 100644 --- a/lang/app/strings/translations_pt.properties +++ b/lang/app/strings/translations_pt.properties @@ -451,3 +451,6 @@ apiKeyDescription=A chave da API para autenticar os pedidos de API do daemon XPi disableApiAuthentication=Desativar a autenticação da API disableApiAuthenticationDescription=Desactiva todos os métodos de autenticação necessários para que qualquer pedido não autenticado seja tratado.\n\nA autenticação só deve ser desactivada para fins de desenvolvimento.\n\nRequer um reinício para ser aplicado. api=API +storeIntroImportDescription=Já estás a utilizar o XPipe noutro sistema? Sincroniza as tuas ligações existentes em vários sistemas através de um repositório git remoto. Também podes sincronizar mais tarde, a qualquer momento, se ainda não estiver configurado. +importConnections=Sincroniza ligações +importConnectionsTitle=Importar ligações diff --git a/lang/app/strings/translations_ru.properties b/lang/app/strings/translations_ru.properties index 00ae1233..9ff9b271 100644 --- a/lang/app/strings/translations_ru.properties +++ b/lang/app/strings/translations_ru.properties @@ -451,3 +451,6 @@ apiKeyDescription=API-ключ для аутентификации API-запр disableApiAuthentication=Отключить аутентификацию API disableApiAuthenticationDescription=Отключает все необходимые методы аутентификации, так что любой неаутентифицированный запрос будет обработан.\n\nАутентификацию следует отключать только в целях разработки.\n\nТребуется перезагрузка для применения. api=API +storeIntroImportDescription=Уже используешь XPipe на другой системе? Синхронизируй существующие соединения на нескольких системах через удаленный git-репозиторий. Ты также можешь синхронизировать позже в любой момент, если он еще не настроен. +importConnections=Синхронизация соединений +importConnectionsTitle=Импортные соединения diff --git a/lang/app/strings/translations_tr.properties b/lang/app/strings/translations_tr.properties index 6dbd4dd6..50993471 100644 --- a/lang/app/strings/translations_tr.properties +++ b/lang/app/strings/translations_tr.properties @@ -452,3 +452,6 @@ apiKeyDescription=XPipe daemon API isteklerinin kimliğini doğrulamak için API disableApiAuthentication=API kimlik doğrulamasını devre dışı bırakma disableApiAuthenticationDescription=Gerekli tüm kimlik doğrulama yöntemlerini devre dışı bırakır, böylece kimliği doğrulanmamış herhangi bir istek işlenir.\n\nKimlik doğrulama yalnızca geliştirme amacıyla devre dışı bırakılmalıdır.\n\nUygulamak için yeniden başlatma gerekir. api=API +storeIntroImportDescription=XPipe'ı zaten başka bir sistemde mi kullanıyorsunuz? Mevcut bağlantılarınızı uzak bir git deposu aracılığıyla birden fazla sistem arasında senkronize edin. Henüz kurulmamışsa daha sonra istediğiniz zaman senkronize edebilirsiniz. +importConnections=Senkronizasyon bağlantıları +importConnectionsTitle=Bağlantıları İçe Aktar diff --git a/lang/app/strings/translations_zh.properties b/lang/app/strings/translations_zh.properties index efbe2039..6594f4b7 100644 --- a/lang/app/strings/translations_zh.properties +++ b/lang/app/strings/translations_zh.properties @@ -451,3 +451,6 @@ apiKeyDescription=用于验证 XPipe 守护进程 API 请求的 API 密钥。有 disableApiAuthentication=禁用 API 身份验证 disableApiAuthenticationDescription=禁用所有必要的身份验证方法,以便处理任何未经身份验证的请求。\n\n只有出于开发目的才可禁用身份验证。\n\n需要重新启动才能应用。 api=应用程序接口 +storeIntroImportDescription=已经在其他系统上使用 XPipe?通过远程 git 仓库在多个系统间同步您的现有连接。如果尚未设置,您也可以稍后随时同步。 +importConnections=同步连接 +importConnectionsTitle=导入连接