public void Handle(RootChangedEvent message) { switch (message.ChangeType) { case ChangeType.Created: case ChangeType.Changed: if (message.ChangeType == ChangeType.Changed) { RootModels.Clear(); } foreach (var root in message.AppliedRootDirectories) { RootModels.Add(root); } break; case ChangeType.Deleted: foreach (var root in message.AppliedRootDirectories) { RootModels.Remove(root); } break; } }
public AppViewModel(IEventAggregator events, IWindowManager windowManager) { //FileExplorer.Models.Bookmark.BookmarkSerializeTest.Test(); _windowManager = windowManager; _events = events; _events.Subscribe(this); _profile = new FileSystemInfoProfile(_events); _profileEx = new FileSystemInfoExProfile(_events, _windowManager, new FileExplorer.Models.SevenZipSharp.SzsProfile(_events)); Func <string> loginSkyDrive = () => { var login = new SkyDriveLogin(AuthorizationKeys.SkyDrive_Client_Id); if (_windowManager.ShowDialog(new LoginViewModel(login)).Value) { return(login.AuthCode); } return(null); }; if (AuthorizationKeys.SkyDrive_Client_Secret != null) { _profileSkyDrive = new SkyDriveProfile(_events, AuthorizationKeys.SkyDrive_Client_Id, loginSkyDrive, skyDriveAliasMask); } Func <UserLogin> loginDropBox = () => { var login = new DropBoxLogin(AuthorizationKeys.DropBox_Client_Id, AuthorizationKeys.DropBox_Client_Secret); if (_windowManager.ShowDialog(new LoginViewModel(login)).Value) { return(login.AccessToken); } return(null); }; if (AuthorizationKeys.DropBox_Client_Secret != null) { _profileDropBox = new DropBoxProfile(_events, AuthorizationKeys.DropBox_Client_Id, AuthorizationKeys.DropBox_Client_Secret, loginDropBox); } if (System.IO.File.Exists("gapi_client_secret.json")) { using (var gapi_secret_stream = System.IO.File.OpenRead("gapi_client_secret.json")) //For demo only. { _profileGoogleDrive = new GoogleDriveProfile(_events, gapi_secret_stream); } } string appDataPath = Environment.ExpandEnvironmentVariables("%AppData%\\FileExplorer3"); System.IO.Directory.CreateDirectory(appDataPath); string bookmarkPath = Path.Combine(appDataPath, "Bookmarks.xml"); _profileBm = new BookmarkProfile(_profileEx as IDiskProfile, bookmarkPath, new IProfile[] { _profileEx, _profileSkyDrive, _profileDropBox, _profileGoogleDrive }); RootModels.Add((_profileBm as BookmarkProfile).RootModel); RootModels.Add(AsyncUtils.RunSync(() => _profileEx.ParseAsync(System.IO.DirectoryInfoEx.DesktopDirectory.FullName))); _profiles = new IProfile[] { _profileBm, _profileEx, _profileSkyDrive, _profileDropBox, _profileGoogleDrive }.Where(p => p != null).ToArray(); }