public bool SetBackupMakerAndTask(BackupMaker lBackupMaker, BackupTask lBackupTask)
        {
            fBackupMaker = lBackupMaker;
            fBackupTask  = lBackupTask;

            this.Title = "Restore: " + lBackupTask.Settings.Name;

            return(ListFiles());
        }
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            bool lShowHelp = false;

            fCommandLineOptions = new CommandLineParameters();
            if (CommandLine.Parser.Default.ParseArguments(e.Args, fCommandLineOptions))
            {
                if (!String.IsNullOrEmpty(fCommandLineOptions.DoBackup))
                {
                    if (fCommandLineOptions.DoBackup.StartsWith("="))
                    {
                        fCommandLineOptions.DoBackup = fCommandLineOptions.DoBackup.Remove(0, 1);
                    }

                    // user whant to make quick backup by Task Name
                    SettingsManager lSettings = new SettingsManager();
                    lSettings.LoadConfig();

                    AttachConsole(-1);

                    bool lFound = false;
                    foreach (BackupTask lBackupTask in lSettings.Settings.BackupTasks)
                    {
                        if (lBackupTask.Settings.Name == fCommandLineOptions.DoBackup)
                        {
                            lFound = true;

                            // do backup
                            BackupMaker lBackupMaker  = new BackupMaker();
                            string      lErrorMessage = "";

                            if (lBackupMaker.MakeBackup(lBackupTask, BackupType.btNormal, ref lErrorMessage))
                            {
                                Console.WriteLine("SUCCEED: Task '" + lBackupTask.Settings.Name + "' backup created");
                            }
                            else
                            {
                                Console.WriteLine("FAILED: Task '" + lBackupTask.Settings.Name + "' backup failed: \r\n" + lErrorMessage);
                            }
                            break;
                        }
                    }

                    if (!lFound)
                    {
                        Console.WriteLine("FAILED: Task '" + fCommandLineOptions.DoBackup + "' not found");
                    }

                    Environment.Exit(1);
                }
                else
                {
                    // ok, nothing more to do, parameters will be used in main app
                }

                // check if option -h, -help was used
                lShowHelp = fCommandLineOptions.ShowHelp;
            }
            else
            {
                //MessageBox.Show("Bad args!");
                lShowHelp = true;
            }

            // display help info in case of bad arguments or -h, -help options
            if (lShowHelp)
            {
                AttachConsole(-1);
                Console.WriteLine(fCommandLineOptions.GetUsage());
                Environment.Exit(1);
            }
        }
        public MainWindow()
        {
            InitializeComponent();

            // check if application is running only in one instance if not then focuse on old instance and exit
            fApplicationInstanceManager = new ApplicationInstanceManager();
            CreateTypicalLocationsMenu();


            fBackupMaker = new BackupMaker();

            fSettings = new SettingsManager();
            fSettings.LoadConfig();

            // set window position
            if (fSettings.Settings.Window.PositionKnown)
            {
                this.WindowState = WindowState.Normal;
                this.Top         = fSettings.Settings.Window.Top;
                this.Left        = fSettings.Settings.Window.Left;
                this.Height      = fSettings.Settings.Window.Height;
                this.Width       = fSettings.Settings.Window.Width;

                // done in event 'Window_Loaded()' because window must finish its initialization before setting this flag
                //if (fSettings.Settings.WindowMaximised)
                //    WindowState = WindowState.Maximized;
            }

            // if app is set up to run in tray than create tray icon and minimize
            if (App.fCommandLineOptions.StartInTray)
            {
                ShowInTaskbar = false;

                fTray = new TaskbarIcon();
                //fTray.Icon = Properties.Resources.TrayIcon; // UpdateGlobalStatus will set correct Icon
                fTray.ToolTipText           = this.Title;
                fTray.TrayMouseDoubleClick += (EventSender, EventArgs) => { Show(); WindowState = WindowState.Normal; };

                fTray.ContextMenu = new ContextMenu();
                MenuItem lCloseMenuItem = new MenuItem();
                lCloseMenuItem.Header = "Close";
                lCloseMenuItem.Click += (EventSender, EventArgs) => { Application.Current.Shutdown(); };
                fTray.ContextMenu.Items.Add(lCloseMenuItem);
                fTray.MenuActivation = PopupActivationMode.RightClick;

                WindowState = WindowState.Minimized;
                Hide();
            }

            // referesh destination directory size
            foreach (BackupTask lBackupTask in fSettings.Settings.BackupTasks)
            {
                if (lBackupTask.DestinationDirectorySize == -1)
                {
                    fBackupMaker.RefreshDestinationDirectorySize(lBackupTask);
                }
            }

            FillComboBoxItems();
            SelectTaskByIndex(fSettings.Settings.LastSelectedTaskIndex, false);

            // fill components tooltips
            SetToolTips();

            fTimer           = new Timer(10000);
            fTimer.Elapsed  += HandleTimer;
            fTimer.AutoReset = true;
            fTimer.Start();
            fTimer.Enabled = true;
        }