Files
PowerToys/src/modules/peek/Peek.FilePreviewer/Controls/DriveControl.xaml.cs
Jay 8a210865ff [Peek]Fix icons, removed unneeded RTL code, ui tweaks and code suggestions (#32087)
* Force file pickers to open modal

* remove unneeded RTL code

* better icons and analyzer suggestions

* additions for preview controls

* more code improvs

* two nits in strings

* Adressing feedback

icon margin, drive usage bar, TitleBarHeightOption
2024-04-16 10:04:46 +01:00

82 lines
2.9 KiB
C#

// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Globalization;
using CommunityToolkit.Mvvm.ComponentModel;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Peek.Common.Helpers;
using Peek.FilePreviewer.Previewers.Drive.Models;
using Windows.Foundation;
namespace Peek.FilePreviewer.Controls
{
[INotifyPropertyChanged]
public sealed partial class DriveControl : UserControl
{
[ObservableProperty]
private Rect _spaceBarClip;
public static readonly DependencyProperty SourceProperty = DependencyProperty.Register(
nameof(Source),
typeof(DrivePreviewData),
typeof(DriveControl),
new PropertyMetadata(null, new PropertyChangedCallback((d, e) => ((DriveControl)d).UpdateSpaceBar())));
public DrivePreviewData? Source
{
get { return (DrivePreviewData)GetValue(SourceProperty); }
set { SetValue(SourceProperty, value); }
}
public DriveControl()
{
this.InitializeComponent();
}
public string FormatType(string type)
{
return string.Format(CultureInfo.CurrentCulture, ResourceLoaderInstance.ResourceLoader.GetString("Drive_Type"), type);
}
public string FormatFileSystem(string fileSystem)
{
return string.Format(CultureInfo.CurrentCulture, ResourceLoaderInstance.ResourceLoader.GetString("Drive_FileSystem"), fileSystem);
}
public string FormatCapacity(ulong capacity)
{
return string.Format(CultureInfo.CurrentCulture, ResourceLoaderInstance.ResourceLoader.GetString("Drive_Capacity"), ReadableStringHelper.BytesToReadableString(capacity, false));
}
public string FormatFreeSpace(ulong freeSpace)
{
return string.Format(CultureInfo.CurrentCulture, ResourceLoaderInstance.ResourceLoader.GetString("Drive_FreeSpace"), ReadableStringHelper.BytesToReadableString(freeSpace, false));
}
public string FormatUsedSpace(ulong usedSpace)
{
return string.Format(CultureInfo.CurrentCulture, ResourceLoaderInstance.ResourceLoader.GetString("Drive_UsedSpace"), ReadableStringHelper.BytesToReadableString(usedSpace, false));
}
private void SizeChanged_Handler(object sender, SizeChangedEventArgs e)
{
UpdateSpaceBar();
}
private void UpdateSpaceBar()
{
if (Source != null && Source.PercentageUsage > 0)
{
var usedWidth = CapacityBar.ActualWidth * Source!.PercentageUsage;
SpaceBarClip = new(0, 0, usedWidth, 16);
}
else
{
SpaceBarClip = new(0, 0, 0, 0);
}
}
}
}