public void OpenDirectoryWithOneFileInIt() { using (var directory = new TestDirectory()) using (var file = new TestFile()) { directory.CopyTestFileToDirectory(file); var expected = directory.GetFiles().OrderBy(t => t.FullName); var actual = new FileOpenViewModel(null).FileAndDirectoryValidator(directory.Info.FullName).OrderBy(t => t.FullName); for (int i = 0; i < expected.Count(); i++) { expected.ElementAt(i).FullName.ShouldBeEquivalentTo(actual.ElementAt(i).FullName); expected.ElementAt(i).Length.ShouldBeEquivalentTo(actual.ElementAt(i).Length); } } }
public FileOpenView() { vm = new FileOpenViewModel(); BindingContext = vm; InitializeComponent(); }
public WindowViewModel(IObjectProvider objectProvider, IWindowFactory windowFactory, ILogger logger, IWindowsController windowsController, RecentFilesViewModel recentFilesViewModel, GeneralOptionsViewModel generalOptionsViewModel, ISchedulerProvider schedulerProvider, DialogViewModel dialogviewmodel, FileOpenViewModel fileopenviewmodel) { //This function handles the pinning //If the user decides to pin a tab the function will lock that tab and reorder the effected tabs Pinning = new ActionCommand(o => { var viewsarray = Views.ToList(); var pinnedone = Views.FirstOrDefault(c => c.Header.Equals(o)); var pinnedindex = Views.IndexOf(pinnedone); bool actualpinned = false; ViewContainer oldtab = null; if (o.GetType().IsEquivalentTo(typeof(FilesHeader))) { ((FilesHeader)pinnedone.Header).IsPinned = !((FilesHeader)pinnedone.Header).IsPinned; actualpinned = ((FilesHeader)pinnedone.Header).IsPinned; } else { ((FileHeader)pinnedone.Header).IsPinned = !((FileHeader)pinnedone.Header).IsPinned; actualpinned = ((FileHeader)pinnedone.Header).IsPinned; } if (actualpinned) { PinnedNumber += 1; PinnedNumber2 += 1; oldtab = Views[pinnedindex]; viewsarray.Remove(viewsarray[pinnedindex]); viewsarray.Insert(PinnedNumber, oldtab); } else { PinnedNumber -= 1; PinnedNumber2 -= 1; oldtab = Views[pinnedindex]; viewsarray.Remove(viewsarray[pinnedindex]); viewsarray.Insert(PinnedNumber2, oldtab); } Views = new ObservableCollection <ViewContainer>(viewsarray); OnPropertyChanged("Views"); OnPropertyChanged("PinnedNumber2"); }); _logger = logger; _windowsController = windowsController; RecentFiles = recentFilesViewModel; GeneralOptions = generalOptionsViewModel; Dialog = dialogviewmodel; _schedulerProvider = schedulerProvider; _objectProvider = objectProvider; InterTabClient = new InterTabClient(windowFactory); FileOpenDialogCommand = new Command(OpenFileDialog); FileOpen = new FileOpenViewModel(OpenFile); ShowInGitHubCommand = new Command(() => Process.Start("https://github.com/RolandPheasant")); Views.CollectionChanged += Views_CollectionChanged; ZoomOutCommand = new Command(() => { GeneralOptions.Scale = GeneralOptions.Scale + 5; }); ZoomInCommand = new Command(() => { GeneralOptions.Scale = GeneralOptions.Scale - 5; }); SaveLayoutCommand = new Command(WalkTheLayout); ExitCommmand = new Command(() => Application.Current.Shutdown()); Version = $"v{Assembly.GetEntryAssembly().GetName().Version.ToString(3)}"; var fileDropped = DropMonitor.Dropped.Subscribe(async t => await OpenFile(t)); var isEmptyChecker = Views.ToObservableChangeSet() .ToCollection() .Select(items => items.Count) .StartWith(0) .Select(count => count == 0) .Subscribe(isEmpty => IsEmpty = isEmpty); var openRecent = recentFilesViewModel.OpenFileRequest .Subscribe(file => { MenuIsOpen = false; OpenFile(file); }); _cleanUp = new CompositeDisposable(recentFilesViewModel, isEmptyChecker, fileDropped, DropMonitor, openRecent, Disposable.Create(() => { Views.Select(vc => vc.Content) .OfType <IDisposable>() .ForEach(d => d.Dispose()); })); }