/******************************************************************************* * Copyright (c) 2011 Michel DAVID mimah35-at-gmail.com * * 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 android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; import android.net.Uri; import android.widget.RemoteViews; public class BikeWidgetProvider extends AbstractWidgetProvider { public static final String SCHEME = "bikeWidget"; public static final String RESET = "fr.gotorennes.bikeWidget.RESET"; @Override protected RemoteViews updateRemoteViews(Context context, int appWidgetId) { RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.bike_appwidget); SharedPreferences prefs = context.getSharedPreferences("fr.gotorennes.BikeWidget", 0); int timeLeft = prefs.getInt("timeLeft" + appWidgetId, -1); if (timeLeft > 0) { timeLeft--; if (timeLeft <= 5) { views.setTextColor(R.id.timeLeft, Color.parseColor("#DB0000")); } else { views.setTextColor(R.id.timeLeft, Color.LTGRAY); } prefs.edit().putInt("timeLeft" + appWidgetId, timeLeft).commit(); views.setTextViewText(R.id.timeLeft, String.valueOf(timeLeft) + " min"); } else { if (timeLeft == -1) { views.setTextViewText(R.id.timeLeft, "--"); views.setTextColor(R.id.timeLeft, Color.LTGRAY); } stopAlarm(context, appWidgetId); } Intent intentClock = new Intent(context, ClockActivity.class); intentClock.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); intentClock.setData(Uri.withAppendedPath(Uri.parse(SCHEME + "://widget/id/"), String.valueOf(appWidgetId))); PendingIntent pi = PendingIntent.getActivity(context, 0, intentClock, PendingIntent.FLAG_CANCEL_CURRENT); views.setOnClickPendingIntent(R.id.timeLeft, pi); Intent intentLock = new Intent(context, CadenasActivity.class); intentLock.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); intentLock.setData(Uri.withAppendedPath(Uri.parse(SCHEME + "://widget/id/"), String.valueOf(appWidgetId))); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intentLock, PendingIntent.FLAG_CANCEL_CURRENT); views.setOnClickPendingIntent(R.id.lock, pendingIntent); return views; } @Override public void onReceive(Context context, Intent intent) { if(RESET.equals(intent.getAction())) { int widgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, 0); restartAlarm(context, widgetId); } super.onReceive(context, intent); } @Override protected String getScheme() { return SCHEME; } @Override protected int scheduleInMinutes() { return 1; } }