feat(daily-prep): add Prep-log and Clear-day buttons to MyDay header

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
mika kuns
2026-06-04 08:18:30 +02:00
parent a8670ee23a
commit c45f892591
6 changed files with 101 additions and 0 deletions

View File

@@ -68,6 +68,8 @@
"enterKey": "ENTER",
"notesPinnedRow": "Notizen (Tagesnotizen)",
"prepareDay": "Tag vorbereiten",
"prepLog": "Vorbereitungs-Log",
"clearDay": "Tag leeren",
"overdue": "ÜBERFÄLLIG",
"tasks": "AUFGABEN",
"clearCompletedTip": "Alle abgeschlossenen löschen",

View File

@@ -68,6 +68,8 @@
"enterKey": "ENTER",
"notesPinnedRow": "Notes (daily notes)",
"prepareDay": "Prepare day",
"prepLog": "Prep log",
"clearDay": "Clear day",
"overdue": "OVERDUE",
"tasks": "TASKS",
"clearCompletedTip": "Clear all completed",

View File

@@ -27,6 +27,7 @@ public sealed partial class TasksIslandViewModel : ViewModelBase
public event EventHandler? FocusAddTaskRequested;
public event EventHandler? TasksChanged;
public event Action? NotesRequested;
public event Action? PrepRequested;
public void RequestFocusAddTask() => FocusAddTaskRequested?.Invoke(this, EventArgs.Empty);
[RelayCommand]
@@ -40,10 +41,22 @@ public sealed partial class TasksIslandViewModel : ViewModelBase
private async Task PrepareDayAsync()
{
if (_worker is null) return;
PrepRequested?.Invoke();
try { await _worker.RunDailyPrepNowAsync(); }
catch { /* worker offline; broadcast will reconcile on return */ }
}
[RelayCommand]
private void ShowPrepLog() => PrepRequested?.Invoke();
[RelayCommand]
private async Task ClearDayAsync()
{
if (_worker is null) return;
try { await _worker.ClearMyDayAsync(); }
catch { /* worker offline; broadcast will reconcile on return */ }
}
public ObservableCollection<TaskRowViewModel> Items { get; } = new();
public ObservableCollection<TaskRowViewModel> OverdueItems { get; } = new();
public ObservableCollection<TaskRowViewModel> OpenItems { get; } = new();

View File

@@ -199,6 +199,7 @@ public sealed partial class IslandsShellViewModel : ViewModelBase
Lists.SelectionChanged += (_, _) => Tasks.LoadForList(Lists.SelectedList);
Tasks.SelectionChanged += (_, _) => Details.Bind(Tasks.SelectedTask);
Tasks.NotesRequested += () => Details.ShowNotes();
Tasks.PrepRequested += () => Details.ShowPrep();
Tasks.TasksChanged += (_, _) => _ = Lists.RefreshCountsAsync();
Tasks.OpenListSettingsRequested += (_, _) =>
{

View File

@@ -82,6 +82,22 @@
Command="{Binding PrepareDayCommand}"
Content="{loc:Tr tasks.prepareDay}"/>
<!-- Prep Log button (My Day only) -->
<Button DockPanel.Dock="Top"
Classes="btn" HorizontalAlignment="Stretch" HorizontalContentAlignment="Left"
Margin="16,0,16,8"
IsVisible="{Binding IsMyDayList}"
Command="{Binding ShowPrepLogCommand}"
Content="{loc:Tr tasks.prepLog}"/>
<!-- Clear Day button (My Day only) -->
<Button DockPanel.Dock="Top"
Classes="btn" HorizontalAlignment="Stretch" HorizontalContentAlignment="Left"
Margin="16,0,16,8"
IsVisible="{Binding IsMyDayList}"
Command="{Binding ClearDayCommand}"
Content="{loc:Tr tasks.clearDay}"/>
<!-- Task list -->
<ScrollViewer>
<StackPanel Margin="10,4">