package edu.stanford.cs.sujogger.util; import java.util.ArrayList; import android.content.ContentResolver; import android.content.ContentUris; import android.content.Context; import android.database.Cursor; import android.util.Log; import edu.stanford.cs.sujogger.db.GPStracking.Tracks; public class Track { private static final String TAG = "Track"; public long id; public boolean visible; public Track(long id) { this.id = id; this.visible = true; } public Track(long id, boolean visible) { this.id = id; this.visible = visible; } public static CharSequence[] tracksToCharSequence(ArrayList<Track> tracks, Context context) { if (tracks == null || tracks.size() == 0) { return new CharSequence[0]; } CharSequence[] charSequence = new CharSequence[tracks.size()]; int i = 0; for (Track track : tracks) { charSequence[i++] = getName(context, track.id); } return charSequence; } public static boolean[] tracksToVisibleBoolArray(ArrayList<Track> tracks) { if (tracks == null || tracks.size() == 0) { return new boolean[0]; } boolean[] boolArr = new boolean[tracks.size()]; int i = 0; for (Track track : tracks) { boolArr[i++] = track.visible; } return boolArr; } private static String getName(Context context, long trackId) { ContentResolver resolver = context.getApplicationContext().getContentResolver(); Cursor trackCursor = null; try { trackCursor = resolver.query(ContentUris.withAppendedId(Tracks.CONTENT_URI, trackId), new String[] { Tracks.NAME }, null, null, null); if (trackCursor != null && trackCursor.moveToLast()) { return trackCursor.getString(0); } } finally { if (trackCursor != null) { trackCursor.close(); } } return ""; } public static ArrayList<Track> shadowCopy(ArrayList<Track> tracks, boolean logging) { ArrayList<Track> copiedTrack = new ArrayList<Track>(); for (Track track: tracks) { Log.d(TAG, "ASLAI Shadow adding track: " + track.id); copiedTrack.add(track); } if (logging && copiedTrack.size() > 0) { Log.d(TAG, "ASLAI Shawdow removing track: " + copiedTrack.get(copiedTrack.size()-1).id); copiedTrack.remove(copiedTrack.size()-1); } return copiedTrack; } public static Track findTrackById(ArrayList<Track> tracks, long trackId) { for (Track track: tracks) if (trackId == track.id) return track; return null; } public static int findTrackPosById(ArrayList<Track> tracks, long trackId) { int i =0; for (Track track: tracks) { if (trackId == track.id) return i; i++; } return -1; } public static void setAllInvisible(ArrayList<Track> tracks) { for (Track track: tracks) { track.visible = false; } } public static boolean visibleExists(ArrayList<Track> tracks) { for (Track track: tracks) { if (track.visible == true) return true; } return false; } }