Skip to content

Commit

Permalink
Left hand mode, zoom on micromapping, 0.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Zverik committed May 9, 2022
1 parent 562b1a0 commit 1fe4749
Show file tree
Hide file tree
Showing 12 changed files with 80 additions and 29 deletions.
5 changes: 3 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## 0.3.0

_Unreleased_
_Released on 2022-05-09_

* Made the saving button into a small floating one.
* Swapped tracking and mode changing buttons.
Expand All @@ -14,9 +14,10 @@ _Unreleased_
* Added missing translations for the entrances mode.
* Sped up storing elements to the database slightly.
* Displaying all alternative points on the map, not just modified.
* Option to move buttons from right to left.
* Added safe areas to layout.
* Finally caught the offset issue when dragging entrances onto the map.
* Fixed offset numbers on the map.
* Fixed offset in numbers on the map.

## 0.2.0

Expand Down
2 changes: 1 addition & 1 deletion lib/constants.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart' show Colors, TextStyle;

const kAppTitle = 'Every Door';
const kAppVersion = '0.2.1'; // Also used for presets.db versioning
const kAppVersion = '0.3.0'; // Also used for presets.db versioning

const kDefaultLocation = <double>[59.42, 24.71];
const kDatabaseName = 'every_door.db';
Expand Down
2 changes: 1 addition & 1 deletion lib/helpers/nsi_features.dart

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,10 @@
"@editorDeleteButton": {
"description": "Delete"
},
"tagsUrlCopied": "URL copied to clipboard",
"@tagsUrlCopied": {
"description": "Popup message when the link to the object was copied to the clipboard."
},
"tagsNewPoint": "New Point",
"@tagsNewPoint": {
"description": "Tag editor panel title for a new amenity."
Expand Down Expand Up @@ -228,6 +232,10 @@
"@settingsBackground": {
"description": "Settings entry for choosing background satellite imagery."
},
"settingsLeftHand": "Left hand controls",
"@settingsLeftHand": {
"description": "Switch for enabling left hand controls, when most buttons move to the left."
},
"settingsEditor": "Editor",
"@settingsEditor": {
"description": "Title for the settings section for editor presets."
Expand Down
2 changes: 2 additions & 0 deletions lib/l10n/app_ru.arb
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
"editorRestoreMessage": "Заведение {amenity} неактивно. Отметить как работающее?",
"editorDeleteTitle": "Удалить {amenity}?",
"editorDeleteButton": "Удалить",
"tagsUrlCopied": "Ссылка скопирована в буфер",
"tagsNewPoint": "Новая точка",
"tagsAddTag": "Добавить",
"tagsKey": "Ключ",
Expand All @@ -51,6 +52,7 @@
"settingsPurgedMessage": "{count,plural, =1{Очистили {count} объект}, =few{Очистили {count} объекта}, =other{Очистили {count} объектов}}",
"settingsUploads": "Правки для отправки",
"settingsBackground": "Спутниковые снимки",
"settingsLeftHand": "Кнопки для левой руки",
"settingsEditor": "Редактор",
"settingsPreferContact": "Предпочитать префикс \"contact:\"",
"settingsNumericKeyboard": "Заменить цифровую клавиатуру",
Expand Down
11 changes: 11 additions & 0 deletions lib/providers/editor_settings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,26 @@ final editorSettingsProvider =
class EditorSettings {
final bool preferContact;
final bool fixNumKeyboard;
final bool leftHand;
final List<String> defaultPayment;

const EditorSettings({
this.preferContact = false,
this.fixNumKeyboard = false,
this.leftHand = false,
this.defaultPayment = const ['visa', 'mastercard'],
});

EditorSettings copyWith({
bool? preferContact,
bool? fixNumKeyboard,
bool? leftHand,
List<String>? defaultPayment,
}) {
return EditorSettings(
preferContact: preferContact ?? this.preferContact,
fixNumKeyboard: fixNumKeyboard ?? this.fixNumKeyboard,
leftHand: leftHand ?? this.leftHand,
defaultPayment: defaultPayment ?? this.defaultPayment,
);
}
Expand All @@ -34,13 +38,15 @@ class EditorSettings {
preferContact: data[0] == '1',
fixNumKeyboard: data[1] == '1',
defaultPayment: data[2].split(';').map((s) => s.trim()).toList(),
leftHand: data.length >= 4 && data[3] == '1',
);
}

List<String> toStrings() {
return [
preferContact ? '1' : '0',
fixNumKeyboard ? '1' : '0',
leftHand ? '1' : '0',
defaultPayment.join(';')
];
}
Expand Down Expand Up @@ -73,6 +79,11 @@ class EditorSettingsProvider extends StateNotifier<EditorSettings> {
store();
}

setLeftHand(bool value) {
state = state.copyWith(leftHand: value);
store();
}

setDefaultPayment(List<String> values) {
if (values.isNotEmpty) {
state = state.copyWith(defaultPayment: values);
Expand Down
35 changes: 20 additions & 15 deletions lib/screens/browser.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:every_door/providers/api_status.dart';
import 'package:every_door/providers/area.dart';
import 'package:every_door/providers/changes.dart';
import 'package:every_door/providers/editor_mode.dart';
import 'package:every_door/providers/editor_settings.dart';
import 'package:every_door/providers/geolocation.dart';
import 'package:every_door/providers/imagery.dart';
import 'package:every_door/providers/location.dart';
Expand Down Expand Up @@ -134,6 +135,23 @@ class _BrowserPageState extends ConsumerState<BrowserPage> {
break;
}

final leftHand = ref.watch(editorSettingsProvider).leftHand;
final settingsButton = IconButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SettingsPage()),
);
},
icon: Icon(Icons.menu),
);
final modeButton = IconButton(
onPressed: () {
ref.read(editorModeProvider.notifier).next();
},
icon: Icon(kEditorModeIcons[editorMode]!),
);

