Android Open Source - AndroidWeatherBuoyDemo Buoy Detail View Model






From Project

Back to project page AndroidWeatherBuoyDemo.

License

The source code is released under:

Apache License

If you think the Android project AndroidWeatherBuoyDemo listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.kevinrschultz.weatherbuoy.ui;
/*from  w w w .  j a  va  2  s . c o m*/
import com.kevinrschultz.weatherbuoy.customviews.compass.Compass;
import com.kevinrschultz.weatherbuoy.model.UnitSystem;
import com.kevinrschultz.weatherbuoy.model.WaveCondition;
import com.kevinrschultz.weatherbuoy.model.WindCondition;
import com.kevinrschultz.weatherbuoy.preferences.WeatherBuoyPreferences;
import com.kevinrschultz.weatherbuoy.util.UnitConverter;
import com.kevinrschultz.weatherbuoy.views.Instrument;

/**
 * ViewModel to handle formatting
 *
 * Depends on two data models and user preferences
 *
 * Does not hold a reference to the view
 *
 * @author Kevin Schultz
 */
public class BuoyDetailViewModel {

    private final WindCondition wind;

    private final WaveCondition wave;

    private final WeatherBuoyPreferences preferences;

    public BuoyDetailViewModel(WindCondition wind, WaveCondition wave, WeatherBuoyPreferences preferences) {
        this.wind = wind;
        this.wave = wave;
        this.preferences = preferences;
    }

    public void updateWindDirection(Instrument windDirectionView, Compass compass) {
        windDirectionView.updateReading(Integer.toString(wind.getDirection()), "");
        compass.setWindDirection(wind.getDirection());
    }

    public void updateWaveDirection(Compass compass) {
        int direction = wave.getDirection();
        compass.setWaveDirection(direction);
    }

    public void updateWindSpeed(Instrument windSpeedView) {
        UnitSystem unitSystem = preferences.getUserUnitSystem();
        double speed;
        String unitString;
        switch(unitSystem) {
            case IMPERIAL:
                speed = UnitConverter.kphToMph(UnitConverter.knotsToKph(wind.getSpeed()));
                unitString = "mph";
                break;
            case METRIC:
                speed = UnitConverter.knotsToKph(wind.getSpeed());
                unitString = "kph";
                break;
            case NAUTICAL:
            default:
                speed = wind.getSpeed();
                unitString = "kts";
                break;
        }
        windSpeedView.updateReading(String.format("%.1f", speed), unitString);
    }

    public void updateWavePeriod(Instrument wavePeriodView) {
        wavePeriodView.updateReading(String.format("%.1f", wave.getPeriod()), "s");
    }

    public void updateWaveHeight(Instrument waveHeightView) {
        UnitSystem unitSystem = preferences.getUserUnitSystem();
        double height;
        String unitString;
        switch(unitSystem) {
            case METRIC:
                height = UnitConverter.feetToMeters(wave.getHeight());
                unitString = "m";
                break;
            case IMPERIAL:
            case NAUTICAL:
            default:
                height = wave.getHeight();
                unitString = "ft";
                break;
        }
        waveHeightView.updateReading(String.format("%.1f", height), unitString);
    }

}




Java Source Code List

com.kevinrschultz.weatherbuoy.Constants.java
com.kevinrschultz.weatherbuoy.customviews.compass.CompassViewTest.java
com.kevinrschultz.weatherbuoy.customviews.compass.CompassView.java
com.kevinrschultz.weatherbuoy.customviews.compass.Compass.java
com.kevinrschultz.weatherbuoy.data.FakeBuoyListingGenerator.java
com.kevinrschultz.weatherbuoy.json.GsonSingleton.java
com.kevinrschultz.weatherbuoy.model.Advisory.java
com.kevinrschultz.weatherbuoy.model.BuoyDescription.java
com.kevinrschultz.weatherbuoy.model.Region.java
com.kevinrschultz.weatherbuoy.model.UnitSystem.java
com.kevinrschultz.weatherbuoy.model.WaveCondition.java
com.kevinrschultz.weatherbuoy.model.WindCondition.java
com.kevinrschultz.weatherbuoy.preferences.WeatherBuoyPreferences.java
com.kevinrschultz.weatherbuoy.sandbox.ActivityLaunchingListItem.java
com.kevinrschultz.weatherbuoy.sandbox.CompassViewActivity.java
com.kevinrschultz.weatherbuoy.sandbox.MainActivity.java
com.kevinrschultz.weatherbuoy.ui.BaseActivity.java
com.kevinrschultz.weatherbuoy.ui.BaseArrayAdapter.java
com.kevinrschultz.weatherbuoy.ui.BuoyDescriptionAdapter.java
com.kevinrschultz.weatherbuoy.ui.BuoyDetailActivity.java
com.kevinrschultz.weatherbuoy.ui.BuoyDetailFragment.java
com.kevinrschultz.weatherbuoy.ui.BuoyDetailViewModel.java
com.kevinrschultz.weatherbuoy.ui.BuoyListingActivity.java
com.kevinrschultz.weatherbuoy.ui.BuoyListingFragment.java
com.kevinrschultz.weatherbuoy.ui.BuoyListingPresenter.java
com.kevinrschultz.weatherbuoy.ui.BuoyListingView.java
com.kevinrschultz.weatherbuoy.ui.SettingsActivity.java
com.kevinrschultz.weatherbuoy.ui.SettingsFragment.java
com.kevinrschultz.weatherbuoy.util.UnitConverter.java
com.kevinrschultz.weatherbuoy.views.AdvisoryBannerView.java
com.kevinrschultz.weatherbuoy.views.InstrumentView.java
com.kevinrschultz.weatherbuoy.views.Instrument.java
com.kevinrschultz.weatherbuoy.views.OptionalTextView.java