Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@elbruno
Created October 17, 2017 00:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save elbruno/6c421d828f44a6b5e6efebf541aa8320 to your computer and use it in GitHub Desktop.
Save elbruno/6c421d828f44a6b5e6efebf541aa8320 to your computer and use it in GitHub Desktop.
SurfaceDialMenuItems
enum ControllerMode { Zoom, Rotate, Disable };
ControllerMode _controllerMode;
public MapPagePage()
{
_locationService = new LocationService();
Center = new Geopoint(_defaultPosition);
ZoomLevel = DefaultZoomLevel;
InitializeComponent();
var controller = RadialController.CreateForCurrentView();
controller.RotationResolutionInDegrees = 0.2;
controller.UseAutomaticHapticFeedback = false;
var mapZoomItem = RadialControllerMenuItem.CreateFromFontGlyph("El Bruno - Maps Zoom", "\xE128", "Segoe MDL2 Assets");
var mapRotationItem = RadialControllerMenuItem.CreateFromFontGlyph("El Bruno - Map Rotation", "\xE128", "Segoe MDL2 Assets");
var disableDialItem = RadialControllerMenuItem.CreateFromFontGlyph("El Bruno - Disable Dial", "\xE128", "Segoe MDL2 Assets");
controller.Menu.Items.Add(mapZoomItem);
controller.Menu.Items.Add(mapRotationItem);
controller.Menu.Items.Add(disableDialItem);
mapZoomItem.Invoked += MapZoomItem_Invoked;
mapRotationItem.Invoked += MapRotationItem_Invoked;
disableDialItem.Invoked += DisableDialItem_Invoked;
controller.RotationChanged += ControllerRotationChangedAsync;
}
private void DisableDialItem_Invoked(RadialControllerMenuItem sender, object args)
{
_controllerMode = ControllerMode.Disable;
}
private void MapRotationItem_Invoked(RadialControllerMenuItem sender, object args)
{
_controllerMode = ControllerMode.Rotate;
}
private void MapZoomItem_Invoked(RadialControllerMenuItem sender, object args)
{
_controllerMode = ControllerMode.Zoom;
}
private async void ControllerRotationChangedAsync(RadialController sender, RadialControllerRotationChangedEventArgs args)
{
Debug.WriteLine($"{args.RotationDeltaInDegrees}");
switch (_controllerMode)
{
case ControllerMode.Zoom:
mapControl.ZoomLevel = mapControl.ZoomLevel + args.RotationDeltaInDegrees;
break;
case ControllerMode.Rotate:
await mapControl.TryRotateAsync(args.RotationDeltaInDegrees);
break;
default:
Debug.WriteLine($"No action!");
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment