Mini Kabibi Habibi
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Data
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Imaging
Imports System.Windows.Navigation
Imports System.Windows.Shapes
Imports DevExpress.Xpf.Editors
Imports System.Globalization
Namespace EditorsDemo
Partial Public Class Map
Inherits Button
Private Const totalDistance As Double = 684R
Private Const totalTime As Double = 6R
Public Shared ReadOnly MapDataProperty As DependencyProperty
Shared Sub New()
Dim ownerType As Type = GetType(Map)
MapDataProperty = DependencyProperty.Register("MapData", GetType(MapData), ownerType, New PropertyMetadata(Nothing))
End Sub
Public Shared towns() As String = { "Afrene", "Hibesona", "Erarium", "Myralana", "Myrynana", "Minacius", "Lucacova", "Danyrova", "Tritrium" }
Public Sub New()
InitializeComponent()
AddHandler Loaded, AddressOf Map_Loaded
End Sub
Private Sub Map_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
UpdateData(CType(GetTemplateChild("tb"), TrackBarEdit))
Dim edit As TrackBarEdit = CType(GetTemplateChild("tb"), TrackBarEdit)
End Sub
Public Property MapData() As MapData
Get
Return CType(GetValue(MapDataProperty), MapData)
End Get
Set(ByVal value As MapData)
SetValue(MapDataProperty, value)
End Set
End Property
Private Sub TrackBarEdit_EditValueChanged(ByVal sender As Object, ByVal e As EditValueChangedEventArgs)
UpdateData(CType(sender, TrackBarEdit))
End Sub
Private Function GetStartIndex(ByVal edit As TrackBarEdit) As Integer
Return CInt(Fix((CType(edit.EditValue, TrackBarEditRange)).SelectionStart))
End Function
Private Function GetEndIndex(ByVal edit As TrackBarEdit) As Integer
Return CInt(Fix((CType(edit.EditValue, TrackBarEditRange)).SelectionEnd))
End Function
Private Sub UpdateData(ByVal edit As TrackBarEdit)
Dim data As New MapData()
data.StartTown = towns(GetStartIndex(edit))
data.EndTown = towns(GetEndIndex(edit))
data.DistanceFromAToStart = ((CType(edit.EditValue, TrackBarEditRange)).SelectionStart - edit.Minimum) / (edit.Maximum - edit.Minimum) * totalDistance
data.DistanceFromAToEnd = (edit.Maximum - (CType(edit.EditValue, TrackBarEditRange)).SelectionStart) / (edit.Maximum - edit.Minimum) * totalDistance
data.DistanceFromBToStart = ((CType(edit.EditValue, TrackBarEditRange)).SelectionEnd - edit.Minimum) / (edit.Maximum - edit.Minimum) * totalDistance
data.DistanceFromBToEnd = (edit.Maximum - (CType(edit.EditValue, TrackBarEditRange)).SelectionEnd) / (edit.Maximum - edit.Minimum) * totalDistance
data.TimeFromAToStart = ((CType(edit.EditValue, TrackBarEditRange)).SelectionStart - edit.Minimum) / (edit.Maximum - edit.Minimum) * totalTime
data.TimeFromAToEnd = (edit.Maximum - (CType(edit.EditValue, TrackBarEditRange)).SelectionStart) / (edit.Maximum - edit.Minimum) * totalTime
data.TimeFromBToStart = ((CType(edit.EditValue, TrackBarEditRange)).SelectionEnd - edit.Minimum) / (edit.Maximum - edit.Minimum) * totalTime
data.TimeFromBToEnd = (edit.Maximum - (CType(edit.EditValue, TrackBarEditRange)).SelectionEnd) / (edit.Maximum - edit.Minimum) * totalTime
data.DistanceBetween = ((CType(edit.EditValue, TrackBarEditRange)).SelectionEnd - (CType(edit.EditValue, TrackBarEditRange)).SelectionStart) / (edit.Maximum - edit.Minimum) * totalDistance
data.TimeBetween = ((CType(edit.EditValue, TrackBarEditRange)).SelectionEnd - (CType(edit.EditValue, TrackBarEditRange)).SelectionStart) / (edit.Maximum - edit.Minimum) * totalTime
MapData = data
End Sub
End Class
Public Class MapData
Private privateStartTown As String
Public Property StartTown() As String
Get
Return privateStartTown
End Get
Set(ByVal value As String)
privateStartTown = value
End Set
End Property
Private privateEndTown As String
Public Property EndTown() As String
Get
Return privateEndTown
End Get
Set(ByVal value As String)
privateEndTown = value
End Set
End Property
Private privateDistanceBetween As Double
Public Property DistanceBetween() As Double
Get
Return privateDistanceBetween
End Get
Set(ByVal value As Double)
privateDistanceBetween = value
End Set
End Property
Private privateDistanceFromAToEnd As Double
Public Property DistanceFromAToEnd() As Double
Get
Return privateDistanceFromAToEnd
End Get
Set(ByVal value As Double)
privateDistanceFromAToEnd = value
End Set
End Property
Private privateDistanceFromBToEnd As Double
Public Property DistanceFromBToEnd() As Double
Get
Return privateDistanceFromBToEnd
End Get
Set(ByVal value As Double)
privateDistanceFromBToEnd = value
End Set
End Property
Private privateDistanceFromAToStart As Double
Public Property DistanceFromAToStart() As Double
Get
Return privateDistanceFromAToStart
End Get
Set(ByVal value As Double)
privateDistanceFromAToStart = value
End Set
End Property
Private privateDistanceFromBToStart As Double
Public Property DistanceFromBToStart() As Double
Get
Return privateDistanceFromBToStart
End Get
Set(ByVal value As Double)
privateDistanceFromBToStart = value
End Set
End Property
Private privateTimeBetween As Double
Public Property TimeBetween() As Double
Get
Return privateTimeBetween
End Get
Set(ByVal value As Double)
privateTimeBetween = value
End Set
End Property
Private privateTimeFromAToEnd As Double
Public Property TimeFromAToEnd() As Double
Get
Return privateTimeFromAToEnd
End Get
Set(ByVal value As Double)
privateTimeFromAToEnd = value
End Set
End Property
Private privateTimeFromBToEnd As Double
Public Property TimeFromBToEnd() As Double
Get
Return privateTimeFromBToEnd
End Get
Set(ByVal value As Double)
privateTimeFromBToEnd = value
End Set
End Property
Private privateTimeFromAToStart As Double
Public Property TimeFromAToStart() As Double
Get
Return privateTimeFromAToStart
End Get
Set(ByVal value As Double)
privateTimeFromAToStart = value
End Set
End Property
Private privateTimeFromBToStart As Double
Public Property TimeFromBToStart() As Double
Get
Return privateTimeFromBToStart
End Get
Set(ByVal value As Double)
privateTimeFromBToStart = value
End Set
End Property
End Class
Public Class MapDataToTextConverter
Implements IValueConverter
#Region "IValueConverter Members"
Private Function IValueConverter_Convert(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As CultureInfo) As Object Implements IValueConverter.Convert
Dim data As MapData = CType(value, MapData)
If data Is Nothing Then
Return Nothing
End If
Dim text As String = Nothing
If CStr(parameter) = "Start" Then
text = data.StartTown.ToUpper() + Constants.vbLf + Map.towns(0) & " - " & data.StartTown & ": " & data.TimeFromAToStart & " h, " & data.DistanceFromAToStart & " km" & Constants.vbLf + data.StartTown & " - " & Map.towns(Map.towns.Length - 1) & ": " & data.TimeFromAToEnd & " h, " & data.DistanceFromAToEnd & " km"
End If
If CStr(parameter) = "End" Then
text = data.EndTown.ToUpper() + Constants.vbLf + Map.towns(0) & " - " & data.EndTown & ": " & data.TimeFromBToStart & " h, " & data.DistanceFromBToStart & " km" & Constants.vbLf + data.EndTown & " - " & Map.towns(Map.towns.Length - 1) & ": " & data.TimeFromBToEnd & " h, " & data.DistanceFromBToEnd & " km"
End If
If CStr(parameter) = "Total" Then
text = data.StartTown.ToUpper() & " - " & data.EndTown.ToUpper() + Constants.vbLf + data.TimeBetween.ToString() & " h, " & data.DistanceBetween.ToString() & " km"
End If
Return text
End Function
Private Function ConvertBack(ByVal value As Object, ByVal targetType As Type, ByVal parameter As Object, ByVal culture As System.Globalization.CultureInfo) As Object Implements IValueConverter.ConvertBack
Throw New NotImplementedException()
End Function
#End Region
End Class
End Namespace