Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 0 additions & 18 deletions FluentFlyoutWPF/Pages/HomePage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -268,24 +268,6 @@
</StackPanel>
</StackPanel>
</ui:Button>

<ui:Button Appearance="Transparent" Padding="16,4,16,0" Height="56" BorderBrush="Transparent" Margin="0,0,8,0" Click="ExportButton_Click">
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<ui:SymbolIcon Symbol="Save20" FontSize="18" Filled="False" />
<ui:TextBlock Text="{DynamicResource ExportSettings}" FontWeight="Normal" />
</StackPanel>
</StackPanel>
</ui:Button>

<ui:Button Appearance="Transparent" Padding="16,4,16,0" Height="56" BorderBrush="Transparent" Margin="0,0,8,0" Click="ImportButton_Click">
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Vertical" VerticalAlignment="Center">
<ui:SymbolIcon Symbol="FolderOpen20" FontSize="18" Filled="False" />
<ui:TextBlock Text="{DynamicResource ImportSettings}" FontWeight="Normal" />
</StackPanel>
</StackPanel>
</ui:Button>
</StackPanel>

<TextBlock Text="{DynamicResource AboutPremiumTitle}" FontSize="14" FontWeight="SemiBold" Margin="0,36,0,0" />
Expand Down
98 changes: 0 additions & 98 deletions FluentFlyoutWPF/Pages/HomePage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -216,102 +216,4 @@ private void ReportBug_Click(object sender, System.Windows.RoutedEventArgs e)
Logger.Error(ex, "Failed to open bug report page");
}
}

private async void ExportButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
var saveFileDialog = new Microsoft.Win32.SaveFileDialog
{
FileName = $"FluentFlyout_Settings_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}",
DefaultExt = ".xml",
Filter = "XML Files (*.xml)|*.xml|All Files (*.*)|*.*"
};

if (saveFileDialog.ShowDialog() == true)
{
try
{
SettingsManager.SaveSettings(saveFileDialog.FileName);

Wpf.Ui.Controls.MessageBox messageBox = new()
{
Title = Application.Current.FindResource("ExportSuccessful").ToString(),
Content = Application.Current.FindResource("SettingsExportedSuccessfully").ToString(),
CloseButtonText = "OK",
};

_ = messageBox.ShowDialogAsync();
}
catch (Exception ex)
{
Logger.Error(ex, "Error exporting settings");

Wpf.Ui.Controls.MessageBox messageBox = new()
{
Title = Application.Current.FindResource("ExportFailed").ToString(),
Content = Application.Current.FindResource("FailedToExportSettings").ToString(),
CloseButtonText = "OK",
};

_ = messageBox.ShowDialogAsync();
}
}
}

private async void ImportButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
var openFileDialog = new Microsoft.Win32.OpenFileDialog
{
DefaultExt = ".xml",
Filter = "XML Files (*.xml)|*.xml|All Files (*.*)|*.*"
};

if (openFileDialog.ShowDialog() == true)
{
Wpf.Ui.Controls.MessageBox confirmBox = new()
{
Title = Application.Current.FindResource("ImportSettings").ToString(),
Content = Application.Current.FindResource("ImportSettingsWarning").ToString(),
CloseButtonText = "No",
SecondaryButtonText = "Yes",
};

var result = await confirmBox.ShowDialogAsync();

if (result == Wpf.Ui.Controls.MessageBoxResult.Secondary)
{
try
{
SettingsManager settingsManager = new();
settingsManager.RestoreSettings(openFileDialog.FileName);
SettingsManager.SaveSettings();

Wpf.Ui.Controls.MessageBox messageBox = new()
{
Title = Application.Current.FindResource("ImportSuccessful").ToString(),
Content = Application.Current.FindResource("SettingsImportedSuccessfully").ToString(),
CloseButtonText = "OK",
};

_ = messageBox.ShowDialogAsync();

// Restart the application
Application.Current.Shutdown();
System.Diagnostics.Process.Start(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
}
catch (Exception ex)
{
Logger.Error(ex, "Error importing settings");

Wpf.Ui.Controls.MessageBox messageBox = new()
{
Title = Application.Current.FindResource("ImportFailed").ToString(),
Content = Application.Current.FindResource("FailedToImportSettings").ToString(),
CloseButtonText = "OK",
};

_ = messageBox.ShowDialogAsync();
}
}
}
}
}
12 changes: 12 additions & 0 deletions FluentFlyoutWPF/Pages/SystemPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,18 @@
<controls:ToggleSwitch x:Name="NIconHideSwitch" IsChecked="{Binding NIconHide, Mode=TwoWay}" IsEnabled="{Binding IsPremiumUnlocked}" Click="ToggleSwitch_Click" />
</ui:CardControl>

<!-- back up & restore section -->
<TextBlock Text="{DynamicResource BackupRestoreSectionTitle}" FontSize="14" FontWeight="SemiBold" Margin="0,12,0,6" />
<ui:CardControl Icon="{ui:SymbolIcon ArrowCounterclockwise24}" Margin="0,0,0,3">
<ui:CardControl.Header>
<TextBlock Text="{DynamicResource BackupRestoreCardTitle}" FontSize="14" FontWeight="Regular" VerticalAlignment="Center" />
</ui:CardControl.Header>
<StackPanel Orientation="Horizontal">
<ui:Button Content="{DynamicResource ExportSettings}" Click="ExportButton_Click" Margin="0,0,6,0" />
<ui:Button Content="{DynamicResource ImportSettings}" Click="ImportButton_Click" />
</StackPanel>
</ui:CardControl>

