package ru.bsuirhelper.android.appwidget; import android.annotation.TargetApi; import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.os.Build; import android.widget.RemoteViews; import android.widget.RemoteViewsService; import org.joda.time.DateTime; import ru.bsuirhelper.android.ApplicationSettings; import ru.bsuirhelper.android.R; import ru.bsuirhelper.android.core.schedule.Lesson; import ru.bsuirhelper.android.core.schedule.ScheduleManager; /** * Created by Влад on 15.10.13. */ @TargetApi(Build.VERSION_CODES.HONEYCOMB) class ScheduleFactoryViews implements RemoteViewsService.RemoteViewsFactory { private final ScheduleManager mScheduleManager; private Lesson[] mLessons; private final Context mContext; private final Intent mIntent; private final int mWidgetId; private int mLessonCount; private final ApplicationSettings mSettings; public ScheduleFactoryViews(Context context, Intent intent) { mScheduleManager = ScheduleManager.getInstance(context); mIntent = intent; mWidgetId = mIntent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); mContext = context; mSettings = ApplicationSettings.getInstance(context); } @Override public void onCreate() { updateLessons(); } @Override public void onDataSetChanged() { updateLessons(); } @Override public void onDestroy() { } @Override public int getCount() { return mLessonCount; } @Override public RemoteViews getViewAt(int position) { RemoteViews rView = new RemoteViews(mContext.getPackageName(), R.layout.widget_view_lesson); Lesson lesson = mLessons[position]; rView.setTextViewText(R.id.widget_lesson_name, lesson.fields.get("subject")); rView.setTextViewText(R.id.widget_lesson_time, lesson.fields.get("timePeriod")); rView.setTextViewText(R.id.widget_lesson_teacher, lesson.fields.get("teacher")); if (!lesson.fields.get("auditorium").equals("")) { rView.setTextViewText(R.id.widget_lesson_auditorium, lesson.fields.get("auditorium")); } String lessonType = lesson.fields.get("subjectType"); if (lessonType.equals("лр")) { rView.setInt(R.id.widget_lesson_type_color, "setBackgroundColor", (Color.parseColor("#FF4444"))); } else if (lessonType.equals("пз")) { rView.setInt(R.id.widget_lesson_type_color, "setBackgroundColor", (Color.parseColor("#FFBB33"))); } else if (lessonType.equals("лк")) { rView.setInt(R.id.widget_lesson_type_color, "setBackgroundColor", (Color.parseColor("#99CC00"))); } else { rView.setInt(R.id.widget_lesson_type_color, "setBackgroundColor", (Color.WHITE)); } rView.setInt(R.id.widget_separateline, "setBackgroundColor", Color.WHITE); return rView; } @Override public RemoteViews getLoadingView() { return null; } @Override public int getViewTypeCount() { return 2; } @Override public long getItemId(int i) { return i; } @Override public boolean hasStableIds() { return true; } public void updateLessons() { String groupId = mSettings.getString("defaultgroup", null); int subgroup = mSettings.getInt(groupId, 1); if (!mScheduleManager.isLessonsEndToday(groupId, subgroup)) { mLessons = mScheduleManager.getLessonsOfDay(groupId, DateTime.now(), subgroup); } else { mLessons = mScheduleManager.getLessonsOfDay(groupId, new DateTime().plusDays(1), subgroup); } mLessonCount = mLessons.length; } }