Beispiel #1
0
        protected virtual void OnTaskStateChanged(AsyncTaskEventArgs e)
        {
            switch (e.Task.State)
            {
            case AsyncTaskState.Running:
                break;

            case AsyncTaskState.Cancelled:
            case AsyncTaskState.Completed:
                break;
            }
            if (TaskStateChanged != null)
            {
                TaskStateChanged(this, e);
            }
        }
Beispiel #2
0
        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;
                }
            }));
        }