Exemple #1
0
        public MainViewerViewModel(MainViewer viewer)
        {
            // Add starting area to the list of favorites
            Favorites = new ObservableCollection <AreaViewModel>();
            var startingAreaVm = new AreaViewModel(StartingArea.Clone(), this);

            Favorites.Add(startingAreaVm);
            startingAreaVm.NotifyAllPropertiesChanged();

            // Create remaining parts of view model
            AddToFavoritesCommand = new AddToFavoritesCommand(this);
            UpdateFavoriteCommand = new UpdateFavoriteCommand(this);
            RerenderImageCommand  = new RerenderImageCommand(this);
            SaveFavoritesCommand  = new SaveFavoritesCommand(this);

            // EVIP: ICommand which needs an Action<> to be set, so it can use it during its execution.
            // Note: We need to provide the method to add an Area to the favorites list.
            //  Example for providing an action (to invoke for all loaded elements) as a constructor parameter
            //  of type Action<Area>.
            AddFavoritesFromFileCommand = new AddFavoritesFromFileCommand(this, AddToFavoritesCommand.Add);

            // EVIP: Cloning to avoid manipulation of
            //  the same instance from many points.
            CurrentArea = StartingArea.Clone();
            // Note: After cloning, we need to subscribe to the event of the new instance.
            CurrentArea.PropertyChanged += CurrentArea_PropertyChanged;
        }
Exemple #2
0
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);

            if (e.Parameter != null)
            {
                string arg = e.Parameter.ToString();

                switch (arg)
                {
                case "view-alerts":
                    GotoAlertsPage();
                    break;

                default:
                    break;
                }
            }

            LocationData LocParameter = e.Parameter as LocationData;

            if (e.NavigationMode == NavigationMode.New)
            {
                // Reset loader if new page instance created
                location = null;
                wLoader  = null;
                MainViewer.ChangeView(null, 0, null);

                // New page instance created, so restore
                if (LocParameter != null)
                {
                    location = LocParameter;
                    wLoader  = new WeatherDataLoader(location, this, this);
                }

                await Restore();
            }
            else
            {
                LocationData homeData = Settings.HomeData;

                // Did home change?
                bool homeChanged = false;
                if (location != null && Frame.BackStack.Count == 0)
                {
                    if (!location.Equals(homeData))
                    {
                        location    = homeData;
                        homeChanged = true;
                    }
                }

                if (wLoader != null)
                {
                    var userlang = GlobalizationPreferences.Languages.First();
                    var culture  = new CultureInfo(userlang);
                    var locale   = wm.LocaleToLangCode(culture.TwoLetterISOLanguageName, culture.Name);

                    // Reset loader if source, query or locale is different
                    bool resetLoader = WeatherView.WeatherSource != Settings.API || homeChanged;
                    if (wm.SupportsWeatherLocale && !resetLoader)
                    {
                        resetLoader = WeatherView.WeatherLocale != locale;
                    }

                    if (resetLoader)
                    {
                        wLoader = null;
                    }
                }

                // Update view on resume
                // ex. If temperature unit changed
                if ((wLoader != null) && !homeChanged)
                {
                    await Resume();

                    if (location.query == homeData.query)
                    {
                        // Clear backstack since we're home
                        Frame.BackStack.Clear();
                        SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
                    }
                }
                else
                {
                    await Restore();
                }
            }
        }
Exemple #3
0
 public SettingsForm(MainViewer parent)
 {
     InitializeComponent();
     AlertCheckBox.Checked = Settings.EndBeginAlerts;
     this.parent           = parent;
 }