using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.IO; using System.Runtime.CompilerServices; namespace UWPHook { public class AppEntry : INotifyPropertyChanged { private bool _isSelected; /// /// Gets or sets if the application is selected /// public bool Selected { get { return _isSelected; } set { if (_isSelected == value) return; _isSelected = value; OnPropertyChanged(); } } private string _name; /// /// Gets or sets the name of the application /// public string Name { get { return _name; } set { _name = value; } } private string _aumid; /// /// Gets or sets the aumid of the application /// public string Aumid { get { return _aumid; } set { _aumid = value; } } /// /// Gets or sets the icon for the app /// private string _icon; public string Icon { get { return _icon; } set { _icon = value; } } /// /// Sets the path where icons for the app is /// private string _icon_path; public string IconPath { get { return _icon_path; } set { _icon_path = value; } } public string widestSquareIcon() { string result = ""; Size size = new Size(0, 0); List images = new List(); //Get every png in this directory, Steam only allows for .png's images.AddRange(Directory.GetFiles(_icon_path, "*.png")); //Decide which is the largest foreach (string image in images) { Image icon = null; //Try to load the image, if it's a invalid file, skip it try { icon = Image.FromFile(image); } catch (System.Exception) { } if (icon != null) { //UWP apps usually store live tile images inside the same directory //Let's check if the image is square for use as icon on Steam and pick the largest one if (icon.Width == icon.Height && (icon.Size.Height > size.Height)) { size = icon.Size; result = image; } } } return result; } public string isKnownApp() { if (_aumid.Contains("Microsoft.SeaofThieves")) { return "Sea of Thieves"; } else if (_aumid.Contains("Microsoft.DeltaPC")) { return "Gears of War: Ultimate Edition"; } return "Name not found, double click here to edit"; } public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } }