Skip to content

Commit f28eb89

Browse files
committed
feat: backend availability is shown by an image rather than text
1 parent a332c59 commit f28eb89

6 files changed

Lines changed: 54 additions & 14 deletions

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using System.Globalization;
2+
using System.Windows.Data;
3+
using System.Windows.Media;
4+
5+
namespace Desktop.BackendAvailability.Converters;
6+
7+
public class BoolToImageConverter : IValueConverter
8+
{
9+
public ImageSource BackendAvailable { get; set; }
10+
public ImageSource BackendUnavailable { get; set; }
11+
12+
public object? Convert(
13+
object? value,
14+
Type targetType,
15+
object? parameter,
16+
CultureInfo culture)
17+
{
18+
return (bool)value ? BackendAvailable : BackendUnavailable;
19+
}
20+
21+
public object? ConvertBack(
22+
object? value,
23+
Type targetType,
24+
object? parameter,
25+
CultureInfo culture)
26+
{
27+
throw new NotSupportedException();
28+
}
29+
}
9.58 KB
Loading
12.5 KB
Loading

Desktop/Desktop.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,9 @@
4343
<ProjectReference Include="..\Backend\Backend\Backend.csproj"/>
4444
</ItemGroup>
4545

46+
<ItemGroup>
47+
<Resource Include="BackendAvailability\Resources\BackendAvailable.png"/>
48+
<Resource Include="BackendAvailability\Resources\BackendUnavailable.png"/>
49+
</ItemGroup>
50+
4651
</Project>

Desktop/MainWindow.xaml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,21 @@
33
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
44
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
55
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6+
xmlns:backendAvailabilityConverters="clr-namespace:Desktop.BackendAvailability.Converters"
67
mc:Ignorable="d"
78
Title="MainWindow"
89
WindowState="Maximized"
910
AutomationProperties.AutomationId="TasksAppMainWindow">
11+
<Window.Resources>
12+
<backendAvailabilityConverters:BoolToImageConverter x:Key="BoolToImageConverter">
13+
<backendAvailabilityConverters:BoolToImageConverter.BackendAvailable>
14+
<BitmapImage UriSource="pack://application:,,,/BackendAvailability/Resources/BackendAvailable.png" />
15+
</backendAvailabilityConverters:BoolToImageConverter.BackendAvailable>
16+
<backendAvailabilityConverters:BoolToImageConverter.BackendUnavailable>
17+
<BitmapImage UriSource="pack://application:,,,/BackendAvailability/Resources/BackendUnavailable.png" />
18+
</backendAvailabilityConverters:BoolToImageConverter.BackendUnavailable>
19+
</backendAvailabilityConverters:BoolToImageConverter>
20+
</Window.Resources>
1021
<Grid>
1122
<Grid.ColumnDefinitions>
1223
<ColumnDefinition Width="Auto" />
@@ -26,6 +37,9 @@
2637
</Menu>
2738
</StackPanel>
2839
<ContentControl Grid.Column="1" Name="Content" />
29-
<Label Grid.Column="2" Content="{Binding BackendAvailability}" />
40+
<Image Grid.Column="2"
41+
Width="32"
42+
Height="32"
43+
Source="{Binding IsBackendAvailable, Converter={StaticResource BoolToImageConverter}}" />
3044
</Grid>
3145
</Window>

Desktop/MainWindowViewModel.cs

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,30 @@ namespace Desktop;
66

77
public class MainWindowViewModel : ViewModelBase
88
{
9-
private readonly IRemoteTaskRepository backend;
10-
119
private static readonly TimeSpan CheckBackendAvailabilityInterval =
1210
TimeSpan.FromSeconds(2);
1311

14-
private string backendAvailability = "Available";
12+
private bool isBackendAvailable;
1513
private readonly DispatcherTimer periodicBackendAvailabilityCheckTimer;
1614

17-
public string BackendAvailability
15+
public bool IsBackendAvailable
1816
{
19-
get => backendAvailability;
17+
get => isBackendAvailable;
2018
set
2119
{
22-
backendAvailability = value;
20+
isBackendAvailable = value;
2321
OnPropertyChanged();
2422
}
2523
}
2624

2725
public MainWindowViewModel(IRemoteTaskRepository backend)
2826
{
29-
this.backend = backend;
3027
periodicBackendAvailabilityCheckTimer = new DispatcherTimer
3128
{
3229
Interval = CheckBackendAvailabilityInterval
3330
};
3431
periodicBackendAvailabilityCheckTimer.Tick += async (_, _) =>
35-
await CheckBackendAvailability();
32+
IsBackendAvailable = await backend.IsAvailable();
3633
periodicBackendAvailabilityCheckTimer.Start();
3734
}
38-
39-
private async Task CheckBackendAvailability()
40-
{
41-
BackendAvailability = await backend.IsAvailable() ? "Available" : "Non available";
42-
}
4335
}

0 commit comments

Comments
 (0)