Ejemplo n.º 1
0
    public MainViewModel()
    {
        _windowState  = (WindowState)Enum.Parse(typeof(WindowState), Services.UiConfig.WindowState);
        _windowWidth  = Services.UiConfig.WindowWidth ?? 1280;
        _windowHeight = Services.UiConfig.WindowHeight ?? 960;

        var(x, y) = (Services.UiConfig.WindowX, Services.UiConfig.WindowY);
        if (x != null && y != null)
        {
            _windowPosition = new PixelPoint(x.Value, y.Value);
        }

        _dialogScreen = new DialogScreenViewModel();

        _fullScreen = new DialogScreenViewModel(NavigationTarget.FullScreen);

        _compactDialogScreen = new DialogScreenViewModel(NavigationTarget.CompactDialogScreen);

        MainScreen = new TargettedNavigationStack(NavigationTarget.HomeScreen);

        NavigationState.Register(MainScreen, DialogScreen, FullScreen, CompactDialogScreen);

        _isMainContentEnabled  = true;
        _isDialogScreenEnabled = true;
        _isFullScreenEnabled   = true;

        _statusBar = new StatusBarViewModel();

        UiServices.Initialize();

        _addWalletPage = new AddWalletPageViewModel();
        _settingsPage  = new SettingsPageViewModel();
        _privacyMode   = new PrivacyModeViewModel();
        _navBar        = new NavBarViewModel(MainScreen);

        MusicControls = new MusicControlsViewModel();

        NavigationManager.RegisterType(_navBar);
        RegisterViewModels();

        RxApp.MainThreadScheduler.Schedule(async() => await _navBar.InitialiseAsync());

        this.WhenAnyValue(x => x.WindowState, x => x.WindowPosition, x => x.WindowWidth, x => x.WindowHeight)
        .Where(x => x.Item1 != WindowState.Minimized)
        .Where(x => x.Item2 != new PixelPoint(-32000, -32000))                 // value when minimized
        .ObserveOn(RxApp.MainThreadScheduler)
        .Subscribe(t =>
        {
            var(state, position, width, height) = t;

            Services.UiConfig.WindowState = state.ToString();
            if (position is { })
            {
                Services.UiConfig.WindowX = position.Value.X;
                Services.UiConfig.WindowY = position.Value.Y;
            }

            Services.UiConfig.WindowWidth  = width;
            Services.UiConfig.WindowHeight = height;
        });
Ejemplo n.º 2
0
        public MainViewModel()
        {
            _windowState  = (WindowState)Enum.Parse(typeof(WindowState), Services.UiConfig.WindowState);
            _dialogScreen = new DialogScreenViewModel();

            _fullScreen = new DialogScreenViewModel(NavigationTarget.FullScreen);

            _compactDialogScreen = new DialogScreenViewModel(NavigationTarget.CompactDialogScreen);

            MainScreen = new TargettedNavigationStack(NavigationTarget.HomeScreen);

            NavigationState.Register(MainScreen, DialogScreen, FullScreen, CompactDialogScreen);

            _isMainContentEnabled  = true;
            _isDialogScreenEnabled = true;
            _isFullScreenEnabled   = true;

            _statusBar = new StatusBarViewModel();

            UiServices.Initialize();

            _addWalletPage = new AddWalletPageViewModel();
            _settingsPage  = new SettingsPageViewModel();
            _privacyMode   = new PrivacyModeViewModel();
            _searchPage    = new SearchPageViewModel();
            _navBar        = new NavBarViewModel(MainScreen);

            NavigationManager.RegisterType(_navBar);

            RegisterCategories(_searchPage);
            RegisterViewModels();

            RxApp.MainThreadScheduler.Schedule(async() => await _navBar.InitialiseAsync());

            _searchPage.Initialise();

            this.WhenAnyValue(x => x.WindowState)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(windowState => Services.UiConfig.WindowState = windowState.ToString());

            this.WhenAnyValue(x => x.DialogScreen !.IsDialogOpen)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(x => IsMainContentEnabled = !x);

            this.WhenAnyValue(x => x.FullScreen !.IsDialogOpen)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(x => IsMainContentEnabled = !x);

            this.WhenAnyValue(x => x.CompactDialogScreen !.IsDialogOpen)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(x => IsMainContentEnabled = !x);

            if (!Services.WalletManager.HasWallet())
            {
                _dialogScreen.To(_addWalletPage, NavigationMode.Clear);
            }
        }
Ejemplo n.º 3
0
        public MainViewModel(Global global)
        {
            _global       = global;
            _legalChecker = global.LegalChecker;

            _dialogScreen = new DialogScreenViewModel();

            _fullScreen = new DialogScreenViewModel(NavigationTarget.FullScreen);

            _compactDialogScreen = new DialogScreenViewModel(NavigationTarget.CompactDialogScreen);

            MainScreen = new TargettedNavigationStack(NavigationTarget.HomeScreen);

            NavigationState.Register(MainScreen, DialogScreen, FullScreen, CompactDialogScreen);

            Network = global.Network;

            _isMainContentEnabled  = true;
            _isDialogScreenEnabled = true;
            _isFullScreenEnabled   = true;

            _statusBar = new StatusBarViewModel(
                global.DataDir,
                global.Network,
                global.Config,
                global.HostedServices,
                global.BitcoinStore.SmartHeaderChain,
                global.Synchronizer);

            _walletManagerViewModel = new WalletManagerViewModel(global.WalletManager, global.UiConfig, _global.BitcoinStore, _global.LegalChecker, _global.TransactionBroadcaster);

            _addWalletPage = new AddWalletPageViewModel(
                _walletManagerViewModel,
                global.BitcoinStore);

            _settingsPage = new SettingsPageViewModel(global.Config, global.UiConfig);
            _privacyMode  = new PrivacyModeViewModel(global.UiConfig);
            _searchPage   = new SearchPageViewModel();

            _navBar = new NavBarViewModel(MainScreen, _walletManagerViewModel);

            NavigationManager.RegisterType(_navBar);

            RegisterCategories(_searchPage);
            RegisterViewModels();

            RxApp.MainThreadScheduler.Schedule(async() => await _navBar.InitialiseAsync());

            _searchPage.Initialise();

            this.WhenAnyValue(x => x.DialogScreen !.IsDialogOpen)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(x => IsMainContentEnabled = !x);

            this.WhenAnyValue(x => x.FullScreen !.IsDialogOpen)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(x => IsMainContentEnabled = !x);

            _walletManagerViewModel.WhenAnyValue(x => x.Items.Count, x => x.Actions.Count)
            .Subscribe(x => _navBar.IsHidden = x.Item1 == 0 && x.Item2 == 0);

            if (!_walletManagerViewModel.WalletManager.AnyWallet(_ => true))
            {
                MainScreen.To(_addWalletPage);
            }
        }
Ejemplo n.º 4
0
        public MainViewModel()
        {
            _windowState  = (WindowState)Enum.Parse(typeof(WindowState), Services.UiConfig.WindowState);
            _dialogScreen = new DialogScreenViewModel();

            _fullScreen = new DialogScreenViewModel(NavigationTarget.FullScreen);

            _compactDialogScreen = new DialogScreenViewModel(NavigationTarget.CompactDialogScreen);

            MainScreen = new TargettedNavigationStack(NavigationTarget.HomeScreen);

            NavigationState.Register(MainScreen, DialogScreen, FullScreen, CompactDialogScreen);

            _isMainContentEnabled  = true;
            _isDialogScreenEnabled = true;
            _isFullScreenEnabled   = true;

            _statusBar = new StatusBarViewModel();

            UiServices.Initialize();

            _addWalletPage = new AddWalletPageViewModel();
            _settingsPage  = new SettingsPageViewModel();
            _privacyMode   = new PrivacyModeViewModel();
            _searchPage    = new SearchPageViewModel();
            _navBar        = new NavBarViewModel(MainScreen);

            NavigationManager.RegisterType(_navBar);

            RegisterCategories(_searchPage);
            RegisterViewModels();

            RxApp.MainThreadScheduler.Schedule(async() => await _navBar.InitialiseAsync());

            _searchPage.Initialise();

            this.WhenAnyValue(x => x.WindowState)
            .Where(x => x != WindowState.Minimized)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(windowState => Services.UiConfig.WindowState = windowState.ToString());

            this.WhenAnyValue(
                x => x.DialogScreen !.IsDialogOpen,
                x => x.FullScreen !.IsDialogOpen,
                x => x.CompactDialogScreen !.IsDialogOpen)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(tup =>
            {
                var(dialogScreenIsOpen, fullScreenIsOpen, compactDialogScreenIsOpen) = tup;

                IsMainContentEnabled = !(dialogScreenIsOpen || fullScreenIsOpen || compactDialogScreenIsOpen);
            });

            this.WhenAnyValue(
                x => x.DialogScreen.CurrentPage,
                x => x.CompactDialogScreen.CurrentPage,
                x => x.FullScreen.CurrentPage,
                x => x.MainScreen.CurrentPage)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(tup =>
            {
                var(dialog, compactDialog, fullscreenDialog, mainsScreen) = tup;

                /*
                 * Order is important.
                 * Always the topmost content will be the active one.
                 */

                if (compactDialog is { })
                {
                    compactDialog.SetActive();
                    return;
                }

                if (dialog is { })
Ejemplo n.º 5
0
        public MainViewModel(Global global)
        {
            _global = global;

            _dialogScreen = new DialogScreenViewModel(800, 700);

            _fullScreen = new DialogScreenViewModel(double.PositiveInfinity, double.PositiveInfinity, NavigationTarget.FullScreen);

            MainScreen = new TargettedNavigationStack(NavigationTarget.HomeScreen);

            NavigationState.Register(MainScreen, DialogScreen, FullScreen, () => this);

            Network = global.Network;

            _currentDialog = null;

            _isMainContentEnabled  = true;
            _isDialogScreenEnabled = true;
            _isFullScreenEnabled   = true;

            _statusBar = new StatusBarViewModel(
                global.DataDir,
                global.Network,
                global.Config,
                global.HostedServices,
                global.BitcoinStore.SmartHeaderChain,
                global.Synchronizer,
                global.LegalDocuments);

            _walletManager = new WalletManagerViewModel(global.WalletManager, global.UiConfig);

            _addWalletPage = new AddWalletPageViewModel(
                global.LegalDocuments,
                global.WalletManager,
                global.BitcoinStore,
                global.Network);

            _settingsPage = new SettingsPageViewModel(global.Config, global.UiConfig);
            _privacyMode  = new PrivacyModeViewModel(global.UiConfig);
            _searchPage   = new SearchPageViewModel();

            _navBar = new NavBarViewModel(MainScreen, _walletManager);

            NavigationManager.RegisterType(_navBar);

            RegisterCategories(_searchPage);
            RegisterViewModels();

            RxApp.MainThreadScheduler.Schedule(async() => await _navBar.InitialiseAsync());

            _searchPage.Initialise();

            this.WhenAnyValue(x => x.DialogScreen !.IsDialogOpen)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(x => IsMainContentEnabled = !x);

            this.WhenAnyValue(x => x.FullScreen !.IsDialogOpen)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(x => IsMainContentEnabled = !x);

            this.WhenAnyValue(x => x.CurrentDialog !.IsDialogOpen)
            .ObserveOn(RxApp.MainThreadScheduler)
            .Subscribe(x =>
            {
                IsFullScreenEnabled   = !x;
                IsDialogScreenEnabled = !x;
            });

            _walletManager.WhenAnyValue(x => x.Items.Count)
            .Subscribe(x => _navBar.IsHidden = x == 0);

            if (!_walletManager.Model.AnyWallet(_ => true))
            {
                MainScreen.To(_addWalletPage);
            }
        }