public HomePage() { this.InitializeComponent(); this.navigationHelper = new NavigationHelper(this); this.navigationHelper.LoadState += navigationHelper_LoadState; this.navigationHelper.SaveState += navigationHelper_SaveState; // MVVM is not used in this example. We're porting an existing sample from Silverlight MVC // we will make use of the existing pattern to achieve the results model = new DietCalculatorModel(); controller = new DietCalculatorController(model); // bydefault Male is Selected, hence collapse hips txtHips.Visibility = tblHips.Visibility = Visibility.Collapsed; cmbGender.SelectionChanged += (sender, args) => { var isSelectedItemMale = ((string)cmbGender.SelectedItem == "Male"); txtHips.Visibility = tblHips.Visibility = isSelectedItemMale ? Visibility.Collapsed : Visibility.Visible; // corner case: reset hipsText to empty if the user had typed in hips and later changed the gender if (isSelectedItemMale) { txtHips.Text = string.Empty; } }; // subscribe to IdealBMI and IdealWeight changed events on the model to update the UI // as per the implementation in the core project, // any change in IdealBMI or IdealWeight are notified using appropriate event handlers model.IdealBMIChanged += (sender, e) => { txtIdealBMI.Text = e.IdealBMI.ToString(); }; model.IdealWeightChanged += (sender, e) => { txtIdealWeight.Text = e.IdealWeight.ToString(); }; txtIdealWeight.TextChanged += (sender, e) => { controller.SetWeight(StringToNumberUtility.GetDouble(txtWeight.Text, 0.00)); controller.SetHeight(StringToNumberUtility.GetDouble(txtHeight.Text, 0.00)); controller.SetIdealWeight(StringToNumberUtility.GetDouble(txtIdealWeight.Text, 0.00)); }; txtIdealBMI.TextChanged += (sender, e) => { controller.SetWeight(StringToNumberUtility.GetDouble(txtWeight.Text, 0.00)); controller.SetHeight(StringToNumberUtility.GetDouble(txtHeight.Text, 0.00)); controller.SetIdealBMI(StringToNumberUtility.GetDouble(txtIdealBMI.Text, 0.00)); }; }
// Constructor public MainPage() { InitializeComponent(); // MVVM is not used in this example. We're porting an existing sample from Silverlight MVC // we will make use of the existing pattern to achieve the results model = new DietCalculatorModel(); controller = new DietCalculatorController(model); // bydefault Male is Selected, hence collapse hips txtHips.Visibility = tblHips.Visibility = Visibility.Collapsed; listGender.SelectionChanged += (sender, args) => { var isSelectedItemMale = ((string)listGender.SelectedItem == "Male"); txtHips.Visibility = tblHips.Visibility = isSelectedItemMale ? Visibility.Collapsed : Visibility.Visible; // corner case: reset hipsText to empty if the user had typed in hips and later changed the gender if (isSelectedItemMale) txtHips.Text = string.Empty; }; // subscribe to IdealBMI and IdealWeight changed events on the model to update the UI // as per the implementation in the core project, // any change in IdealBMI or IdealWeight are notified using appropriate event handlers model.IdealBMIChanged += (sender, e) => { txtIdealBMI.Text = e.IdealBMI.ToString(); }; model.IdealWeightChanged += (sender, e) => { txtIdealWeight.Text = e.IdealWeight.ToString(); }; txtIdealWeight.TextChanged += (sender, e) => { controller.SetWeight(StringToNumberUtility.GetDouble(txtWeight.Text, 0.00)); controller.SetHeight(StringToNumberUtility.GetDouble(txtHeight.Text, 0.00)); controller.SetIdealWeight(StringToNumberUtility.GetDouble(txtIdealWeight.Text, 0.00)); }; txtIdealBMI.TextChanged += (sender, e) => { controller.SetWeight(StringToNumberUtility.GetDouble(txtWeight.Text, 0.00)); controller.SetHeight(StringToNumberUtility.GetDouble(txtHeight.Text, 0.00)); controller.SetIdealBMI(StringToNumberUtility.GetDouble(txtIdealBMI.Text, 0.00)); }; // Sample code to localize the ApplicationBar //BuildLocalizedApplicationBar(); }
public HomePage() { this.InitializeComponent(); this.navigationHelper = new NavigationHelper(this); this.navigationHelper.LoadState += this.NavigationHelper_LoadState; this.navigationHelper.SaveState += this.NavigationHelper_SaveState; model = new DietCalculatorModel(); controller = new DietCalculatorController(model); // bydefault Male is Selected, hence collapse hips txtHips.Visibility = tblHips.Visibility = Visibility.Collapsed; listGender.SelectionChanged += (sender, args) => { var isSelectedItemMale = ((string)listGender.SelectedItem == "Male"); txtHips.Visibility = tblHips.Visibility = isSelectedItemMale ? Visibility.Collapsed : Visibility.Visible; // corner case: reset hipsText to empty if the user had typed in hips and later changed the gender if (isSelectedItemMale) txtHips.Text = string.Empty; }; // subscribe to IdealBMI and IdealWeight changed events on the model to update the UI // as per the implementation in the core project, // any change in IdealBMI or IdealWeight are notified using appropriate event handlers model.IdealBMIChanged += (sender, e) => { txtIdealBMI.Text = e.IdealBMI.ToString(); }; model.IdealWeightChanged += (sender, e) => { txtIdealWeight.Text = e.IdealWeight.ToString(); }; txtIdealWeight.TextChanged += (sender, e) => { controller.SetWeight(StringToNumberUtility.GetDouble(txtWeight.Text, 0.00)); controller.SetHeight(StringToNumberUtility.GetDouble(txtHeight.Text, 0.00)); controller.SetIdealWeight(StringToNumberUtility.GetDouble(txtIdealWeight.Text, 0.00)); }; txtIdealBMI.TextChanged += (sender, e) => { controller.SetWeight(StringToNumberUtility.GetDouble(txtWeight.Text, 0.00)); controller.SetHeight(StringToNumberUtility.GetDouble(txtHeight.Text, 0.00)); controller.SetIdealBMI(StringToNumberUtility.GetDouble(txtIdealBMI.Text, 0.00)); }; }
/// <summary> /// Finisheds the launching. /// </summary> /// <returns><c>true</c>, if launching was finisheded, <c>false</c> otherwise.</returns> /// <param name="application">Application.</param> /// <param name="launchOptions">Launch options.</param> public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) { UINavigationBar.Appearance.TintColor = SecondaryColor; window = new UIWindow (UIScreen.MainScreen.Bounds); model = new DietCalculatorModel (); model.IdealWeightChanged += (sender, e) => { Console.WriteLine(model.IdealWeight.ToString()); }; controller = new DietCalculatorController (model); CreateUI (); mainDvc = new DietDialogViewController (rootElement); nvc = new UINavigationController (mainDvc); window.RootViewController = nvc; window.MakeKeyAndVisible (); return true; }
/// <summary> /// Finisheds the launching. /// </summary> /// <returns><c>true</c>, if launching was finisheded, <c>false</c> otherwise.</returns> /// <param name="application">Application.</param> /// <param name="launchOptions">Launch options.</param> public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) { UINavigationBar.Appearance.TintColor = SecondaryColor; window = new UIWindow(UIScreen.MainScreen.Bounds); model = new DietCalculatorModel(); model.IdealWeightChanged += (sender, e) => { Console.WriteLine(model.IdealWeight.ToString()); }; controller = new DietCalculatorController(model); CreateUI(); mainDvc = new DietDialogViewController(rootElement); nvc = new UINavigationController(mainDvc); window.RootViewController = nvc; window.MakeKeyAndVisible(); return(true); }
public void SetController(IDietCalculatorController controller) { this.controller = controller; }
public void SetController( IDietCalculatorController controller ) { this.controller = controller; }
/// <summary> /// OnCreate /// </summary> /// <param name="bundle"></param> protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); model = new DietCalculatorModel(); controller = new DietCalculatorController(model); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); // retrieve the widgets in UI using FindByViewId to interact programmatically var ageText = FindViewById <EditText>(Resource.Id.ageText); var genderSpinner = FindViewById <Spinner>(Resource.Id.genderSpinner); var levelOfActivitySpinner = FindViewById <Spinner>(Resource.Id.levelOfActivitySpinner); var calculateButton = FindViewById <Button>(Resource.Id.calculateButton); var weightText = FindViewById <EditText>(Resource.Id.weightText); var heightText = FindViewById <EditText>(Resource.Id.heightText); var waistText = FindViewById <EditText>(Resource.Id.waistText); var hipsLayout = FindViewById <LinearLayout>(Resource.Id.hipsLayout); var hipstText = FindViewById <EditText>(Resource.Id.hipsText); var idealWeightText = FindViewById <EditText>(Resource.Id.idealWeightText); var idealBMIText = FindViewById <EditText>(Resource.Id.idealBMIText); var cholestrolText = FindViewById <EditText>(Resource.Id.cholestrolText); var hdlText = FindViewById <EditText>(Resource.Id.hdlText); var neckText = FindViewById <EditText>(Resource.Id.neckText); // Assign "Male", "Female" values to spinner using ArrayAdapter. Refer Resources/Values/String.xml ArrayAdapter genderAdapter = ArrayAdapter.CreateFromResource(this, Resource.Array.gender_array, Resource.Layout.diet_spinner_item); genderAdapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem); genderSpinner.Adapter = genderAdapter; // Hips should be visible only if "Female" is selected genderSpinner.ItemSelected += (sender, args) => { var isSelectedItemMale = ((string)genderSpinner.SelectedItem == "Male"); hipsLayout.Visibility = isSelectedItemMale ? ViewStates.Gone : ViewStates.Visible; // corner case: reset hipsText to empty if the user had typed in hips and later changed the gender if (isSelectedItemMale) { hipstText.Text = string.Empty; } }; // Assign "Active", "Moderate", "Sedentary" values to spinner using ArrayAdapter. Refer Resources/Values/String.xml ArrayAdapter levelOfActivityAdapter = ArrayAdapter.CreateFromResource(this, Resource.Array.levelOfActivity_array, Resource.Layout.diet_spinner_item); levelOfActivityAdapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem); levelOfActivitySpinner.Adapter = levelOfActivityAdapter; // On Button Click, set appropriate values in the Controller Class calculateButton.Click += (sender, args) => { controller.SetAge(StringToNumberUtility.GetInt32(ageText.Text, 0)); controller.SetGender((genderSpinner.SelectedItemId == 0) ? true : false); controller.SetWeight(StringToNumberUtility.GetDouble(weightText.Text, 0.00)); controller.SetHeight(StringToNumberUtility.GetDouble(heightText.Text, 0.00)); controller.SetWaist(StringToNumberUtility.GetDouble(waistText.Text, 0.00)); controller.SetHips(StringToNumberUtility.GetDouble((!string.IsNullOrEmpty(hipstText.Text) ? hipstText.Text : null), 0.00)); controller.SetIdealWeight(StringToNumberUtility.GetDouble(idealWeightText.Text, 0.00)); controller.SetIdealBMI(StringToNumberUtility.GetDouble(idealBMIText.Text, 0.00)); controller.SetCholesterol(StringToNumberUtility.GetDouble(cholestrolText.Text, 0.00)); controller.SetHDL(StringToNumberUtility.GetDouble(hdlText.Text, 0.00)); controller.SetNeck(StringToNumberUtility.GetDouble(neckText.Text, 0.00)); var selectedActivity = (string)levelOfActivitySpinner.SelectedItem; controller.SetActivity((LevelOfActivity)Enum.Parse(typeof(LevelOfActivity), selectedActivity)); // Since Model classes are already populated with the results, pass them to Result Activity // using PutExtra method var resultIntent = new Intent(this, typeof(ResultsActivity)); resultIntent.PutExtra("CaloriesPerDay", model.CaloriesPerDay.ToString()); resultIntent.PutExtra("LeanBodyMass", model.LeanBodyMass.ToString()); resultIntent.PutExtra("PercentBodyFat", model.PercentBodyFat.ToString() + " %"); resultIntent.PutExtra("WaistHipsRatio", model.WaistHipsRatio.ToString() + " cm"); resultIntent.PutExtra("BMI", model.BMI.ToString()); resultIntent.PutExtra("CholesterolRatio", model.CholesterolRatio.ToString() + " mmol/L"); resultIntent.PutExtra("WaistHeightRatio", model.WaistHeightRatio.ToString() + " cm"); resultIntent.PutExtra("IdealWeight", model.IdealWeight.ToString() + " kg"); StartActivity(resultIntent); }; // subscribe to IdealBMI and IdealWeight changed events on the model to update the UI // as per the implementation in the core project, // any change in IdealBMI or IdealWeight are notified using appropriate event handlers model.IdealBMIChanged += (sender, e) => { idealBMIText.Text = e.IdealBMI.ToString(); }; model.IdealWeightChanged += (sender, e) => { idealWeightText.Text = e.IdealWeight.ToString(); }; // Ideal BMI has to be calculated if user changes the IdealWeight. // Set all the fields in the controller that are used for calcaulation idealWeightText.TextChanged += (sender, e) => { controller.SetWeight(StringToNumberUtility.GetDouble(weightText.Text, 0.00)); controller.SetHeight(StringToNumberUtility.GetDouble(heightText.Text, 0.00)); controller.SetIdealWeight(StringToNumberUtility.GetDouble(idealWeightText.Text, 0.00)); }; idealBMIText.TextChanged += (sender, e) => { controller.SetWeight(StringToNumberUtility.GetDouble(weightText.Text, 0.00)); controller.SetHeight(StringToNumberUtility.GetDouble(heightText.Text, 0.00)); controller.SetIdealBMI(StringToNumberUtility.GetDouble(idealBMIText.Text, 0.00)); }; }
/// <summary> /// OnCreate /// </summary> /// <param name="bundle"></param> protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); model = new DietCalculatorModel(); controller = new DietCalculatorController(model); // Set our view from the "main" layout resource SetContentView(Resource.Layout.Main); // retrieve the widgets in UI using FindByViewId to interact programmatically var ageText = FindViewById<EditText>(Resource.Id.ageText); var genderSpinner = FindViewById<Spinner>(Resource.Id.genderSpinner); var levelOfActivitySpinner = FindViewById<Spinner>(Resource.Id.levelOfActivitySpinner); var calculateButton = FindViewById<Button>(Resource.Id.calculateButton); var weightText = FindViewById<EditText>(Resource.Id.weightText); var heightText = FindViewById<EditText>(Resource.Id.heightText); var waistText = FindViewById<EditText>(Resource.Id.waistText); var hipsLayout = FindViewById<LinearLayout>(Resource.Id.hipsLayout); var hipstText = FindViewById<EditText>(Resource.Id.hipsText); var idealWeightText = FindViewById<EditText>(Resource.Id.idealWeightText); var idealBMIText = FindViewById<EditText>(Resource.Id.idealBMIText); var cholestrolText = FindViewById<EditText>(Resource.Id.cholestrolText); var hdlText = FindViewById<EditText>(Resource.Id.hdlText); var neckText = FindViewById<EditText>(Resource.Id.neckText); // Assign "Male", "Female" values to spinner using ArrayAdapter. Refer Resources/Values/String.xml ArrayAdapter genderAdapter = ArrayAdapter.CreateFromResource(this, Resource.Array.gender_array, Resource.Layout.diet_spinner_item); genderAdapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem); genderSpinner.Adapter = genderAdapter; // Hips should be visible only if "Female" is selected genderSpinner.ItemSelected += (sender, args) => { var isSelectedItemMale = ((string) genderSpinner.SelectedItem == "Male"); hipsLayout.Visibility = isSelectedItemMale ? ViewStates.Gone : ViewStates.Visible; // corner case: reset hipsText to empty if the user had typed in hips and later changed the gender if (isSelectedItemMale) hipstText.Text = string.Empty; }; // Assign "Active", "Moderate", "Sedentary" values to spinner using ArrayAdapter. Refer Resources/Values/String.xml ArrayAdapter levelOfActivityAdapter = ArrayAdapter.CreateFromResource(this, Resource.Array.levelOfActivity_array, Resource.Layout.diet_spinner_item); levelOfActivityAdapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem); levelOfActivitySpinner.Adapter = levelOfActivityAdapter; // On Button Click, set appropriate values in the Controller Class calculateButton.Click += (sender, args) => { controller.SetAge(StringToNumberUtility.GetInt32(ageText.Text, 0)); controller.SetGender((genderSpinner.SelectedItemId == 0) ? true : false); controller.SetWeight(StringToNumberUtility.GetDouble(weightText.Text, 0.00)); controller.SetHeight(StringToNumberUtility.GetDouble(heightText.Text, 0.00)); controller.SetWaist(StringToNumberUtility.GetDouble(waistText.Text, 0.00)); controller.SetHips(StringToNumberUtility.GetDouble((!string.IsNullOrEmpty(hipstText.Text) ? hipstText.Text : null), 0.00)); controller.SetIdealWeight(StringToNumberUtility.GetDouble(idealWeightText.Text, 0.00)); controller.SetIdealBMI(StringToNumberUtility.GetDouble(idealBMIText.Text, 0.00)); controller.SetCholesterol(StringToNumberUtility.GetDouble(cholestrolText.Text, 0.00)); controller.SetHDL(StringToNumberUtility.GetDouble(hdlText.Text, 0.00)); controller.SetNeck(StringToNumberUtility.GetDouble(neckText.Text, 0.00)); var selectedActivity = (string)levelOfActivitySpinner.SelectedItem; controller.SetActivity((LevelOfActivity)Enum.Parse(typeof(LevelOfActivity), selectedActivity)); // Since Model classes are already populated with the results, pass them to Result Activity // using PutExtra method var resultIntent = new Intent(this, typeof (ResultsActivity)); resultIntent.PutExtra("CaloriesPerDay", model.CaloriesPerDay.ToString()); resultIntent.PutExtra("LeanBodyMass", model.LeanBodyMass.ToString()); resultIntent.PutExtra("PercentBodyFat", model.PercentBodyFat.ToString() + " %"); resultIntent.PutExtra("WaistHipsRatio", model.WaistHipsRatio.ToString() + " cm"); resultIntent.PutExtra("BMI", model.BMI.ToString()); resultIntent.PutExtra("CholesterolRatio", model.CholesterolRatio.ToString() + " mmol/L"); resultIntent.PutExtra("WaistHeightRatio", model.WaistHeightRatio.ToString() + " cm"); resultIntent.PutExtra("IdealWeight", model.IdealWeight.ToString() + " kg"); StartActivity(resultIntent); }; // subscribe to IdealBMI and IdealWeight changed events on the model to update the UI // as per the implementation in the core project, // any change in IdealBMI or IdealWeight are notified using appropriate event handlers model.IdealBMIChanged += (sender, e) => { idealBMIText.Text = e.IdealBMI.ToString(); }; model.IdealWeightChanged += (sender, e) => { idealWeightText.Text = e.IdealWeight.ToString(); }; // Ideal BMI has to be calculated if user changes the IdealWeight. // Set all the fields in the controller that are used for calcaulation idealWeightText.TextChanged += (sender, e) => { controller.SetWeight(StringToNumberUtility.GetDouble(weightText.Text, 0.00)); controller.SetHeight(StringToNumberUtility.GetDouble(heightText.Text, 0.00)); controller.SetIdealWeight(StringToNumberUtility.GetDouble(idealWeightText.Text, 0.00)); }; idealBMIText.TextChanged += (sender, e) => { controller.SetWeight(StringToNumberUtility.GetDouble(weightText.Text, 0.00)); controller.SetHeight(StringToNumberUtility.GetDouble(heightText.Text, 0.00)); controller.SetIdealBMI(StringToNumberUtility.GetDouble(idealBMIText.Text, 0.00)); }; }