mirror of
https://github.com/bloxstraplabs/bloxstrap.git
synced 2025-04-18 00:21:33 -07:00
130 lines
4.1 KiB
C#
130 lines
4.1 KiB
C#
using System.Collections.ObjectModel;
|
|
using System.Windows.Input;
|
|
|
|
using Microsoft.Win32;
|
|
|
|
using CommunityToolkit.Mvvm.Input;
|
|
|
|
namespace Bloxstrap.UI.ViewModels.Settings
|
|
{
|
|
public class IntegrationsViewModel : NotifyPropertyChangedViewModel
|
|
{
|
|
public ICommand AddIntegrationCommand => new RelayCommand(AddIntegration);
|
|
|
|
public ICommand DeleteIntegrationCommand => new RelayCommand(DeleteIntegration);
|
|
|
|
public ICommand BrowseIntegrationLocationCommand => new RelayCommand(BrowseIntegrationLocation);
|
|
|
|
private void AddIntegration()
|
|
{
|
|
CustomIntegrations.Add(new CustomIntegration()
|
|
{
|
|
Name = Strings.Menu_Integrations_Custom_NewIntegration
|
|
});
|
|
|
|
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));
|
|
}
|
|
|
|
private void BrowseIntegrationLocation()
|
|
{
|
|
if (SelectedCustomIntegration is null)
|
|
return;
|
|
|
|
var dialog = new OpenFileDialog
|
|
{
|
|
Filter = $"{Strings.Menu_AllFiles}|*.*"
|
|
};
|
|
|
|
if (dialog.ShowDialog() != true)
|
|
return;
|
|
|
|
SelectedCustomIntegration.Location = dialog.FileName;
|
|
OnPropertyChanged(nameof(SelectedCustomIntegration));
|
|
}
|
|
|
|
public bool ActivityTrackingEnabled
|
|
{
|
|
get => App.Settings.Prop.EnableActivityTracking;
|
|
set
|
|
{
|
|
App.Settings.Prop.EnableActivityTracking = value;
|
|
|
|
if (!value)
|
|
{
|
|
ShowServerDetailsEnabled = value;
|
|
DisableAppPatchEnabled = value;
|
|
DiscordActivityEnabled = value;
|
|
DiscordActivityJoinEnabled = value;
|
|
|
|
OnPropertyChanged(nameof(ShowServerDetailsEnabled));
|
|
OnPropertyChanged(nameof(DisableAppPatchEnabled));
|
|
OnPropertyChanged(nameof(DiscordActivityEnabled));
|
|
OnPropertyChanged(nameof(DiscordActivityJoinEnabled));
|
|
}
|
|
}
|
|
}
|
|
|
|
public bool ShowServerDetailsEnabled
|
|
{
|
|
get => App.Settings.Prop.ShowServerDetails;
|
|
set => App.Settings.Prop.ShowServerDetails = value;
|
|
}
|
|
|
|
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 DisableAppPatchEnabled
|
|
{
|
|
get => App.Settings.Prop.UseDisableAppPatch;
|
|
set => App.Settings.Prop.UseDisableAppPatch = 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;
|
|
}
|
|
}
|