<!-- update section -->
<TextBlock Text="{DynamicResource UpdatesSectionTitle}" FontSize="14" FontWeight="SemiBold" Margin="0,12,0,6" />
<ui:CardControl Margin="0,0,0,76" >
Expand Down
102 changes: 101 additions & 1 deletion FluentFlyoutWPF/Pages/SystemPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
// SPDX-License-Identifier: GPL-3.0-or-later

using FluentFlyout.Classes.Settings;
using FluentFlyoutWPF.Classes;
using FluentFlyoutWPF.Classes.Utils;
using Microsoft.Win32;
using NLog;
using System.Diagnostics;
using System.IO;
using System.Windows;
Expand All @@ -15,6 +15,7 @@ namespace FluentFlyoutWPF.Pages;

public partial class SystemPage : Page
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
public SystemPage()
{
InitializeComponent();
Expand Down Expand Up @@ -97,4 +98,103 @@ private void UpdateMonitorList()
() => SettingsManager.Current.FlyoutSelectedMonitor,
value => SettingsManager.Current.FlyoutSelectedMonitor = value);
}


private async void ExportButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
var saveFileDialog = new Microsoft.Win32.SaveFileDialog
{
FileName = $"FluentFlyout_Settings_{DateTime.Now:yyyy-MM-dd_HH-mm-ss}",
DefaultExt = ".xml",
Filter = "XML Files (*.xml)|*.xml|All Files (*.*)|*.*"
};

if (saveFileDialog.ShowDialog() == true)
{
try
{
SettingsManager.SaveSettings(saveFileDialog.FileName);

Wpf.Ui.Controls.MessageBox messageBox = new()
{
Title = Application.Current.FindResource("ExportSuccessful").ToString(),
Content = Application.Current.FindResource("SettingsExportedSuccessfully").ToString(),
CloseButtonText = "OK",
};

_ = messageBox.ShowDialogAsync();
}
catch (Exception ex)
{
Logger.Error(ex, "Error exporting settings");

Wpf.Ui.Controls.MessageBox messageBox = new()
{
Title = Application.Current.FindResource("ExportFailed").ToString(),
Content = Application.Current.FindResource("FailedToExportSettings").ToString(),
CloseButtonText = "OK",
};

_ = messageBox.ShowDialogAsync();
}
}
}

private async void ImportButton_Click(object sender, System.Windows.RoutedEventArgs e)
{
var openFileDialog = new Microsoft.Win32.OpenFileDialog
{
DefaultExt = ".xml",
Filter = "XML Files (*.xml)|*.xml|All Files (*.*)|*.*"
};

if (openFileDialog.ShowDialog() == true)
{
Wpf.Ui.Controls.MessageBox confirmBox = new()
{
Title = Application.Current.FindResource("ImportSettings").ToString(),
Content = Application.Current.FindResource("ImportSettingsWarning").ToString(),
CloseButtonText = "No",
SecondaryButtonText = "Yes",
};

var result = await confirmBox.ShowDialogAsync();

if (result == Wpf.Ui.Controls.MessageBoxResult.Secondary)
{
try
{
SettingsManager settingsManager = new();
settingsManager.RestoreSettings(openFileDialog.FileName);
SettingsManager.SaveSettings();

Wpf.Ui.Controls.MessageBox messageBox = new()
{
Title = Application.Current.FindResource("ImportSuccessful").ToString(),
Content = Application.Current.FindResource("SettingsImportedSuccessfully").ToString(),
CloseButtonText = "OK",
};

_ = messageBox.ShowDialogAsync();

// Restart the application
Application.Current.Shutdown();
System.Diagnostics.Process.Start(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);
}
catch (Exception ex)
{
Logger.Error(ex, "Error importing settings");

Wpf.Ui.Controls.MessageBox messageBox = new()
{
Title = Application.Current.FindResource("ImportFailed").ToString(),
Content = Application.Current.FindResource("FailedToImportSettings").ToString(),
CloseButtonText = "OK",
};

_ = messageBox.ShowDialogAsync();
}
}
}
}
}
2 changes: 2 additions & 0 deletions FluentFlyoutWPF/Resources/Localization/Dictionary-en-US.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,8 @@ You can help contribute translations on</System:String>
<System:String x:Key="UpdateAvailableNotificationMessage">A new version ({0}) is available.</System:String>
<System:String x:Key="UpdateAvailableNotificationButton">Download Update</System:String>
<System:String x:Key="ShowUpdateNotificationsTitle">Show notifications for new updates</System:String>
<System:String x:Key="BackupRestoreSectionTitle">Back up &amp; restore</System:String>
<System:String x:Key="BackupRestoreCardTitle">Back up and restore your settings</System:String>
<System:String x:Key="ExportSettings">Export Settings</System:String>
<System:String x:Key="ImportSettings">Import Settings</System:String>
<System:String x:Key="ExportSuccessful">Export Successful</System:String>
Expand Down