Esempio n. 1
0
        public async Task DeleteDirectoryRowEvent()
        {
            IRowViewModel deleteRowEventParent = null, deleteRowEventChild = null;

            using (var testDirectory = new Infrastructure.TestDirectory())
            {
                Infrastructure.TestDirectory.CreateFiles(testDirectory.CreateDirectory("Dir"), new Dictionary <string, DateTime>
                {
                    { "File", DateTime.Now }
                });

                var synchronizedDirectories = new TestSynchronizedItems(new Directory(testDirectory.FullPath, null, new ItemFactory()));
                var factory = new RowViewModelFactory();
                factory.DeleteRowEvent += (IRowViewModel parent, IRowViewModel child) =>
                {
                    deleteRowEventParent = parent;
                    deleteRowEventChild  = child;
                };

                var rowViewModel = factory.CreateRowViewModel(synchronizedDirectories);

                await synchronizedDirectories.Load();

                var level1Child = synchronizedDirectories.ChildItems[0];
                var level2Child = level1Child.ChildItems[0];

                ((TestSynchronizedItems)level1Child).IsDeleted();

                Assert.NotNull(deleteRowEventParent);
                Assert.NotNull(deleteRowEventChild);
                Assert.Equal(synchronizedDirectories.LeftItem.Name, deleteRowEventParent.LeftItem.Name);
                Assert.Equal(level1Child.LeftItem.Name, deleteRowEventChild.LeftItem.Name);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Конструктор.
        /// </summary>
        /// <param name="leftItem">Элемент слева.</param>
        /// <param name="rightItem">Элемент справа.</param>
        public RowViewModel(IItemViewModel leftItem, IItemViewModel rightItem, IRowViewModel parent)
        {
            LeftItem  = leftItem;
            RightItem = rightItem;
            ChildRows = new ObservableCollection <IRowViewModel>();

            SetItemViewModelEvents(LeftItem);
            SetItemViewModelEvents(RightItem);
        }
 private void AddChildRows(IRowViewModel row, ISynchronizedItems synchronizedItems)
 {
     foreach (var child in synchronizedItems.ChildItems)
     {
         var childRow = CreateRowViewModel(child);
         child.DeletedEvent += () =>
         {
             DeleteRowEvent?.Invoke(row, childRow);
         };
         AddRowEvent?.Invoke(row, childRow);
     }
 }
Esempio n. 4
0
 private void SubscribeOnErrors(IRowViewModel row)
 {
     row.SyncErrorEvent += (string error) =>
     {
         _dispatcher.Invoke(() =>
         {
             AddToLog(error);
         });
     };
     foreach (var childRow in row.ChildRows)
     {
         SubscribeOnErrors(childRow);
     }
 }
Esempio n. 5
0
        private void DeleteRow(IRowViewModel parentRow, IRowViewModel childRow)
        {
            if (parentRow == null)
            {
                _dispatcher.Invoke(() => Rows.Remove(childRow));
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Rows)));
            }
            else
            {
                _dispatcher.Invoke(() => parentRow.ChildRows.Remove(childRow));
                PropertyChanged?.Invoke(parentRow, new PropertyChangedEventArgs(nameof(parentRow.ChildRows)));
            }

            childRow.SyncErrorEvent -= AddToLog;
        }