1
package org.opensatnav.android;
3
import org.opensatnav.android.R;
4
import org.opensatnav.android.services.TripStatistics;
5
import org.opensatnav.android.services.TripStatisticsListener;
6
import org.opensatnav.android.services.TripStatistics.TripStatisticsStrings;
8
import android.content.Context;
9
import android.util.Log;
10
import android.view.View;
11
import android.view.ViewGroup.LayoutParams;
12
import android.widget.Button;
13
import android.widget.RelativeLayout;
14
import android.widget.TextView;
16
public class TripStatisticsController implements TripStatisticsListener {
18
private static TripStatisticsListener instance;
20
private View mStatsView;
22
private TextView tripDurationMsecView;
23
private TextView averTripSpeedView;
24
private TextView currentSpeedView;
25
private TextView tripDistanceMetersView;
27
private Context context;
29
public TripStatisticsController(final Context context) {
31
this.context = context;
33
// pre-subscribe the controller as a listener
34
TripStatisticsService.setController(this);
37
TripStatisticsService.start(context);
40
mStatsView = View.inflate(context,R.layout.tripstatistics, null );
41
mStatsView.setVisibility(View.GONE);
43
averTripSpeedView = (TextView)mStatsView.findViewById(R.id.aver_trip_speed);
44
currentSpeedView = (TextView)mStatsView.findViewById(R.id.current_speed);
45
tripDurationMsecView = (TextView)mStatsView.findViewById(R.id.trip_duration);
46
tripDistanceMetersView = (TextView)mStatsView.findViewById(R.id.trip_distance);
49
/*averSpeedUnitsView = (TextView)mStatsView.findViewById(R.id.aver_speed_units);
50
currentSpeedUnitsView = (TextView)mStatsView.findViewById(R.id.current_speed_units);
51
tripDistanceUnitsView = (TextView)mStatsView.findViewById(R.id.distance_units);
52
tripDurationUnitsView = (TextView)mStatsView.findViewById(R.id.trip_duration_units);*/
55
Button closeStatsButton = (Button) mStatsView.findViewById(R.id.closeStatistics);
56
Button resetStatsButton = (Button) mStatsView.findViewById(R.id.resetStatistics);
58
closeStatsButton.setOnClickListener(new View.OnClickListener() {
59
public void onClick(View view) {
60
((SatNavActivity)context).setViewingTripStats(false);
61
((SatNavActivity)context).showTripStatistics(false);
65
resetStatsButton.setOnClickListener(new View.OnClickListener() {
66
public void onClick(View view) {
67
Log.v("TripStatsController", "Tried to rset");
68
TripStatisticsService.getService().resetStatistics();
76
public void tripStatisticsChanged(TripStatistics statistics) {
78
averTripSpeedView.setText(statistics.getAverageTripSpeedString());
79
currentSpeedView.setText(statistics.getInstantSpeedString());
80
tripDistanceMetersView.setText(statistics.getTripDistanceString());
81
tripDurationMsecView.setText(statistics.getTripTimeString());
84
public View getView() {
88
public void addViewTo(RelativeLayout parentView) {
89
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
90
LayoutParams.FILL_PARENT,
91
LayoutParams.FILL_PARENT);;
92
parentView.removeView(mStatsView);
93
parentView.addView(mStatsView,params);
96
public void setVisible(boolean flag) {
98
mStatsView.setVisibility(View.VISIBLE);
100
mStatsView.setVisibility(View.GONE);
104
public Object getAllStatistics() {
105
final TripStatistics.TripStatisticsStrings stats = new TripStatistics.TripStatisticsStrings();
106
stats.averSpeed = averTripSpeedView.getText() + "";
107
stats.instSpeed = currentSpeedView.getText() + "";
108
stats.tripDistance = tripDistanceMetersView.getText() + "";
109
stats.tripDuration = tripDurationMsecView.getText() + "";
113
public void setAllStats(TripStatisticsStrings stats) {
114
averTripSpeedView.setText(stats.averSpeed);
115
currentSpeedView.setText(stats.instSpeed);
116
tripDistanceMetersView.setText(stats.tripDistance);
117
tripDurationMsecView.setText(stats.tripDuration);
121
TripStatisticsService.stop(context);
125
public void start() {
126
TripStatisticsService.start(context);