IconInfo.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. using GeekDesk.Constant;
  2. using GeekDesk.Util;
  3. using System;
  4. using System.ComponentModel;
  5. using System.Windows.Media.Imaging;
  6. /// <summary>
  7. /// 图标信息
  8. /// </summary>
  9. namespace GeekDesk.ViewModel
  10. {
  11. [Serializable]
  12. public class IconInfo : INotifyPropertyChanged
  13. {
  14. private string path; //路径
  15. private string name; //文件名
  16. private int count = 0; //打开次数
  17. [field: NonSerialized]
  18. private BitmapImage bitmapImage; //位图
  19. private byte[] imageByteArr; //图片 byte数组
  20. private string content; //显示信息
  21. private bool adminStartUp = false; //始终管理员方式启动 默认否
  22. private byte[] defaultImage; //默认图标
  23. private string startArg; //启动参数
  24. private string lnkPath;
  25. private IconType iconType = IconType.OTHER;
  26. public string LnkPath_NoWrite
  27. {
  28. get
  29. {
  30. return lnkPath;
  31. }
  32. set
  33. {
  34. lnkPath = value;
  35. }
  36. }
  37. public string LnkPath
  38. {
  39. get
  40. {
  41. return lnkPath;
  42. }
  43. set
  44. {
  45. lnkPath = value;
  46. OnPropertyChanged("LnkPath");
  47. }
  48. }
  49. public string StartArg
  50. {
  51. get
  52. {
  53. return startArg;
  54. }
  55. set
  56. {
  57. startArg = value;
  58. OnPropertyChanged("StartArg");
  59. }
  60. }
  61. public string StartArg_NoWrite
  62. {
  63. get
  64. {
  65. return startArg;
  66. }
  67. set
  68. {
  69. startArg = value;
  70. }
  71. }
  72. public IconType IconType
  73. {
  74. get
  75. {
  76. if (iconType == 0) return IconType.OTHER;
  77. return iconType;
  78. }
  79. set
  80. {
  81. iconType = value;
  82. OnPropertyChanged("IconType");
  83. }
  84. }
  85. public byte[] DefaultImage
  86. {
  87. get
  88. {
  89. return defaultImage;
  90. }
  91. set
  92. {
  93. defaultImage = value;
  94. OnPropertyChanged("DefaultImage");
  95. }
  96. }
  97. public byte[] DefaultImage_NoWrite
  98. {
  99. get
  100. {
  101. return defaultImage;
  102. }
  103. set
  104. {
  105. defaultImage = value;
  106. }
  107. }
  108. public bool AdminStartUp
  109. {
  110. get
  111. {
  112. return adminStartUp;
  113. }
  114. set
  115. {
  116. adminStartUp = value;
  117. OnPropertyChanged("AdminStartUp");
  118. }
  119. }
  120. public int Count
  121. {
  122. get
  123. {
  124. return count;
  125. }
  126. set
  127. {
  128. count = value;
  129. if (StringUtil.IsEmpty(Path))
  130. {
  131. Content = Name + "\n使用次数: " + Count;
  132. }
  133. else
  134. {
  135. Content = Path + "\n" + Name + "\n使用次数: " + Count;
  136. }
  137. OnPropertyChanged("Count");
  138. }
  139. }
  140. public string Name
  141. {
  142. get
  143. {
  144. return name;
  145. }
  146. set
  147. {
  148. name = value;
  149. if (StringUtil.IsEmpty(Path))
  150. {
  151. Content = Name + "\n使用次数: " + Count;
  152. }
  153. else
  154. {
  155. Content = Path + "\n" + Name + "\n使用次数: " + Count;
  156. }
  157. OnPropertyChanged("Name");
  158. }
  159. }
  160. public string Name_NoWrite
  161. {
  162. get
  163. {
  164. return name;
  165. }
  166. set
  167. {
  168. name = value;
  169. }
  170. }
  171. public string Path
  172. {
  173. get
  174. {
  175. return path;
  176. }
  177. set
  178. {
  179. path = value;
  180. if (StringUtil.IsEmpty(Path))
  181. {
  182. Content = Name + "\n使用次数: " + Count;
  183. }
  184. else
  185. {
  186. Content = Path + "\n" + Name + "\n使用次数: " + Count;
  187. }
  188. OnPropertyChanged("Path");
  189. }
  190. }
  191. public string Path_NoWrite
  192. {
  193. get
  194. {
  195. return path;
  196. }
  197. set
  198. {
  199. path = value;
  200. }
  201. }
  202. public BitmapImage BitmapImage
  203. {
  204. get
  205. {
  206. return ImageUtil.ByteArrToImage(ImageByteArr);
  207. }
  208. set
  209. {
  210. bitmapImage = value;
  211. ImageByteArr = ImageUtil.BitmapImageToByte(bitmapImage);
  212. OnPropertyChanged("BitmapImage");
  213. }
  214. }
  215. public BitmapImage BitmapImage_NoWrite
  216. {
  217. get
  218. {
  219. return ImageUtil.ByteArrToImage(ImageByteArr_NoWrite);
  220. }
  221. set
  222. {
  223. bitmapImage = value;
  224. ImageByteArr_NoWrite = ImageUtil.BitmapImageToByte(bitmapImage);
  225. }
  226. }
  227. public byte[] ImageByteArr
  228. {
  229. get
  230. {
  231. return imageByteArr;
  232. }
  233. set
  234. {
  235. imageByteArr = value;
  236. OnPropertyChanged("ImageByteArr");
  237. }
  238. }
  239. public byte[] ImageByteArr_NoWrite
  240. {
  241. get
  242. {
  243. return imageByteArr;
  244. }
  245. set
  246. {
  247. imageByteArr = value;
  248. }
  249. }
  250. public string Content
  251. {
  252. get
  253. {
  254. return content;
  255. }
  256. set
  257. {
  258. content = value;
  259. OnPropertyChanged("Content");
  260. }
  261. }
  262. public string Content_NoWrite
  263. {
  264. get
  265. {
  266. return content;
  267. }
  268. set
  269. {
  270. content = value;
  271. }
  272. }
  273. [field: NonSerializedAttribute()]
  274. public event PropertyChangedEventHandler PropertyChanged;
  275. private void OnPropertyChanged(string propertyName)
  276. {
  277. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  278. CommonCode.SaveAppData(MainWindow.appData);
  279. }
  280. }
  281. }