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 w w w. jav a 2s . co 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.List; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.net.Uri; import android.widget.RemoteViews; import fr.gotorennes.domain.Arret; import fr.gotorennes.domain.Circuit; import fr.gotorennes.domain.Ligne; import fr.gotorennes.domain.Station; import fr.gotorennes.persistence.BusDao; import fr.gotorennes.remote.BusStationService; public class BusStopWidgetProvider extends AbstractWidgetProvider { public static final String SCHEME = "busStopWidget"; private static BusDao busDao; public static BusStationService busStationService; @Override protected RemoteViews updateRemoteViews(Context context, int appWidgetId) { RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.busstop_appwidget); if (busDao == null) { try { busDao = BusDao.getInstance(context, null); } catch (Throwable e) { return views; } } if (busStationService == null) { busStationService = BusStationService.getInstance(context); } SharedPreferences prefs = context.getSharedPreferences("fr.gotorennes.BusStopWidget", 0); long idStation = prefs.getLong("idStation" + appWidgetId, 0); long idLigne = prefs.getLong("idLigne" + appWidgetId, 0); int sens = prefs.getInt("sens" + appWidgetId, 0); if (idStation != 0 && idLigne != 0) { Station station = busDao.getStation(idStation); if (station != null) { views.setTextViewText(R.id.stopName, station.nom); } Bitmap icon = busStationService.getBitmapIcon(context, idLigne); if (icon != null) { views.setImageViewBitmap(R.id.lineIcon, icon); } Ligne ligne = busDao.getLigne(idLigne); List<Arret> passages = busDao.getProchainsPassages(idStation, ligne.id, ligne.isLigneDeNuit(), sens); if (!passages.isEmpty()) { Circuit circuit = busDao.getCircuitByIdTrajet(passages.get(0).idTrajet); views.setTextViewText(R.id.directionName, context.getString(R.string.vers) + circuit.nom); views.setTextViewText(R.id.nextStopTime, passages.get(0).getDepart()); views.setTextViewText(R.id.nextStopTimeInMinutes, context.getString(R.string.dans) + passages.get(0).getDureeAvantDepart( ligne.isLigneDeNuit(), context.getResources() )); Intent intent = new Intent(context, BusTripActivity.class); intent.putExtra("station", station); intent.putExtra("ligne", ligne); intent.putExtra("arret", passages.get(0)); intent.setData(Uri.withAppendedPath(Uri.parse(SCHEME + "://widget/id/"), String.valueOf(appWidgetId))); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); views.setOnClickPendingIntent(R.id.widget, pendingIntent); if (passages.size() > 1) { views.setTextViewText(R.id.nextNextStopTime, passages.get(1).getDepart()); } else { views.setTextViewText(R.id.nextNextStopTime, ""); } } else { views.setTextViewText(R.id.nextStopTime, "--"); views.setTextViewText(R.id.nextNextStopTime, ""); views.setTextViewText(R.id.nextStopTimeInMinutes, ""); } Arret passagePrecedent = busDao.getPassagePrecedent(idStation, ligne.id, ligne.isLigneDeNuit(), sens); if(passagePrecedent != null) { views.setTextViewText(R.id.previousStopTime, passagePrecedent.getDepart()); } else { views.setTextViewText(R.id.previousStopTime, ""); } } return views; } @Override protected String getScheme() { return SCHEME; } @Override protected int scheduleInMinutes() { return 1; } }