public DietCalculatorEventArgs(IDietCalculatorModel model)
 {
     this.Activity          = model.Activity;
     this.Age               = model.Age;
     this.BMI               = model.BMI;
     this.CaloriesPerDay    = model.CaloriesPerDay;
     this.Cholesterol       = model.Cholesterol;
     this.CholesterolRatio  = model.CholesterolRatio;
     this.CholesterolResult = model.CholesterolResult;
     this.HDL               = model.HDL;
     this.Height            = model.Height;
     this.Hips              = model.Hips;
     this.HipsEnabled       = model.HipsEnabled;
     this.IdealBMI          = model.IdealBMI;
     this.IdealWeight       = model.IdealWeight;
     this.IsMale            = model.IsMale;
     this.LeanBodyMass      = model.LeanBodyMass;
     this.Neck              = model.Neck;
     this.Waist             = model.Waist;
     this.WaistHeightRatio  = model.WaistHeightRatio;
     this.WaistHipsRatio    = model.WaistHipsRatio;
     this.WaistResult       = model.WaistResult;
     this.Weight            = model.Weight;
     this.WeightResult      = model.WeightResult;
     this.PercentBodyFat    = model.PercentBodyFat;
 }
예제 #2
0
        public DietCalculatorController_v2(IDietCalculatorView view, IDietCalculatorModel model) : this(model)
        {
            this.view = view;

            view.SetModel(model);
            view.SetController(this);
        }
 public DietCalculatorEventArgs( IDietCalculatorModel model )
 {
     this.Activity = model.Activity;
     this.Age = model.Age;
     this.BMI = model.BMI;
     this.CaloriesPerDay = model.CaloriesPerDay;
     this.Cholesterol = model.Cholesterol;
     this.CholesterolRatio = model.CholesterolRatio;
     this.CholesterolResult = model.CholesterolResult;
     this.HDL = model.HDL;
     this.Height = model.Height;
     this.Hips = model.Hips;
     this.HipsEnabled = model.HipsEnabled;
     this.IdealBMI = model.IdealBMI;
     this.IdealWeight = model.IdealWeight;
     this.IsMale = model.IsMale;
     this.LeanBodyMass = model.LeanBodyMass;
     this.Neck = model.Neck;
     this.Waist = model.Waist;
     this.WaistHeightRatio = model.WaistHeightRatio;
     this.WaistHipsRatio = model.WaistHipsRatio;
     this.WaistResult = model.WaistResult;
     this.Weight = model.Weight;
     this.WeightResult = model.WeightResult;
     this.PercentBodyFat = model.PercentBodyFat;
 }
        public DietCalculatorController_v2(IDietCalculatorView view, IDietCalculatorModel model)
            : this(model)
        {
            this.view = view;

            view.SetModel( model );
            view.SetController( this );
        }
        public DietCalculatorController(IDietCalculatorView view, IDietCalculatorModel model) : this(model)
        {
            this.view = view;

            view.SetModel(model);
            view.SetController(this);

            model.HipsEnabledChanged += new EventHandler <DietCalculatorEventArgs>(model_HipsEnabledChanged);
        }
        public DietCalculatorController(IDietCalculatorView view, IDietCalculatorModel model)
            : this(model)
        {
            this.view = view;

            view.SetModel(model);
            view.SetController(this);

            model.HipsEnabledChanged += new EventHandler<DietCalculatorEventArgs>(model_HipsEnabledChanged);
        }
예제 #7
0
        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));
            };
        }
        public void SetModel( IDietCalculatorModel model )
        {
            rbSedentary.Checked += new RoutedEventHandler( rbSedentary_Checked );
            rbModerate.Checked += new RoutedEventHandler( rbModerate_Checked );
            rbActive.Checked += new RoutedEventHandler( rbActive_Checked );

            this.model = model;

            rbSedentary.Checked += new RoutedEventHandler( rbSedentary_Checked );
            rbModerate.Checked += new RoutedEventHandler( rbModerate_Checked );
            rbActive.Checked += new RoutedEventHandler( rbActive_Checked );
        }
        public void SetModel(IDietCalculatorModel model)
        {
            rbSedentary.Checked += new RoutedEventHandler(rbSedentary_Checked);
            rbModerate.Checked  += new RoutedEventHandler(rbModerate_Checked);
            rbActive.Checked    += new RoutedEventHandler(rbActive_Checked);

            this.model = model;

            rbSedentary.Checked += new RoutedEventHandler(rbSedentary_Checked);
            rbModerate.Checked  += new RoutedEventHandler(rbModerate_Checked);
            rbActive.Checked    += new RoutedEventHandler(rbActive_Checked);
        }
