예제 #1
0
        private void HandleAction(ToolAction action)
        {
            if (!IsToolActionEnabled(action))
            {
                return;
            }

            switch (action)
            {
            case ToolAction.ToolActionReload:
                GlobalReload();
                break;

            case ToolAction.ToolActionNew:
                CreateNewCatalog();
                break;

            case ToolAction.ToolActionOpen:
                OpenCatalog();
                break;

            case ToolAction.ToolActionSave:
                if (_cat != null && _cat.IsInDefaultLocation)
                {
                    goto case ToolAction.ToolActionSaveAs;
                }
                else
                {
                    SaveCatalogNoDialog();
                }
                break;

            case ToolAction.ToolActionSaveAs:
                SaveCatalogWithDialog();
                break;

            case ToolAction.ToolActionDelete:
                List <string> sel = GetSelectedVPaths();
                foreach (string vpath in sel)
                {
                    CatalogItem item = _cat.GetByVPath(vpath);
                    if (item != null)
                    {
                        if (item.IsFolder)
                        {
                            // Only folders in tree view
                            tvCatalog.RemoveItem(item);
                        }

                        lvCatalogFolder.RemoveItem(item);

                        item.Delete();
                    }
                }
                break;

            case ToolAction.ToolActionMerge:
                MergeCatalog();
                break;

            case ToolAction.ToolActionCatalog:
            {
                Task task = null;

                if (_cat != null)
                {
                    task             = new Task();
                    task.CatalogPath = _cat.Path;
                }

                if (ImportWizardMain.Execute(ref task) == DialogResult.OK)
                {
                    _cat = new Catalog((task as Task).CatalogPath);
                    DisplayCatalog();
                }
            }
            break;

            case ToolAction.ToolActionBack:
                ExploreBack();
                break;

            case ToolAction.ToolActionFwd:
                ExploreForward();
                break;

            case ToolAction.ToolActionUp:
                NavigateUp();
                break;

            case ToolAction.ToolActionSearch:
                SearchWizard.Tasks.Task taskSearch = new SearchWizard.Tasks.Task();
                taskSearch.Catalog    = _cat;
                taskSearch.SearchPath = (_curFolder != null) ? _curFolder.VPath : null;
                if (SearchWizardMain.Execute(taskSearch) == DialogResult.OK)
                {
                    switch (taskSearch.Action)
                    {
                    case ToolAction.ToolActionProTONEEnqueue:
                        RunProTONEActionOnVPaths(taskSearch.MatchingItems,
                                                 OPMedia.Runtime.ProTONE.RemoteControl.CommandType.EnqueueFiles);
                        break;

                    case ToolAction.ToolActionProTONEPlay:
                        RunProTONEActionOnVPaths(taskSearch.MatchingItems,
                                                 OPMedia.Runtime.ProTONE.RemoteControl.CommandType.PlayFiles);
                        break;

                    case ToolAction.ToolActionJumpToItem:
                        if (taskSearch.MatchingItems.Count > 0)
                        {
                            JumpToItem(taskSearch.MatchingItems[0]);
                        }
                        break;

                    case ToolAction.ToolActionDelete:
                        foreach (string vpath in taskSearch.MatchingItems)
                        {
                            CatalogItem item = _cat.GetByVPath(vpath);
                            if (item != null)
                            {
                                if (item.IsFolder)
                                {
                                    // Only folders in tree view
                                    tvCatalog.RemoveItem(item);
                                }

                                lvCatalogFolder.RemoveItem(item);

                                item.Delete();
                            }
                        }
                        break;
                    }
                }
                break;

            case ToolAction.ToolActionProTONEEnqueue:
                RunProTONEActionOnVPaths(GetSelectedVPaths(),
                                         OPMedia.Runtime.ProTONE.RemoteControl.CommandType.EnqueueFiles);
                break;

            case ToolAction.ToolActionProTONEPlay:
                RunProTONEActionOnVPaths(GetSelectedVPaths(),
                                         OPMedia.Runtime.ProTONE.RemoteControl.CommandType.PlayFiles);
                break;

            case ToolAction.ToolActionRename:
                lvCatalogFolder.Rename();
                break;
            }
        }