package org.opensatnav; import org.opensatnav.services.TripStatistics; import org.opensatnav.services.TripStatisticsListener; import org.opensatnav.services.TripStatistics.TripStatisticsStrings; import android.content.Context; import android.view.View; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.TextView; public class TripStatisticsController implements TripStatisticsListener { private static TripStatisticsListener instance; private View mStatsView; private TextView tripDurationMsecView; private TextView averTripSpeedView; private TextView currentSpeedView; private TextView tripDistanceMetersView; public TripStatisticsController(final Context context) { // pre-subscribe the controller as a listener TripStatisticsService.setController(this); // service TripStatisticsService.start(context); // view mStatsView = View.inflate(context,R.layout.tripstatistics, null ); mStatsView.setVisibility(View.GONE); averTripSpeedView = (TextView)mStatsView.findViewById(R.id.aver_trip_speed); currentSpeedView = (TextView)mStatsView.findViewById(R.id.current_speed); tripDurationMsecView = (TextView)mStatsView.findViewById(R.id.trip_duration); tripDistanceMetersView = (TextView)mStatsView.findViewById(R.id.trip_distance); /* averSpeedUnitsView = (TextView)mStatsView.findViewById(R.id.aver_speed_units); currentSpeedUnitsView = (TextView)mStatsView.findViewById(R.id.current_speed_units); tripDistanceUnitsView = (TextView)mStatsView.findViewById(R.id.distance_units); tripDurationUnitsView = (TextView)mStatsView.findViewById(R.id.trip_duration_units); */ Button closeStatsButton = (Button) mStatsView.findViewById(R.id.closeStatistics); Button resetStatsButton = (Button) mStatsView.findViewById(R.id.resetStatistics); closeStatsButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { ((SatNavActivity)context).setViewingTripStats(false); ((SatNavActivity)context).showTripStatistics(false); } }); resetStatsButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { TripStatisticsService.getService().resetStatistics(); } }); instance = this; } @Override public void tripStatisticsChanged(TripStatistics statistics) { averTripSpeedView.setText(statistics.getAverageTripSpeedString(TripStatistics.METRIC)); currentSpeedView.setText(statistics.getInstantSpeedString(TripStatistics.METRIC)); tripDistanceMetersView.setText(statistics.getTripDistanceString(TripStatistics.METRIC)); tripDurationMsecView.setText(statistics.getTripTimeString(TripStatistics.METRIC)); } public View getView() { return mStatsView; } public void addViewTo(RelativeLayout parentView) { RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);; parentView.addView(mStatsView,params); } public void setVisible(boolean flag) { if( flag ) { mStatsView.setVisibility(View.VISIBLE); } else { mStatsView.setVisibility(View.GONE); } } public Object getAllStatistics() { final TripStatistics.TripStatisticsStrings stats = new TripStatistics.TripStatisticsStrings(); stats.averSpeed = averTripSpeedView.getText() + ""; stats.instSpeed = currentSpeedView.getText() + ""; stats.tripDistance = tripDistanceMetersView.getText() + ""; stats.tripDuration = tripDurationMsecView.getText() + ""; return stats; } public void setAllStats(TripStatisticsStrings stats) { averTripSpeedView.setText(stats.averSpeed); currentSpeedView.setText(stats.instSpeed); tripDistanceMetersView.setText(stats.tripDistance); tripDurationMsecView.setText(stats.tripDuration); } }