예제 #10
0
        // 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));
            };
        }
        public void SetModel( IDietCalculatorModel model )
        {
            model.IdealWeightChanged -= new EventHandler<DietCalculatorEventArgs>( model_IdealWeightChanged );
            model.IdealBMIChanged -= new EventHandler<DietCalculatorEventArgs>( model_IdealBMIChanged );
            model.WaistHipsRatioChanged -= new EventHandler<DietCalculatorEventArgs>( model_WaistHipsRatioChanged );
            model.WaistResultChanged -= new EventHandler<DietCalculatorEventArgs>( model_WaistResultChanged );
            model.WeightResultChanged -= new EventHandler<DietCalculatorEventArgs>( model_WeightResultChanged );
            model.CholesterolRatioChanged -= new EventHandler<DietCalculatorEventArgs>( model_CholesterolRatioChanged );
            model.CholesterolResultChanged -= new EventHandler<DietCalculatorEventArgs>( model_CholesterolResultChanged );
            model.BMIChanged -= new EventHandler<DietCalculatorEventArgs>( model_BMIChanged );
            model.WaistHeightRatioChanged -= new EventHandler<DietCalculatorEventArgs>( model_WaistHeightRatioChanged );
            model.PercentBodyFatChanged -= new EventHandler<DietCalculatorEventArgs>( model_PercentBodyFatChanged );
            model.LeanBodyMassChanged -= new EventHandler<DietCalculatorEventArgs>( model_LeanBodyMassChanged );
            model.CaloriesPerDayChanged -= new EventHandler<DietCalculatorEventArgs>( model_CaloriesPerDayChanged );

            this.model = model;

            model.IdealWeightChanged += new EventHandler<DietCalculatorEventArgs>( model_IdealWeightChanged );
            model.IdealBMIChanged += new EventHandler<DietCalculatorEventArgs>( model_IdealBMIChanged );
            model.WaistHipsRatioChanged += new EventHandler<DietCalculatorEventArgs>( model_WaistHipsRatioChanged );
            model.WaistResultChanged += new EventHandler<DietCalculatorEventArgs>( model_WaistResultChanged );
            model.WeightResultChanged += new EventHandler<DietCalculatorEventArgs>( model_WeightResultChanged );
            model.CholesterolRatioChanged += new EventHandler<DietCalculatorEventArgs>( model_CholesterolRatioChanged );
            model.CholesterolResultChanged += new EventHandler<DietCalculatorEventArgs>( model_CholesterolResultChanged );
            model.BMIChanged += new EventHandler<DietCalculatorEventArgs>( model_BMIChanged );
            model.WaistHeightRatioChanged += new EventHandler<DietCalculatorEventArgs>( model_WaistHeightRatioChanged );
            model.PercentBodyFatChanged += new EventHandler<DietCalculatorEventArgs>( model_PercentBodyFatChanged );
            model.LeanBodyMassChanged += new EventHandler<DietCalculatorEventArgs>( model_LeanBodyMassChanged );
            model.CaloriesPerDayChanged += new EventHandler<DietCalculatorEventArgs>( model_CaloriesPerDayChanged );

            tbAge.TextChanged += new TextChangedEventHandler( tbAge_TextChanged );
            cbIsMale.Checked += new RoutedEventHandler( cbIsMale_Checked );
            cbIsMale.Unchecked += new RoutedEventHandler( cbIsMale_Unchecked );
            tbWeight.TextChanged += new TextChangedEventHandler( tbWeight_TextChanged );
            tbHeight.TextChanged += new TextChangedEventHandler( tbHeight_TextChanged );
            tbWaist.TextChanged += new TextChangedEventHandler(tbWaist_TextChanged);
            tbHips.TextChanged += new TextChangedEventHandler( tbHips_TextChanged );
            tbIdealWeight.TextChanged += new TextChangedEventHandler( tbIdealWeight_TextChanged );
            tbIdealBMI.TextChanged += new TextChangedEventHandler( tbIdealBMI_TextChanged );
            tbCholesterol.TextChanged += new TextChangedEventHandler( tbCholesterol_TextChanged );
            tbHDL.TextChanged += new TextChangedEventHandler( tbHDL_TextChanged );
            tbNeck.TextChanged += new TextChangedEventHandler( tbNeck_TextChanged );
            rbSedentary.Checked += new RoutedEventHandler( rbSedentary_Checked );
            rbModerate.Checked += new RoutedEventHandler( rbModerate_Checked );
            rbActive.Checked += new RoutedEventHandler( rbActive_Checked );
        }
        public void SetModel(IDietCalculatorModel model)
        {
            model.IdealWeightChanged       -= new EventHandler <DietCalculatorEventArgs>(model_IdealWeightChanged);
            model.IdealBMIChanged          -= new EventHandler <DietCalculatorEventArgs>(model_IdealBMIChanged);
            model.WaistHipsRatioChanged    -= new EventHandler <DietCalculatorEventArgs>(model_WaistHipsRatioChanged);
            model.WaistResultChanged       -= new EventHandler <DietCalculatorEventArgs>(model_WaistResultChanged);
            model.WeightResultChanged      -= new EventHandler <DietCalculatorEventArgs>(model_WeightResultChanged);
            model.CholesterolRatioChanged  -= new EventHandler <DietCalculatorEventArgs>(model_CholesterolRatioChanged);
            model.CholesterolResultChanged -= new EventHandler <DietCalculatorEventArgs>(model_CholesterolResultChanged);
            model.BMIChanged -= new EventHandler <DietCalculatorEventArgs>(model_BMIChanged);
            model.WaistHeightRatioChanged -= new EventHandler <DietCalculatorEventArgs>(model_WaistHeightRatioChanged);
            model.PercentBodyFatChanged   -= new EventHandler <DietCalculatorEventArgs>(model_PercentBodyFatChanged);
            model.LeanBodyMassChanged     -= new EventHandler <DietCalculatorEventArgs>(model_LeanBodyMassChanged);
            model.CaloriesPerDayChanged   -= new EventHandler <DietCalculatorEventArgs>(model_CaloriesPerDayChanged);

            this.model = model;

            model.IdealWeightChanged       += new EventHandler <DietCalculatorEventArgs>(model_IdealWeightChanged);
            model.IdealBMIChanged          += new EventHandler <DietCalculatorEventArgs>(model_IdealBMIChanged);
            model.WaistHipsRatioChanged    += new EventHandler <DietCalculatorEventArgs>(model_WaistHipsRatioChanged);
            model.WaistResultChanged       += new EventHandler <DietCalculatorEventArgs>(model_WaistResultChanged);
            model.WeightResultChanged      += new EventHandler <DietCalculatorEventArgs>(model_WeightResultChanged);
            model.CholesterolRatioChanged  += new EventHandler <DietCalculatorEventArgs>(model_CholesterolRatioChanged);
            model.CholesterolResultChanged += new EventHandler <DietCalculatorEventArgs>(model_CholesterolResultChanged);
            model.BMIChanged += new EventHandler <DietCalculatorEventArgs>(model_BMIChanged);
            model.WaistHeightRatioChanged += new EventHandler <DietCalculatorEventArgs>(model_WaistHeightRatioChanged);
            model.PercentBodyFatChanged   += new EventHandler <DietCalculatorEventArgs>(model_PercentBodyFatChanged);
            model.LeanBodyMassChanged     += new EventHandler <DietCalculatorEventArgs>(model_LeanBodyMassChanged);
            model.CaloriesPerDayChanged   += new EventHandler <DietCalculatorEventArgs>(model_CaloriesPerDayChanged);

            tbAge.TextChanged         += new TextChangedEventHandler(tbAge_TextChanged);
            cbIsMale.Checked          += new RoutedEventHandler(cbIsMale_Checked);
            cbIsMale.Unchecked        += new RoutedEventHandler(cbIsMale_Unchecked);
            tbWeight.TextChanged      += new TextChangedEventHandler(tbWeight_TextChanged);
            tbHeight.TextChanged      += new TextChangedEventHandler(tbHeight_TextChanged);
            tbWaist.TextChanged       += new TextChangedEventHandler(tbWaist_TextChanged);
            tbHips.TextChanged        += new TextChangedEventHandler(tbHips_TextChanged);
            tbIdealWeight.TextChanged += new TextChangedEventHandler(tbIdealWeight_TextChanged);
            tbIdealBMI.TextChanged    += new TextChangedEventHandler(tbIdealBMI_TextChanged);
            tbCholesterol.TextChanged += new TextChangedEventHandler(tbCholesterol_TextChanged);
            tbHDL.TextChanged         += new TextChangedEventHandler(tbHDL_TextChanged);
            tbNeck.TextChanged        += new TextChangedEventHandler(tbNeck_TextChanged);
            rbSedentary.Checked       += new RoutedEventHandler(rbSedentary_Checked);
            rbModerate.Checked        += new RoutedEventHandler(rbModerate_Checked);
            rbActive.Checked          += new RoutedEventHandler(rbActive_Checked);
        }
