2020-04-08 01:19:14 +08:00
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
2020-10-30 05:24:16 +08:00
using System ;
using System.Diagnostics.CodeAnalysis ;
using System.Globalization ;
2020-10-27 02:06:35 +08:00
using System.Linq ;
2020-10-23 00:45:48 +08:00
using Microsoft.PowerToys.Settings.UI.Library ;
using Microsoft.PowerToys.Settings.UI.Library.Utilities ;
using Microsoft.PowerToys.Settings.UI.Library.ViewModels ;
2020-08-19 04:43:58 +08:00
using Windows.UI.Xaml ;
2020-03-31 20:32:22 +08:00
using Windows.UI.Xaml.Controls ;
namespace Microsoft.PowerToys.Settings.UI.Views
{
public sealed partial class ImageResizerPage : Page
{
2020-08-19 04:43:58 +08:00
public ImageResizerViewModel ViewModel { get ; set ; }
2020-03-31 20:32:22 +08:00
public ImageResizerPage ( )
{
2020-04-11 06:22:07 +08:00
InitializeComponent ( ) ;
2020-11-03 01:33:43 +08:00
var settingsUtils = new SettingsUtils ( ) ;
2020-09-24 04:20:32 +08:00
ViewModel = new ImageResizerViewModel ( settingsUtils , SettingsRepository < GeneralSettings > . GetInstance ( settingsUtils ) , ShellPage . SendDefaultIPCMessage ) ;
2020-07-18 02:01:46 +08:00
DataContext = ViewModel ;
2020-03-31 20:32:22 +08:00
}
2020-08-19 04:43:58 +08:00
public void DeleteCustomSize ( object sender , RoutedEventArgs e )
{
2020-10-30 05:24:16 +08:00
Button deleteRowButton = ( Button ) sender ;
// Using InvariantCulture since this is internal and expected to be numerical
bool success = int . TryParse ( deleteRowButton ? . CommandParameter ? . ToString ( ) , NumberStyles . Integer , CultureInfo . InvariantCulture , out int rowNum ) ;
if ( success )
2020-08-19 04:43:58 +08:00
{
ViewModel . DeleteImageSize ( rowNum ) ;
}
2020-10-30 05:24:16 +08:00
else
2020-08-19 04:43:58 +08:00
{
2020-10-30 05:24:16 +08:00
Logger . LogError ( "Failed to delete custom image size." ) ;
2020-08-19 04:43:58 +08:00
}
}
2020-10-30 05:24:16 +08:00
[SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "JSON exceptions from saving new settings should be caught and logged.")]
2020-08-19 04:43:58 +08:00
private void AddSizeButton_Click ( object sender , RoutedEventArgs e )
{
try
{
ViewModel . AddRow ( ) ;
}
2020-10-30 05:24:16 +08:00
catch ( Exception ex )
2020-08-19 04:43:58 +08:00
{
2020-10-30 05:24:16 +08:00
Logger . LogError ( "Exception encountered when adding a new image size." , ex ) ;
2020-08-19 04:43:58 +08:00
}
}
2020-10-27 02:06:35 +08:00
2020-10-30 05:24:16 +08:00
[SuppressMessage("Usage", "CA1801:Review unused parameters", Justification = "Params are required for event handler signature requirements.")]
2020-10-27 02:06:35 +08:00
private void ImagesSizesListView_ContainerContentChanging ( ListViewBase sender , ContainerContentChangingEventArgs args )
{
if ( ViewModel . IsListViewFocusRequested )
{
// Set focus to the last item in the ListView
int size = ImagesSizesListView . Items . Count ;
( ( ListViewItem ) ImagesSizesListView . ContainerFromIndex ( size - 1 ) ) . Focus ( FocusState . Programmatic ) ;
// Reset the focus requested flag
ViewModel . IsListViewFocusRequested = false ;
}
}
2020-03-31 20:32:22 +08:00
}
}