示例#1
0
        public MainWindowViewModel(List <Session> sessions)
        {
            Title = "Ignite Video Viewer / Downloader v1.0";

            cts = new CancellationTokenSource();

            var fileName = GetFavoritesFileName(true);

            var favorites = GetFavorites(fileName);

            foreach (var session in sessions)
            {
                session.OnSelectionChanged += (s, e) =>
                {
                    if (allSelected && !e.Value)
                    {
                        allSelected = false;

                        RaisePropertyChanged(() => AllSelected);
                    }
                    else if (!allSelected && Sessions.All(c => c.Selected))
                    {
                        allSelected = true;

                        RaisePropertyChanged(() => AllSelected);
                    }

                    UpdateUI();
                };

                if (favorites.TryGetValue(session.Code, out bool isFavorite))
                {
                    session.IsFavorite = isFavorite;
                }
            }

            Sessions = sessions;

            SessionFilterView = (CollectionView)CollectionViewSource.GetDefaultView(Sessions);

            SessionFilterView.Filter = OnFilterTriggered;

            SessionFilterView.CurrentChanged += (s, e) =>
            {
                SessionsCount = $"{SessionFilterView.Count:N0} Sessions";
            };

            UpdateUI();

            DownloadVideos = true;

            Downloading = false;

            ShowStandardStatusPrompt();

            SelectedSessionKind = null;
        }