Exemplo n.º 1
0
        public SteamSelectorViewModel(IEventAggregator eventAggregator, ITileCreator tileCreator)
        {
            _tileDataSelectedEvent = eventAggregator.GetEvent<TileDataSelectedEvent>();
            _tileDataSelectedEvent.Subscribe(o =>
            {
                try
                {
                    _reactingToTileDataSelectedEvent = true;
                    SelectedGameData = o as GameDataViewModel;
                }
                finally
                {
                    _reactingToTileDataSelectedEvent = false;
                }
            });
            _tileCreator = tileCreator;

            RefreshCommand = new AsyncRelayCommand(() => Refresh(), null, true);


            UserData = CacheManager.LoadFromCache<UserData>().FirstOrDefault() ?? new UserData();
            SteamAPI = new SteamAPI(UserData.SteamCommunityId);


            UserData.SteamCommunityIdChanged += async (o, e) =>
             {
                 await UserData.SaveToCacheAsync();
                 SteamAPI = new SteamAPI(UserData.SteamCommunityId);
             };



            var cachedGameDatas = CacheManager.LoadFromCache<GameData>()
                    .OrderBy(o => o.IsInstalled ? 0 : 1)
                    .ThenBy(o => o.Name)
                    .Select(o => new GameDataViewModel(o, _tileCreator, SteamAPI));

            GameDatas.AddRange(cachedGameDatas);

            GameDatas.CollectionChanged += async (o, e) =>
             {
                 switch (e.Action)
                 {
                     case NotifyCollectionChangedAction.Add:

                         foreach (GameData item in e.NewItems)
                             await item.SaveToCacheAsync();
                         break;
                     case NotifyCollectionChangedAction.Remove:
                         foreach (GameData item in e.OldItems)
                             await item.RemoveFromCacheAsync();
                         break;
                     default:
                         break;
                 }
             };


            Application.Current.Exit += (o, e) =>
            {
                UserData.SaveToCache();
                if (SelectedGameData != null)
                    SelectedGameData.GameModel.SaveToCache();

            };


        }
Exemplo n.º 2
0
        public SteamSelectorViewModel(IEventAggregator eventAggregator, ITileCreator tileCreator)
        {
            _tileDataSelectedEvent = eventAggregator.GetEvent <TileDataSelectedEvent>();
            _tileDataSelectedEvent.Subscribe(o =>
            {
                try
                {
                    _reactingToTileDataSelectedEvent = true;
                    SelectedGameData = o as GameDataViewModel;
                }
                finally
                {
                    _reactingToTileDataSelectedEvent = false;
                }
            });
            _tileCreator = tileCreator;

            RefreshCommand = new AsyncRelayCommand(() => Refresh(), null, true);


            UserData = CacheManager.LoadFromCache <UserData>().FirstOrDefault() ?? new UserData();
            SteamAPI = new SteamAPI(UserData.SteamCommunityId);


            UserData.SteamCommunityIdChanged += async(o, e) =>
            {
                await UserData.SaveToCacheAsync();

                SteamAPI = new SteamAPI(UserData.SteamCommunityId);
            };



            var cachedGameDatas = CacheManager.LoadFromCache <GameData>()
                                  .OrderBy(o => o.IsInstalled ? 0 : 1)
                                  .ThenBy(o => o.Name)
                                  .Select(o => new GameDataViewModel(o, _tileCreator, SteamAPI));

            GameDatas.AddRange(cachedGameDatas);

            GameDatas.CollectionChanged += async(o, e) =>
            {
                switch (e.Action)
                {
                case NotifyCollectionChangedAction.Add:

                    foreach (GameData item in e.NewItems)
                    {
                        await item.SaveToCacheAsync();
                    }
                    break;

                case NotifyCollectionChangedAction.Remove:
                    foreach (GameData item in e.OldItems)
                    {
                        await item.RemoveFromCacheAsync();
                    }
                    break;

                default:
                    break;
                }
            };


            Application.Current.Exit += (o, e) =>
            {
                UserData.SaveToCache();
                if (SelectedGameData != null)
                {
                    SelectedGameData.GameModel.SaveToCache();
                }
            };
        }