package zq.whu.zhangshangwuda.ui.lessons.widget; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; import zq.whu.zhangshangwuda.db.LessonsDb; import zq.whu.zhangshangwuda.tools.LessonsTool; import zq.whu.zhangshangwuda.tools.LessonsWidgetSharedPreferencesTool; import zq.whu.zhangshangwuda.tools.SettingSharedPreferencesTool; import zq.whu.zhangshangwuda.ui.R; import zq.whu.zhangshangwuda.ui.lessons.LessonsDayActivity; import android.app.AlarmManager; import android.app.PendingIntent; import android.app.Service; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.util.Log; import android.view.View; import android.widget.RemoteViews; public class LessonsWidgetProvider_4_1 extends AppWidgetProvider { private Context context; private AppWidgetManager appWidgetManager; private static List<Map<String, String>> lessonsList_4_1 = null; public void updateWidget(Context context, RemoteViews Courses) { final Intent nextpageIntent = new Intent(context, LessonsWidgetProvider_4_1.class); nextpageIntent .setAction("zq.whu.zhangshangwuda.ui.lessons.widget_4_1.nextpage"); final PendingIntent nextpagePendingIntent = PendingIntent.getBroadcast( context, 1, nextpageIntent, PendingIntent.FLAG_UPDATE_CURRENT); Courses.setOnClickPendingIntent(R.id.lessons_widget_4_1_nextpage, nextpagePendingIntent); final Intent zqIntent = new Intent(context, LessonsDayActivity.class); Date anytime = new Date(getLessonsWidgetShowTime(context)); zqIntent.putExtra("day", getDayOfWeek(anytime)); final PendingIntent zqPendingIntent = PendingIntent.getActivity( context, 0, zqIntent, PendingIntent.FLAG_UPDATE_CURRENT); Courses.setOnClickPendingIntent(R.id.lessons_widget_4_1_zq, zqPendingIntent); final Intent todayIntent = new Intent(context, LessonsWidgetProvider_4_1.class); todayIntent .setAction("zq.whu.zhangshangwuda.ui.lessons.widget_4_1.today"); final PendingIntent todayPendingIntent = PendingIntent.getBroadcast( context, 2, todayIntent, PendingIntent.FLAG_UPDATE_CURRENT); Courses.setOnClickPendingIntent(R.id.lessons_widget_4_1_back, todayPendingIntent); // final Intent previousIntent = new Intent(context, // LessonsWidgetProvider_4_1.class); // previousIntent // .setAction("zq.whu.zhangshangwuda.ui.lessons.widget_4_1.previous"); // final PendingIntent previousPendingIntent = // PendingIntent.getBroadcast( // context, 2, previousIntent, PendingIntent.FLAG_UPDATE_CURRENT); // Courses.setOnClickPendingIntent(R.id.lessons_widget_previous, // previousPendingIntent); // final Intent nextIntent = new Intent(context, // LessonsWidgetProvider_4_1.class); // nextIntent.setAction("zq.whu.zhangshangwuda.ui.lessons.widget_4_1.next"); // final PendingIntent nextPendingIntent = PendingIntent.getBroadcast( // context, 3, nextIntent, PendingIntent.FLAG_UPDATE_CURRENT); // Courses.setOnClickPendingIntent(R.id.lessons_widget_next, // nextPendingIntent); // // final Intent todayIntent = new Intent(context, // LessonsWidgetProvider_4_1.class); // todayIntent.setAction("zq.whu.zhangshangwuda.ui.lessons.widget_4_1.today"); // final PendingIntent todayPendingIntent = PendingIntent.getBroadcast( // context, 4, todayIntent, PendingIntent.FLAG_UPDATE_CURRENT); // Courses.setOnClickPendingIntent(R.id.lessons_widget_today, // todayPendingIntent); ComponentName componentName = new ComponentName(context, LessonsWidgetProvider_4_1.class); AppWidgetManager.getInstance(context).updateAppWidget(componentName, Courses); } public long getLessonsWidgetShowTime(Context context) { return LessonsWidgetSharedPreferencesTool .getLessonsWidgetShowTime_4_1(context); } public void setLessonsWidgetShowTime(Context context, Date anytime) { long temp = anytime.getTime(); LessonsWidgetSharedPreferencesTool.setLessonsWidgetShowTime_4_1( context, temp); } public void getlessonsList(Context context, int k) { lessonsList_4_1 = LessonsDb.getInstance(context).getLessonsByDay( Integer.toString(k)); lessonsList_4_1 = LessonsTool.sortLessonsByTime(lessonsList_4_1); for (int i = 0; i < lessonsList_4_1.size(); ++i) { String tstring = lessonsList_4_1.get(i).get("name"); if (tstring.indexOf(" ") > 0) lessonsList_4_1.get(i).put("name", tstring.substring(0, tstring.indexOf(" "))); tstring = lessonsList_4_1.get(i).get("time"); lessonsList_4_1.get(i).put("time", tstring.substring(0, tstring.indexOf("节") + 1)); } int nowWeek = LessonsTool.getNowWeek(context); boolean isWidgetShowNowLessons = SettingSharedPreferencesTool .lessons_isWidgetShowNowLessons(context); if (isWidgetShowNowLessons) lessonsList_4_1 = LessonsTool.washLessonsByWeek(lessonsList_4_1, nowWeek); } public void setNextAlarm(Context context) { AlarmManager aManager = (AlarmManager) context .getSystemService(Service.ALARM_SERVICE); Calendar tcalendar = Calendar.getInstance(); tcalendar.setTimeInMillis(System.currentTimeMillis()); tcalendar.add(Calendar.DAY_OF_YEAR, +1); tcalendar.set(Calendar.HOUR_OF_DAY, 0); tcalendar.set(Calendar.MINUTE, 19); tcalendar.set(Calendar.SECOND, 19); Intent intent = new Intent(context, LessonsWidgetProvider_4_1.class); intent.setAction("zq.whu.zhangshangwuda.ui.lessons.widget_4_1.today"); PendingIntent work = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); aManager.cancel(work); aManager.set(AlarmManager.RTC, tcalendar.getTimeInMillis(), work); Log.v("zq.whu.zhangshangwuda.ui.lessons.widget_4_1", "设置定时更新成功"); } public void cancelNextAlarm(Context context) { AlarmManager aManager = (AlarmManager) context .getSystemService(Service.ALARM_SERVICE); Intent intent = new Intent(context, LessonsWidgetProvider_4_1.class); intent.setAction("zq.whu.zhangshangwuda.ui.lessons.widget_4_1.today"); PendingIntent work = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); aManager.cancel(work); Log.v("zq.whu.zhangshangwuda.ui.lessons.widget_4_1", "取消定时更新成功"); } public int getDayOfWeek(Date time) { Calendar calendar = Calendar.getInstance(); calendar.setTime(time); int getDayOfWeeek = calendar.get(calendar.DAY_OF_WEEK); if (--getDayOfWeeek == 0) { getDayOfWeeek = 7; } return getDayOfWeeek; } public void addPage(int k, Context context) { // System.out.println("addPage " + k); LessonsWidgetSharedPreferencesTool.setLessonsWidgetPage_4_1(context, k); RemoteViews Courses = new RemoteViews(context.getPackageName(), R.layout.lessons_widget_4_1); if (k != 0) { Courses.setViewVisibility(R.id.lessons_widget_4_1_back, View.VISIBLE); Courses.setViewVisibility(R.id.lessons_widget_4_1_zq, View.GONE); } else { Courses.setViewVisibility(R.id.lessons_widget_4_1_back, View.GONE); Courses.setViewVisibility(R.id.lessons_widget_4_1_zq, View.VISIBLE); } if (lessonsList_4_1.size() > 0) { String content = ""; content = content + lessonsList_4_1.get(k).get("name") + '\n'; content = content + lessonsList_4_1.get(k).get("time") + '\n'; content = content + lessonsList_4_1.get(k).get("place"); Courses.setTextViewText(R.id.lessons_widget_4_1_title, content); // ComponentName componentName = new ComponentName(context, // LessonsWidgetProvider.class); // AppWidgetManager.getInstance(context).updateAppWidget( // componentName, Courses); } else { Courses.setTextViewText(R.id.lessons_widget_4_1_title, "少年~今天没有课呢~"); // ComponentName componentName = new ComponentName(context, // LessonsWidgetProvider.class); // AppWidgetManager.getInstance(context).updateAppWidget( // componentName, Courses); } updateWidget(context, Courses); } public void sendBroadcastToday(Context context) { LessonsWidgetSharedPreferencesTool.setLessonsWidgetPage_4_1(context, 0); final Intent todayIntent = new Intent(context, LessonsWidgetProvider_4_1.class); todayIntent .setAction("zq.whu.zhangshangwuda.ui.lessons.widget_4_1.today"); context.sendBroadcast(todayIntent); Log.v("zq.whu.zhangshangwuda.ui.lessons.widget_4_1", "发送广播回到今天"); } @Override public void onEnabled(Context context) { // TODO Auto-generated method stub super.onEnabled(context); // System.out.println("onEnabled"); // Log.v("zq.whu.zhangshangwuda.ui.lessons.widget_4_1", "onEnabled"); sendBroadcastToday(context); } @Override public void onDeleted(Context context, int[] appWidgetIds) { // TODO Auto-generated method stub super.onDeleted(context, appWidgetIds); // System.out.println("onDeleted"); // Log.v("zq.whu.zhangshangwuda.ui.lessons.widget_4_1", "onDeleted"); cancelNextAlarm(context); } @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { // TODO Auto-generated method stub super.onUpdate(context, appWidgetManager, appWidgetIds); // System.out.println("onUpdate"); // Log.v("zq.whu.zhangshangwuda.ui.lessons.widget_4_1", "onUpdate"); sendBroadcastToday(context); } public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub super.onReceive(context, intent); // System.out.println("onReceive"); // Log.v("zq.whu.zhangshangwuda.ui.lessons.widget_4_1", "onReceive"); if (intent.getAction().equals( "zq.whu.zhangshangwuda.ui.lessons.widget_4_1.nextpage")) { Log.v("zq.whu.zhangshangwuda.ui.lessons.widget_4_1", "转到下一页"); int k = LessonsWidgetSharedPreferencesTool .getLessonsWidgetPage_4_1(context); Date anytime = new Date(getLessonsWidgetShowTime(context)); getlessonsList(context, getDayOfWeek(anytime)); if (k + 1 < lessonsList_4_1.size()) { addPage(++k, context); } else { k = 0; if (k + 1 == lessonsList_4_1.size()) return; addPage(k, context); } } if (intent.getAction().equals( "zq.whu.zhangshangwuda.ui.lessons.widget_4_1.today")) { Log.v("zq.whu.zhangshangwuda.ui.lessons.widget_4_1", "转到今天"); Date anytime = new Date(); setLessonsWidgetShowTime(context, anytime); getlessonsList(context, getDayOfWeek(anytime)); setNextAlarm(context); addPage(0, context); } if (intent.getAction().equals( "zq.whu.zhangshangwuda.ui.lessons.widget_4_1.next")) { Log.v("zq.whu.zhangshangwuda.ui.lessons.widget_4_1", "转到下一天"); Date anytime = new Date(getLessonsWidgetShowTime(context)); Calendar anycalendar = Calendar.getInstance(); anycalendar.setTime(anytime); anycalendar.add(Calendar.DAY_OF_YEAR, 1); anytime = anycalendar.getTime(); setLessonsWidgetShowTime(context, anytime); getlessonsList(context, getDayOfWeek(anytime)); addPage(0, context); } if (intent.getAction().equals( "zq.whu.zhangshangwuda.ui.lessons.widget_4_1.previous")) { Log.v("zq.whu.zhangshangwuda.ui.lessons.widget_4_1", "转到上一天"); Date anytime = new Date(getLessonsWidgetShowTime(context)); Calendar anycalendar = Calendar.getInstance(); anycalendar.setTime(anytime); anycalendar.add(Calendar.DAY_OF_YEAR, -1); anytime = anycalendar.getTime(); setLessonsWidgetShowTime(context, anytime); getlessonsList(context, getDayOfWeek(anytime)); addPage(0, context); } } @Override public void onDisabled(Context context) { // TODO Auto-generated method stub // System.out.println("onDisabled"); // Log.v("zq.whu.zhangshangwuda.ui.lessons.widget_4_1", "onDisabled"); super.onDisabled(context); } }