public StartPage()
        {
            Title = "Job Search Scorecard";

            NavigationPage.SetHasBackButton (this, false);  // no back button from this screen!

            App.AppSettings = App.Database.GetSettings ();
            if (App.AppSettings == null) {
                App.AppSettings = new Settings ();
                App.Database.SaveSettings (App.AppSettings);
                _settingsPage = new SettingsPage (true);  // tell Settings that it's Name-entry only
                _settingsPage.BindingContext = App.AppSettings;  // first time Settings (no Cancel)
                this.Navigation.PushModalAsync (_settingsPage);
            } else {
                _settingsPage = new SettingsPage (false);
            }
            ;

            welcomeLabel = new Label () {
                FontSize = 22,
                FontAttributes = FontAttributes.Italic,
                HorizontalOptions = LayoutOptions.CenterAndExpand,
            };
            welcomeLabel.Text = String.Format ("Welcome to Job Seeker Scorecard, friend!");

            MessagingCenter.Subscribe<SettingsPage> (this, "popped", (sender) => {
                OnAppearing();
            });

            if (firstTime) {  // first time in this screen for this execution, but not necessarily first time in app
                firstTime = false;
                ActivityTable.BuildActivitiesDictionary ();  // build the table of potential tasks (aka Activity list)
                //currentTasks = MockUpTasks ();  // if you wish to mock-up some completed tasks
                Debug.WriteLine ("Built Activities Dictionary with : " + Activity.UniqueCode + " unique entries");
                Debug.WriteLine ("Database Table Counts at Start-Up:");
                Debug.WriteLine ("[Task] has " + App.Database.GetTasks ().Count () + " rows");
                Debug.WriteLine ("[Period] has " + App.Database.GetPeriods ().Count () + " rows");

            }  // first-time

            scoreBox = new Label () {
                Text = "No Score",
                FontSize = 55,
                FontAttributes = FontAttributes.Bold,
                HorizontalOptions = LayoutOptions.Center
            };  // Text set in the OnAppearing override in order to grab latest total score

            scorePeriod = new Label () {
                Text = "for Unknown Period",
                FontAttributes = FontAttributes.Italic,
                FontSize = 12,
            };

            var buttonStyle = new Style (typeof(Button)) {
                Setters = {
                    new Setter { Property = Button.TextColorProperty, Value = Color.White, },
                    new Setter { Property = Button.BackgroundColorProperty, Value = Color.Teal, },
                    new Setter { Property = Button.BorderRadiusProperty, Value = 5 },
                    new Setter { Property = Button.HeightRequestProperty, Value = 50 }
                }
            };

            var btnShowSteps = new Button {
                Text = "Earn points using Job Search Steps",
                Style = buttonStyle,
            };
            btnShowSteps.Clicked += async (sender, e) => {
                await this.Navigation.PushAsync (new MainStepsPage ());
            };

            var btnSpeak = new Button {
                Text = "Hear some Encouraging Words",
                Style = buttonStyle,
            };
            btnSpeak.Clicked += (sender, e) => {
                encourage = encouragements [myRandom.Next (0, encouragements.Length)];
                DependencyService.Get<ITextToSpeech> ().Speak (
                    string.Format("{0}, {1}. You have {2}",  App.AppSettings.Name, encourage, scoreBox.Text));
            };

            // Two buttons: one for starting a new period, the other for wiping-out the database
            var btnNewPeriod = new Button {
                Text = "Start New Scoring Period",
                Style = buttonStyle,
            };
            btnNewPeriod.Clicked += async(sender, e) => {
                var action = await DisplayActionSheet ("Start a new period?", "No", "Yes");
                if (action.StartsWith ("N"))
                    return;
                if (App.Database.SavePeriod () != 1) {
                    throw new Exception ("Cannot create new Period!");
                }
                this.OnAppearing ();
            };

            var btnPeriods = new Button {
                Text = "Show Score Period History",
                Style = buttonStyle,
            };
            btnPeriods.Clicked += async (sender, e) => {
                await this.Navigation.PushAsync (new HistoryPage ());
            };

            //			var btnFb = new Button {
            //				Text = "Share my Score on Facebook",
            //				Style = buttonStyle,
            //			};
            //			btnFb.Clicked  += (sender, e) => {
            //				Device.OpenUri(new Uri("http://jobtransition.net"));
            //			};

            var btnLaunchJTSG = new Button {
                Text = "Take me to Job Transition Website",
                Style = buttonStyle,
            };
            btnLaunchJTSG.Clicked += (sender, e) => {
                Device.OpenUri (new Uri ("http://jobtransition.net"));
            };

            var btnSettings = new Button {
                Text = "Update Settings",
                Style = buttonStyle,
            };
            btnSettings.Clicked += async (sender, e) => {
                _settingsPage.BindingContext = App.AppSettings;
                await this.Navigation.PushModalAsync (_settingsPage);
            };

            ScrollView scrollView = new ScrollView ();
            var stackLayout = new StackLayout {
                Padding = new Thickness (8, 8),
                Children = {
                    welcomeLabel,
                    scoreBox,
                    scorePeriod,
                    btnShowSteps,
                    btnSpeak,
                    btnNewPeriod,
                    btnPeriods,
            //					btnFb,
                    btnLaunchJTSG,
                    btnSettings,
                }
            };
            scrollView.Content = stackLayout;
            this.Content = scrollView;
        }
        public StartPage()
        {
            Title = "Job Search Scorecard";

            NavigationPage.SetHasBackButton(this, false);               // no back button from this screen!

            App.AppSettings = App.Database.GetSettings();
            if (App.AppSettings == null)
            {
                App.AppSettings = new Settings();
                App.Database.SaveSettings(App.AppSettings);
                _settingsPage = new SettingsPage(true);                   // tell Settings that it's Name-entry only
                _settingsPage.BindingContext = App.AppSettings;           // first time Settings (no Cancel)
                this.Navigation.PushModalAsync(_settingsPage);
            }
            else
            {
                _settingsPage = new SettingsPage(false);
            }
            ;

            welcomeLabel = new Label()
            {
                FontSize          = 22,
                FontAttributes    = FontAttributes.Italic,
                HorizontalOptions = LayoutOptions.CenterAndExpand,
            };
            welcomeLabel.Text = String.Format("Welcome to Job Seeker Scorecard, friend!");


            MessagingCenter.Subscribe <SettingsPage> (this, "popped", (sender) => {
                OnAppearing();
            });

            if (firstTime)                // first time in this screen for this execution, but not necessarily first time in app
            {
                firstTime = false;
                ActivityTable.BuildActivitiesDictionary();                   // build the table of potential tasks (aka Activity list)
                //currentTasks = MockUpTasks ();  // if you wish to mock-up some completed tasks
                Debug.WriteLine("Built Activities Dictionary with : " + Activity.UniqueCode + " unique entries");
                Debug.WriteLine("Database Table Counts at Start-Up:");
                Debug.WriteLine("[Task] has " + App.Database.GetTasks().Count() + " rows");
                Debug.WriteLine("[Period] has " + App.Database.GetPeriods().Count() + " rows");
            }              // first-time

            scoreBox = new Label()
            {
                Text              = "No Score",
                FontSize          = 55,
                FontAttributes    = FontAttributes.Bold,
                HorizontalOptions = LayoutOptions.Center
            };              // Text set in the OnAppearing override in order to grab latest total score

            scorePeriod = new Label()
            {
                Text           = "for Unknown Period",
                FontAttributes = FontAttributes.Italic,
                FontSize       = 12,
            };

            var buttonStyle = new Style(typeof(Button))
            {
                Setters =
                {
                    new Setter {
                        Property = Button.TextColorProperty, Value = Color.White,
                    },
                    new Setter {
                        Property = Button.BackgroundColorProperty, Value = Color.Teal,
                    },
                    new Setter {
                        Property = Button.BorderRadiusProperty, Value = 5
                    },
                    new Setter {
                        Property = Button.HeightRequestProperty, Value = 50
                    }
                }
            };

            var btnShowSteps = new Button {
                Text  = "Earn points using Job Search Steps",
                Style = buttonStyle,
            };

            btnShowSteps.Clicked += async(sender, e) => {
                await this.Navigation.PushAsync(new MainStepsPage());
            };

            var btnSpeak = new Button {
                Text  = "Hear some Encouraging Words",
                Style = buttonStyle,
            };

            btnSpeak.Clicked += (sender, e) => {
                encourage = encouragements [myRandom.Next(0, encouragements.Length)];
                DependencyService.Get <ITextToSpeech> ().Speak(
                    string.Format("{0}, {1}. You have {2}", App.AppSettings.Name, encourage, scoreBox.Text));
            };

            // Two buttons: one for starting a new period, the other for wiping-out the database
            var btnNewPeriod = new Button {
                Text  = "Start New Scoring Period",
                Style = buttonStyle,
            };

            btnNewPeriod.Clicked += async(sender, e) => {
                var action = await DisplayActionSheet("Start a new period?", "No", "Yes");

                if (action.StartsWith("N"))
                {
                    return;
                }
                if (App.Database.SavePeriod() != 1)
                {
                    throw new Exception("Cannot create new Period!");
                }
                this.OnAppearing();
            };

            var btnPeriods = new Button {
                Text  = "Show Score Period History",
                Style = buttonStyle,
            };

            btnPeriods.Clicked += async(sender, e) => {
                await this.Navigation.PushAsync(new HistoryPage());
            };


//			var btnFb = new Button {
//				Text = "Share my Score on Facebook",
//				Style = buttonStyle,
//			};
//			btnFb.Clicked  += (sender, e) => {
//				Device.OpenUri(new Uri("http://jobtransition.net"));
//			};

            var btnLaunchJTSG = new Button {
                Text  = "Take me to Job Transition Website",
                Style = buttonStyle,
            };

            btnLaunchJTSG.Clicked += (sender, e) => {
                Device.OpenUri(new Uri("http://jobtransition.net"));
            };

            var btnSettings = new Button {
                Text  = "Update Settings",
                Style = buttonStyle,
            };

            btnSettings.Clicked += async(sender, e) => {
                _settingsPage.BindingContext = App.AppSettings;
                await this.Navigation.PushModalAsync(_settingsPage);
            };

            ScrollView scrollView  = new ScrollView();
            var        stackLayout = new StackLayout {
                Padding  = new Thickness(8, 8),
                Children =
                {
                    welcomeLabel,
                    scoreBox,
                    scorePeriod,
                    btnShowSteps,
                    btnSpeak,
                    btnNewPeriod,
                    btnPeriods,
//					btnFb,
                    btnLaunchJTSG,
                    btnSettings,
                }
            };

            scrollView.Content = stackLayout;
            this.Content       = scrollView;
        }