Back to project page Go2-Rennes.
The source code is released under:
GNU General Public License
If you think the Android project Go2-Rennes listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/******************************************************************************* * Copyright (c) 2011 Michel DAVID mimah35-at-gmail.com * //from ww w .jav a 2 s. c o m * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. ******************************************************************************/ package fr.gotorennes; import java.util.ArrayList; import java.util.Collections; import java.util.List; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.location.Location; import android.os.Bundle; import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListAdapter; import android.widget.ListView; import android.widget.TextView; import fr.gotorennes.domain.Arret; import fr.gotorennes.domain.Circuit; import fr.gotorennes.domain.Ligne; import fr.gotorennes.domain.Station; import fr.gotorennes.domain.StationGroup; import fr.gotorennes.util.BackgroundTask; import fr.gotorennes.util.LocationUtils; public class BusStationActivity extends AbstractActivity { private StationGroup busStation; private List<Passage> passages; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.busstation); } @Override protected String getTrackingName() { return "stationBus"; } @Override protected void init(Intent intent) { busStation = intent.getParcelableExtra("stationGroup"); Station station = intent.getParcelableExtra("station"); if(station != null) { busStation = goToRennes.getBusDao().getStationGroup(station); } addCalendrier(intent); latitude = busStation.latitude; longitude = busStation.longitude; TextView stationName = (TextView) findViewById(R.id.stationName); stationName.setText(busStation.nom); BackgroundTask<List<Passage>> backgroundTask = new BackgroundTask<List<Passage>>(true) { @Override protected List<Passage> execute() { passages = new ArrayList<Passage>(); List<Station> stations = goToRennes.getBusDao().getStations(busStation); for(Station station : stations) { for(Ligne ligne : goToRennes.getBusDao().getLignes(station)) { Passage passage = new Passage(); passage.station = station; passage.ligne = ligne; passage.arret = goToRennes.getBusDao().getPassage(station.id, ligne.id, calendrier, ligne.isLigneDeNuit()); if(passage.arret != null) { passage.circuit = goToRennes.getBusDao().getCircuitByIdTrajet(passage.arret.idTrajet); } else { passage.circuit = goToRennes.getBusDao().getCircuit(passage.ligne, passage.station); } passages.add(passage); } } Collections.sort(passages); return passages; } @Override protected void callback(List<Passage> result) { populateListView(); } }; backgroundTask.start(this); TextView distance = (TextView) findViewById(R.id.distance); final Location location = LocationUtils.getLocation(this); if(location != null) { distance.setText(Html.fromHtml("<u>" + AbstractMapActivity.getFormattedDistance(location.getLatitude(), location.getLongitude(), busStation.latitude, busStation.longitude) + "</u>")); distance.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(BusStationActivity.this, ItineraireMapActivity.class); intent.putExtra("latitude", location.getLatitude()); intent.putExtra("longitude", location.getLongitude()); intent.putExtra("latitudeDest", busStation.latitude); intent.putExtra("longitudeDest", busStation.longitude); intent.putExtra("iconDest", getMapIcon()); startActivity(intent); } }); } else { distance.setText("--"); distance.setOnClickListener(null); distance.setClickable(false); } } protected void populateListView() { ListView listView = (ListView) findViewById(R.id.passages); listView.setAdapter(getPassageAdapter(passages)); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { Passage passage = (Passage) adapter.getItemAtPosition(position); Intent intent = new Intent(BusStationActivity.this, BusArretActivity.class); intent.putExtra("station", passage.station); intent.putExtra("ligne", passage.ligne); intent.putExtra("date", calendrier.getTimeInMillis()); startActivity(intent); } }); } protected void updatePassages() { for(Passage passage : passages) { passage.arret = goToRennes.getBusDao().getPassage(passage.station.id, passage.ligne.id, calendrier, passage.ligne.isLigneDeNuit() ); if(passage.arret != null) { passage.circuit = goToRennes.getBusDao().getCircuitByIdTrajet(passage.arret.idTrajet); } else { passage.circuit = goToRennes.getBusDao().getCircuit(passage.ligne, passage.station); } } ListView listView = (ListView) findViewById(R.id.passages); listView.setAdapter(getPassageAdapter(passages)); } protected ListAdapter getPassageAdapter(List<Passage> passages) { return new ArrayAdapter<Passage>(this, 0, passages) { @Override public View getView(int position, View convertView, ViewGroup parent) { View view = convertView; if (view == null) { LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); view = vi.inflate(R.layout.busstop_detail_listitem, null); } Passage passage = getItem(position); Ligne ligne = passage.ligne; Arret arret = passage.arret; Circuit circuit = passage.circuit; ImageView lineIcon = (ImageView) view.findViewById(R.id.icon); Bitmap icon = goToRennes.getBusStationService().getBitmapIcon(BusStationActivity.this, ligne.id); lineIcon.setImageBitmap(icon); TextView name = (TextView) view.findViewById(R.id.name); name.setText(circuit.nom); TextView nextStop = (TextView) view.findViewById(R.id.nextStopTime); if(arret != null) { nextStop.setText(arret.getDepart()); } else { nextStop.setText("--"); } TextView nextStopMinutes = (TextView) view.findViewById(R.id.nextStopTimeInMinutes); nextStopMinutes.setVisibility(View.GONE); return view; } }; } class Passage implements Comparable<Passage> { Station station; Ligne ligne; Circuit circuit; Arret arret; @Override public int compareTo(Passage another) { return ligne.compareTo(another.ligne); } } @Override protected void onCalendrierChanged() { updatePassages(); } @Override protected int getMapIcon() { return R.drawable.bus; } }