Skip to content

Commit

Permalink
updated fallback encoder and sizers configs
Browse files Browse the repository at this point in the history
  • Loading branch information
Lavius Motileng committed Apr 25, 2020
1 parent 12076cc commit fa7741b
Show file tree
Hide file tree
Showing 5 changed files with 321 additions and 100 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,11 @@ public ImageResizerSettings()

public string ToJsonString()
{
return JsonSerializer.Serialize(this);
var options = new JsonSerializerOptions
{
WriteIndented = true,
};
return JsonSerializer.Serialize(this, options);
}
}
}
134 changes: 127 additions & 7 deletions src/core/Microsoft.PowerToys.Settings.UI.Lib/ImageSize.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Text;
using System.Text.Json;
using System.Text.Json.Serialization;

namespace Microsoft.PowerToys.Settings.UI.Lib
{
public class ImageSize
public class ImageSize : INotifyPropertyChanged
{
public ImageSize(int id)
{
Expand Down Expand Up @@ -42,22 +44,140 @@ public ImageSize(int id, string name, ResizeFit fit, double width, double height
Unit = (int)unit;
}

public int Id { get; set; }
private int _id;
private string _name;
private int _fit;
private double _height;
private double _width;
private int _unit;

public int Id
{
get
{
return _id;
}

set
{
if (_id != value)
{
_id = value;
OnPropertyChanged();
}
}
}

[JsonPropertyName("name")]
public string Name { get; set; }
public string Name
{
get
{
return _name;
}

set
{
if (_name != value)
{
_name = value;
OnPropertyChanged();
}
}
}

[JsonPropertyName("fit")]
public int Fit { get; set; }
public int Fit
{
get
{
return _fit;
}

set
{
if (_fit != value)
{
_fit = value;
OnPropertyChanged();
}
}
}

[JsonPropertyName("width")]
public double Width { get; set; }
public double Width
{
get
{
return _width;
}

set
{
if (_width != value)
{
_width = value;
OnPropertyChanged();
}
}
}

[JsonPropertyName("height")]
public double Height { get; set; }
public double Height
{
get
{
return _height;
}

set
{
if (_height != value)
{
_height = value;
OnPropertyChanged();
}
}
}

[JsonPropertyName("unit")]
public int Unit { get; set; }
public int Unit
{
get
{
return _unit;
}

set
{
if (_unit != value)
{
_unit = value;
OnPropertyChanged();
}
}
}

public event PropertyChangedEventHandler PropertyChanged;

public void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}

public void Update(ImageSize modifiedSize)
{
Id = modifiedSize.Id;
Name = modifiedSize.Name;
Fit = modifiedSize.Fit;
Width = modifiedSize.Width;
Height = modifiedSize.Height;
Unit = modifiedSize.Unit;
}

public string ToJsonString()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Linq;
using System.Text.RegularExpressions;
using System.Windows.Input;
Expand Down Expand Up @@ -53,6 +54,15 @@ public ImageResizerViewModel()
this._tiffCompressOption = Settings.Properties.ImageresizerTiffCompressOption.Value;
this._fileName = Settings.Properties.ImageresizerFileName.Value;
this._keepDateModified = Settings.Properties.ImageresizerKeepDateModified.Value;
this._encoderGuidId = GetEncoderIndex(Settings.Properties.ImageresizerFallbackEncoder.Value);

int i = 0;
foreach (ImageSize size in _advancedSizes)
{
size.Id = i;
i++;
size.PropertyChanged += Size_PropertyChanged;
}
}

private bool _isEnabled = false;
Expand Down Expand Up @@ -94,12 +104,10 @@ public ObservableCollection<ImageSize> Sizes

set
{
if (_advancedSizes != value)
{
_advancedSizes = value;
Settings.Properties.ImageresizerSizes.Value = value;
OnPropertyChanged("Sizes");
}
_advancedSizes = value;
Settings.Properties.ImageresizerSizes.Value = value;
SettingsUtils.SaveSettings(Settings.ToJsonString(), ModuleName);
OnPropertyChanged("Sizes");
}
}

