diff --git a/src/DesktopMagic/MainWindowDataContext.cs b/src/DesktopMagic/DataContexts/MainWindowDataContext.cs similarity index 95% rename from src/DesktopMagic/MainWindowDataContext.cs rename to src/DesktopMagic/DataContexts/MainWindowDataContext.cs index d17ce5f..8cb37c0 100644 --- a/src/DesktopMagic/MainWindowDataContext.cs +++ b/src/DesktopMagic/DataContexts/MainWindowDataContext.cs @@ -3,7 +3,7 @@ using System.ComponentModel; using System.Runtime.CompilerServices; -namespace DesktopMagic; +namespace DesktopMagic.DataContexts; internal class MainWindowDataContext : INotifyPropertyChanged { diff --git a/src/DesktopMagic/DataContexts/ModEntryDataContext.cs b/src/DesktopMagic/DataContexts/ModEntryDataContext.cs new file mode 100644 index 0000000..5732e0d --- /dev/null +++ b/src/DesktopMagic/DataContexts/ModEntryDataContext.cs @@ -0,0 +1,16 @@ +using Modio.NET.Models; + +using System; + +namespace DesktopMagic.DataContexts; +internal class ModEntryDataContext(Mod mod) +{ + public string Name => mod.Name!; + + public string Description => mod.DescriptionPlaintext!; + + public string? Logo => mod.Logo?.Thumb320x180?.ToString(); + + public DateTime FormattedDateAdded => DateTimeOffset.FromUnixTimeSeconds(mod.DateAdded).LocalDateTime; + public DateTime FormattedDateUpdated => DateTimeOffset.FromUnixTimeSeconds(mod.DateUpdated).LocalDateTime; +} diff --git a/src/DesktopMagic/DataContexts/PluginManagerDataContext.cs b/src/DesktopMagic/DataContexts/PluginManagerDataContext.cs new file mode 100644 index 0000000..67abb77 --- /dev/null +++ b/src/DesktopMagic/DataContexts/PluginManagerDataContext.cs @@ -0,0 +1,16 @@ +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Runtime.CompilerServices; + +namespace DesktopMagic.DataContexts; +internal class PluginManagerDataContext : INotifyPropertyChanged +{ + public event PropertyChangedEventHandler? PropertyChanged; + + public ObservableCollection Mods { get; } = []; + + protected void OnPropertyChanged([CallerMemberName] string? name = null) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); + } +} diff --git a/src/DesktopMagic/DesktopMagic.csproj b/src/DesktopMagic/DesktopMagic.csproj index 02bf5e4..a73e875 100644 --- a/src/DesktopMagic/DesktopMagic.csproj +++ b/src/DesktopMagic/DesktopMagic.csproj @@ -31,6 +31,7 @@ + diff --git a/src/DesktopMagic/MainWindow.xaml b/src/DesktopMagic/MainWindow.xaml index f8aa17a..d14d802 100644 --- a/src/DesktopMagic/MainWindow.xaml +++ b/src/DesktopMagic/MainWindow.xaml @@ -6,7 +6,8 @@ mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:DesktopMagic" - d:DataContext="{d:DesignInstance Type=local:MainWindowDataContext}" + xmlns:dataContext="clr-namespace:DesktopMagic.DataContexts" + d:DataContext="{d:DesignInstance Type=dataContext:PluginManagerDataContext}" Closing="Window_Closing" Closed="Window_Closed" ShowInTaskbar="True" diff --git a/src/DesktopMagic/MainWindow.xaml.cs b/src/DesktopMagic/MainWindow.xaml.cs index 755b32d..bd053af 100644 --- a/src/DesktopMagic/MainWindow.xaml.cs +++ b/src/DesktopMagic/MainWindow.xaml.cs @@ -1,4 +1,5 @@ using DesktopMagic.BuiltInWindowElements; +using DesktopMagic.DataContexts; using DesktopMagic.Dialogs; using DesktopMagic.Helpers; using DesktopMagic.Plugins; @@ -642,6 +643,10 @@ namespace DesktopMagic private void DownloadPluginsButton_Click(object sender, RoutedEventArgs e) { + PluginManager pluginManager = new PluginManager(); + pluginManager.ShowDialog(); + + return; string uri = "https://github.com/Stone-Red-Code/DesktopMagic-Plugins"; ProcessStartInfo psi = new ProcessStartInfo { diff --git a/src/DesktopMagic/Plugins/ModEntry.xaml b/src/DesktopMagic/Plugins/ModEntry.xaml new file mode 100644 index 0000000..6c9db37 --- /dev/null +++ b/src/DesktopMagic/Plugins/ModEntry.xaml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + +