示例#1
0
文件: TaskList.cs 项目: fiftin/oblqo
 private void taskManager_TaskRemoved(object sender, AsyncTaskEventArgs e)
 {
     for (var i = 0; i < taskListView.Items.Count; i++)
     {
         if (taskListView.Items[i].Tag == e.Task)
         {
             taskListView.Items.RemoveAt(i);
             break;
         }
     }
 }
示例#2
0
文件: TaskList.cs 项目: fiftin/oblqo
        private void taskManager_TaskAdded(object sender, AsyncTaskEventArgs e)
        {
            if (e.Task is DeleteEmptyFolderTask || e.Task is EmptyTask)
            {
                return;
            }

            if (!displayingTaskListStates.Contains(e.Task.State))
            {
                return;
            }

            Invoke(new MethodInvoker(() => AddTask(e.Task)));
        }
示例#3
0
文件: TaskList.cs 项目: fiftin/oblqo
 private void taskManager_TaskProgress(object sender, AsyncTaskEventArgs <AsyncTaskProgressEventArgs> e)
 {
     try
     {
         var items = taskListView.Items.Cast <ListViewItem>();
         Invoke(new MethodInvoker(() =>
         {
             var item = items.FirstOrDefault(x => x.Tag == e.Task);
             if (item == null)
             {
                 return;
             }
             item.SubItems["percent"].Text = e.Args.PercentDone.ToString();
         }));
     }
     catch (Exception ex)
     {
         OnError(ex);
     }
 }
示例#4
0
文件: MainForm.cs 项目: fiftin/oblqo
        private void taskManager_TaskStateChanged(object sender, AsyncTaskEventArgs e)
        {
            Invoke(new MethodInvoker(() =>
            {
                if (e.Task.State == AsyncTaskState.Completed)
                {
                    var attrs = e.Task.GetType().GetCustomAttributes(typeof(AccountFileStateChangeAttribute), true);
                    if (attrs.Length != 0)
                    {
                        var attr = (AccountFileStateChangeAttribute)attrs[0];
                        var fileProp = e.Task.GetType().GetProperty(attr.FilePropertyName);
                        var file = (AccountFile)fileProp.GetValue(e.Task);
                        var parentFileProp = attr.ParentFilePropertyName == null ? null : e.Task.GetType().GetProperty(attr.ParentFilePropertyName);
                        var parentFile = parentFileProp == null ? null : (AccountFile)parentFileProp.GetValue(e.Task);

                        if (file.IsFile)
                        {
                            if (attr.NewState == AccountFileStates.New)
                            {
                                fileListView.AddFile(file, accounts.GetName(file.Account));
                            }
                            else
                            {
                                foreach (ListViewItem x in fileListView.Items)
                                {
                                    var info = (NodeInfo)x.Tag;
                                    if (info.File == file)
                                    {
                                        fileListView.UpdateFileListItem(attr.NewState, x);

                                        if (driveStrip1.File == file)
                                        {
                                            driveStrip1.RefreshData();
                                        }
                                        break;
                                    }
                                }
                            }
                        }
                        else // IsFolder
                        {
                            if (attr.NewState == AccountFileStates.New)
                            {
                                foreach (var x in Oblqo.Controls.ControlUtil.GetAllTreeViewNodes(treeView1))
                                {
                                    var info = (NodeInfo)x.Tag;
                                    if (info.File == parentFile)
                                    {
                                        AddNode(file, x, info.AccountName);
                                        break;
                                    }
                                }
                            }
                            else
                            {
                                foreach (var x in Oblqo.Controls.ControlUtil.GetAllTreeViewNodes(treeView1))
                                {
                                    var info = (NodeInfo)x.Tag;
                                    if (info.File == file)
                                    {
                                        Oblqo.Controls.ControlUtil.UpdateTeeViewNode(attr.NewState, x);
                                    }
                                }
                            }
                        }
                    }
                }

                switch (e.Task.State)
                {
                    case AsyncTaskState.Completed:
                        if (e.Task is CreateFolderTask)
                        {
                            var task = (CreateFolderTask)e.Task;
                            var parentNode = task.Tag as TreeNode;
                            if (parentNode != null)
                            {
                                var viewNode = parentNode.Nodes.Add("", task.FolderName, FolderImageKey);
                                viewNode.SelectedImageKey = FolderImageKey;
                                viewNode.Tag = new NodeInfo(task.CreatedFolder, task.AccountName);
                            }
                        }
                        else if (e.Task is UploadFolderTask)
                        {
                            var task = (UploadFolderTask)e.Task;
                            var parentNode = task.Tag as TreeNode;
                            if (parentNode != null)
                            {
                                var viewNode = parentNode.Nodes.Add("", task.FolderName, FolderImageKey);
                                viewNode.SelectedImageKey = FolderImageKey;
                                viewNode.Tag = new NodeInfo(task.CreatedFolder, task.AccountName);
                            }
                        }
                        else if (e.Task is UploadFileTask)
                        {
                            var task = (UploadFileTask)e.Task;
                            var parentNode = task.Tag as TreeNode;
                            var selectedNode = treeView1.SelectedNode;
                            if (parentNode != null && selectedNode == parentNode)
                            {
                                UpdateFileList();
                            }
                        }
                        else if (e.Task is DeleteFileTask)
                        {
                            var task = (DeleteFileTask)e.Task;
                            var listItem = task.Tag as ListViewItem;
                            listItem?.Remove();
                        }
                        else if (e.Task is DeleteFolderTask)
                        {
                            var task = (DeleteFolderTask)e.Task;
                            var node = task.Tag as TreeNode;
                            node?.Remove();
                        }
                        break;
                }
            }));
        }
示例#5
0
文件: TaskList.cs 项目: fiftin/oblqo
        private void taskManager_TaskAdded(object sender, AsyncTaskEventArgs e)
        {
            if (e.Task is DeleteEmptyFolderTask || e.Task is EmptyTask)
            {
                return;
            }

            if (!displayingTaskListStates.Contains(e.Task.State))
            {
                return;
            }

            Invoke(new MethodInvoker(() => AddTask(e.Task)));
        }
示例#6
0
文件: TaskList.cs 项目: fiftin/oblqo
 private void taskManager_TaskRemoved(object sender, AsyncTaskEventArgs e)
 {
     for (var i = 0; i < taskListView.Items.Count; i++)
     {
         if (taskListView.Items[i].Tag == e.Task)
         {
             taskListView.Items.RemoveAt(i);
             break;
         }
     }
 }
示例#7
0
文件: TaskList.cs 项目: fiftin/oblqo
 private void taskManager_TaskProgress(object sender, AsyncTaskEventArgs<AsyncTaskProgressEventArgs> e)
 {
     try
     {
         var items = taskListView.Items.Cast<ListViewItem>();
         Invoke(new MethodInvoker(() =>
         {
             var item = items.FirstOrDefault(x => x.Tag == e.Task);
             if (item == null) return;
             item.SubItems["percent"].Text = e.Args.PercentDone.ToString();
         }));
     }
     catch (Exception ex)
     {
         OnError(ex);
     }
 }
示例#8
0
文件: TaskList.cs 项目: fiftin/oblqo
        private void taskManager_TaskStateChanged(object sender, AsyncTaskEventArgs e)
        {
            var items = taskListView.Items.Cast<ListViewItem>();

            Invoke(new MethodInvoker(() =>
            {
                var item = items.FirstOrDefault(x => x.Tag == e.Task);
                if (displayingTaskListStates.Contains(e.Task.State))
                {
                    if (item == null)
                    {
                        item = AddTask(e.Task);
                    }
                }
                else
                {
                    if (item != null)
                    {
                        item.Remove();
                        item = null;
                    }
                }

                if (e.Task.State == AsyncTaskState.Completed)
                {
                    var attrs = e.Task.GetType().GetCustomAttributes(typeof(AccountFileStateChangeAttribute), true);
                    if (attrs.Length != 0)
                    {
                        var attr = (AccountFileStateChangeAttribute)attrs[0];
                        var fileProp = e.Task.GetType().GetProperty(attr.FilePropertyName);
                        var file = (AccountFile)fileProp.GetValue(e.Task);
                        var parentFileProp = attr.ParentFilePropertyName == null ? null : e.Task.GetType().GetProperty(attr.ParentFilePropertyName);
                        var parentFile = parentFileProp == null ? null : (AccountFile)parentFileProp.GetValue(e.Task);
                    }
                }

                if (item == null)
                {
                    return;
                }

                switch (e.Task.State)
                {
                    case AsyncTaskState.Cancelled:
                        item.ImageKey = "cancel";
                        break;
                    case AsyncTaskState.Completed:
                        item.ImageKey = "ok";
                        break;
                    case AsyncTaskState.Error:
                        item.ImageKey = "error_red";
                        break;
                    case AsyncTaskState.Running:
                        item.ImageKey = "run";
                        break;
                    case AsyncTaskState.Waiting:
                        item.ImageKey = "queued";
                        break;
                }

                switch (e.Task.State)
                {
                    case AsyncTaskState.Cancelled:
                    case AsyncTaskState.Error:
                        item.SubItems["percent"].Text = "0";
                        break;
                    case AsyncTaskState.Completed:
                        item.SubItems["percent"].Text = "100";
                        break;
                }
            }));
        }
示例#9
0
文件: TaskList.cs 项目: fiftin/oblqo
        private void taskManager_TaskStateChanged(object sender, AsyncTaskEventArgs e)
        {
            var items = taskListView.Items.Cast <ListViewItem>();

            Invoke(new MethodInvoker(() =>
            {
                var item = items.FirstOrDefault(x => x.Tag == e.Task);
                if (displayingTaskListStates.Contains(e.Task.State))
                {
                    if (item == null)
                    {
                        item = AddTask(e.Task);
                    }
                }
                else
                {
                    if (item != null)
                    {
                        item.Remove();
                        item = null;
                    }
                }

                if (e.Task.State == AsyncTaskState.Completed)
                {
                    var attrs = e.Task.GetType().GetCustomAttributes(typeof(AccountFileStateChangeAttribute), true);
                    if (attrs.Length != 0)
                    {
                        var attr           = (AccountFileStateChangeAttribute)attrs[0];
                        var fileProp       = e.Task.GetType().GetProperty(attr.FilePropertyName);
                        var file           = (AccountFile)fileProp.GetValue(e.Task);
                        var parentFileProp = attr.ParentFilePropertyName == null ? null : e.Task.GetType().GetProperty(attr.ParentFilePropertyName);
                        var parentFile     = parentFileProp == null ? null : (AccountFile)parentFileProp.GetValue(e.Task);
                    }
                }

                if (item == null)
                {
                    return;
                }

                switch (e.Task.State)
                {
                case AsyncTaskState.Cancelled:
                    item.ImageKey = "cancel";
                    break;

                case AsyncTaskState.Completed:
                    item.ImageKey = "ok";
                    break;

                case AsyncTaskState.Error:
                    item.ImageKey = "error_red";
                    break;

                case AsyncTaskState.Running:
                    item.ImageKey = "run";
                    break;

                case AsyncTaskState.Waiting:
                    item.ImageKey = "queued";
                    break;
                }

                switch (e.Task.State)
                {
                case AsyncTaskState.Cancelled:
                case AsyncTaskState.Error:
                    item.SubItems["percent"].Text = "0";
                    break;

                case AsyncTaskState.Completed:
                    item.SubItems["percent"].Text = "100";
                    break;
                }
            }));
        }