Beispiel #1
0
        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();
        }
Beispiel #2
0
        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
                       ));
        }