Move settings around part 4

This commit is contained in:
stopflock
2025-09-30 00:59:27 -05:00
parent 3a985d2f8f
commit d397610121
24 changed files with 95 additions and 63 deletions
+1 -1
View File
@@ -36,7 +36,7 @@ const double kAddPinYOffset = 0.0;
// Client name and version for OSM uploads ("created_by" tag)
const String kClientName = 'DeFlock';
const String kClientVersion = '0.9.13';
const String kClientVersion = '0.9.14';
// Development/testing features - set to false for production builds
const bool kEnableDevelopmentModes = false; // Set to false to hide sandbox/simulate modes and force production mode
+10 -2
View File
@@ -29,14 +29,21 @@
"systemDefault": "Systemstandard",
"aboutInfo": "Über / Informationen",
"aboutThisApp": "Über Diese App",
"maxNodes": "Max. geladene/angezeigte Knoten",
"maxNodes": "Max. angezeigte Knoten",
"maxNodesSubtitle": "Obergrenze für die Anzahl der Knoten auf der Karte festlegen (Standard: 250).",
"maxNodesWarning": "Sie möchten das wahrscheinlich nicht tun, es sei denn, Sie sind absolut sicher, dass Sie einen guten Grund dafür haben.",
"offlineMode": "Offline-Modus",
"offlineModeSubtitle": "Alle Netzwerkanfragen außer für lokale/Offline-Bereiche deaktivieren.",
"offlineModeWarningTitle": "Aktive Downloads",
"offlineModeWarningMessage": "Die Aktivierung des Offline-Modus bricht alle aktiven Bereichsdownloads ab. Möchten Sie fortfahren?",
"enableOfflineMode": "Offline-Modus Aktivieren"
"enableOfflineMode": "Offline-Modus Aktivieren",
"profiles": "Profile",
"profilesSubtitle": "Knoten- und Betreiberprofile verwalten",
"offlineSettings": "Offline-Einstellungen",
"offlineSettingsSubtitle": "Offline-Modus und heruntergeladene Bereiche verwalten",
"advancedSettings": "Erweiterte Einstellungen",
"advancedSettingsSubtitle": "Leistungs-, Warnungs- und Kachelanbieter-Einstellungen",
"proximityAlerts": "Näherungswarnungen"
},
"node": {
"title": "Knoten #{}",
@@ -216,6 +223,7 @@
"operatorProfileDeleted": "Betreiber-Profil gelöscht"
},
"offlineAreas": {
"title": "Offline-Bereiche",
"noAreasTitle": "Keine Offline-Bereiche",
"noAreasSubtitle": "Laden Sie einen Kartenbereich für die Offline-Nutzung herunter.",
"provider": "Anbieter",
+1 -1
View File
@@ -29,7 +29,7 @@
"systemDefault": "System Default",
"aboutInfo": "About / Info",
"aboutThisApp": "About This App",
"maxNodes": "Max nodes fetched/drawn",
"maxNodes": "Max nodes drawn",
"maxNodesSubtitle": "Set an upper limit for the number of nodes on the map (default: 250).",
"maxNodesWarning": "You probably don't want to do that unless you are absolutely sure you have a good reason for it.",
"offlineMode": "Offline Mode",
+1 -1
View File
@@ -29,7 +29,7 @@
"systemDefault": "Sistema por Defecto",
"aboutInfo": "Acerca de / Información",
"aboutThisApp": "Acerca de Esta App",
"maxNodes": "Máx. nodos obtenidos/dibujados",
"maxNodes": "Máx. nodos dibujados",
"maxNodesSubtitle": "Establecer un límite superior para el número de nodos en el mapa (predeterminado: 250).",
"maxNodesWarning": "Probablemente no quieras hacer eso a menos que estés absolutamente seguro de que tienes una buena razón para ello.",
"offlineMode": "Modo Sin Conexión",
+1 -1
View File
@@ -29,7 +29,7 @@
"systemDefault": "Par Défaut du Système",
"aboutInfo": "À Propos / Informations",
"aboutThisApp": "À Propos de Cette App",
"maxNodes": "Max. nœuds récupérés/dessinés",
"maxNodes": "Max. nœuds dessinés",
"maxNodesSubtitle": "Définir une limite supérieure pour le nombre de nœuds sur la carte (par défaut: 250).",
"maxNodesWarning": "Vous ne voulez probablement pas faire cela à moins d'être absolument sûr d'avoir une bonne raison de le faire.",
"offlineMode": "Mode Hors Ligne",
+10 -2
View File
@@ -29,14 +29,21 @@
"systemDefault": "Predefinito del Sistema",
"aboutInfo": "Informazioni",
"aboutThisApp": "Informazioni su questa App",
"maxNodes": "Max nodi recuperati/disegnati",
"maxNodes": "Max nodi disegnati",
"maxNodesSubtitle": "Imposta un limite superiore per il numero di nodi sulla mappa (predefinito: 250).",
"maxNodesWarning": "Probabilmente non vuoi farlo a meno che non sei assolutamente sicuro di avere una buona ragione per farlo.",
"offlineMode": "Modalità Offline",
"offlineModeSubtitle": "Disabilita tutte le richieste di rete tranne per aree locali/offline.",
"offlineModeWarningTitle": "Download Attivi",
"offlineModeWarningMessage": "L'attivazione della modalità offline cancellerà qualsiasi download di area attivo. Vuoi continuare?",
"enableOfflineMode": "Attiva Modalità Offline"
"enableOfflineMode": "Attiva Modalità Offline",
"profiles": "Profili",
"profilesSubtitle": "Gestisci profili di nodi e operatori",
"offlineSettings": "Impostazioni Offline",
"offlineSettingsSubtitle": "Gestisci modalità offline e aree scaricate",
"advancedSettings": "Impostazioni Avanzate",
"advancedSettingsSubtitle": "Impostazioni di prestazioni, avvisi e fornitori di tessere",
"proximityAlerts": "Avvisi di Prossimità"
},
"node": {
"title": "Nodo #{}",
@@ -216,6 +223,7 @@
"operatorProfileDeleted": "Profilo operatore eliminato"
},
"offlineAreas": {
"title": "Aree Offline",
"noAreasTitle": "Nessuna area offline",
"noAreasSubtitle": "Scarica un'area mappa per l'uso offline.",
"provider": "Fornitore",
+10 -2
View File
@@ -29,14 +29,21 @@
"systemDefault": "Padrão do Sistema",
"aboutInfo": "Sobre / Informações",
"aboutThisApp": "Sobre este App",
"maxNodes": "Máx. de nós obtidos/desenhados",
"maxNodes": "Máx. de nós desenhados",
"maxNodesSubtitle": "Definir um limite superior para o número de nós no mapa (padrão: 250).",
"maxNodesWarning": "Você provavelmente não quer fazer isso a menos que tenha certeza absoluta de que tem uma boa razão para isso.",
"offlineMode": "Modo Offline",
"offlineModeSubtitle": "Desabilitar todas as requisições de rede exceto para áreas locais/offline.",
"offlineModeWarningTitle": "Downloads Ativos",
"offlineModeWarningMessage": "Ativar o modo offline cancelará qualquer download de área ativo. Deseja continuar?",
"enableOfflineMode": "Ativar Modo Offline"
"enableOfflineMode": "Ativar Modo Offline",
"profiles": "Perfis",
"profilesSubtitle": "Gerenciar perfis de nós e operadores",
"offlineSettings": "Configurações Offline",
"offlineSettingsSubtitle": "Gerenciar modo offline e áreas baixadas",
"advancedSettings": "Configurações Avançadas",
"advancedSettingsSubtitle": "Configurações de desempenho, alertas e provedores de mapas",
"proximityAlerts": "Alertas de Proximidade"
},
"node": {
"title": "Nó #{}",
@@ -216,6 +223,7 @@
"operatorProfileDeleted": "Perfil de operador excluído"
},
"offlineAreas": {
"title": "Áreas Offline",
"noAreasTitle": "Nenhuma área offline",
"noAreasSubtitle": "Baixe uma área do mapa para uso offline.",
"provider": "Provedor",
+10 -2
View File
@@ -29,14 +29,21 @@
"systemDefault": "系统默认",
"aboutInfo": "关于 / 信息",
"aboutThisApp": "关于此应用",
"maxNodes": "最大节点获取/绘制数",
"maxNodes": "最大节点绘制数",
"maxNodesSubtitle": "设置地图上节点数量的上限(默认:250)。",
"maxNodesWarning": "除非您确定有充分的理由,否则您可能不想这样做。",
"offlineMode": "离线模式",
"offlineModeSubtitle": "禁用除本地/离线区域外的所有网络请求。",
"offlineModeWarningTitle": "活动下载",
"offlineModeWarningMessage": "启用离线模式将取消任何活动的区域下载。您要继续吗?",
"enableOfflineMode": "启用离线模式"
"enableOfflineMode": "启用离线模式",
"profiles": "配置文件",
"profilesSubtitle": "管理节点和操作员配置文件",
"offlineSettings": "离线设置",
"offlineSettingsSubtitle": "管理离线模式和已下载区域",
"advancedSettings": "高级设置",
"advancedSettingsSubtitle": "性能、警报和地图提供商设置",
"proximityAlerts": "邻近警报"
},
"node": {
"title": "节点 #{}",
@@ -216,6 +223,7 @@
"operatorProfileDeleted": "运营商配置文件已删除"
},
"offlineAreas": {
"title": "离线区域",
"noAreasTitle": "无离线区域",
"noAreasSubtitle": "下载地图区域以供离线使用。",
"provider": "提供商",
+3 -3
View File
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'settings_screen_sections/max_nodes_section.dart';
import 'settings_screen_sections/proximity_alerts_section.dart';
import 'settings_screen_sections/tile_provider_section.dart';
import 'settings/sections/max_nodes_section.dart';
import 'settings/sections/proximity_alerts_section.dart';
import 'settings/sections/tile_provider_section.dart';
import '../services/localization_service.dart';
class AdvancedSettingsScreen extends StatelessWidget {
+2 -2
View File
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'settings_screen_sections/offline_mode_section.dart';
import 'settings_screen_sections/offline_areas_section.dart';
import 'settings/sections/offline_mode_section.dart';
import 'settings/sections/offline_areas_section.dart';
import '../services/localization_service.dart';
class OfflineSettingsScreen extends StatelessWidget {
+4 -4
View File
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'settings_screen_sections/profile_list_section.dart';
import 'settings_screen_sections/operator_profile_list_section.dart';
import 'settings/sections/node_profiles_section.dart';
import 'settings/sections/operator_profiles_section.dart';
import '../services/localization_service.dart';
class ProfilesSettingsScreen extends StatelessWidget {
@@ -19,9 +19,9 @@ class ProfilesSettingsScreen extends StatelessWidget {
body: ListView(
padding: const EdgeInsets.all(16),
children: const [
ProfileListSection(),
NodeProfilesSection(),
Divider(),
OperatorProfileListSection(),
OperatorProfilesSection(),
],
),
),
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import '../../services/localization_service.dart';
import '../../../services/localization_service.dart';
class AboutSection extends StatelessWidget {
const AboutSection({super.key});
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../app_state.dart';
import '../../services/localization_service.dart';
import '../../../app_state.dart';
import '../../../services/localization_service.dart';
class AuthSection extends StatelessWidget {
const AuthSection({super.key});
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../../services/localization_service.dart';
import '../../../services/localization_service.dart';
class LanguageSection extends StatefulWidget {
const LanguageSection({super.key});
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../app_state.dart';
import '../../services/localization_service.dart';
import '../../../app_state.dart';
import '../../../services/localization_service.dart';
class MaxNodesSection extends StatefulWidget {
const MaxNodesSection({super.key});
@@ -1,13 +1,13 @@
import 'package:flutter/material.dart';
import 'package:uuid/uuid.dart';
import 'package:provider/provider.dart';
import '../../app_state.dart';
import '../../models/node_profile.dart';
import '../../services/localization_service.dart';
import '../profile_editor.dart';
import '../../../app_state.dart';
import '../../../models/node_profile.dart';
import '../../../services/localization_service.dart';
import '../../profile_editor.dart';
class ProfileListSection extends StatelessWidget {
const ProfileListSection({super.key});
class NodeProfilesSection extends StatelessWidget {
const NodeProfilesSection({super.key});
@override
Widget build(BuildContext context) {
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import '../../services/offline_area_service.dart';
import '../../services/offline_areas/offline_area_models.dart';
import '../../services/localization_service.dart';
import '../../../services/offline_area_service.dart';
import '../../../services/offline_areas/offline_area_models.dart';
import '../../../services/localization_service.dart';
class OfflineAreasSection extends StatefulWidget {
const OfflineAreasSection({super.key});
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../app_state.dart';
import '../../services/offline_area_service.dart';
import '../../services/localization_service.dart';
import '../../../app_state.dart';
import '../../../services/offline_area_service.dart';
import '../../../services/localization_service.dart';
class OfflineModeSection extends StatelessWidget {
const OfflineModeSection({super.key});
@@ -1,13 +1,13 @@
import 'package:flutter/material.dart';
import 'package:uuid/uuid.dart';
import 'package:provider/provider.dart';
import '../../app_state.dart';
import '../../models/operator_profile.dart';
import '../../services/localization_service.dart';
import '../operator_profile_editor.dart';
import '../../../app_state.dart';
import '../../../models/operator_profile.dart';
import '../../../services/localization_service.dart';
import '../../operator_profile_editor.dart';
class OperatorProfileListSection extends StatelessWidget {
const OperatorProfileListSection({super.key});
class OperatorProfilesSection extends StatelessWidget {
const OperatorProfilesSection({super.key});
@override
Widget build(BuildContext context) {
@@ -2,10 +2,10 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';
import '../../app_state.dart';
import '../../services/localization_service.dart';
import '../../services/proximity_alert_service.dart';
import '../../dev_config.dart';
import '../../../app_state.dart';
import '../../../services/localization_service.dart';
import '../../../services/proximity_alert_service.dart';
import '../../../dev_config.dart';
/// Settings section for proximity alerts configuration
/// Follows brutalist principles: simple, explicit UI that matches existing patterns
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../app_state.dart';
import '../../services/localization_service.dart';
import '../../state/settings_state.dart';
import '../../../app_state.dart';
import '../../../services/localization_service.dart';
import '../../../state/settings_state.dart';
class QueueSection extends StatelessWidget {
const QueueSection({super.key});
@@ -1,10 +1,10 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../app_state.dart';
import '../../models/tile_provider.dart';
import '../../services/localization_service.dart';
import '../tile_provider_editor_screen.dart';
import '../../../app_state.dart';
import '../../../models/tile_provider.dart';
import '../../../services/localization_service.dart';
import '../../tile_provider_editor_screen.dart';
class TileProviderSection extends StatelessWidget {
const TileProviderSection({super.key});
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../../app_state.dart';
import '../../services/localization_service.dart';
import '../../../app_state.dart';
import '../../../services/localization_service.dart';
class UploadModeSection extends StatelessWidget {
const UploadModeSection({super.key});
+5 -5
View File
@@ -1,9 +1,9 @@
import 'package:flutter/material.dart';
import 'settings_screen_sections/auth_section.dart';
import 'settings_screen_sections/upload_mode_section.dart';
import 'settings_screen_sections/queue_section.dart';
import 'settings_screen_sections/about_section.dart';
import 'settings_screen_sections/language_section.dart';
import 'settings/sections/auth_section.dart';
import 'settings/sections/upload_mode_section.dart';
import 'settings/sections/queue_section.dart';
import 'settings/sections/about_section.dart';
import 'settings/sections/language_section.dart';
import '../services/localization_service.dart';
import '../dev_config.dart';