예제 #14
0
        /// <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;
        }
예제 #16
0
        // Sample code for building a localized ApplicationBar
        //private void BuildLocalizedApplicationBar()
        //{
        //    // Set the page's ApplicationBar to a new instance of ApplicationBar.
        //    ApplicationBar = new ApplicationBar();
        //    // Create a new button and set the text value to the localized string from AppResources.
        //    ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative));
        //    appBarButton.Text = AppResources.AppBarButtonText;
        //    ApplicationBar.Buttons.Add(appBarButton);
        //    // Create a new menu item with the localized string from AppResources.
        //    ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText);
        //    ApplicationBar.MenuItems.Add(appBarMenuItem);
        //}
        private void BtnCalculate_OnClick(object sender, RoutedEventArgs e)
        {
            controller.SetAge(StringToNumberUtility.GetInt32(txtAge.Text, 0));
            controller.SetGender((listGender.SelectedIndex == 0) ? true : false);
            controller.SetWeight(StringToNumberUtility.GetDouble(txtWeight.Text, 0.00));
            controller.SetHeight(StringToNumberUtility.GetDouble(txtHeight.Text, 0.00));
            controller.SetWaist(StringToNumberUtility.GetDouble(txtWaist.Text, 0.00));
            controller.SetHips(StringToNumberUtility.GetDouble((!string.IsNullOrEmpty(txtHips.Text) ? txtHips.Text : null), 0.00));
            controller.SetIdealWeight(StringToNumberUtility.GetDouble(txtIdealWeight.Text, 0.00));
            controller.SetIdealBMI(StringToNumberUtility.GetDouble(txtIdealBMI.Text, 0.00));
            controller.SetCholesterol(StringToNumberUtility.GetDouble(txtCholestrol.Text, 0.00));
            controller.SetHDL(StringToNumberUtility.GetDouble(txtHDL.Text, 0.00));
            controller.SetNeck(StringToNumberUtility.GetDouble(txtNeck.Text, 0.00));
            var selectedActivity = (string)listActivity.SelectedItem;
            controller.SetActivity((LevelOfActivity)Enum.Parse(typeof(LevelOfActivity), selectedActivity));

            // set the model to a public static property. This will be accessed from ResultsPage
            CalculatedModel = model;
            NavigationService.Navigate(new Uri("/ResultsPage.xaml", UriKind.Relative));
        }
 public DietCalculatorController(IDietCalculatorModel model )
 {
     this.model = model;
 }
 public ResultControl(IDietCalculatorModel model)
     : this()
 {
     this.DataContext = model;
 }
        /// <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));
            };
        }
예제 #20
0
        /// <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));
            };
        }
 public DietCalculatorController(IDietCalculatorModel model)
 {
     this.model = model;
 }
 public ResultControl(IDietCalculatorModel model)
     : this()
 {
     this.DataContext = model;
 }