Beispiel #1
0
 public FrmFilePicker(XWXFileSystemWatcher watcher)
 {
     InitializeComponent();
     Init();
     _watcher             = watcher;
     txbBackupFolder.Text = watcher.BackupFolder;
 }
Beispiel #2
0
        //进行恢复
        private void Rebackup(object sender, EventArgs e)
        {
            XWXFileSystemWatcher watcher = GetSelectedWatcher(true, "请选择需要进行恢复的监视项");

            if (watcher != null)
            {
                new FrmFilePicker(watcher).Show();
            }
        }
Beispiel #3
0
        //打开备份目录
        private void OpenBackupFolder(object sender, EventArgs e)
        {
            XWXFileSystemWatcher watcher = GetSelectedWatcher(true, "请选择监视项");

            if (watcher != null)
            {
                System.Diagnostics.Process.Start(watcher.BackupFolder);
            }
        }
Beispiel #4
0
 //点击包含子目录
 private void dgrdTaskList_CellContentClick(object sender, DataGridViewCellEventArgs e)
 {
     if (e.RowIndex >= 0 && e.ColumnIndex == IDX_SUBDIR)
     {
         DataGridView         dgv     = sender as DataGridView;
         DataGridViewRow      row     = dgv.Rows[e.RowIndex];
         XWXFileSystemWatcher watcher = row.Tag as XWXFileSystemWatcher;
         watcher.IncludeSubdirectories = (bool)row.Cells[IDX_SUBDIR].EditedFormattedValue;
         //当改变一个监视的"是否包含子目录"后触发OnWatchSettingChanged事件以便进行实时保存
         this.OnWatchSettingChanged();
     }
 }
Beispiel #5
0
        //停止一个监视
        private void StopWatch(object sender, EventArgs e)
        {
            XWXFileSystemWatcher watcher = GetSelectedWatcher(true, "请选择需要停止的监视项");

            if (watcher != null)
            {
                watcher.StopWatch();
                //一旦停止监视,就将监视动作列表冻结,以免在停止监视时改变了监视动作。
                dgrdTaskList.SelectedRows[0].Cells[IDX_CHANGETYPE].ReadOnly = true;
                dgrdTaskList.SelectedRows[0].Cells[IDX_SUBDIR].ReadOnly     = true;
                //当停止一个监视后触发OnWatchSettingChanged事件以便进行实时保存
                this.OnWatchSettingChanged();
            }
        }
Beispiel #6
0
        //开始一个监视
        public void StartWatch(object sender, EventArgs e)
        {
            XWXFileSystemWatcher watcher = GetSelectedWatcher(true, "请选择需要开始的监视项");

            if (watcher != null)
            {
                watcher.StartWatch();
                //开始监视后,将监视动作设置为可编辑
                dgrdTaskList.SelectedRows[0].Cells[IDX_CHANGETYPE].ReadOnly = false;
                dgrdTaskList.SelectedRows[0].Cells[IDX_SUBDIR].ReadOnly     = false;
                //当开始一个监视后触发OnWatchSettingChanged事件以便进行实时保存
                this.OnWatchSettingChanged();
            }
        }
Beispiel #7
0
        //当监视状态发送变化
        void watcher_OnWatchStatusChanged(object sender, WatchStatusChangedEventArgs e)
        {
            XWXFileSystemWatcher watcher = sender as XWXFileSystemWatcher;

            foreach (DataGridViewRow row in dgrdTaskList.Rows)
            {
                if (((XWXFileSystemWatcher)row.Tag) == watcher)
                {
                    //改变列表上该监视的状态文字
                    row.Cells[IDX_STATUS].Value = GetWatchingStatusName(e.IsWatching);
                    break;
                }
            }
        }
Beispiel #8
0
        //选择需要监视的动作
        void cb_SelectedIndexChanged(object sender, EventArgs e)
        {
            ComboBox cb = sender as ComboBox;

            if (_selectedRowIndex > -1)
            {
                XWXFileSystemWatcher watcher = (XWXFileSystemWatcher)dgrdTaskList.Rows[_selectedRowIndex].Tag;
                string selectedAction        = cb.SelectedItem.ToString();
                switch (selectedAction)
                {
                //需要先解除原来的事件绑定,在绑定新的,否则会触发多次。
                case "创建、修改及重命名":
                    watcher.Created            -= new FileSystemEventHandler(watcher_Created);
                    watcher.Changed            -= new FileSystemEventHandler(watcher_Changed);
                    watcher.Renamed            -= new RenamedEventHandler(watcher_Renamed);
                    watcher.Created            += new FileSystemEventHandler(watcher_Created);
                    watcher.Changed            += new FileSystemEventHandler(watcher_Changed);
                    watcher.Renamed            += new RenamedEventHandler(watcher_Renamed);
                    watcher.WatchingChangeTypes = (WatcherChangeTypes.Changed | WatcherChangeTypes.Created);
                    break;

                case "仅创建":
                    watcher.Created            -= new FileSystemEventHandler(watcher_Created);
                    watcher.Changed            -= new FileSystemEventHandler(watcher_Changed);
                    watcher.Created            += new FileSystemEventHandler(watcher_Created);
                    watcher.Renamed            -= new RenamedEventHandler(watcher_Renamed);
                    watcher.WatchingChangeTypes = WatcherChangeTypes.Created;
                    break;

                case "仅修改":
                    watcher.Created            -= new FileSystemEventHandler(watcher_Created);
                    watcher.Changed            -= new FileSystemEventHandler(watcher_Changed);
                    watcher.Renamed            -= new RenamedEventHandler(watcher_Renamed);
                    watcher.Changed            += new FileSystemEventHandler(watcher_Changed);
                    watcher.WatchingChangeTypes = WatcherChangeTypes.Changed;
                    break;

                case "仅重命名":
                    watcher.Created            -= new FileSystemEventHandler(watcher_Created);
                    watcher.Changed            -= new FileSystemEventHandler(watcher_Changed);
                    watcher.Renamed            -= new RenamedEventHandler(watcher_Renamed);
                    watcher.Renamed            += new RenamedEventHandler(watcher_Renamed);
                    watcher.WatchingChangeTypes = WatcherChangeTypes.Changed;
                    break;
                }
                //当选择一个监视的更改类型后触发OnWatchSettingChanged事件以便进行实时保存
                this.OnWatchSettingChanged();
            }
        }
