Files
Speckle.Material.Avalonia/Material.Dialog/ViewModels/TimePickerDialogViewModel.cs
T
2021-02-25 08:47:39 +09:00

164 lines
4.5 KiB
C#

using Avalonia.Layout;
using Avalonia.Threading;
using Material.Dialog.Commands;
using Material.Dialog.ViewModels.TextField;
using Material.Dialog.Views;
using System;
using System.Collections.Generic;
using System.Text;
using Avalonia.Media;
namespace Material.Dialog.ViewModels
{
public class TimePickerDialogViewModel : DialogWindowViewModel
{
private TimePickerDialog _window;
private DialogResultButton[] m_DialogButtons;
public DialogResultButton[] DialogButtons { get => m_DialogButtons; internal set => m_DialogButtons = value; }
private DialogResultButton m_PositiveButton;
public DialogResultButton PositiveButton { get => m_PositiveButton; internal set => m_PositiveButton = value; }
private DialogResultButton m_NegativeButton;
public DialogResultButton NegativeButton { get => m_NegativeButton; internal set => m_NegativeButton = value; }
private ushort _firstField = 0;
public ushort FirstField
{
get => _firstField;
set
{
_firstField = value;
OnPropertyChanged();
}
}
private ushort _secondField = 0;
public ushort SecondField
{
get => _secondField;
set
{
_secondField = value;
OnPropertyChanged();
}
}
private string _firstPanelPointerTransform;
public string FirstPanelPointerTransform
{
get => _firstPanelPointerTransform;
set
{
_firstPanelPointerTransform = value;
OnPropertyChanged();
}
}
private string _secondPanelPointerTransform;
public string SecondPanelPointerTransform
{
get => _secondPanelPointerTransform;
set
{
_secondPanelPointerTransform = value;
OnPropertyChanged();
}
}
private bool _isAm = true;
public bool IsAm
{
get => _isAm;
set
{
_isAm = value;
OnPropertyChanged();
}
}
private int _carouselIndex = 0;
public int CarouselIndex
{
get => _carouselIndex;
set
{
_carouselIndex = value;
OnPropertyChanged();
OnPropertyChanged(nameof(FirstFieldSelected));
OnPropertyChanged(nameof(SecondFieldSelected));
}
}
public bool FirstFieldSelected
{
get => _carouselIndex == 0;
set
{
CarouselIndex = value ? 0 : 1;
OnPropertyChanged();
}
}
public bool SecondFieldSelected
{
get => _carouselIndex == 1;
set
{
CarouselIndex = value ? 1 : 0;
OnPropertyChanged();
}
}
public void SetFirstField(int v)
{
if (v == FirstField)
return;
FirstField = (ushort)v;
FirstPanelPointerTransform = $"rotate({(v / (double)12) * 360}deg)";
}
public void SetSecondField(int v)
{
if (v == SecondField)
return;
SecondField = (ushort)v;
SecondPanelPointerTransform = $"rotate({(v / (double)60) * 360}deg)";
}
public TimePickerDialogViewModel(TimePickerDialog dialog)
{
_window = dialog;
ButtonClick = new RelayCommand(OnPressButton, CanPressButton);
}
public bool ValidateFields()
{
return true;
}
public bool CanPressButton(object args) => true;
public async void OnPressButton(object args)
{
var button = args as DialogResultButton;
if (button is null)
return;
await Dispatcher.UIThread.InvokeAsync(() =>
{
var result = new DateTimePickerDialogResult() { _result = button.Result };
var fields = new List<TextFieldResult>();
result._dateTime = new DateTime();
_window.Result = result;
_window.Close();
});
}
public RelayCommand ButtonClick { get; private set; }
}
}