using System.IO; using System.Linq; using System.Reflection; using Aitex.Common.Util; using Caliburn.Micro; using MECF.Framework.Common.Account.Extends; namespace MECF.Framework.UI.Client.ClientBase { public class BaseApp { public UserContext UserContext { get; private set; } public MenuManager MenuManager { get; private set; } public MenuLoader MenuLoader { get; private set; } public UserMode UserMode { get; set; } public bool Initialized { get; private set; } public ModuleDataMonitor _dataMonitor; private static BaseApp _instance = null; public static BaseApp Instance { get { return _instance; } set { _instance = value; } } public BaseApp() { UserMode = UserMode.None; Initialized = false; Configure(); } public void Initialize(bool force = false) { if (Initialized && !force) return; MenuLoader = new MenuLoader(Path.Combine(PathManager.GetCfgDir(), "Menu.xml")); MenuLoader.Load(); MenuManager = new MenuManager(); UserContext = new UserContext(); var file = string.Format("{0}MECF.Framework.UI.Client.dll", System.AppDomain.CurrentDomain.BaseDirectory); if (File.Exists(file)) { Assembly assembly = Assembly.LoadFile(file); AssemblySource.Instance.Add(assembly); } OnInitialize(); //must be called after specific project initialized _dataMonitor = new ModuleDataMonitor(); Initialized = true; } public virtual void Dispose() { } protected void Configure() { //config skin/language... OnConfiguration(); } protected virtual void OnInitialize() { } protected virtual void OnConfiguration() { } public virtual void SwitchPage(string mainMenu, string subMenu, object parameter) { } public int GetPermission(string menuid) { int per = 1; if (UserContext != null) { string[] list = UserContext.Role.MenuPermission.Split(';'); var result = from r in list where r.Split(',')[0] == menuid select r; if (result.Count() > 0) per = int.Parse(result.ToArray()[0].Split(',')[1]); } return per; } } }