/*
  * (non-Javadoc)
  * @see android.text.TextWatcher#onTextChanged(java.lang.CharSequence,
  * int, int, int)
  */
 @Override
 public void onTextChanged(CharSequence s, int start, int before, int count) {
   if (DEBUG) {
     Log.d(TAG, "onTextChanged(" + s + ", " + start + ", " + before + ") ###############");
   }
   if (!mDest.hasWindowFocus() || mDest.hasFocus() || s == null) {
     return;
   }
   final String str = s.toString();
   if ("".equals(str)) {
     mDest.setText("");
     return;
   }
   try {
     android.util.Log.v(TAG, "converting temp=" + str + "{" + Double.parseDouble(str) + "}");
     final double result = convert(Double.parseDouble(str));
     android.util.Log.v("TemperatureChangeWatcher", "result=" + result);
     // final String resutlStr = String.format("%.2f", result);
     mDest.setNumber(result);
   } catch (NumberFormatException e) {
     // WARNING:
     // this is thrown while a number is entered
     // for example just a '-'
   } catch (Exception e) {
     Log.e(TAG, "ERROR", e);
     mSource.setError("ERROR: " + e.getLocalizedMessage());
   }
 }
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_temperature_converter);

    EditNumber celsiusEditNumber = (EditNumber) findViewById(R.id.converter_celsius_input);
    EditNumber fahrenheitEditNumber = (EditNumber) findViewById(R.id.converter_fahrenheit_input);
    celsiusEditNumber.addTextChangedListener(
        newCelciusToFehrenheitWatcher(celsiusEditNumber, fahrenheitEditNumber));
    fahrenheitEditNumber.addTextChangedListener(
        newFehrenheitToCelciusWatcher(fahrenheitEditNumber, celsiusEditNumber));
  }
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    if (DEBUG) {
      Log.d(TAG, "onCreate(" + savedInstanceState + ")");
    }
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mCelsius = (EditNumber) findViewById(R.id.celsius);
    mFahrenheit = (EditNumber) findViewById(R.id.fahrenheit);

    mCelsius.addTextChangedListener(
        new TemperatureChangeWatcher(mCelsius, mFahrenheit) {

          @Override
          protected double convert(double temp) {
            return TemperatureConverter.celsiusToFahrenheit(temp);
          }
        });

    mFahrenheit.addTextChangedListener(
        new TemperatureChangeWatcher(mFahrenheit, mCelsius) {

          @Override
          protected double convert(double temp) {
            return TemperatureConverter.fahrenheitToCelsius(temp);
          }
        });

    if (savedInstanceState != null) {
      if (savedInstanceState.containsKey(CELSIUS_KEY)) {
        final double c = savedInstanceState.getDouble(CELSIUS_KEY);
        final double f = TemperatureConverter.celsiusToFahrenheit(c);
        if (DEBUG) {
          Log.d(TAG, "onCreate: restoring celsius: " + c);
        }
        mCelsius.setNumber(c);
        mFahrenheit.setNumber(f);
      } else if (savedInstanceState.containsKey(FAHRENHEIT_KEY)) {
        final double f = savedInstanceState.getDouble(FAHRENHEIT_KEY);
        final double c = TemperatureConverter.fahrenheitToCelsius(f);
        if (DEBUG) {
          Log.d(TAG, "onCreate: restoring fahrenheit: " + f);
        }
        mFahrenheit.setNumber(f);
        mCelsius.setNumber(c);
      }
    }

    mCelsius.setOnFocusChangeListener(mTemperatureEntryFocusChangeListener);
    mFahrenheit.setOnFocusChangeListener(mTemperatureEntryFocusChangeListener);
  }
    @Override
    public void onTextChanged(CharSequence input, int start, int before, int count) {
      if (!destinationEditNumber.hasWindowFocus()
          || destinationEditNumber.hasFocus()
          || input == null) {
        return;
      }

      String str = input.toString();
      if ("".equals(str)) {
        destinationEditNumber.setText("");
        return;
      }

      try {
        double temp = Double.parseDouble(str);
        double result =
            (option == Option.C2F)
                ? TemperatureConverter.celsiusToFahrenheit(temp)
                : TemperatureConverter.fahrenheitToCelsius(temp);
        String resultString = String.format("%.2f", result);
        destinationEditNumber.setNumber(result);
        destinationEditNumber.setSelection(resultString.length());
      } catch (NumberFormatException ignore) {
        // WARNING this is generated whilst numbers are being entered,
        // for example just a '-' so we don't want to show the error just yet
      } catch (Exception e) {
        sourceEditNumber.setError("ERROR: " + e.getLocalizedMessage());
      }
    }
 public double getFahrenheit() {
   return mFahrenheit.getNumber();
 }
 public double getCelsius() {
   return mCelsius.getNumber();
 }