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));
        }
Exemple #3
0
        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);
        }
Exemple #4
0
 public void SetSelecting(bool selecting, bool animated)
 {
     SelectedDocuments.Clear();
 }