Beispiel #9
0
        //移除一个监视
        private void RemoveWatch(object sender, EventArgs e)
        {
            XWXFileSystemWatcher watcher = GetSelectedWatcher(true, "请选择需要移除的监视项");

            if (watcher != null)
            {
                if (MessageBox.Show("删除该监视后不再会自动备份该目录文件,确定吗?", "正在删除监视", MessageBoxButtons.OKCancel) == DialogResult.OK)
                {
                    watcher.StopWatch();
                    watcherList.Remove(watcher);
                    dgrdTaskList.Rows.Remove(dgrdTaskList.SelectedRows[0]);
                    //当删除一个监视后触发OnWatchSettingChanged事件以便进行实时保存
                    this.OnWatchSettingChanged();
                }
            }
        }
Beispiel #10
0
        void watcher_Renamed(object sender, RenamedEventArgs e)
        {
            XWXFileSystemWatcher watcher = sender as XWXFileSystemWatcher;

            BackupHelper.Backup(watcher, e, recorder);
        }
Beispiel #11
0
        //从一个WatchInfo载入一个监视项到界面中,并重现该WatchInfo的信息
        private void AddWatchItem(WatchInfo watch)
        {
            XWXFileSystemWatcher watcher = new XWXFileSystemWatcher(watch.WatchedFolder);

            watcher.BackupFolder = watch.BackupFolder;
            watcher.NotifyFilter = NotifyFilters.Security
                                   | NotifyFilters.LastWrite
                                   | NotifyFilters.FileName
                                   | NotifyFilters.DirectoryName
                                   | NotifyFilters.Size
                                   | NotifyFilters.Attributes | NotifyFilters.CreationTime;

            watcher.OnWatchStatusChanged += new WatchStatusChangedHandler(watcher_OnWatchStatusChanged);

            //目前版本不监视删除和重命名操作
            //watcher.Deleted += new FileSystemEventHandler(watcher_Deleted);
            //watcher.Renamed += new RenamedEventHandler(watcher_Renamed);
            if ((watch.ChangeTypes & WatcherChangeTypes.Renamed) == WatcherChangeTypes.Renamed)
            {
                watcher.Renamed            += new RenamedEventHandler(watcher_Renamed);
                watcher.WatchingChangeTypes = (watcher.WatchingChangeTypes | WatcherChangeTypes.Renamed);
            }
            if ((watch.ChangeTypes & WatcherChangeTypes.Created) == WatcherChangeTypes.Created)
            {
                watcher.Created            += new FileSystemEventHandler(watcher_Created);
                watcher.WatchingChangeTypes = (watcher.WatchingChangeTypes | WatcherChangeTypes.Created);
            }
            if ((watch.ChangeTypes & WatcherChangeTypes.Changed) == WatcherChangeTypes.Changed)
            {
                watcher.Changed            += new FileSystemEventHandler(watcher_Changed);
                watcher.WatchingChangeTypes = (watcher.WatchingChangeTypes | WatcherChangeTypes.Changed);
            }

            int rowIndex = dgrdTaskList.Rows.Add();

            dgrdTaskList.Rows[rowIndex].Cells[IDX_WATCHINGDIR].Value = watcher.Path;
            dgrdTaskList.Rows[rowIndex].Cells[IDX_BACKUPDIR].Value   = watcher.BackupFolder;
            dgrdTaskList.Rows[rowIndex].Cells[IDX_STATUS].Value      = GetWatchingStatusName(watcher.EnableRaisingEvents);
            dgrdTaskList.Rows[rowIndex].Tag = watcher;

            DataGridViewComboBoxCell cell = dgrdTaskList[IDX_CHANGETYPE, rowIndex] as DataGridViewComboBoxCell;

            cell.Items.Add("创建、修改及重命名");
            cell.Items.Add("仅创建");
            cell.Items.Add("仅修改");
            cell.Items.Add("仅重命名");
            if (watch.ChangeTypes == WatcherChangeTypes.Changed)
            {
                cell.Value = "仅修改";
            }
            else if (watch.ChangeTypes == WatcherChangeTypes.Created)
            {
                cell.Value = "仅创建";
            }
            else if (watch.ChangeTypes == WatcherChangeTypes.Renamed)
            {
                cell.Value = "仅重命名";
            }
            else
            {
                cell.Value = "创建、修改及重命名";
            }
            cell.ReadOnly = !watch.Enable;

            DataGridViewCheckBoxCell checkbox = dgrdTaskList.Rows[rowIndex].Cells[IDX_SUBDIR] as DataGridViewCheckBoxCell;

            if (checkbox != null)
            {
                checkbox.Value = watch.IncludeSubdirectories;
            }
            dgrdTaskList.Rows[rowIndex].Cells[IDX_SUBDIR].ReadOnly = !watch.Enable;

            if (watch.Enable)
            {
                watcher.StartWatch();
            }
            else
            {
                watcher.StopWatch();
            }

            //同时将该监视项添加到watcherList中
            watcherList.Add(watcher);
        }