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();
}
}
}