public override void OnFrameworkInitializationCompleted() { var current = CurrentThreadScheduler.Instance; var main = RxApp.MainThreadScheduler; Akavache.BlobCache.ApplicationName = "Camelotia"; var cache = Akavache.BlobCache.UserAccount; var window = new MainView(); var login = new AvaloniaYandexAuthenticator(); var files = new AvaloniaFileManager(window); var context = new MainViewModel( (provider, auth) => new ProviderViewModel( model => new CreateFolderViewModel(model, provider, current, main), model => new RenameFileViewModel(model, provider, current, main), (file, model) => new FileViewModel(model, file), auth, files, provider, current, main ), provider => new AuthViewModel( new DirectAuthViewModel(provider, current, main), new HostAuthViewModel(provider, current, main), new OAuthViewModel(provider, current, main), provider, current, main ), new ProviderStorage( new Dictionary <string, Func <ProviderModel, IProvider> > { ["Local File System"] = id => new LocalProvider(id), ["Vkontakte Docs"] = id => new VkDocsProvider(id, cache), ["Yandex Disk"] = id => new YandexDiskProvider(id, login, cache), ["FTP"] = id => new FtpProvider(id), ["SFTP"] = id => new SftpProvider(id), ["GitHub"] = id => new GitHubProvider(id, cache), ["Google Drive"] = id => new GoogleDriveProvider(id, cache) }, cache ), current, main ); window.DataContext = context; window.Show(); base.OnFrameworkInitializationCompleted(); }
private static IMainViewModel BuildMainViewModel() { var current = CurrentThreadScheduler.Instance; var main = RxApp.MainThreadScheduler; Akavache.BlobCache.ApplicationName = "Camelotia"; var cache = Akavache.BlobCache.UserAccount; var login = new AvaloniaYandexAuthenticator(); var files = new AvaloniaFileManager(); return(new MainViewModel( (provider, auth) => new ProviderViewModel( model => new CreateFolderViewModel(model, provider, current, main), model => new RenameFileViewModel(model, provider, current, main), (file, model) => new FileViewModel(model, file), auth, files, provider, current, main ), provider => new AuthViewModel( new DirectAuthViewModel(provider, current, main), new HostAuthViewModel(provider, current, main), new OAuthViewModel(provider, current, main), provider, current, main ), new ProviderStorage( new Dictionary <string, Func <ProviderModel, IProvider> > { ["Local File System"] = id => new LocalProvider(id), ["Vkontakte Docs"] = id => new VkDocsProvider(id, cache), ["Yandex Disk"] = id => new YandexDiskProvider(id, login, cache), ["FTP"] = id => new FtpProvider(id), ["SFTP"] = id => new SftpProvider(id), ["GitHub"] = id => new GitHubProvider(id, cache), ["Google Drive"] = id => new GoogleDriveProvider(id, cache) }, cache ), current, main )); }