From d7bbbcae771b6cf559e336e70a7c1d8f2a8f52d3 Mon Sep 17 00:00:00 2001 From: "torok.istvan" Date: Wed, 8 Jul 2026 14:47:32 +0200 Subject: [PATCH] =?UTF-8?q?Kit=C5=B1z=C3=A9si=20panel=20sz=C3=B6vegmegjele?= =?UTF-8?q?n=C3=ADt=C3=A9si=20hib=C3=A1j=C3=A1nak=20jav=C3=ADt=C3=A1sa?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentations/widgets/stakeout_panel.dart | 83 ++++++++++++------- 1 file changed, 52 insertions(+), 31 deletions(-) diff --git a/lib/pages/map_survey/presentations/widgets/stakeout_panel.dart b/lib/pages/map_survey/presentations/widgets/stakeout_panel.dart index 2423aaf..2e8400e 100644 --- a/lib/pages/map_survey/presentations/widgets/stakeout_panel.dart +++ b/lib/pages/map_survey/presentations/widgets/stakeout_panel.dart @@ -84,18 +84,31 @@ class StakeoutPanel extends StatelessWidget { IconButton( icon: const Icon(Icons.skip_previous), visualDensity: VisualDensity.compact, + padding: EdgeInsets.zero, + constraints: + const BoxConstraints(minWidth: 36, minHeight: 36), onPressed: () => svc.advance(backwards: true), ), + // A cím rugalmas: szűk helyen ZSUGORODIK (FittedBox), + // sosem tördelődik karakterenként. Expanded( child: Column( children: [ - Text(t.displayId, + FittedBox( + fit: BoxFit.scaleDown, + child: Text( + t.displayId, + maxLines: 1, style: const TextStyle( - fontSize: 12, fontWeight: FontWeight.w700)), + fontSize: 17, fontWeight: FontWeight.w700), + ), + ), if (progress != null) Text( '${progress.staked}/${progress.total} kitűzve' - '${t.isOffset ? ' · ELTOLT PONT' : ''}', + '${t.isOffset ? ' · ELTOLT' : ''}', + maxLines: 1, + overflow: TextOverflow.ellipsis, style: TextStyle( fontSize: 11, color: Colors.grey.shade600), ), @@ -105,14 +118,19 @@ class StakeoutPanel extends StatelessWidget { IconButton( icon: const Icon(Icons.skip_next), visualDensity: VisualDensity.compact, + padding: EdgeInsets.zero, + constraints: + const BoxConstraints(minWidth: 36, minHeight: 36), onPressed: () => svc.advance(), ), + const TiltBubble(), PopupMenuButton( icon: Icon(switch (svc.orderMode.value) { StakeoutOrder.idAsc => Icons.trending_up, StakeoutOrder.idDesc => Icons.trending_down, StakeoutOrder.nearest => Icons.near_me, }), + padding: EdgeInsets.zero, tooltip: 'Sorrend', onSelected: (m) => svc.orderMode.value = m, itemBuilder: (_) => const [ @@ -127,37 +145,40 @@ class StakeoutPanel extends StatelessWidget { child: Text('Legközelebbi')), ], ), - Obx(() => IconButton( - icon: Icon(svc.hapticsEnabled.value - ? Icons.vibration - : Icons.phonelink_erase), - visualDensity: VisualDensity.compact, - tooltip: 'Haptikus visszajelzés', - onPressed: () => svc.hapticsEnabled.toggle(), - )), - const TiltBubble(), - const SizedBox(width: 2), - IconButton( - icon: const Icon(Icons.list_alt), - visualDensity: VisualDensity.compact, - tooltip: 'Pontlista / export', - onPressed: () => StakeoutListSheet.show(), - ), - IconButton( - icon: Icon(Icons.tune), - visualDensity: VisualDensity.compact, - tooltip: 'Kitűzési beálítások', - onPressed: () => showStakeoutSettingsDialog(), - ), - IconButton( - icon: const Icon(Icons.upload_file), - visualDensity: VisualDensity.compact, - tooltip: 'Pontok importja', - onPressed: () => Get.toNamed(Routes.STAKEOUT_IMPORT), + // A ritkán használt műveletek EGY menüben — a fejléc + // így keskeny kijelzőn / nagy betűméretnél is kifér. + PopupMenuButton( + icon: const Icon(Icons.more_vert), + padding: EdgeInsets.zero, + tooltip: 'További műveletek', + onSelected: (a) { + switch (a) { + case 'list': + StakeoutListSheet.show(); + case 'settings': + showStakeoutSettingsDialog(); + case 'import': + Get.toNamed(Routes.STAKEOUT_IMPORT); + case 'haptics': + svc.hapticsEnabled.toggle(); + } + }, + itemBuilder: (_) => [ + const PopupMenuItem( + value: 'list', child: Text('Pontlista / export')), + const PopupMenuItem( + value: 'settings', + child: Text('Kitűzési beállítások')), + const PopupMenuItem( + value: 'import', child: Text('Pontok importja')), + CheckedPopupMenuItem( + value: 'haptics', + checked: svc.hapticsEnabled.value, + child: const Text('Haptikus visszajelzés')), + ], ), ], ), - // ── Fázis-tartalom ─────────────────────────────────── if (!svc.hasPosition.value) const Padding(