Új appbar, NtripSettingsSheet
This commit is contained in:
@@ -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,
|
||||
),
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user