diff --git a/src/ui/windows/TogglDesktop/TogglDesktop/TogglDesktop.csproj b/src/ui/windows/TogglDesktop/TogglDesktop/TogglDesktop.csproj
index 63a7288c7b..a5e324eeb7 100644
--- a/src/ui/windows/TogglDesktop/TogglDesktop/TogglDesktop.csproj
+++ b/src/ui/windows/TogglDesktop/TogglDesktop/TogglDesktop.csproj
@@ -156,16 +156,17 @@
-
- C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.16299.0\Windows.winmd
-
-
- C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0\Windows.Foundation.FoundationContract\3.0.0.0\Windows.Foundation.FoundationContract.winmd
- False
-
-
- C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0\Windows.Foundation.UniversalApiContract\5.0.0.0\Windows.Foundation.UniversalApiContract.winmd
- False
+
+ C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.16299.0\Windows.winmd
+ C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.19041.0\Windows.winmd
+
+
+ C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0\Windows.Foundation.FoundationContract\3.0.0.0\Windows.Foundation.FoundationContract.winmd
+ C:\Program Files (x86)\Windows Kits\10\References\10.0.19041.0\Windows.Foundation.FoundationContract\4.0.0.0\Windows.Foundation.FoundationContract.winmd
+
+
+ C:\Program Files (x86)\Windows Kits\10\References\10.0.16299.0\Windows.Foundation.UniversalApiContract\5.0.0.0\Windows.Foundation.UniversalApiContract.winmd
+ C:\Program Files (x86)\Windows Kits\10\References\10.0.19041.0\Windows.Foundation.UniversalApiContract\10.0.0.0\Windows.Foundation.UniversalApiContract.winmd
diff --git a/src/ui/windows/TogglDesktop/TogglDesktop/ui/views/EditView.xaml b/src/ui/windows/TogglDesktop/TogglDesktop/ui/views/EditView.xaml
index 5c654eeb35..061bb9a9a2 100644
--- a/src/ui/windows/TogglDesktop/TogglDesktop/ui/views/EditView.xaml
+++ b/src/ui/windows/TogglDesktop/TogglDesktop/ui/views/EditView.xaml
@@ -198,41 +198,77 @@
-
-
-
-
+
+
+
-
- 10:12 min
+
+
+
+
+
+
+
+
+
+
12:45
-
- 12:55
-
+
+
+
+ LostKeyboardFocus="endDatePicker_LostKeyboardFocus">
+
+ 12:55
+
+
+
+
+ 10:12 min
diff --git a/src/ui/windows/TogglDesktop/TogglDesktop/ui/views/EditView.xaml.cs b/src/ui/windows/TogglDesktop/TogglDesktop/ui/views/EditView.xaml.cs
index bdbbeb7677..8533e36fd8 100644
--- a/src/ui/windows/TogglDesktop/TogglDesktop/ui/views/EditView.xaml.cs
+++ b/src/ui/windows/TogglDesktop/TogglDesktop/ui/views/EditView.xaml.cs
@@ -29,7 +29,7 @@ public partial class EditView
private ulong selectedClientId;
private string selectedClientName;
private bool isCreatingProject;
- private bool dateSet = false;
+ private bool startDateSet = false;
public EditView()
{
this.DataContext = this;
@@ -75,7 +75,7 @@ private void onTimeEntryEditor(bool open, Toggl.TogglTimeEntryView timeEntry, st
using (Performance.Measure("filling edit view from OnTimeEntryEditor"))
{
- this.dateSet = false;
+ this.startDateSet = false;
if (timeEntry.Locked)
{
open = true;
@@ -110,17 +110,27 @@ private void onTimeEntryEditor(bool open, Toggl.TogglTimeEntryView timeEntry, st
this.endTimeTextBox.IsEnabled = !isCurrentlyRunning;
this.startDatePicker.IsEnabled = !isCurrentlyRunning;
+ this.endDatePicker.IsEnabled = !isCurrentlyRunning;
var startDateTime = Toggl.DateTimeFromUnix(timeEntry.Started);
var endDateTime = Toggl.DateTimeFromUnix(timeEntry.Ended);
setText(this.descriptionTextBox, timeEntry.Description, open);
- setTime(this.durationTextBox, timeEntry.Duration, open);
+
+ // Start:
setTime(this.startTimeTextBox, timeEntry.StartTimeString, open);
this.startTimeTextBox.ToolTip = startDateTime.ToString("T", CultureInfo.CurrentCulture);
+ this.startDatePicker.SelectedDate = startDateTime;
+
+ // End:
setTime(this.endTimeTextBox, timeEntry.EndTimeString, open);
this.endTimeTextBox.ToolTip = endDateTime.ToString("T", CultureInfo.CurrentCulture);
- this.startDatePicker.SelectedDate = startDateTime;
+ this.endDatePicker.SelectedDate = endDateTime;
+
+ // Duration:
+ setTime(this.durationTextBox, timeEntry.Duration, open);
+
+
if (isDifferentTimeEntry)
{
this.clearUndoHistory();
@@ -128,6 +138,7 @@ private void onTimeEntryEditor(bool open, Toggl.TogglTimeEntryView timeEntry, st
if (isCurrentlyRunning)
{
+ this.endDatePicker.SelectedDate = DateTime.Now;
this.endTimeTextBox.Text = "";
}
@@ -165,7 +176,7 @@ private void onTimeEntryEditor(bool open, Toggl.TogglTimeEntryView timeEntry, st
? "Create a new project"
: string.Empty;
}
- this.dateSet = true;
+ this.startDateSet = true;
}
}
@@ -187,6 +198,10 @@ private static void setText(ExtendedTextBox textBox, string text, bool evenIfFoc
}
}
+ ///
+ /// When is not focused, or has an empty property value, or when is , this method stores into 's property.
+ /// Otherwise, this method does nothing.
+ ///
private static void setTime(ExtendedTextBox textBox, string time, bool evenIfFocused)
{
if (evenIfFocused
@@ -205,9 +220,9 @@ private static void setTime(ExtendedTextBox textBox, string time, bool evenIfFoc
#region duration auto update
- private void durationUpdateTimerTick(object sender, string s)
+ private void durationUpdateTimerTick(object sender, string durationText)
{
- if (this.TryBeginInvoke(durationUpdateTimerTick, sender, s))
+ if (this.TryBeginInvoke(durationUpdateTimerTick, sender, durationText))
return;
if (!this.hasTimeEntry() || this.timeEntry.DurationInSeconds >= 0)
@@ -222,8 +237,8 @@ private void durationUpdateTimerTick(object sender, string s)
var caret = this.durationTextBox.CaretIndex;
- this.durationTextBox.SetText(s);
- this.durationTextBox.Tag = s;
+ this.durationTextBox.SetText(durationText);
+ this.durationTextBox.Tag = durationText;
this.durationTextBox.CaretIndex = caret;
}
@@ -351,14 +366,13 @@ private void saveStartTimeIfChanged()
}
private void saveEndTimeIfChanged()
{
- this.setTimeEntryTimeIfChanged(this.endTimeTextBox, Toggl.SetTimeEntryEnd, "end time");
+ this.setTimeEntryEndTimestampIfChanged();
}
private void saveDurationIfChanged()
{
this.setTimeEntryTimeIfChanged(this.durationTextBox, Toggl.SetTimeEntryDuration, "duration");
}
-
private void setTimeEntryTimeIfChanged(TextBox textBox, Func apiCall, string timeType)
{
if (!this.hasTimeEntry())
@@ -367,8 +381,8 @@ private void setTimeEntryTimeIfChanged(TextBox textBox, Func x.DurationText).Subscribe(x => durationUpdateTimerTick(this, x));
+ timer.ViewModel.WhenValueChanged(x => x.DurationText).Subscribe(durationText => this.durationUpdateTimerTick(this, durationText));
}
public void FocusField(string focusedFieldName)