public AppData()
 {
     var source = new ConversionItemViewModel(UnitFactory.UnitFromName(Settings.LastUnitSource, Settings.LastCategory));
     source.Value = Settings.LastUnitSourceValue;
     var destination = new ConversionItemViewModel(UnitFactory.UnitFromName(Settings.LastUnitDestination, Settings.LastCategory));
     CurrentConversion = new SimpleConvertViewModel(Settings.LastCategory,source, destination);
 }
        public SimpleConvertViewModel(UnitCategory category, ConversionItemViewModel sourceUnit, ConversionItemViewModel destinationUnit)
        {
            _currentCategory = category;

            // get default source if it doesn't exist
            if ((sourceUnit == null) || (destinationUnit == null))
            {
                SetDefaultUnits(category);
            }
            else
            {
                if ((sourceUnit.ConversionUnit == null || destinationUnit.ConversionUnit == null))
                    SetDefaultUnits(category);
                else
                {

                    this.SourceUnit = sourceUnit;
                    this.DestinationUnit = destinationUnit;
                    UserInputValue = sourceUnit.Value.ToString();
                }
               // TextInputValue = "0";
            }

            PopulateConversionList(_currentCategory);

            DigitPressedCommand = new Command<string>(ProcessDigit);
            ClearCommand = new Command(ProcessClear);
            EditAvailableItemsCommand = new Command(EditAvailableItems);
            CollapseKeyboardCommand = new Command(CollapseKeyboard);
            BackspaceCommand = new Command(ProcessBackspace);
            InformationCommand = new Command(ShowInformation);
            NegateCommand = new Command(NegateEntry);
            SwapValuesCommand = new Command(SwapValues);
            ChangeSourceUnitCommand = new Command(ChangeSourceUnit);
            ChangeDestinationUnitCommand = new Command(ChangeDestinationUnit);
            //            IncrementDecimalPlacesCommand = new Command(IncrementDecimalPlaces);
            //            DecrementDecimalPlacesCommand = new Command(DecrementDecimalPlaces);
            IsKeyaboardVisible = true;
        }
        private void UpdateSelectedUnit()
        {
            if (availableUnitList.SelectedItem == null)
                return;

            ConversionItemSelectionViewModel item = availableUnitList.SelectedItem as ConversionItemSelectionViewModel;

            AppData data = ((App)Application.Current).AppData;
            ConversionItemViewModel newItem = new ConversionItemViewModel(item.ConversionUnit);

            if (_isDestination)
            {
                data.CurrentConversion.DestinationUnit = newItem;
                newItem.ApplyConversion(data.CurrentConversion.SourceUnit);
            }
            else
            {
                var value = data.CurrentConversion.SourceUnit.Value;
                data.CurrentConversion.SourceUnit = newItem;
                data.CurrentConversion.SourceUnit.Value = value;
                data.CurrentConversion.DestinationUnit.ApplyConversion(data.CurrentConversion.SourceUnit);
            }
        }
 public void ApplyConversion(ConversionItemViewModel fromUnit)
 {
     // convert to unit
     var convResult = ConversionEngine.ConvertUnit(fromUnit.ConversionUnit, this.ConversionUnit, fromUnit.Value);
     this.Value = convResult;
 }