ffmpeg essentials fix Project reorganized git lfs ffmpeg removed ffmpeg added
120 lines
4.0 KiB
C#
120 lines
4.0 KiB
C#
using Microsoft.UI.Xaml;
|
|
using Microsoft.UI.Xaml.Controls;
|
|
using Microsoft.UI.Xaml.Controls.Primitives;
|
|
using Microsoft.UI.Xaml.Data;
|
|
using Microsoft.UI.Xaml.Input;
|
|
using Microsoft.UI.Xaml.Media;
|
|
using Microsoft.UI.Xaml.Navigation;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices.WindowsRuntime;
|
|
using Windows.Foundation;
|
|
using Windows.Foundation.Collections;
|
|
|
|
namespace VDownload.Toolkit.UI.Controls
|
|
{
|
|
public sealed partial class TimeSpanControl : UserControl
|
|
{
|
|
#region PROPERTIES
|
|
|
|
public TimeSpan Value
|
|
{
|
|
get => (TimeSpan)GetValue(ValueProperty);
|
|
set => SetValue(ValueProperty, value);
|
|
}
|
|
public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(TimeSpan), typeof(TimeSpanControl), new PropertyMetadata(TimeSpan.Zero, new PropertyChangedCallback(ValuePropertyChanged)));
|
|
|
|
public TimeSpan Maximum
|
|
{
|
|
get => (TimeSpan)GetValue(MaximumProperty);
|
|
set => SetValue(MaximumProperty, value);
|
|
}
|
|
public static readonly DependencyProperty MaximumProperty = DependencyProperty.Register("Maximum", typeof(TimeSpan), typeof(TimeSpanControl), new PropertyMetadata(TimeSpan.MaxValue, new PropertyChangedCallback(RangePropertyChanged)));
|
|
|
|
public TimeSpan Minimum
|
|
{
|
|
get => (TimeSpan)GetValue(MinimumProperty);
|
|
set => SetValue(MinimumProperty, value);
|
|
}
|
|
public static readonly DependencyProperty MinimumProperty = DependencyProperty.Register("Minimum", typeof(TimeSpan), typeof(TimeSpanControl), new PropertyMetadata(TimeSpan.Zero, new PropertyChangedCallback(RangePropertyChanged)));
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region CONSTRUCTORS
|
|
|
|
public TimeSpanControl()
|
|
{
|
|
this.InitializeComponent();
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region PRIVATE METHODS
|
|
|
|
private void UpdateOnChanges()
|
|
{
|
|
if (this.IsLoaded)
|
|
{
|
|
TimeSpan hoursTimeSpan = TimeSpan.FromHours(Hours.Value);
|
|
TimeSpan minutesTimeSpan = TimeSpan.FromMinutes(Minutes.Value);
|
|
TimeSpan secondsTimeSpan = TimeSpan.FromSeconds(Seconds.Value);
|
|
TimeSpan value = secondsTimeSpan + minutesTimeSpan + hoursTimeSpan;
|
|
if (value >= Maximum)
|
|
{
|
|
Hours.Value = Math.Floor(Maximum.TotalHours);
|
|
Minutes.Value = Maximum.Minutes;
|
|
Seconds.Value = Maximum.Seconds;
|
|
}
|
|
else if (value <= Minimum)
|
|
{
|
|
Hours.Value = Math.Floor(Minimum.TotalHours);
|
|
Minutes.Value = Minimum.Minutes;
|
|
Seconds.Value = Minimum.Seconds;
|
|
}
|
|
Value = value;
|
|
}
|
|
}
|
|
|
|
private void UpdateOnValueChange()
|
|
{
|
|
if (this.IsLoaded)
|
|
{
|
|
TimeSpan value = Value;
|
|
if (value > Maximum)
|
|
{
|
|
value = Maximum;
|
|
}
|
|
else if (value < Minimum)
|
|
{
|
|
value = Minimum;
|
|
}
|
|
Hours.Value = Math.Floor(value.TotalHours);
|
|
Minutes.Value = value.Minutes;
|
|
Seconds.Value = value.Seconds;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
#region EVENT HANDLERS
|
|
|
|
private void ValueChanged(NumberBox sender, NumberBoxValueChangedEventArgs args) => UpdateOnChanges();
|
|
|
|
private static void ValuePropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) => ((TimeSpanControl)obj).UpdateOnValueChange();
|
|
|
|
private static void RangePropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) => ((TimeSpanControl)obj).UpdateOnChanges();
|
|
|
|
private void Control_Loaded(object sender, RoutedEventArgs e) => UpdateOnValueChange();
|
|
|
|
#endregion
|
|
}
|
|
}
|