return WillPopScope(
onWillPop: () async {
if (ref.read(microZoomedInProvider) != null) {
Expand All @@ -149,15 +167,7 @@ class _BrowserPageState extends ConsumerState<BrowserPage> {
child: Scaffold(
appBar: AppBar(
title: Text(kAppTitle, overflow: TextOverflow.fade),
leading: IconButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => SettingsPage()),
);
},
icon: Icon(Icons.menu),
),
leading: leftHand ? modeButton : settingsButton,
actions: [
if (!hasChangesToUpload)
IconButton(
Expand Down Expand Up @@ -208,12 +218,7 @@ class _BrowserPageState extends ConsumerState<BrowserPage> {
color: hasFilter ? Colors.yellowAccent : null,
),
),
IconButton(
onPressed: () {
ref.read(editorModeProvider.notifier).next();
},
icon: Icon(kEditorModeIcons[editorMode]!),
),
!leftHand ? modeButton : settingsButton,
],
),
body: editorPanel,
Expand Down
2 changes: 1 addition & 1 deletion lib/screens/editor/tags.dart
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ class _TagEditorPageState extends State<TagEditorPage> {
),
onLongPress: () {
Clipboard.setData(ClipboardData(text: _getUrl())).then((_){
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("URL copied to clipboard")));
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(loc.tagsUrlCopied)));
});
},
),
Expand Down
16 changes: 10 additions & 6 deletions lib/screens/modes/entrances.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:every_door/helpers/equirectangular.dart';
import 'package:every_door/helpers/good_tags.dart';
import 'package:every_door/helpers/tile_layers.dart';
import 'package:every_door/models/amenity.dart';
import 'package:every_door/providers/editor_settings.dart';
import 'package:every_door/providers/geolocation.dart';
import 'package:every_door/providers/imagery.dart';
import 'package:every_door/providers/location.dart';
Expand Down Expand Up @@ -286,6 +287,7 @@ class _EntrancesPaneState extends ConsumerState<EntrancesPane> {
Widget build(BuildContext context) {
final location = ref.read(effectiveLocationProvider);
final imagery = ref.watch(selectedImageryProvider);
final leftHand = ref.watch(editorSettingsProvider).leftHand;
final LatLng? trackLocation = ref.watch(geolocationProvider);

// When tracking location, move map and notify the poi list.
Expand Down Expand Up @@ -397,7 +399,8 @@ class _EntrancesPaneState extends ConsumerState<EntrancesPane> {
DragButton(
icon: Icons.house,
bottom: 20.0,
left: 20.0 + safePadding.left,
left: leftHand ? null : 20.0 + safePadding.left,
right: !leftHand ? null : 20.0 + safePadding.right,
onDragEnd: (pos) {
editBuilding(null, pos);
},
Expand All @@ -414,7 +417,8 @@ class _EntrancesPaneState extends ConsumerState<EntrancesPane> {
DragButton(
icon: Icons.sensor_door,
bottom: 20.0,
right: 20.0 + safePadding.right,
left: !leftHand ? null : 20.0 + safePadding.left,
right: leftHand ? null : 20.0 + safePadding.right,
onDragStart: () {
if (savedZoom == null) {
savedZoom = controller.zoom;
Expand All @@ -441,16 +445,16 @@ class _EntrancesPaneState extends ConsumerState<EntrancesPane> {
],
),
TrackButtonOptions(
alignment: Alignment.topRight,
alignment: leftHand ? Alignment.topLeft : Alignment.topRight,
padding: EdgeInsets.symmetric(
horizontal: 10.0 + safePadding.right,
horizontal: 10.0 + (leftHand ? safePadding.left : safePadding.right),
vertical: 20.0,
),
),
ZoomButtonsOptions(
alignment: Alignment.bottomRight,
alignment: leftHand ? Alignment.bottomLeft : Alignment.bottomRight,
padding: EdgeInsets.symmetric(
horizontal: 10.0 + safePadding.right,
horizontal: 10.0 + (leftHand ? safePadding.left : safePadding.right),
vertical: 100.0,
),
),
Expand Down
9 changes: 9 additions & 0 deletions lib/screens/settings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,15 @@ class SettingsPage extends ConsumerWidget {
SettingsSection(
title: Text(loc.settingsPresentation),
tiles: [
SettingsTile.switchTile(
title: Text(loc.settingsLeftHand),
onToggle: (value) {
ref
.read(editorSettingsProvider.notifier)
.setLeftHand(value);
},
initialValue: editorSettings.leftHand,
),
SettingsTile(
title: Text(loc.settingsBackground),
trailing: Icon(Icons.navigate_next),
Expand Down
15 changes: 13 additions & 2 deletions lib/widgets/map.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'dart:math' show min, max, Point;
import 'package:every_door/constants.dart';
import 'package:every_door/helpers/closest_points.dart';
import 'package:every_door/models/amenity.dart';
import 'package:every_door/providers/editor_settings.dart';
import 'package:every_door/providers/geolocation.dart';
import 'package:every_door/providers/imagery.dart';
import 'package:every_door/providers/editor_mode.dart';
Expand Down Expand Up @@ -65,6 +66,7 @@ class AmenityMap extends ConsumerStatefulWidget {

class _AmenityMapState extends ConsumerState<AmenityMap> {
static const kMapZoom = 17.0;
static const kMicroZoom = 18.0;

late final MapController mapController;
late final StreamSubscription<MapEvent> mapSub;
Expand Down Expand Up @@ -237,11 +239,20 @@ class _AmenityMapState extends ConsumerState<AmenityMap> {
mapController.move(newState?.center ?? mapController.center, targetZoom);
});

// When switching to micromapping, increase zoom.
ref.listen(editorModeProvider, (_, next) {
if (next == EditorMode.micromapping) {
if (mapController.zoom < kMicroZoom)
mapController.move(mapController.center, kMicroZoom);
}
});

// Update colors when the legend is ready.
ref.listen(legendProvider, (_, next) {
setState(() {});
});

final leftHand = ref.watch(editorSettingsProvider).leftHand;
final iconSize = widget.drawNumbers ? 18.0 : 10.0;
final legendCon = ref.watch(legendProvider.notifier);
final amenities = List.of(widget.amenities);
Expand All @@ -263,15 +274,15 @@ class _AmenityMapState extends ConsumerState<AmenityMap> {
),
nonRotatedLayers: [
TrackButtonOptions(
alignment: Alignment.topRight,
alignment: leftHand ? Alignment.topLeft : Alignment.topRight,
padding: EdgeInsets.symmetric(
horizontal: 0.0,
vertical: 20.0,
),
),
if (widget.drawZoomButtons)
ZoomButtonsOptions(
alignment: Alignment.bottomRight,
alignment: leftHand ? Alignment.bottomLeft : Alignment.bottomRight,
padding: EdgeInsets.symmetric(
horizontal: 0.0,
vertical: 20.0,
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ description: Next generation OpenStreetMap amenity mapper
publish_to: 'none' # Remove this line if you wish to publish to pub.dev

# Also update version in constants.dart!
version: 0.2.1+16
version: 0.3.0+17

environment:
sdk: ">=2.13.0 <3.0.0"
Expand Down

0 comments on commit 1fe4749

Please sign in to comment.