bloxstrap/Bloxstrap/ViewModels/IntegrationsViewModel.cs
pizzaboxer 58fb73c127
Refactor class structure for singletons/utilities
cleanup necessary namespaces and adjust namespaces for certain classes to better represent what they're for
models, helpers and tools are all different and shouldnt really be under the same namespace
2023-04-26 21:14:35 +01:00

117 lines
3.7 KiB
C#

using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Windows.Input;
using CommunityToolkit.Mvvm.Input;
using Bloxstrap.Models;
namespace Bloxstrap.ViewModels
{
public class IntegrationsViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
public void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
public ICommand OpenReShadeFolderCommand => new RelayCommand(OpenReShadeFolder);
public ICommand AddIntegrationCommand => new RelayCommand(AddIntegration);
public ICommand DeleteIntegrationCommand => new RelayCommand(DeleteIntegration);
public bool CanOpenReShadeFolder => App.Settings.Prop.UseReShade;
private void OpenReShadeFolder()
{
Process.Start("explorer.exe", Path.Combine(Directories.Integrations, "ReShade"));
}
private void AddIntegration()
{
CustomIntegrations.Add(new CustomIntegration()
{
Name = "New Integration"
});
SelectedCustomIntegrationIndex = CustomIntegrations.Count - 1;
OnPropertyChanged(nameof(SelectedCustomIntegrationIndex));
OnPropertyChanged(nameof(IsCustomIntegrationSelected));
}
private void DeleteIntegration()
{
if (SelectedCustomIntegration is null)
return;
CustomIntegrations.Remove(SelectedCustomIntegration);
if (CustomIntegrations.Count > 0)
{
SelectedCustomIntegrationIndex = CustomIntegrations.Count - 1;
OnPropertyChanged(nameof(SelectedCustomIntegrationIndex));
}
OnPropertyChanged(nameof(IsCustomIntegrationSelected));
}
public bool DiscordActivityEnabled
{
get => App.Settings.Prop.UseDiscordRichPresence;
set
{
App.Settings.Prop.UseDiscordRichPresence = value;
if (!value)
{
DiscordActivityJoinEnabled = value;
OnPropertyChanged(nameof(DiscordActivityJoinEnabled));
}
}
}
public bool DiscordActivityJoinEnabled
{
get => !App.Settings.Prop.HideRPCButtons;
set => App.Settings.Prop.HideRPCButtons = !value;
}
public bool ReShadeEnabled
{
get => App.Settings.Prop.UseReShade;
set
{
App.Settings.Prop.UseReShade = value;
ReShadePresetsEnabled = value;
if (value)
App.FastFlags.SetRenderingMode("Direct3D 11");
OnPropertyChanged(nameof(ReShadePresetsEnabled));
}
}
public bool ReShadePresetsEnabled
{
get => App.Settings.Prop.UseReShadeExtraviPresets;
set => App.Settings.Prop.UseReShadeExtraviPresets = value;
}
public bool ShowServerDetailsEnabled
{
get => App.Settings.Prop.ShowServerDetails;
set => App.Settings.Prop.ShowServerDetails = value;
}
public ObservableCollection<CustomIntegration> CustomIntegrations
{
get => App.Settings.Prop.CustomIntegrations;
set => App.Settings.Prop.CustomIntegrations = value;
}
public CustomIntegration? SelectedCustomIntegration { get; set; }
public int SelectedCustomIntegrationIndex { get; set; }
public bool IsCustomIntegrationSelected => SelectedCustomIntegration is not null;
}
}