/* ----------------------------------------------------------------- */ /// /// ProgressFacade /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /// <param name="request">リクエストオブジェクト</param> /// <param name="settings">設定情報</param> /// /* ----------------------------------------------------------------- */ protected ProgressFacade(Request request, SettingsFolder settings) { Request = request; Settings = settings; IO.Failed += WhenFailed; _timer.Elapsed += (s, e) => OnProgress(ValueEventArgs.Create(Report)); }
static void Main(string[] args) { try { if (args.Length <= 0) { return; } var asm = Assembly.GetExecutingAssembly(); Logger.Configure(); Logger.ObserveTaskException(); Logger.Info(LogType, asm); Logger.Info(LogType, $"[ {string.Join(" ", args)} ]"); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var s = new SettingsFolder(asm, new AfsIO()); var e = new Aggregator(); var v = new ProgressForm(); var m = new Request(args); s.Load(); switch (m.Mode) { case Mode.Archive: using (new ArchivePresenter(v, m, s, e)) Application.Run(v); break; case Mode.Extract: if (m.Sources.Count() > 1 && s.Value.Extract.Bursty && !m.SuppressRecursive) { Extract(m, asm); } else { using (new ExtractPresenter(v, m, s, e)) Application.Run(v); } break; default: break; } } catch (Exception err) { Logger.Error(LogType, err); } }
/* ----------------------------------------------------------------- */ /// /// ArchivePresenter /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /// <param name="view">View オブジェクト</param> /// <param name="args">コマンドライン</param> /// <param name="settings">ユーザ設定</param> /// <param name="ea">イベント集約オブジェクト</param> /// /* ----------------------------------------------------------------- */ public ArchivePresenter(IProgressView view, Request args, SettingsFolder settings, IAggregator ea) : base(view, new ArchiveFacade(args, settings), settings, ea) { // View View.Logo = Properties.Resources.HeaderArchive; View.Status = Properties.Resources.MessagePreArchive; // Model var model = Model as ArchiveFacade; model.DestinationRequested += WhenDestinationRequested; model.PasswordRequested += WhenPasswordRequested; model.Progress += WhenProgress; model.RtSettingsRequested += WhenRtSettingsRequested; model.MailRequested += WhenMailRequested; }
/* ----------------------------------------------------------------- */ /// /// ExtractPresenter /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /// <param name="view">View オブジェクト</param> /// <param name="model">コマンドライン</param> /// <param name="settings">ユーザ設定</param> /// <param name="ea">イベント集約オブジェクト</param> /// /* ----------------------------------------------------------------- */ public ExtractPresenter(IProgressView view, Request model, SettingsFolder settings, IAggregator ea) : base(view, new ExtractFacade(model, settings), settings, ea) { var fs = Model.TryCast <ExtractFacade>(); // View View.FileName = Model.IO.Get(fs.Source).Name; View.Logo = Properties.Resources.HeaderExtract; View.Status = Properties.Resources.MessagePreExtract; // Model fs.DestinationRequested += WhenDestinationRequested; fs.PasswordRequested += WhenPasswordRequested; fs.OverwriteRequested += WhenOverwriteRequested; fs.Progress += WhenProgress; fs.ProgressReset += WhenProgressReset; }
/* ----------------------------------------------------------------- */ /// /// ArchiveFacade /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /// <param name="request">コマンドライン</param> /// <param name="settings">ユーザ設定</param> /// /* ----------------------------------------------------------------- */ public ArchiveFacade(Request request, SettingsFolder settings) : base(request, settings) { }
/* ----------------------------------------------------------------- */ /// /// ExtractFacade /// /// <summary> /// オブジェクトを初期化します。 /// </summary> /// /// <param name="request">コマンドライン</param> /// <param name="settings">設定情報</param> /// /* ----------------------------------------------------------------- */ public ExtractFacade(Request request, SettingsFolder settings) : base(request, settings) { Source = Request.Sources.First(); }