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)