protected override void DeleteCore() { var previousSelection = new List <Document>(SelectedDocuments); var documentsCopy = SelectedDocuments.Select(d => d.DuckCopy <Document>()).ToList(); #region Do action Action doAction = delegate { var documentsView = DetailsViewType == DetailsViewType.Documents ? (IEditableCollectionView)DocumentsViewSource.View : (IEditableCollectionView)ImagesViewSource.View; foreach (var document in SelectedDocuments.ToList()) { documentsView.EditItem(document); document.DocumentFolder = Folders.Trash; AsyncUpdateQueue.Enqueue(document); documentsView.CommitEdit(); } }; #endregion #region Undo action Action undoAction = delegate { foreach (var document in previousSelection) { Document document1 = document; var oldDocument = documentsCopy.Single(d => d.DocumentId == document1.DocumentId); document.DocumentFolder = oldDocument.DocumentFolder; AsyncUpdateQueue.Enqueue(document); } // We cannot use the IEditableObject appraoch here because the document in question // probably might not be in view anymore. So instead we will refresh the whole view. if (DetailsViewType == DetailsViewType.Documents) { DocumentsViewSource.View.Refresh(); } else { ImagesViewSource.View.Refresh(); } }; #endregion ClientState.Current.UndoManager.Execute(new HistoryAction(doAction, undoAction)); }
protected override void MarkUnreadCore() { var previousSelection = new List <Document>(SelectedDocuments); var documentsCopy = SelectedDocuments.Select(d => d.DuckCopy <Document>()).ToList(); #region Do action Action doAction = delegate { foreach (var document in SelectedDocuments.ToList()) { var documentsView = DetailsViewType == DetailsViewType.Documents ? (IEditableCollectionView)DocumentsViewSource.View : (IEditableCollectionView)ImagesViewSource.View; documentsView.EditItem(document); document.MarkUnread(); AsyncUpdateQueue.Enqueue(document); documentsView.CommitEdit(); } }; #endregion #region Undo action Action undoAction = delegate { foreach (var document in previousSelection) { Document document1 = document; var oldDocument = documentsCopy.Single(d => d.DocumentId == document1.DocumentId); document.IsRead = oldDocument.IsRead; document.UpdateProperty("IsRead"); AsyncUpdateQueue.Enqueue(document); } if (DetailsViewType == DetailsViewType.Documents) { DocumentsViewSource.View.Refresh(); } else { ImagesViewSource.View.Refresh(); } }; #endregion ClientState.Current.UndoManager.Execute(new HistoryAction(doAction, undoAction)); }
private CheckBox CreateCheckBoxForDocument(Document document) { var docCheckBox = new CheckBox { Content = document.Name, HorizontalAlignment = HorizontalAlignment.Left }; docCheckBox.Checked += delegate { SelectedDocuments.Add(document); }; docCheckBox.Unchecked += delegate { SelectedDocuments.Remove(document); }; docCheckBox.Checked += delegate { okButton.SetBinding(DependencyProperty.Register(nameof(ValidSelection), typeof(bool), typeof(CrossJoinSelectDialog)), new System.Windows.Data.Binding()); }; docCheckBox.Unchecked += delegate { okButton.IsEnabled = SelectedDocuments.Count > 1; }; return(docCheckBox); }
public void SetSelecting(bool selecting, bool animated) { SelectedDocuments.Clear(); }