Exemple #1
0
        public void AddRecentSet(SetViewModel set)
        {
            if (RecentSets == null)
            {
                RecentSets = new ObservableCollection <SetViewModel>();
            }

            RecentSets.Remove(s => s.ID == set.ID);
            while (RecentSets.Count >= 8)
            {
                RecentSets.RemoveAt(7);
            }
            RecentSets.Insert(0, set);
            cache.MakeSetRecent(set.ID);
        }
Exemple #2
0
        public void LoadData()
        {
            if (IsDataLoaded)
            {
                return;
            }

            try {
                Metrics.Measure("MainViewModel.LoadData()", delegate {
                    Metrics.Measure("Load ModelCache", delegate {
                        cache = api.Credentials != null
                                                        ? new ModelCache(api.Credentials)
                                                        : new ModelCache();
                    });

                    if (cache.Credentials == null)
                    {
                        return;
                    }

                    if (!api.Authenticate(cache.Credentials))
                    {
                        cache.LogOut();
                        LogOut();
                        return;
                    }

                    UserName = cache.Credentials.UserName;

                    Metrics.Measure("Create group view models", delegate {
                        foreach (var si in cache.GetMySets())
                        {
                            MySets.Add(new SetViewModel(this, si));
                        }

                        foreach (var si in cache.GetRecentSets().Take(8))
                        {
                            RecentSets.Add(new SetViewModel(this, si));
                        }

                        foreach (var si in cache.GetFavourites())
                        {
                            FavouriteSets.Add(new SetViewModel(this, si)
                            {
                                Starred = true
                            });
                        }
                    });

                    Metrics.Measure("Create group view models", delegate {
                        foreach (var gi in cache.GetGroups())
                        {
                            Groups.Add(new GroupViewModel(this, gi));
                        }
                    });

                    Metrics.Measure("Load profile image", LoadProfileImage);

                    IsDataLoaded = true;
                });
            } catch (CacheIndexMissingException) {
                // XXX This will never happen
            }
        }