diff --git a/MyTracks/src/com/google/android/apps/mytracks/AbstractMyTracksActivity.java b/MyTracks/src/com/google/android/apps/mytracks/AbstractMyTracksActivity.java index a72323deb..d54a59d0d 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/AbstractMyTracksActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/AbstractMyTracksActivity.java @@ -17,10 +17,12 @@ package com.google.android.apps.mytracks; import com.google.android.apps.mytracks.util.ApiAdapterFactory; +import com.google.android.apps.mytracks.util.TrackIconUtils; import android.os.Bundle; import android.speech.tts.TextToSpeech; import android.support.v4.app.FragmentActivity; +import android.view.Menu; import android.view.MenuItem; /** @@ -74,6 +76,12 @@ public abstract class AbstractMyTracksActivity extends FragmentActivity { finish(); } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + TrackIconUtils.setMenuIconColor(menu); + return super.onCreateOptionsMenu(menu); + } + @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { diff --git a/MyTracks/src/com/google/android/apps/mytracks/MarkerListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/MarkerListActivity.java index ebd328b38..41ddec95a 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/MarkerListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/MarkerListActivity.java @@ -248,7 +248,7 @@ public class MarkerListActivity extends AbstractMyTracksActivity implements Dele insertMarkerMenuItem = menu.findItem(R.id.marker_list_insert_marker); searchMenuItem = menu.findItem(R.id.marker_list_search); ApiAdapterFactory.getApiAdapter().configureSearchWidget(this, searchMenuItem, null); - return true; + return super.onCreateOptionsMenu(menu); } @Override diff --git a/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java index b03a1c8d2..03c4cc38d 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/SearchListActivity.java @@ -289,7 +289,7 @@ public class SearchListActivity extends AbstractSendToGoogleActivity implements getMenuInflater().inflate(R.menu.search_list, menu); searchMenuItem = menu.findItem(R.id.search_list_search); ApiAdapterFactory.getApiAdapter().configureSearchWidget(this, searchMenuItem, null); - return true; + return super.onCreateOptionsMenu(menu); } @Override diff --git a/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java b/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java index ccd6ac6db..4674bebd7 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/TrackDetailActivity.java @@ -380,7 +380,7 @@ public class TrackDetailActivity extends AbstractSendToGoogleActivity voiceFrequencyMenuItem = menu.findItem(R.id.track_detail_voice_frequency); splitFrequencyMenuItem = menu.findItem(R.id.track_detail_split_frequency); sensorStateMenuItem = menu.findItem(R.id.track_detail_sensor_state); - return true; + return super.onCreateOptionsMenu(menu); } @Override diff --git a/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java b/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java index 66b3ace31..49dc1a345 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java +++ b/MyTracks/src/com/google/android/apps/mytracks/TrackListActivity.java @@ -474,7 +474,8 @@ public class TrackListActivity extends AbstractSendToGoogleActivity exportAllMenuItem = menu.findItem(R.id.track_list_export_all); importAllMenuItem = menu.findItem(R.id.track_list_import_all); deleteAllMenuItem = menu.findItem(R.id.track_list_delete_all); - return true; + + return super.onCreateOptionsMenu(menu); } @Override @@ -739,6 +740,7 @@ public class TrackListActivity extends AbstractSendToGoogleActivity startGpsMenuItem.setTitle(isGpsStarted ? R.string.menu_stop_gps : R.string.menu_start_gps); startGpsMenuItem.setIcon( isGpsStarted ? R.drawable.ic_menu_stop_gps : R.drawable.ic_menu_start_gps); + TrackIconUtils.setMenuIconColor(startGpsMenuItem); } } if (refreshMenuItem != null) { diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/MarkerDetailFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/MarkerDetailFragment.java index 8e02dafbd..832a020d7 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/MarkerDetailFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/MarkerDetailFragment.java @@ -28,6 +28,7 @@ import com.google.android.apps.mytracks.util.IntentUtils; import com.google.android.apps.mytracks.util.PhotoUtils; import com.google.android.apps.mytracks.util.StatsUtils; import com.google.android.apps.mytracks.util.StringUtils; +import com.google.android.apps.mytracks.util.TrackIconUtils; import com.google.android.maps.mytracks.R; import android.content.Intent; @@ -113,12 +114,12 @@ public class MarkerDetailFragment extends Fragment { } myTracksProviderUtils = MyTracksProviderUtils.Factory.get(getActivity()); handler = new Handler(); + setHasOptionsMenu(true); } @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - setHasOptionsMenu(true); View view = inflater.inflate(R.layout.marker_detail_fragment, container, false); photo = (ImageView) view.findViewById(R.id.marker_detail_waypoint_photo); @@ -187,8 +188,10 @@ public class MarkerDetailFragment extends Fragment { String photoUrl = waypoint.getPhotoUrl(); boolean hasPhoto = photoUrl != null && !photoUrl.equals(""); menu.findItem(R.id.marker_detail_view_photo).setVisible(hasPhoto); + + TrackIconUtils.setMenuIconColor(menu); } - + @Override public boolean onOptionsItemSelected(MenuItem item) { long markerId = getArguments().getLong(KEY_MARKER_ID); diff --git a/MyTracks/src/com/google/android/apps/mytracks/fragments/MyTracksMapFragment.java b/MyTracks/src/com/google/android/apps/mytracks/fragments/MyTracksMapFragment.java index 1837e5cad..9537592de 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/fragments/MyTracksMapFragment.java +++ b/MyTracks/src/com/google/android/apps/mytracks/fragments/MyTracksMapFragment.java @@ -33,6 +33,7 @@ import com.google.android.apps.mytracks.util.GoogleLocationUtils; import com.google.android.apps.mytracks.util.IntentUtils; import com.google.android.apps.mytracks.util.LocationUtils; import com.google.android.apps.mytracks.util.PreferencesUtils; +import com.google.android.apps.mytracks.util.TrackIconUtils; import com.google.android.gms.location.LocationListener; import com.google.android.gms.maps.CameraUpdate; import com.google.android.gms.maps.CameraUpdateFactory; @@ -330,6 +331,7 @@ public class MyTracksMapFragment extends SupportMapFragment implements TrackData @Override public void onCreateOptionsMenu(Menu menu, MenuInflater menuInflator) { menuInflator.inflate(R.menu.map, menu); + TrackIconUtils.setMenuIconColor(menu); } @Override diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/Api8Adapter.java b/MyTracks/src/com/google/android/apps/mytracks/util/Api8Adapter.java index 432be54c9..aef7cf8eb 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/Api8Adapter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/Api8Adapter.java @@ -78,6 +78,11 @@ public class Api8Adapter implements ApiAdapter { return true; } + @Override + public boolean revertMenuIconColor() { + return true; + } + @Override public BluetoothSocket getBluetoothSocket(BluetoothDevice bluetoothDevice) throws IOException { try { diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/Api9Adapter.java b/MyTracks/src/com/google/android/apps/mytracks/util/Api9Adapter.java index 168cd2a0d..667509578 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/Api9Adapter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/Api9Adapter.java @@ -69,4 +69,9 @@ public class Api9Adapter extends Api8Adapter { public boolean isGeoCoderPresent() { return Geocoder.isPresent(); } + + @Override + public boolean revertMenuIconColor() { + return false; + } } diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/ApiAdapter.java b/MyTracks/src/com/google/android/apps/mytracks/util/ApiAdapter.java index 9554a0baf..53aac42bb 100644 --- a/MyTracks/src/com/google/android/apps/mytracks/util/ApiAdapter.java +++ b/MyTracks/src/com/google/android/apps/mytracks/util/ApiAdapter.java @@ -86,6 +86,13 @@ public interface ApiAdapter { */ public boolean isGeoCoderPresent(); + /** + * Returns true to revert menu icon color. + *
+ * Due to changes in API level 9. + */ + public boolean revertMenuIconColor(); + /** * Gets a {@link BluetoothSocket}. *
diff --git a/MyTracks/src/com/google/android/apps/mytracks/util/TrackIconUtils.java b/MyTracks/src/com/google/android/apps/mytracks/util/TrackIconUtils.java
index 8d3fdc301..9ad9f7720 100644
--- a/MyTracks/src/com/google/android/apps/mytracks/util/TrackIconUtils.java
+++ b/MyTracks/src/com/google/android/apps/mytracks/util/TrackIconUtils.java
@@ -21,7 +21,11 @@ import com.google.android.maps.mytracks.R;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
+import android.graphics.ColorMatrixColorFilter;
+import android.graphics.drawable.Drawable;
import android.util.Pair;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
@@ -33,92 +37,96 @@ import java.util.List;
/**
* Utilities for track icon.
- *
+ *
* @author Jimmy Shih
*/
public class TrackIconUtils {
- private static final String AIRPLANE = "AIRPLANE";
+ public static final String AIRPLANE = "AIRPLANE";
public static final String BIKE = "BIKE";
- private static final String BOAT = "BOAT";
+ public static final String BOAT = "BOAT";
public static final String DRIVE = "DRIVE";
public static final String RUN = "RUN";
- private static final String SKI = "SKI";
- private static final String SNOW_BOARDING = "SNOW_BOARDING";
+ public static final String SKI = "SKI";
+ public static final String SNOW_BOARDING = "SNOW_BOARDING";
public static final String WALK = "WALK";
- private TrackIconUtils() {}
+ private static final int[] AIRPLANE_LIST = new int[] { R.string.activity_type_airplane,
+ R.string.activity_type_commercial_airplane, R.string.activity_type_rc_airplane };
+ private static final int[] BIKE_LIST = new int[] { R.string.activity_type_biking,
+ R.string.activity_type_cycling, R.string.activity_type_dirt_bike,
+ R.string.activity_type_motor_bike, R.string.activity_type_mountain_biking,
+ R.string.activity_type_road_biking, R.string.activity_type_track_cycling };
+ private static final int[] BOAT_LIST = new int[] { R.string.activity_type_boat,
+ R.string.activity_type_ferry, R.string.activity_type_motor_boating,
+ R.string.activity_type_rc_boat };
+ private static final int[] DRIVE_LIST = new int[] { R.string.activity_type_atv,
+ R.string.activity_type_driving, R.string.activity_type_driving_bus,
+ R.string.activity_type_driving_car };
+ private static final int[] RUN_LIST = new int[] { R.string.activity_type_running,
+ R.string.activity_type_street_running, R.string.activity_type_track_running,
+ R.string.activity_type_trail_running };
+ private static final int[] SKI_LIST = new int[] {
+ R.string.activity_type_cross_country_skiing, R.string.activity_type_skiing };
+ private static final int[] SNOW_BOARDING_LIST = new int[] {
+ R.string.activity_type_snow_boarding };
+ private static final int[] WALK_LIST = new int[] { R.string.activity_type_hiking,
+ R.string.activity_type_off_trail_hiking, R.string.activity_type_speed_walking,
+ R.string.activity_type_trail_hiking, R.string.activity_type_walking };
- private static LinkedHashMap