[ImageResizer] Default values for new size (#13285)

* Code changes

* small fix in unittests

* Add new Unit Test

* Fix tests

* fix typo

* remove unused code from unit test

* Update resource string name

* Add name counter

* comment update

* Update tests
This commit is contained in:
Heiko
2021-09-22 00:55:42 +02:00
committed by GitHub
parent 4bc2de7b7b
commit f9bb7ba270
4 changed files with 80 additions and 7 deletions

View File

@@ -250,11 +250,16 @@ namespace Microsoft.PowerToys.Settings.UI.Library.ViewModels
}
}
public void AddRow()
public void AddRow(string sizeNamePrefix)
{
// Without validation we get warning CA1062 when unsing the parameter variable sizeNamePrefix
string prefixString = string.IsNullOrEmpty(sizeNamePrefix) ? "New Size" : sizeNamePrefix;
ObservableCollection<ImageSize> imageSizes = Sizes;
int maxId = imageSizes.Count > 0 ? imageSizes.OrderBy(x => x.Id).Last().Id : -1;
ImageSize newSize = new ImageSize(maxId + 1);
string sizeName = GenerateNameForNewSize(imageSizes, prefixString);
ImageSize newSize = new ImageSize(maxId + 1, sizeName, ResizeFit.Fit, 854, 480, ResizeUnit.Pixel);
newSize.PropertyChanged += SizePropertyChanged;
imageSizes.Add(newSize);
_advancedSizes = imageSizes;
@@ -371,5 +376,28 @@ namespace Microsoft.PowerToys.Settings.UI.Library.ViewModels
_advancedSizes = imageSizes;
SavesImageSizes(imageSizes);
}
private static string GenerateNameForNewSize(in ObservableCollection<ImageSize> sizesList, in string namePrefix)
{
int newSizeCounter = 0;
foreach (ImageSize imgSize in sizesList)
{
string name = imgSize.Name;
if (name.StartsWith(namePrefix, StringComparison.InvariantCulture))
{
if (int.TryParse(name.Substring(namePrefix.Length), out int number))
{
if (newSizeCounter < number)
{
newSizeCounter = number;
}
}
}
}
return $"{namePrefix} {++newSizeCounter}";
}
}
}