using System; using System.IO; using System.Windows.Media.Imaging; using System.Windows.Threading; using vCloud.GeneratePackages.Entitys; using vCloud.GeneratePackages.Utilities; using Vinno.IUS.Common.Utilities; namespace vCloud.GeneratePackages.Tool { public class AppManager { private static AppManager _instance; private static ZipHelper _zipHelper; private static DescriptionUpdater _updater; private static string _appConfigFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "AppSettings.cfg"); private static string _ftpLocal = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "FtpLocal"); private static string _outputdir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Output"); private static string _installPackagePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "InstallPackage"); private static string _deploymentToolPath = Path.Combine(_installPackagePath, "DeploymentTool"); private static string _outDeploymentToolPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DeploymentTool"); private static string _deployPackage = Path.Combine(_outDeploymentToolPath, "DeployPackage"); private Version _upgradePackagesVersion; private FlyinsonoVersionResult _languageInfoDes; /// /// The unique instance of app manager /// public static AppManager Instance => _instance ?? (_instance = new AppManager()); /// /// Package client data in pak /// public bool PackageClientData{ get; set; } /// /// is need upload server package /// public bool IsNeedRemoteDeployment { get; set; } /// /// The main dispatcher /// public static Dispatcher MainDispatcher { get; set; } /// /// Support languages /// /// /// Zip file icon /// public BitmapImage ZipFileIcon { get; private set; } /// /// app Settings /// public AppSettings AppSettings { get; } private AppManager() { var content = File.ReadAllText(_appConfigFile); AppSettings = JsonHelper.DeserializerJsonResult(content); _updater = new DescriptionUpdater(); _upgradePackagesVersion = new Version(); IsNeedRemoteDeployment = true; } //Save ftp Url public void SaveFtpUrl(string url) { AppSettings.FtpUrl = url; var content = JsonHelper.SerializerToJsonString(AppSettings); File.WriteAllText(_appConfigFile, content); } /// /// Initialize /// public void Initialize() { var assembly = GetType().Assembly; var assemblyName = assembly.GetName().Name; var resourcePath = $"{assemblyName}.Images.compressed.png"; var stream = assembly.GetManifestResourceStream(resourcePath); if (stream != null) { byte[] bytes = new byte[stream.Length]; stream.Read(bytes, 0, bytes.Length); stream.Seek(0, SeekOrigin.Begin); var bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.StreamSource = new MemoryStream(bytes); bitmapImage.EndInit(); ZipFileIcon = bitmapImage; } _zipHelper = new ZipHelper(); } /// /// Do a modal action, user can not do other things before the action finished /// /// /// public static void DoModalAction(Action action, string description = null, string title = null, IDescriptionUpdater descriptionUpdater = null, Action contiueAction = null) { var modalActionWindow = new ModalActionWindow(action, descriptionUpdater, description, title); modalActionWindow.Owner = System.Windows.Application.Current.MainWindow; modalActionWindow.ShowDialog(); } } }