Пример #1
0
        public MenuViewModel(
            Func <Type, string, object, MenuItemViewModel> factory,
            INavigationService navigationService,
            IPlatformService platformService,
            ISettingManager settingManager)
        {
            _navigationService = navigationService;
            _platformService   = platformService;
            _settingManager    = settingManager;
            _factory           = factory;

            Items    = new ReactiveList <MenuItemViewModel>();
            Navigate = ReactiveCommand.Create(DoNavigate);
            Load     = ReactiveCommand.CreateFromTask(DoLoad);
            _navigationService.Navigated
            .Where(x => x != Selection?.Type)
            .Select(x => Items.FirstOrDefault(i => i.Type == x))
            .Subscribe(x => Selection = x);
        }
Пример #2
0
        private async Task DoLoad()
        {
            await _navigationService.Navigate <FeedViewModel>();

            var settings = await _settingManager.Read();

            settings.Fetched = DateTime.Now;

            await _platformService.RegisterBackgroundTask(settings.Period);

            await _platformService.RegisterTheme(settings.Theme);

            await _settingManager.Write(settings);

            _navigationService.Icons.ToList().ForEach(item =>
                                                      Items.Add(_factory(item.Key, item.Value.Item1, item.Value.Item2)
                                                                ));
            Selection = Items.FirstOrDefault();
        }
Пример #3
0
        public MenuViewModel(
            Func <Type, string, object, MenuItemViewModel> factory,
            INavigationService navigationService,
            IPlatformService platformService,
            ISettingManager settingManager)
        {
            Items    = new ReactiveList <MenuItemViewModel>();
            Navigate = ReactiveCommand.Create(() =>
            {
                if (Selection == null)
                {
                    return;
                }
                typeof(INavigationService)
                .GetMethod("Navigate", new Type[] {})
                .MakeGenericMethod(Selection.Type)
                .Invoke(navigationService, null);
            });
            Load = ReactiveCommand.CreateFromTask(async() =>
            {
                await navigationService.Navigate <FeedViewModel>();
                var settings     = await settingManager.Read();
                settings.Fetched = DateTime.Now;

                await platformService.RegisterBackgroundTask(settings.Period);
                await platformService.RegisterTheme(settings.Theme);
                await settingManager.Write(settings);

                navigationService.Icons.ToList().ForEach(item => Items.Add(
                                                             factory(item.Key, item.Value.Item1, item.Value.Item2)));

                Selection = Items.FirstOrDefault();
                navigationService.Navigated
                .Where(x => x != Selection?.Type)
                .Select(x => Items.FirstOrDefault(i => i.Type == x))
                .Subscribe(x => Selection = x);
            });
        }