|
10 | 10 | using System.Linq; |
11 | 11 | using System.Threading; |
12 | 12 | using System.Windows.Input; |
| 13 | +using Windows.ApplicationModel.Core; |
13 | 14 | using Windows.UI; |
14 | 15 | using Windows.UI.Xaml; |
15 | 16 | using Windows.UI.Xaml.Controls; |
@@ -64,6 +65,27 @@ public bool AnyBannersPresent |
64 | 65 | get => StatusBannersSource.Any(); |
65 | 66 | } |
66 | 67 |
|
| 68 | + public int InfoBadgeState |
| 69 | + { |
| 70 | + get |
| 71 | + { |
| 72 | + var anyFailure = StatusBannersSource.Any(i => i.Status != ReturnResult.InProgress && i.Status != ReturnResult.Success); |
| 73 | + |
| 74 | + return (anyFailure, AnyOperationsOngoing) switch |
| 75 | + { |
| 76 | + (false, false) => 0, // all success |
| 77 | + (false, true) => 1, // ongoing |
| 78 | + (true, true) => 2, // onging with failure |
| 79 | + (true, false) => 3 // completed with failure |
| 80 | + }; |
| 81 | + } |
| 82 | + } |
| 83 | + |
| 84 | + public int InfoBadgeValue |
| 85 | + { |
| 86 | + get => OngoingOperationsCount > 0 ? OngoingOperationsCount : -1; |
| 87 | + } |
| 88 | + |
67 | 89 | #endregion Public Properties |
68 | 90 |
|
69 | 91 | #region Events |
@@ -120,6 +142,8 @@ public void UpdateBanner(StatusBanner banner) |
120 | 142 | { |
121 | 143 | OnPropertyChanged(nameof(OngoingOperationsCount)); |
122 | 144 | OnPropertyChanged(nameof(AnyOperationsOngoing)); |
| 145 | + OnPropertyChanged(nameof(InfoBadgeState)); |
| 146 | + OnPropertyChanged(nameof(InfoBadgeValue)); |
123 | 147 | } |
124 | 148 |
|
125 | 149 | public void UpdateMedianProgress() |
@@ -203,6 +227,8 @@ private void ReportProgressToBanner(float value) |
203 | 227 |
|
204 | 228 | private void ReportProgressToBanner(ReturnResult value) |
205 | 229 | { |
| 230 | + Banner.Status = value; |
| 231 | + OngoingTasksActions.UpdateBanner(Banner); |
206 | 232 | } |
207 | 233 |
|
208 | 234 | #endregion Private Helpers |
@@ -260,7 +286,16 @@ public bool IsProgressing |
260 | 286 |
|
261 | 287 | public string Title { get; private set; } |
262 | 288 |
|
263 | | - public ReturnResult Status { get; private set; } = ReturnResult.InProgress; |
| 289 | + private ReturnResult status = ReturnResult.InProgress; |
| 290 | + |
| 291 | + public ReturnResult Status |
| 292 | + { |
| 293 | + get => status; |
| 294 | + set |
| 295 | + { |
| 296 | + SetProperty(ref status, value); |
| 297 | + } |
| 298 | + } |
264 | 299 |
|
265 | 300 | public FileOperationType Operation { get; private set; } |
266 | 301 |
|
|
0 commit comments