using GeekDesk.Constant;
using GeekDesk.Util;
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media.Imaging;
///
/// 程序设置
///
namespace GeekDesk.ViewModel
{
[Serializable]
public class AppConfig : INotifyPropertyChanged
{
private SortType menuSortType = SortType.CUSTOM; //菜单排序类型
private SortType iconSortType = SortType.CUSTOM; //图表排序类型
private double windowWidth = (double)MainWindowEnum.WINDOW_WIDTH; //窗口宽度
private double windowHeight = (double)MainWindowEnum.WINDOW_HEIGHT; //窗口高度
private double menuCardWidth = (double)MainWindowEnum.MENU_CARD_WIDHT;//菜单栏宽度
private int selectedMenuIndex = 0; //上次选中菜单索引
private bool followMouse = true; //面板跟随鼠标 默认是
private Visibility configIconVisible = Visibility.Visible; // 设置按钮是否显示
private AppHideType appHideType = AppHideType.START_EXE; //面板关闭方式 (默认启动程序后)
private bool startedShowPanel = true; //启动时是否显示主面板 默认显示
[field: NonSerialized]
private BitmapImage bitmapImage; //位图
private byte[] imageByteArr; //背景图片 byte数组
private string bacImgName = "系统默认";
private int cardOpacity = 10; //默认0.1的不透明度 此处显示数值 * 100
private int bgOpacity = 100; // 背景图片不透明度 此处显示数值 * 100
private int pannelOpacity = 100; //主面板不透明度 此处显示数值 * 100
private int pannelCornerRadius = 4; //面板圆角 默认4
[field: NonSerialized]
private ObservableCollection selectedMenuIcons;
private string hotkeyStr = "Ctrl + Q"; //默认启动面板快捷键
private HotkeyModifiers hotkeyModifiers = HotkeyModifiers.MOD_CONTROL; //默认启动面板快捷键
private Key hotkey = Key.Q; //默认启动面板快捷键
private string customIconUrl; //自定义图标url
private string customIconJsonUrl; //自定义图标json信息url
private bool blurEffect = false; //毛玻璃效果 默认否
private double blurValue;
#region GetSet
public double BlurValue
{
get
{
return blurValue;
}
set
{
blurValue = value;
OnPropertyChanged("BlurValue");
}
}
public bool BlurEffect
{
get
{
return blurEffect;
}
set
{
blurEffect = value;
if (blurEffect)
{
BlurValue = 100;
} else
{
BlurValue = 0;
}
OnPropertyChanged("BlurEffect");
}
}
public string CustomIconUrl
{
get
{
return customIconUrl;
}
set
{
customIconUrl = value;
OnPropertyChanged("CustomIconUrl");
}
}
public string CustomIconJsonUrl
{
get
{
return customIconJsonUrl;
}
set
{
customIconJsonUrl = value;
OnPropertyChanged("CustomIconJsonUrl");
}
}
public Key Hotkey
{
get
{
return hotkey;
}
set
{
hotkey = value;
OnPropertyChanged("Hotkey");
}
}
public string HotkeyStr
{
get
{
return hotkeyStr;
}
set
{
hotkeyStr = value;
OnPropertyChanged("HotkeyStr");
}
}
public HotkeyModifiers HotkeyModifiers
{
get
{
return hotkeyModifiers;
}
set
{
hotkeyModifiers = value;
OnPropertyChanged("HotkeyModifiers");
}
}
public ObservableCollection SelectedMenuIcons
{
get
{
return selectedMenuIcons;
}
set
{
selectedMenuIcons = value;
OnPropertyChanged("SelectedMenuIcons");
}
}
public int PannelCornerRadius
{
get
{
return pannelCornerRadius;
}
set
{
pannelCornerRadius = value;
OnPropertyChanged("pannelCornerRadius");
}
}
public int PannelOpacity
{
get
{
return pannelOpacity;
}
set
{
pannelOpacity = value;
OnPropertyChanged("PannelOpacity");
}
}
public int BgOpacity
{
get
{
return bgOpacity;
}
set
{
bgOpacity = value;
OnPropertyChanged("BgOpacity");
}
}
public int CardOpacity
{
get
{
return cardOpacity;
}
set
{
cardOpacity = value;
OnPropertyChanged("CardOpacity");
}
}
public string BacImgName
{
get
{
return bacImgName;
}
set
{
bacImgName = value;
OnPropertyChanged("BacImgName");
}
}
public byte[] ImageByteArr
{
get
{
return imageByteArr;
}
set
{
imageByteArr = value;
OnPropertyChanged("ImageByteArr");
}
}
public BitmapImage BitmapImage
{
get
{
if (imageByteArr == null || imageByteArr.Length == 0)
{
bacImgName = "系统默认";
//Image image = ImageUtil.ByteArrayToImage(Convert.FromBase64String(Constants.DEFAULT_BAC_IMAGE_BASE64));
return ImageUtil.ByteArrToImage(Convert.FromBase64String(Constants.DEFAULT_BAC_IMAGE_BASE64));
} else
{
return ImageUtil.ByteArrToImage(ImageByteArr);
}
}
set
{
bitmapImage = value;
imageByteArr = ImageUtil.BitmapImageToByte(bitmapImage);
OnPropertyChanged("BitmapImage");
}
}
public bool StartedShowPanel
{
get
{
return startedShowPanel;
}
set
{
startedShowPanel = value;
OnPropertyChanged("StartedShowPanel");
}
}
public AppHideType AppHideType
{
get
{
return appHideType;
}
set
{
appHideType = value;
OnPropertyChanged("AppHideType");
}
}
public Visibility ConfigIconVisible
{
get
{
return configIconVisible;
}
set
{
configIconVisible = value;
OnPropertyChanged("ConfigIconVisible");
}
}
public bool FollowMouse
{
get
{
return followMouse;
}
set
{
followMouse = value;
OnPropertyChanged("FollowMouse");
}
}
public int SelectedMenuIndex
{
get
{
return selectedMenuIndex;
}
set
{
selectedMenuIndex = value;
OnPropertyChanged("SelectedMenuIndex");
}
}
public SortType MenuSortType
{
get
{
return menuSortType;
}
set
{
menuSortType = value;
OnPropertyChanged("MenuSortType");
}
}
public SortType IconSortType
{
get
{
return iconSortType;
}
set
{
iconSortType = value;
OnPropertyChanged("IconSortType");
}
}
public double WindowWidth
{
get
{
return windowWidth;
}
set
{
windowWidth = value;
OnPropertyChanged("WindowWidth");
}
}
public double WindowHeight
{
get
{
return windowHeight;
}
set
{
windowHeight = value;
OnPropertyChanged("WindowHeight");
}
}
public double MenuCardWidth
{
get
{
return menuCardWidth;
}
set
{
menuCardWidth = value;
OnPropertyChanged("MenuCardWidth");
}
}
[field: NonSerializedAttribute()]
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
CommonCode.SaveAppData(MainWindow.appData);
}
#endregion
}
}