Skip to content

Commit d9c4adc

Browse files
authored
Feature: Updated status icons for cloud drives (#12926)
1 parent b490272 commit d9c4adc

File tree

4 files changed

+60
-24
lines changed

4 files changed

+60
-24
lines changed

src/Files.App/ResourceDictionaries/PathIcons.xaml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2423,6 +2423,31 @@
24232423
</Setter>
24242424
</Style>
24252425

2426+
<Style x:Key="ColorIconCloudSynced" TargetType="local:OpacityIcon">
2427+
<Setter Property="Template">
2428+
<Setter.Value>
2429+
<ControlTemplate>
2430+
<Viewbox Stretch="Fill">
2431+
<Grid Width="16" Height="16">
2432+
<Path
2433+
x:Name="Path1"
2434+
Data="M1.37371 8.16782C1.19025 7.96143 0.874215 7.94284 0.667823 8.1263C0.461432 8.30975 0.442842 8.62579 0.626301 8.83218L4.6263 13.3322C4.81743 13.5472 5.15013 13.557 5.35356 13.3536L15.8536 2.85355C16.0488 2.65829 16.0488 2.34171 15.8536 2.14645C15.6583 1.95118 15.3417 1.95118 15.1465 2.14645L5.02141 12.2715L1.37371 8.16782Z"
2435+
Fill="{ThemeResource SystemFillColorSuccessBrush}" />
2436+
</Grid>
2437+
2438+
<VisualStateManager.VisualStateGroups>
2439+
<VisualStateGroup>
2440+
<VisualState x:Name="Normal" />
2441+
<VisualState x:Name="Disabled" />
2442+
<VisualState x:Name="Selected" />
2443+
</VisualStateGroup>
2444+
</VisualStateManager.VisualStateGroups>
2445+
</Viewbox>
2446+
</ControlTemplate>
2447+
</Setter.Value>
2448+
</Setter>
2449+
</Style>
2450+
24262451
<Style x:Key="ColorIconGitAdded" TargetType="local:OpacityIcon">
24272452
<Setter Property="Template">
24282453
<Setter.Value>

src/Files.App/Utils/Cloud/CloudDriveSyncStatusUI.cs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22
// Licensed under the MIT License. See the LICENSE.
33

44
using Files.Shared.Cloud;
5+
using Microsoft.UI.Xaml;
56

67
namespace Files.App.Utils.Cloud
78
{
89
public class CloudDriveSyncStatusUI : ObservableObject
910
{
1011
public string Glyph { get; }
1112

13+
public Style OpacityIcon { get; }
14+
1215
public CloudDriveSyncStatus SyncStatus { get; }
1316

1417
public bool LoadSyncStatus { get; }
@@ -24,10 +27,11 @@ private CloudDriveSyncStatusUI(CloudDriveSyncStatus syncStatus)
2427
SyncStatus = syncStatus;
2528
}
2629

27-
private CloudDriveSyncStatusUI(string glyph, CloudDriveSyncStatus syncStatus, string SyncStatusStringKey)
30+
private CloudDriveSyncStatusUI(string glyph, Style opacityIcon, CloudDriveSyncStatus syncStatus, string SyncStatusStringKey)
2831
{
2932
SyncStatus = syncStatus;
3033
Glyph = glyph;
34+
OpacityIcon = opacityIcon;
3135
LoadSyncStatus = true;
3236
SyncStatusString = SyncStatusStringKey.GetLocalizedResource();
3337
}
@@ -36,19 +40,19 @@ private CloudDriveSyncStatusUI(string glyph, CloudDriveSyncStatus syncStatus, st
3640
{
3741
// File
3842
CloudDriveSyncStatus.FileOnline
39-
=> new CloudDriveSyncStatusUI("\uE753", syncStatus, "CloudDriveSyncStatus_Online"),
43+
=> new CloudDriveSyncStatusUI("\uE753", (Style)Application.Current.Resources["ColorIconCloud"], syncStatus, "CloudDriveSyncStatus_Online"),
4044
CloudDriveSyncStatus.FileOffline or CloudDriveSyncStatus.FileOfflinePinned
41-
=> new CloudDriveSyncStatusUI("\uE73E", syncStatus, "CloudDriveSyncStatus_Offline"),
45+
=> new CloudDriveSyncStatusUI("\uE73E", (Style)Application.Current.Resources["ColorIconCloudSynced"], syncStatus, "CloudDriveSyncStatus_Offline"),
4246
CloudDriveSyncStatus.FileSync
43-
=> new CloudDriveSyncStatusUI("\uE895", syncStatus, "CloudDriveSyncStatus_Sync"),
47+
=> new CloudDriveSyncStatusUI("\uE895", (Style)Application.Current.Resources["ColorIconCloudSyncing"], syncStatus, "CloudDriveSyncStatus_Sync"),
4448

4549
// Folder
4650
CloudDriveSyncStatus.FolderOnline or CloudDriveSyncStatus.FolderOfflinePartial
47-
=> new CloudDriveSyncStatusUI("\uE753", syncStatus, "CloudDriveSyncStatus_PartialOffline"),
51+
=> new CloudDriveSyncStatusUI("\uE753", (Style)Application.Current.Resources["ColorIconCloud"], syncStatus, "CloudDriveSyncStatus_PartialOffline"),
4852
CloudDriveSyncStatus.FolderOfflineFull or CloudDriveSyncStatus.FolderOfflinePinned or CloudDriveSyncStatus.FolderEmpty
49-
=> new CloudDriveSyncStatusUI("\uE73E", syncStatus, "CloudDriveSyncStatus_Offline"),
53+
=> new CloudDriveSyncStatusUI("\uE73E", (Style)Application.Current.Resources["ColorIconCloudSynced"], syncStatus, "CloudDriveSyncStatus_Offline"),
5054
CloudDriveSyncStatus.FolderExcluded
51-
=> new CloudDriveSyncStatusUI("\uF140", syncStatus, "CloudDriveSyncStatus_Excluded"),
55+
=> new CloudDriveSyncStatusUI("\uF140", (Style)Application.Current.Resources["ColorIconCloudUnavailable"], syncStatus, "CloudDriveSyncStatus_Excluded"),
5256

5357
// Unknown
5458
_ => new CloudDriveSyncStatusUI(syncStatus),

src/Files.App/Views/LayoutModes/DetailsLayoutBrowser.xaml

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,7 +1018,7 @@
10181018
<Border
10191019
x:Name="ItemGitStatusTextBlock"
10201020
Width="{Binding ColumnsViewModel.GitStatusColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
1021-
Padding="12,0,0,0"
1021+
Padding="10,0,0,0"
10221022
HorizontalAlignment="Stretch"
10231023
VerticalAlignment="Center"
10241024
x:Load="{x:Bind IsGitItem}">
@@ -1035,7 +1035,7 @@
10351035
<TextBlock
10361036
x:Name="ItemGitLastCommitDateTextBlock"
10371037
Width="{Binding ColumnsViewModel.GitLastCommitDateColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
1038-
Padding="12,0,0,0"
1038+
Padding="10,0,0,0"
10391039
HorizontalAlignment="Stretch"
10401040
VerticalAlignment="Center"
10411041
x:Load="{x:Bind IsGitItem}"
@@ -1049,7 +1049,7 @@
10491049
<TextBlock
10501050
x:Name="ItemGitLastCommitMessageTextBlock"
10511051
Width="{Binding ColumnsViewModel.GitLastCommitMessageColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
1052-
Padding="12,0,0,0"
1052+
Padding="10,0,0,0"
10531053
HorizontalAlignment="Stretch"
10541054
VerticalAlignment="Center"
10551055
x:Load="{x:Bind IsGitItem}"
@@ -1063,7 +1063,7 @@
10631063
<TextBlock
10641064
x:Name="ItemGitCommitAuthorTextBlock"
10651065
Width="{Binding ColumnsViewModel.GitCommitAuthorColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
1066-
Padding="12,0,0,0"
1066+
Padding="10,0,0,0"
10671067
HorizontalAlignment="Stretch"
10681068
VerticalAlignment="Center"
10691069
x:Load="{x:Bind IsGitItem}"
@@ -1077,7 +1077,7 @@
10771077
<TextBlock
10781078
x:Name="ItemGitLastCommitShaTextBlock"
10791079
Width="{Binding ColumnsViewModel.GitLastCommitShaColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
1080-
Padding="12,0,0,0"
1080+
Padding="10,0,0,0"
10811081
HorizontalAlignment="Stretch"
10821082
VerticalAlignment="Center"
10831083
x:Load="{x:Bind IsGitItem}"
@@ -1245,16 +1245,20 @@
12451245
Visibility="{Binding ColumnsViewModel.SizeColumn.Visibility, ElementName=PageRoot, Mode=OneWay}" />
12461246

12471247
<!-- Item Sync Status Badge -->
1248-
<FontIcon
1248+
<Border
12491249
x:Name="ItemStatus"
12501250
Width="{Binding ColumnsViewModel.StatusColumn.LengthIncludingGridSplitter.Value, ElementName=PageRoot, Mode=OneWay}"
1251-
Margin="10,0,0,0"
1251+
Padding="10,0,0,0"
12521252
HorizontalAlignment="Stretch"
12531253
VerticalAlignment="Center"
12541254
AutomationProperties.Name="{x:Bind SyncStatusString, Mode=OneWay}"
1255-
FontSize="12"
1256-
Glyph="{x:Bind SyncStatusUI.Glyph, Mode=OneWay}"
1257-
Visibility="{Binding ColumnsViewModel.StatusColumn.Visibility, ElementName=PageRoot, Mode=OneWay}" />
1255+
Visibility="{Binding ColumnsViewModel.StatusColumn.Visibility, ElementName=PageRoot, Mode=OneWay}">
1256+
<uc:OpacityIcon
1257+
Width="16"
1258+
Height="16"
1259+
HorizontalAlignment="Left"
1260+
Style="{x:Bind SyncStatusUI.OpacityIcon, Mode=OneWay}" />
1261+
</Border>
12581262

12591263
<!-- Visual Status Managing -->
12601264
<VisualStateManager.VisualStateGroups>

src/Files.App/Views/LayoutModes/GridViewBrowser.xaml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -174,15 +174,16 @@
174174
<ColumnDefinition Width="*" />
175175
</Grid.ColumnDefinitions>
176176

177-
<FontIcon
177+
<uc:OpacityIcon
178178
x:Name="CloudDriveSyncStatusGlyph"
179179
Grid.Column="0"
180+
Width="16"
181+
Height="16"
180182
Margin="0,0,4,0"
181-
VerticalAlignment="Stretch"
183+
HorizontalAlignment="Left"
182184
x:Load="{x:Bind ((cloud:CloudDriveSyncStatusUI)SyncStatusUI).LoadSyncStatus, Mode=OneWay}"
183185
x:Phase="2"
184-
FontSize="12"
185-
Glyph="{x:Bind ((cloud:CloudDriveSyncStatusUI)SyncStatusUI).Glyph, Mode=OneWay}" />
186+
Style="{x:Bind ((cloud:CloudDriveSyncStatusUI)SyncStatusUI).OpacityIcon, Mode=OneWay}" />
186187

187188
<Ellipse
188189
Grid.Column="1"
@@ -284,11 +285,13 @@
284285
Fill="{x:Bind FileTagsUI[0].Color, Mode=OneWay, Converter={StaticResource StringToBrushConverter}}"
285286
ToolTipService.ToolTip="{x:Bind FileTagsUI[0].Name, Mode=OneWay}"
286287
Visibility="{x:Bind FileTagsUI, Converter={StaticResource EmptyObjectToObjectConverter}, Mode=OneWay}" />
287-
<FontIcon
288+
289+
<uc:OpacityIcon
288290
x:Name="CloudDriveSyncStatusGlyph"
291+
Width="16"
292+
Height="16"
289293
x:Phase="2"
290-
FontSize="12"
291-
Glyph="{x:Bind ((cloud:CloudDriveSyncStatusUI)SyncStatusUI).Glyph, Mode=OneWay}"
294+
Style="{x:Bind ((cloud:CloudDriveSyncStatusUI)SyncStatusUI).OpacityIcon, Mode=OneWay}"
292295
Visibility="{Binding InstanceViewModel.IsPageTypeCloudDrive, ElementName=PageRoot, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}}" />
293296
</StackPanel>
294297

0 commit comments

Comments
 (0)