Új appbar, NtripSettingsSheet

This commit is contained in:
2026-05-27 15:04:46 +02:00
parent ce8b539be3
commit 3d4c937b71
13 changed files with 789 additions and 67 deletions
+92 -2
View File
@@ -19,8 +19,8 @@ import 'gnss_device_picker_dialog.dart';
/// - Kék: DGPS (quality 2)
/// - Világoszöld: RTK Float (quality 5)
/// - Zöld: RTK Fix (quality 4) ← ideális állapot
class GnssStatusChip extends StatelessWidget {
const GnssStatusChip({super.key});
class GnssIconStatusChip extends StatelessWidget {
const GnssIconStatusChip({super.key});
@override
Widget build(BuildContext context) {
@@ -84,6 +84,61 @@ class GnssStatusChip extends StatelessWidget {
}
}
class GnssTextStatusChip extends StatelessWidget {
const GnssTextStatusChip({super.key});
@override
Widget build(BuildContext context) {
return Obx(() {
final connState = GnssService.to.connectionState.value;
final quality = GnssService.to.gpsQuality.value;
final isConn = connState == GnssConnectionState.connected;
final isConnecting = connState == GnssConnectionState.connecting;
final color = _chipColor(isConn, quality);
return isConnecting
? Text('')
: Text(_chipLabel(connState, quality, ''),
style: TextStyle(
fontSize: 12, fontWeight: FontWeight.w600, color: color));
});
}
Color _chipColor(bool connected, int quality) {
if (!connected) return Colors.grey;
return switch (quality) {
4 => Colors.greenAccent,
5 => Colors.lightGreen,
2 => Colors.blue,
1 => Colors.orange,
_ => Colors.orange.shade300,
};
}
IconData _chipIcon(bool connected, int quality) {
if (!connected) return Icons.gps_off;
if (quality == 0) return Icons.gps_not_fixed;
return Icons.gps_fixed;
}
String _chipLabel(
GnssConnectionState state, int quality, String? deviceName) {
return switch (state) {
GnssConnectionState.connecting => 'Kapcsolódás...',
GnssConnectionState.disconnected =>
deviceName != null ? '-----' : 'N-----z',
GnssConnectionState.error => 'Hiba',
GnssConnectionState.connected => switch (quality) {
4 => 'RTK Fix',
5 => 'RTK Float',
2 => 'DGPS',
1 => 'GPS',
_ => 'Fix nélkül',
},
};
}
}
/// NTRIP kapcsolat chip az AppBar-ban.
///
/// Tapintásra az NTRIP beállítások oldalra navigál.
@@ -143,3 +198,38 @@ class NtripStatusChip extends StatelessWidget {
});
}
}
class NtripIconStatusChip extends StatelessWidget {
/// NTRIP csatlakozva van-e — a controllerből kapja.
final RxBool isConnected;
/// Csatlakozás / leválasztás callback.
final VoidCallback? onToggle;
/// NTRIP beállítások megnyitása.
final VoidCallback? onSettings;
const NtripIconStatusChip({
super.key,
required this.isConnected,
this.onToggle,
this.onSettings,
});
@override
Widget build(BuildContext context) {
return Obx(() {
final connected = isConnected.value;
final color = connected ? Colors.greenAccent : Colors.grey;
return GestureDetector(
onTap: onToggle,
onLongPress: onSettings,
child: Icon(
Icons.cell_tower,
color: color,
),
);
});
}
}