/* ----------------------------------------------------------------- */
        ///
        /// 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));
        }
예제 #2
0
        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)
 {
 }
예제 #6
0
 /* ----------------------------------------------------------------- */
 ///
 /// ExtractFacade
 ///
 /// <summary>
 /// オブジェクトを初期化します。
 /// </summary>
 ///
 /// <param name="request">コマンドライン</param>
 /// <param name="settings">設定情報</param>
 ///
 /* ----------------------------------------------------------------- */
 public ExtractFacade(Request request, SettingsFolder settings) :
     base(request, settings)
 {
     Source = Request.Sources.First();
 }