using GeekDesk.Constant; using GeekDesk.Util; using System; using System.ComponentModel; using System.Windows.Media.Imaging; /// /// 图标信息 /// namespace GeekDesk.ViewModel { [Serializable] public class IconInfo : INotifyPropertyChanged { private string path; //路径 private string name; //文件名 private int count = 0; //打开次数 [field: NonSerialized] private BitmapImage bitmapImage; //位图 private byte[] imageByteArr; //图片 byte数组 private string content; //显示信息 private bool adminStartUp = false; //始终管理员方式启动 默认否 private byte[] defaultImage; //默认图标 private string startArg; //启动参数 private string lnkPath; private string relativePath; //相对路径 private IconType iconType = IconType.OTHER; private bool isChecked = false; //是否选中 public bool IsChecked_NoWrite { get { return isChecked; } set { isChecked = value; OnPropertyChanged("IsChecked_NoWrite"); } } public string RelativePath_NoWrite { get { return relativePath; } set { relativePath = value; } } public string RelativePath { get { return relativePath; } set { relativePath = value; OnPropertyChanged("RelativePath"); } } public string LnkPath_NoWrite { get { return lnkPath; } set { lnkPath = value; } } public string LnkPath { get { return lnkPath; } set { lnkPath = value; OnPropertyChanged("LnkPath"); } } public string StartArg { get { return startArg; } set { startArg = value; OnPropertyChanged("StartArg"); } } public string StartArg_NoWrite { get { return startArg; } set { startArg = value; } } public IconType IconType { get { if (iconType == 0) return IconType.OTHER; return iconType; } set { iconType = value; OnPropertyChanged("IconType"); } } public byte[] DefaultImage { get { return defaultImage; } set { defaultImage = value; OnPropertyChanged("DefaultImage"); } } public byte[] DefaultImage_NoWrite { get { return defaultImage; } set { defaultImage = value; } } public bool AdminStartUp { get { return adminStartUp; } set { adminStartUp = value; OnPropertyChanged("AdminStartUp"); } } public int Count { get { return count; } set { count = value; if (StringUtil.IsEmpty(Path)) { Content = Name + "\n使用次数: " + Count; } else { Content = Path + "\n" + Name + "\n使用次数: " + Count; } OnPropertyChanged("Count"); } } public string Name { get { return name; } set { name = value; if (StringUtil.IsEmpty(Path)) { Content = Name + "\n使用次数: " + Count; } else { Content = Path + "\n" + Name + "\n使用次数: " + Count; } OnPropertyChanged("Name"); } } public string Name_NoWrite { get { return name; } set { name = value; if (StringUtil.IsEmpty(Path)) { content = Name + "\n使用次数: " + Count; } else { content = Path + "\n" + Name + "\n使用次数: " + Count; } } } public string Path { get { return path; } set { path = value; if (StringUtil.IsEmpty(Path)) { Content = Name + "\n使用次数: " + Count; } else { Content = Path + "\n" + Name + "\n使用次数: " + Count; } OnPropertyChanged("Path"); } } public string Path_NoWrite { get { return path; } set { path = value; if (StringUtil.IsEmpty(Path)) { content = Name + "\n使用次数: " + Count; } else { content = Path + "\n" + Name + "\n使用次数: " + Count; } } } public BitmapImage BitmapImage { get { return ImageUtil.ByteArrToImage(ImageByteArr); } set { bitmapImage = value; ImageByteArr = ImageUtil.BitmapImageToByte(bitmapImage); OnPropertyChanged("BitmapImage"); } } public BitmapImage BitmapImage_NoWrite { get { return ImageUtil.ByteArrToImage(ImageByteArr_NoWrite); } set { bitmapImage = value; ImageByteArr_NoWrite = ImageUtil.BitmapImageToByte(bitmapImage); OnPropertyChanged("BitmapImage_NoWrite"); } } public byte[] ImageByteArr { get { return imageByteArr; } set { imageByteArr = value; OnPropertyChanged("ImageByteArr"); } } public byte[] ImageByteArr_NoWrite { get { return imageByteArr; } set { imageByteArr = value; } } public string Content { get { return content; } set { content = value; OnPropertyChanged("Content"); } } public string Content_NoWrite { get { return content; } set { content = value; } } [field: NonSerializedAttribute()] public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); if (propertyName!=null && !propertyName.Contains("NoWrite")) { CommonCode.SaveAppData(MainWindow.appData, Constants.DATA_FILE_PATH); } } } }