#region
|
|
using CSFrameworkV5.Business;
|
using CSFrameworkV5.Core;
|
using DevExpress.LookAndFeel;
|
using DevExpress.Skins;
|
using DevExpress.XtraBars;
|
|
#endregion
|
|
namespace CSFrameworkV5.Library.CommonClass
|
{
|
/// <summary>
|
/// 设置皮肤工具. Last Modified: 2018-10-06
|
/// </summary>
|
public class SkinTools
|
{
|
//当前皮肤列表组件(对应frmMain界面的皮肤列表)
|
private static BarLinkContainerItem _CurrentRibbonSkinList;
|
|
/// <summary>
|
/// 获取系统当前皮肤名称
|
/// </summary>
|
/// <returns></returns>
|
public static string GetCurrentSkinName()
|
{
|
var defName = UserLookAndFeel.Default.SkinName;
|
|
if (string.IsNullOrWhiteSpace(SystemSettings.Current.SkinName))
|
return defName;
|
|
return SystemSettings.Current.SkinName;
|
}
|
|
/// <summary>
|
/// /重新加载皮肤列表
|
/// </summary>
|
/// <param name="owner">当前皮肤列表组件</param>
|
/// <param name="checkCurrent">勾选当前皮肤</param>
|
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);
|
}
|
}
|
|
/// <summary>
|
/// 设置皮肤
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
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;
|
}
|
|
/// <summary>
|
/// 设置皮肤,并且保存配置。
|
/// </summary>
|
/// <param name="skinName"></param>
|
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();
|
}
|
|
/// <summary>
|
/// 给Gallery组件当前皮肤名称设置焦点(选择状态)
|
/// </summary>
|
/// <param name="ribbonGallary">Gallery组件</param>
|
/// <param name="skinName">皮肤名称</param>
|
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;
|
}
|
}
|
}
|