2020-04-07 10:19:14 -07: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-29 14:24:16 -07:00
using System ;
using System.Diagnostics.CodeAnalysis ;
using System.Globalization ;
2020-10-26 11:06:35 -07:00
using System.Linq ;
2020-10-22 09:45:48 -07:00
using Microsoft.PowerToys.Settings.UI.Library ;
using Microsoft.PowerToys.Settings.UI.Library.Utilities ;
using Microsoft.PowerToys.Settings.UI.Library.ViewModels ;
2020-08-18 13:43:58 -07:00
using Windows.UI.Xaml ;
2020-03-31 14:32:22 +02:00
using Windows.UI.Xaml.Controls ;
namespace Microsoft.PowerToys.Settings.UI.Views
{
public sealed partial class ImageResizerPage : Page
{
2020-08-18 13:43:58 -07:00
public ImageResizerViewModel ViewModel { get ; set ; }
2020-03-31 14:32:22 +02:00
public ImageResizerPage ( )
{
2020-04-10 15:22:07 -07:00
InitializeComponent ( ) ;
2020-11-02 18:33:43 +01:00
var settingsUtils = new SettingsUtils ( ) ;
2020-09-23 13:20:32 -07:00
ViewModel = new ImageResizerViewModel ( settingsUtils , SettingsRepository < GeneralSettings > . GetInstance ( settingsUtils ) , ShellPage . SendDefaultIPCMessage ) ;
2020-07-17 11:01:46 -07:00
DataContext = ViewModel ;
2020-03-31 14:32:22 +02:00
}
2020-08-18 13:43:58 -07:00
public void DeleteCustomSize ( object sender , RoutedEventArgs e )
{
2020-10-29 14:24:16 -07: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-18 13:43:58 -07:00
{
ViewModel . DeleteImageSize ( rowNum ) ;
}
2020-10-29 14:24:16 -07:00
else
2020-08-18 13:43:58 -07:00
{
2020-10-29 14:24:16 -07:00
Logger . LogError ( "Failed to delete custom image size." ) ;
2020-08-18 13:43:58 -07:00
}
}
2020-10-29 14:24:16 -07:00
[SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "JSON exceptions from saving new settings should be caught and logged.")]
2020-08-18 13:43:58 -07:00
private void AddSizeButton_Click ( object sender , RoutedEventArgs e )
{
try
{
ViewModel . AddRow ( ) ;
}
2020-10-29 14:24:16 -07:00
catch ( Exception ex )
2020-08-18 13:43:58 -07:00
{
2020-10-29 14:24:16 -07:00
Logger . LogError ( "Exception encountered when adding a new image size." , ex ) ;
2020-08-18 13:43:58 -07:00
}
}
2020-10-26 11:06:35 -07:00
2020-10-29 14:24:16 -07:00
[SuppressMessage("Usage", "CA1801:Review unused parameters", Justification = "Params are required for event handler signature requirements.")]
2020-10-26 11:06:35 -07: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 14:32:22 +02:00
}
}