Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 2433 → Rev 2434

/MKLiveView/v1.0/Source/MainWindow.xaml
389,7 → 389,7
</Style>
</Window.Resources>
<Grid>
<Grid x:Name="GridGMapControl" TouchDown="OnPreviewTouchDown" PreviewMouseLeftButtonDown="GridGMapControl_PreviewMouseLeftButtonDown">
<Grid x:Name="GridGMapControl" PreviewMouseLeftButtonDown="GridGMapControl_PreviewMouseLeftButtonDown">
<WindowsPresentation:GMapControl x:Name="MainMap" Loaded="MainMap_Loaded" OnPositionChanged="MainMap_OnPositionChanged" OnMapZoomChanged="MainMap_OnMapZoomChanged" StylusDown="MainMap_StylusDown" StylusUp="MainMap_StylusUp" StylusMove="MainMap_StylusMove"/>
<Canvas x:Name="canvasAddPoint" HorizontalAlignment="Left" Height="196" Margin="470,180,0,0" VerticalAlignment="Top" Width="137" Background="#7F000000" Visibility="Collapsed" MouseLeave="canvasAddPoint_MouseLeave" LostMouseCapture="canvasAddPoint_MouseLeave">
<Button x:Name="btnCmAddWP" Content="add waypoint" Height="40" Canvas.Left="10" Canvas.Top="10" Width="117" Click="btnCmAddWP_Click"/>
/MKLiveView/v1.0/Source/MainWindow.xaml.cs
741,70 → 741,10
Application.Current.Shutdown();
}
 
#region doubletap/click //http://stackoverflow.com/questions/9001023/capturing-double-tap-touch-on-multi-touch-screen
private Point? _lastTapLocation;
private readonly Stopwatch _doubleTapStopwatch = new Stopwatch();
 
private bool IsDoubleTap(TouchEventArgs e)
{
Point currentTapPosition = e.GetTouchPoint(this).Position;
bool tapsAreCloseInDistance = false;
if (_lastTapLocation != null)
{
tapsAreCloseInDistance = GetDistanceBetweenPoints(currentTapPosition, (Point)_lastTapLocation) < 70;
}
_lastTapLocation = currentTapPosition;
 
TimeSpan elapsed = _doubleTapStopwatch.Elapsed;
_doubleTapStopwatch.Restart();
bool tapsAreCloseInTime = (elapsed != TimeSpan.Zero && elapsed < TimeSpan.FromSeconds(0.4));
 
if (tapsAreCloseInTime && tapsAreCloseInDistance)
{
_lastTapLocation = null;
}
return tapsAreCloseInDistance && tapsAreCloseInTime;
}
 
private void OnPreviewTouchDown(object sender, TouchEventArgs e)
{
if (IsDoubleTap(e))
{
MainMap.CanDragMap = false;
MessageBox.Show("Blubb!");
}
}
public static double GetDistanceBetweenPoints(Point p, Point q)
{
double a = p.X - q.X;
double b = p.Y - q.Y;
double distance = Math.Sqrt(a * a + b * b);
return distance;
}
private bool IsDoubleClick(MouseButtonEventArgs e)
{
Point currentTapPosition = e.GetPosition(this);
bool tapsAreCloseInDistance = false;
if (_lastTapLocation != null)
{
tapsAreCloseInDistance = GetDistanceBetweenPoints(currentTapPosition, (Point)_lastTapLocation) < 70;
}
_lastTapLocation = currentTapPosition;
 
TimeSpan elapsed = _doubleTapStopwatch.Elapsed;
_doubleTapStopwatch.Restart();
bool tapsAreCloseInTime = (elapsed != TimeSpan.Zero && elapsed < TimeSpan.FromSeconds(0.4));
 
if (tapsAreCloseInTime && tapsAreCloseInDistance)
{
_lastTapLocation = null;
}
return tapsAreCloseInDistance && tapsAreCloseInTime;
}
Point pWPAdd;
private void GridGMapControl_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (IsDoubleClick(e))
if(e.ClickCount == 2)
{
pWPAdd = new Point(e.GetPosition(this).X, e.GetPosition(this).Y);
canvasAddPoint.Margin = new Thickness(e.GetPosition(this).X, e.GetPosition(this).Y, canvasAddPoint.Margin.Left, canvasAddPoint.Margin.Bottom);
853,7 → 793,6
}
}
 
#endregion doubletap/click
#endregion events
 
#region GMap