Exemplo n.º 1
0
        public ProducersPageViewModel()
        {
            ResourceManager manager = new ResourceManager("BetterThanIMDB.Resources.locale", typeof(FilmsPageViewModel).GetTypeInfo().Assembly);

            ExpandItemCommand = new Command(() =>
            {
                if (_prevSelectedProducer == SelectedProducer)
                {
                    SelectedProducer.IsVisible = !SelectedProducer.IsVisible;
                }
                else
                {
                    if (_prevSelectedProducer != null)
                    {
                        _prevSelectedProducer.IsVisible = false;
                    }
                    SelectedProducer.IsVisible = true;
                }

                _prevSelectedProducer = SelectedProducer;
            });
            DeleteItemCommand = new Command(() =>
            {
                UserDialogs.Instance.Confirm(new ConfirmConfig()
                {
                    Message  = manager.GetString("confirm", CustomSettings.Settings.Instance.Culture),
                    OnAction = (confirmed) =>
                    {
                        if (confirmed)
                        {
                            ProducerCollection.Instance.DeleteProducer(SelectedProducer);
                            SelectedProducer = null;
                        }
                    }
                });
            });
            ShowFilmsCommand = new Command(() =>
            {
                ActionSheetConfig config = new ActionSheetConfig();
                foreach (var film in SelectedProducer.Films)
                {
                    config.Add(film.Title, async() => await App.NavigationService.NavigateAsync("EditFilmPage", film));
                }
                config.SetCancel();
                config.Title = manager.GetString("filmsList", CustomSettings.Settings.Instance.Culture);
                UserDialogs.Instance.ActionSheet(config);
            });
            ShowInfoAboutProducerCommand = new Command(async() =>
                                                       await App.NavigationService.NavigateAsync("EditProducerPage", SelectedProducer));

            AddProducerCommand = new Command(() =>
            {
                ActionSheetConfig config = new ActionSheetConfig();
                config.Add(manager.GetString("createProducer", CustomSettings.Settings.Instance.Culture), () => CreateNewProducer());
                config.Add(manager.GetString("getProducer", CustomSettings.Settings.Instance.Culture), async() => await App.NavigationService.NavigateAsync("TMDBPersonPage", "Producer"));
                config.SetCancel();
                UserDialogs.Instance.ActionSheet(config);
            });
            SearchProducerCommand = new Command(async() => await App.NavigationService.NavigateAsync("SearchProducersPage", this));

            UnapplyCommand    = new Command(() => Producers = ProducerCollection.Instance.Producers);
            SortByNameCommand = new Command(() =>
            {
                if (_sortedByName)
                {
                    Producers = new CustomObservableCollection <Producer>(Producers.OrderByDescending(p => p.Name));
                }
                else
                {
                    Producers = new CustomObservableCollection <Producer>(Producers.OrderBy(p => p.Name));
                }
                _sortedByName = !_sortedByName;
            });
            SortByDateCommand = new Command(() =>
            {
                if (_sortedByDate)
                {
                    Producers = new CustomObservableCollection <Producer>(Producers.OrderByDescending(p => DateTime.Parse(p.DateOfBirth)));
                }
                else
                {
                    Producers = new CustomObservableCollection <Producer>(Producers.OrderBy(p => DateTime.Parse(p.DateOfBirth)));
                }
                _sortedByDate = !_sortedByDate;
            });
            SortByCountCommand = new Command(() =>
            {
                if (_sortedByCount)
                {
                    Producers = new CustomObservableCollection <Producer>(Producers.OrderByDescending(p => p.Films.Count));
                }
                else
                {
                    Producers = new CustomObservableCollection <Producer>(Producers.OrderBy(p => p.Films.Count));
                }
                _sortedByCount = !_sortedByCount;
            });
        }