コード例 #1
0
        /// <summary>
        /// Command callback. Applies the bulk edit depending
        /// on the mode and value.
        /// </summary>
        private void OnBulkEditTextApply()
        {
            string messageBoxContent = string.Format("Do you really want to apply "
                                                     + "this {2} to all {0} selected items?{1}Existing {2} values will be "
                                                     + "overwritten and lost forever.",
                                                     SelectedItems.Count,
                                                     Environment.NewLine,
                                                     BulkEditMode == BulkEditModeEnum.MeaningNote ? "meaning note" :
                                                     (BulkEditMode == BulkEditModeEnum.ReadingNote ? "reading note" :
                                                      "tag"));

            if (System.Windows.MessageBox.Show(
                    NavigationActor.Instance.ActiveWindow,
                    messageBoxContent,
                    "Bulk edition confirmation",
                    System.Windows.MessageBoxButton.YesNo,
                    System.Windows.MessageBoxImage.Question,
                    System.Windows.MessageBoxResult.Cancel)
                == System.Windows.MessageBoxResult.Yes)
            {
                BulkEditTaskEnum task = BulkEditMode == BulkEditModeEnum.MeaningNote ?
                                        BulkEditTaskEnum.MeaningNote :
                                        (BulkEditMode == BulkEditModeEnum.ReadingNote ? BulkEditTaskEnum.ReadingNote
                    : BulkEditTaskEnum.Tags);

                BulkEdit(task,
                         SelectedItems.Select(i => i.Reference).ToArray(),
                         BulkEditValue);
            }
        }
コード例 #2
0
        /// <summary>
        /// Background task work method.
        /// Performs the bulk edit.
        /// </summary>
        private void DoBulkEdit(object sender, DoWorkEventArgs e)
        {
            BulkEditTaskEnum task = (BulkEditTaskEnum)((object[])e.Argument)[0];

            SrsEntry[] entries = (SrsEntry[])((object[])e.Argument)[1];
            object     value   = ((object[])e.Argument)[2];

            switch (task)
            {
            case BulkEditTaskEnum.MeaningNote:
                BulkEditResultCount =
                    _srsEntryDao.BulkEditMeaningNote(entries, (string)value);
                break;

            case BulkEditTaskEnum.ReadingNote:
                BulkEditResultCount =
                    _srsEntryDao.BulkEditReadingNote(entries, (string)value);
                break;

            case BulkEditTaskEnum.Tags:
                BulkEditResultCount =
                    _srsEntryDao.BulkEditTags(entries, (string)value);
                break;

            case BulkEditTaskEnum.Level:
                BulkEditResultCount =
                    _srsEntryDao.BulkEditGrade(entries, (short)value,
                                               SrsLevelStore.Instance.GetLevelByValue((short)value).Delay);
                break;

            case BulkEditTaskEnum.Timing:
                BulkEditResultCount = _srsEntryDao.BulkEditReviewDate(entries);
                break;

            case BulkEditTaskEnum.Suspend:
                BulkEditResultCount = _srsEntryDao.BulkSuspend(entries);
                break;

            case BulkEditTaskEnum.Resume:
                BulkEditResultCount = _srsEntryDao.BulkResume(entries);
                break;

            case BulkEditTaskEnum.Delete:
                BulkEditResultCount = _srsEntryDao.BulkDelete(entries);
                break;

            default:
                throw new ArgumentException(string.Format(
                                                "Unknown task: \"{0}\".", task));
            }
        }
コード例 #3
0
        /// <summary>
        /// Starts a background task that will perform the bulk edition.
        /// </summary>
        private void BulkEdit(BulkEditTaskEnum task, SrsEntry[] items,
                              object value = null)
        {
            BulkEditResultCount = 0;
            BulkEditMode        = BulkEditModeEnum.Applying;
            BulkEditValue       = string.Empty;

            BackgroundWorker worker = new BackgroundWorker();

            worker.DoWork             += DoBulkEdit;
            worker.RunWorkerCompleted += DoneBulkEdit;

            // Only run the worker when SRS levels are loaded because they
            // are needed in some cases.
            SrsLevelStore.Instance.IssueWhenLoaded(() =>
            {
                worker.RunWorkerAsync(new object[] { task, items, value });
            });
        }