Expand Down Expand Up @@ -209,43 +217,8 @@ public int Encoder
{
if (_encoderGuidId != value)
{
// PNG Encoder guid
if (value == 0)
{
Settings.Properties.ImageresizerFallbackEncoder.Value = "1b7cfaf4-713f-473c-bbcd-6137425faeaf";
}

// Bitmap Encoder guid
else if (value == 1)
{
Settings.Properties.ImageresizerFallbackEncoder.Value = "0af1d87e-fcfe-4188-bdeb-a7906471cbe3";
}

// JPEG Encoder guid
else if (value == 2)
{
Settings.Properties.ImageresizerFallbackEncoder.Value = "19e4a5aa-5662-4fc5-a0c0-1758028e1057";
}

// Tiff encoder guid.
else if (value == 3)
{
Settings.Properties.ImageresizerFallbackEncoder.Value = "163bcc30-e2e9-4f0b-961d-a3e9fdb788a3";
}

// Tiff encoder guid.
else if (value == 4)
{
Settings.Properties.ImageresizerFallbackEncoder.Value = "57a37caa-367a-4540-916b-f183c5093a4b";
}

// Gif encoder guid.
else if (value == 5)
{
Settings.Properties.ImageresizerFallbackEncoder.Value = "1f8a5601-7d4d-4cbd-9c82-1bc8d4eeb9a5";
}

_encoderGuidId = value;
Settings.Properties.ImageresizerFallbackEncoder.Value = GetEncoderGuid(value);
SettingsUtils.SaveSettings(Settings.ToJsonString(), ModuleName);
OnPropertyChanged("Encoder");
}
Expand Down Expand Up @@ -278,8 +251,12 @@ public ICommand AddImageSizeEventHandler

public void AddRow()
{
ImageSize maxSize = Sizes.OrderBy(x => x.Id).Last();
Sizes.Add(new ImageSize(maxSize.Id + 1));
ObservableCollection<ImageSize> imageSizes = Sizes;
ImageSize maxSize = imageSizes.OrderBy(x => x.Id).Last();
ImageSize newSize = new ImageSize(maxSize.Id + 1);
newSize.PropertyChanged += Size_PropertyChanged;
imageSizes.Add(newSize);
Sizes = imageSizes;
OnPropertyChanged("Sizes");
}

Expand All @@ -288,7 +265,9 @@ public void DeleteImageSize(int id)
try
{
ImageSize size = Sizes.Where<ImageSize>(x => x.Id == id).First();
Sizes.Remove(size);
ObservableCollection<ImageSize> imageSizes = Sizes;
imageSizes.Remove(size);
Sizes = imageSizes;
OnPropertyChanged("Sizes");
}
catch
Expand All @@ -298,12 +277,97 @@ public void DeleteImageSize(int id)

public void SavesImageSizes()
{
OnPropertyChanged("Sizes");
SettingsUtils.SaveSettings(Settings.ToJsonString(), ModuleName);
}

public void OnSizesCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
public string GetEncoderGuid(int value)
{
// PNG Encoder guid
if (value == 0)
{
return "1b7cfaf4-713f-473c-bbcd-6137425faeaf";
}

// Bitmap Encoder guid
else if (value == 1)
{
return "0af1d87e-fcfe-4188-bdeb-a7906471cbe3";
}

// JPEG Encoder guid
else if (value == 2)
{
return "19e4a5aa-5662-4fc5-a0c0-1758028e1057";
}

// Tiff encoder guid.
else if (value == 3)
{
return "163bcc30-e2e9-4f0b-961d-a3e9fdb788a3";
}

// Tiff encoder guid.
else if (value == 4)
{
return "57a37caa-367a-4540-916b-f183c5093a4b";
}

// Gif encoder guid.
else if (value == 5)
{
return "1f8a5601-7d4d-4cbd-9c82-1bc8d4eeb9a5";
}

return null;
}

public int GetEncoderIndex(string guid)
{
// PNG Encoder guid
if (guid == "1b7cfaf4-713f-473c-bbcd-6137425faeaf")
{
return 0;
}

// Bitmap Encoder guid
else if (guid == "0af1d87e-fcfe-4188-bdeb-a7906471cbe3")
{
return 1;
}

// JPEG Encoder guid
else if (guid == "19e4a5aa-5662-4fc5-a0c0-1758028e1057")
{
return 2;
}

// Tiff encoder guid.
else if (guid == "163bcc30-e2e9-4f0b-961d-a3e9fdb788a3")
{
return 3;
}

// Tiff encoder guid.
else if (guid == "57a37caa-367a-4540-916b-f183c5093a4b")
{
return 4;
}

// Gif encoder guid.
else if (guid == "1f8a5601-7d4d-4cbd-9c82-1bc8d4eeb9a5")
{
return 5;
}

return -1;
}

public void Size_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
ImageSize modifiedSize = (ImageSize)sender;
ObservableCollection<ImageSize> imageSizes = Sizes;
imageSizes.Where<ImageSize>(x => x.Id == modifiedSize.Id).First().Update(modifiedSize);
Sizes = imageSizes;
OnPropertyChanged("Sizes");
}
}
Expand Down
Loading

0 comments on commit fa7741b

Please sign in to comment.