#region
using CSFrameworkV5.Business;
using CSFrameworkV5.Core;
using DevExpress.LookAndFeel;
using DevExpress.Skins;
using DevExpress.XtraBars;
#endregion
namespace CSFrameworkV5.Library.CommonClass
{
///
/// 设置皮肤工具. Last Modified: 2018-10-06
///
public class SkinTools
{
//当前皮肤列表组件(对应frmMain界面的皮肤列表)
private static BarLinkContainerItem _CurrentRibbonSkinList;
///
/// 获取系统当前皮肤名称
///
///
public static string GetCurrentSkinName()
{
var defName = UserLookAndFeel.Default.SkinName;
if (string.IsNullOrWhiteSpace(SystemSettings.Current.SkinName))
return defName;
return SystemSettings.Current.SkinName;
}
///
/// /重新加载皮肤列表
///
/// 当前皮肤列表组件
/// 勾选当前皮肤
public static void LoadSkinList(BarLinkContainerItem owner,
bool checkCurrent = true)
{
_CurrentRibbonSkinList = owner;
//读取预设的皮肤名称
var currentName = GetCurrentSkinName();
//重新加载皮肤列表
owner.ItemLinks.Clear();
foreach (SkinContainer skin in SkinManager.Default.Skins)
{
var item = new BarCheckItem(owner.Manager);
item.Caption = skin.SkinName;
item.Checked =
checkCurrent && skin.SkinName == currentName; //打勾
item.ItemClick += OnSetSkinClick;
owner.ItemLinks.Add(item);
}
}
///
/// 设置皮肤
///
///
///
private static void OnSetSkinClick(object sender, ItemClickEventArgs e)
{
SetSkin(e.Item.Caption);
if (_CurrentRibbonSkinList != null)
foreach (BarItemLink item in _CurrentRibbonSkinList.ItemLinks)
if (item.Item is BarCheckItem)
(item.Item as BarCheckItem).Checked = false;
(e.Item as BarCheckItem).Checked = true;
}
///
/// 设置皮肤,并且保存配置。
///
///
public static void SetSkin(string skinName)
{
UserLookAndFeel.Default.SetSkinStyle(skinName); //设置主题样式
//保存到数据库
CommonData.PostUserSettings(Loginer.CurrentUser, "SkinName",
skinName);
//同步更新全局变量
SystemSettings.Current.SkinName = skinName;
//保存到ini
UserConfig.Current.SkinName = skinName;
UserConfig.Current.Save();
}
///
/// 给Gallery组件当前皮肤名称设置焦点(选择状态)
///
/// Gallery组件
/// 皮肤名称
public static void SetSkinGalleryCheck(
RibbonGalleryBarItem ribbonGallary, string skinName)
{
var list = ribbonGallary.Gallery.GetAllItems();
if (list != null)
{
var item =
list.Find(e => e.Tag.ToStringEx() == skinName); //找出当前皮肤
if (item != null)
ribbonGallary.Gallery.SetItemCheck(item, true); //设置焦点(选择状态)
}
}
public static void SetSkinItemCheck(string skinName)
{
if (_CurrentRibbonSkinList == null) return;
foreach (BarCheckItemLink item in _CurrentRibbonSkinList.ItemLinks)
(item.Item as BarCheckItem).Checked = item.Caption == skinName;
}
}
}