package uni.projecte.Activities.Maps; import java.util.ArrayList; import java.util.List; import uni.projecte.R; import uni.projecte.R.id; import uni.projecte.R.layout; import uni.projecte.R.string; import uni.projecte.controler.ProjectControler; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; import com.google.android.apps.mytracks.content.MyTracksProviderUtils; import com.google.android.apps.mytracks.content.Track; public class TrackListChooser extends Activity{ private MyTracksProviderUtils myTracksProviderUtils; private long projId=-1; private String projName="proj_botanic"; private ListView lvTrackList; private TrackListAdapter tkListAdap; private Button allTracks; private Button projectTracks; private boolean allTracksEnabled=false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.map_tracks_list); lvTrackList=(ListView)findViewById(R.id.lvTrackList); allTracks=(Button)findViewById(R.id.btTracksAll); projectTracks=(Button)findViewById(R.id.btTracksByProj); allTracks.setOnClickListener(allTracksListener); projectTracks.setOnClickListener(concreteProjectListener); myTracksProviderUtils = MyTracksProviderUtils.Factory.get(this); projId=getIntent().getExtras().getLong("projId"); ProjectControler rC=new ProjectControler(this); rC.loadProjectInfoById(projId); projName=rC.getCleanProjectName(); projectTracks.setText(rC.getName()); loadTrackList(allTracksEnabled); lvTrackList.setOnItemClickListener(theListListener); lvTrackList.setOnItemLongClickListener(theLongListListener); } private void loadTrackList(boolean completeList) { String filter="zdt_"; if(!completeList) filter=filter+projName+"_"; List<Track> tracks = myTracksProviderUtils.getAllTracks(); ArrayList<Track> selectedTracks=new ArrayList<Track>(); for (Track track : tracks) { if(track.getName().startsWith(filter)) selectedTracks.add(track); } tkListAdap=new TrackListAdapter(this, selectedTracks); lvTrackList.setAdapter(tkListAdap); } private String getTrackProject(long trackId){ Track track=myTracksProviderUtils.getTrack(trackId); return track.getCategory(); } private OnClickListener allTracksListener = new OnClickListener() { public void onClick(View v) { allTracksEnabled=true; loadTrackList(allTracksEnabled); } }; private OnClickListener concreteProjectListener = new OnClickListener() { public void onClick(View v) { allTracksEnabled=false; loadTrackList(allTracksEnabled); } }; public OnItemClickListener theListListener = new OnItemClickListener() { public void onItemClick(android.widget.AdapterView<?> parent, View v, int position, long id) { long trackId=Long.valueOf(v.getId()); Intent intent = new Intent(); intent.putExtra("trackId",trackId); setResult(RESULT_OK,intent); finish(); } }; public OnItemLongClickListener theLongListListener= new OnItemLongClickListener() { public boolean onItemLongClick(android.widget.AdapterView<?> parent, final View v, int position, long id) { final long trackId=Long.valueOf(v.getId()); String trackName=myTracksProviderUtils.getTrack(trackId).getName(); AlertDialog.Builder builder = new AlertDialog.Builder(v.getContext()); builder.setMessage(getString(R.string.trackRemoveDialog)+" "+trackName+"?") .setCancelable(false) .setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { myTracksProviderUtils.deleteTrack(trackId); loadTrackList(allTracksEnabled); } }) .setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { } }); AlertDialog alert = builder.create(); alert.show(); return true; } }; private static class TrackListAdapter extends BaseAdapter{ private LayoutInflater mInflater; ArrayList<Track> trackList; public TrackListAdapter(Context context,ArrayList<Track> trackList) { mInflater = LayoutInflater.from(context); this.trackList=trackList; } public int getCount() { return trackList.size(); } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.map_track_list_row, null); holder = new ViewHolder(); holder.tvTrackDistance = (TextView) convertView.findViewById(R.id.tvTrackDistance); holder.tvTrackTime= (TextView) convertView.findViewById(R.id.tvTrackTime); holder.tvTrackName= (TextView) convertView.findViewById(R.id.tvTrackName); holder.tvTrackDesc= (TextView) convertView.findViewById(R.id.tvTrackDesc); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } Double distance=trackList.get(position).getTripStatistics().getTotalDistance(); holder.tvTrackDistance.setText((int)distance.doubleValue()+" m"); holder.tvTrackTime.setText(trackList.get(position).getTripStatistics().getTotalTime()+" ms"); holder.tvTrackDesc.setText(trackList.get(position).getDescription()); holder.tvTrackName.setText(trackList.get(position).getName()); convertView.setId((int) trackList.get(position).getId()); return convertView; } static class ViewHolder { TextView tvTrackDistance; TextView tvTrackTime; TextView tvTrackDesc; TextView tvTrackName; } } }