From 6fcf09e2b792726ccbbbde690896845338e53135 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Tue, 24 Apr 2018 21:27:45 +0200 Subject: [PATCH] Add timetable widget (#84) --- app/src/main/AndroidManifest.xml | 14 +- .../io/github/wulkanowy/data/Repository.java | 10 ++ .../wulkanowy/data/RepositoryContract.java | 4 + .../wulkanowy/data/db/shared/SharedPref.java | 14 ++ .../data/db/shared/SharedPrefContract.java | 4 + .../di/component/ApplicationComponent.java | 8 +- .../services/{ => jobs}/SyncJob.java | 8 +- .../services/{ => notifies}/GradeNotify.java | 6 +- .../{ => notifies}/NotificationService.java | 6 +- .../widgets/TimetableWidgetServices.java | 14 ++ .../wulkanowy/ui/main/MainActivity.java | 5 +- .../ui/main/settings/SettingsFragment.java | 2 +- .../wulkanowy/ui/splash/SplashActivity.java | 4 +- .../ui/widgets/TimetableWidgetFactory.java | 138 ++++++++++++++++++ .../ui/widgets/TimetableWidgetProvider.java | 102 +++++++++++++ .../io/github/wulkanowy/utils/TimeUtils.java | 16 ++ .../res/drawable/widget_timetable_preview.png | Bin 0 -> 50108 bytes app/src/main/res/layout/timetable_widget.xml | 75 ++++++++++ .../main/res/layout/timetable_widget_item.xml | 67 +++++++++ app/src/main/res/values-pl/strings.xml | 3 + app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/dimens.xml | 1 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/xml/widget_provider.xml | 9 ++ build.gradle | 2 +- 25 files changed, 498 insertions(+), 18 deletions(-) rename app/src/main/java/io/github/wulkanowy/services/{ => jobs}/SyncJob.java (95%) rename app/src/main/java/io/github/wulkanowy/services/{ => notifies}/GradeNotify.java (86%) rename app/src/main/java/io/github/wulkanowy/services/{ => notifies}/NotificationService.java (88%) create mode 100644 app/src/main/java/io/github/wulkanowy/services/widgets/TimetableWidgetServices.java create mode 100644 app/src/main/java/io/github/wulkanowy/ui/widgets/TimetableWidgetFactory.java create mode 100644 app/src/main/java/io/github/wulkanowy/ui/widgets/TimetableWidgetProvider.java create mode 100644 app/src/main/res/drawable/widget_timetable_preview.png create mode 100644 app/src/main/res/layout/timetable_widget.xml create mode 100644 app/src/main/res/layout/timetable_widget_item.xml create mode 100644 app/src/main/res/xml/widget_provider.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f1733681..40553d9b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -39,12 +39,24 @@ android:label="@string/activity_dashboard_text" /> + + + + + + + + gradeList = new ArrayList<>(); @@ -94,7 +93,8 @@ public class SyncJob extends SimpleJobService { .setPriority(NotificationCompat.PRIORITY_HIGH) .setColor(getResources().getColor(R.color.colorPrimary)) .setContentIntent(PendingIntent.getActivity(getApplicationContext(), 0, - MainActivity.getStartIntent(getApplicationContext()).putExtra(EXTRA_INTENT_KEY, 0) + MainActivity.getStartIntent(getApplicationContext()) + .putExtra(MainActivity.EXTRA_CARD_ID_KEY, 0) , 0 )) .build()); diff --git a/app/src/main/java/io/github/wulkanowy/services/GradeNotify.java b/app/src/main/java/io/github/wulkanowy/services/notifies/GradeNotify.java similarity index 86% rename from app/src/main/java/io/github/wulkanowy/services/GradeNotify.java rename to app/src/main/java/io/github/wulkanowy/services/notifies/GradeNotify.java index 609354e2..a554bea3 100644 --- a/app/src/main/java/io/github/wulkanowy/services/GradeNotify.java +++ b/app/src/main/java/io/github/wulkanowy/services/notifies/GradeNotify.java @@ -1,4 +1,4 @@ -package io.github.wulkanowy.services; +package io.github.wulkanowy.services.notifies; import android.annotation.TargetApi; import android.app.Notification; @@ -8,11 +8,11 @@ import android.content.Context; import io.github.wulkanowy.R; -class GradeNotify extends NotificationService { +public class GradeNotify extends NotificationService { private static final String CHANNEL_ID = "Grade_Notify"; - GradeNotify(Context context) { + public GradeNotify(Context context) { super(context); } diff --git a/app/src/main/java/io/github/wulkanowy/services/NotificationService.java b/app/src/main/java/io/github/wulkanowy/services/notifies/NotificationService.java similarity index 88% rename from app/src/main/java/io/github/wulkanowy/services/NotificationService.java rename to app/src/main/java/io/github/wulkanowy/services/notifies/NotificationService.java index b6c49896..156de2bd 100644 --- a/app/src/main/java/io/github/wulkanowy/services/NotificationService.java +++ b/app/src/main/java/io/github/wulkanowy/services/notifies/NotificationService.java @@ -1,4 +1,4 @@ -package io.github.wulkanowy.services; +package io.github.wulkanowy.services.notifies; import android.annotation.TargetApi; @@ -21,11 +21,11 @@ public class NotificationService { this.context = context; } - void notify(Notification notification) { + public void notify(Notification notification) { getManager().notify(new Random().nextInt(1000), notification); } - NotificationCompat.Builder notificationBuilder() { + public NotificationCompat.Builder notificationBuilder() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { createChannel(); } diff --git a/app/src/main/java/io/github/wulkanowy/services/widgets/TimetableWidgetServices.java b/app/src/main/java/io/github/wulkanowy/services/widgets/TimetableWidgetServices.java new file mode 100644 index 00000000..728cc805 --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/services/widgets/TimetableWidgetServices.java @@ -0,0 +1,14 @@ +package io.github.wulkanowy.services.widgets; + +import android.content.Intent; +import android.widget.RemoteViewsService; + +import io.github.wulkanowy.ui.widgets.TimetableWidgetFactory; + +public class TimetableWidgetServices extends RemoteViewsService { + + @Override + public RemoteViewsFactory onGetViewFactory(Intent intent) { + return new TimetableWidgetFactory(getApplicationContext()); + } +} diff --git a/app/src/main/java/io/github/wulkanowy/ui/main/MainActivity.java b/app/src/main/java/io/github/wulkanowy/ui/main/MainActivity.java index 3656e167..a3da497f 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/main/MainActivity.java +++ b/app/src/main/java/io/github/wulkanowy/ui/main/MainActivity.java @@ -16,7 +16,6 @@ import javax.inject.Inject; import butterknife.BindView; import butterknife.ButterKnife; import io.github.wulkanowy.R; -import io.github.wulkanowy.services.SyncJob; import io.github.wulkanowy.ui.base.BaseActivity; import io.github.wulkanowy.ui.main.attendance.AttendanceFragment; import io.github.wulkanowy.ui.main.dashboard.DashboardFragment; @@ -27,6 +26,8 @@ import io.github.wulkanowy.ui.main.timetable.TimetableFragment; public class MainActivity extends BaseActivity implements MainContract.View, AHBottomNavigation.OnTabSelectedListener, OnFragmentIsReadyListener { + public static final String EXTRA_CARD_ID_KEY = "cardId"; + @BindView(R.id.main_activity_nav) AHBottomNavigation bottomNavigation; @@ -54,7 +55,7 @@ public class MainActivity extends BaseActivity implements MainContract.View, getActivityComponent().inject(this); setButterKnife(ButterKnife.bind(this)); - presenter.onStart(this, getIntent().getIntExtra(SyncJob.EXTRA_INTENT_KEY, -1)); + presenter.onStart(this, getIntent().getIntExtra(EXTRA_CARD_ID_KEY, -1)); } @Override diff --git a/app/src/main/java/io/github/wulkanowy/ui/main/settings/SettingsFragment.java b/app/src/main/java/io/github/wulkanowy/ui/main/settings/SettingsFragment.java index d1483123..fd686fae 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/main/settings/SettingsFragment.java +++ b/app/src/main/java/io/github/wulkanowy/ui/main/settings/SettingsFragment.java @@ -5,7 +5,7 @@ import android.os.Bundle; import android.support.v7.preference.PreferenceFragmentCompat; import io.github.wulkanowy.R; -import io.github.wulkanowy.services.SyncJob; +import io.github.wulkanowy.services.jobs.SyncJob; public class SettingsFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener { diff --git a/app/src/main/java/io/github/wulkanowy/ui/splash/SplashActivity.java b/app/src/main/java/io/github/wulkanowy/ui/splash/SplashActivity.java index 4fcf04d6..4acb5583 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/splash/SplashActivity.java +++ b/app/src/main/java/io/github/wulkanowy/ui/splash/SplashActivity.java @@ -5,8 +5,8 @@ import android.os.Bundle; import javax.inject.Inject; import butterknife.ButterKnife; -import io.github.wulkanowy.services.NotificationService; -import io.github.wulkanowy.services.SyncJob; +import io.github.wulkanowy.services.jobs.SyncJob; +import io.github.wulkanowy.services.notifies.NotificationService; import io.github.wulkanowy.ui.base.BaseActivity; import io.github.wulkanowy.ui.login.LoginActivity; import io.github.wulkanowy.ui.main.MainActivity; diff --git a/app/src/main/java/io/github/wulkanowy/ui/widgets/TimetableWidgetFactory.java b/app/src/main/java/io/github/wulkanowy/ui/widgets/TimetableWidgetFactory.java new file mode 100644 index 00000000..85acb19c --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/ui/widgets/TimetableWidgetFactory.java @@ -0,0 +1,138 @@ +package io.github.wulkanowy.ui.widgets; + +import android.content.Context; +import android.content.Intent; +import android.view.View; +import android.widget.AdapterView; +import android.widget.RemoteViews; +import android.widget.RemoteViewsService; + +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.List; + +import javax.inject.Inject; + +import io.github.wulkanowy.R; +import io.github.wulkanowy.WulkanowyApp; +import io.github.wulkanowy.data.RepositoryContract; +import io.github.wulkanowy.data.db.dao.entities.TimetableLesson; +import io.github.wulkanowy.data.db.dao.entities.Week; +import io.github.wulkanowy.utils.TimeUtils; + +public class TimetableWidgetFactory implements RemoteViewsService.RemoteViewsFactory { + + private Context context; + + private List lessonList = new ArrayList<>(); + + @Inject + RepositoryContract repository; + + public TimetableWidgetFactory(Context context) { + this.context = context; + } + + private void inject() { + if (repository == null) { + ((WulkanowyApp) context).getApplicationComponent().inject(this); + } + } + + @Override + public void onCreate() { + // do nothing + } + + @Override + public void onDataSetChanged() { + inject(); + lessonList = new ArrayList<>(); + + if (repository.getCurrentUserId() != 0) { + + Week week = repository.getWeek(TimeUtils.getDateOfCurrentMonday(true)); + int valueOfDay = TimeUtils.getTodayOrNextDayValue(repository.getTimetableWidgetState()); + + if (valueOfDay != 5 && valueOfDay != 6 && week != null) { + week.resetDayList(); + lessonList = week.getDayList().get(valueOfDay).getTimetableLessons(); + } + } + } + + @Override + public void onDestroy() { + // do nothing + } + + @Override + public int getCount() { + return lessonList.size(); + } + + @Override + public RemoteViews getViewAt(int position) { + if (position == AdapterView.INVALID_POSITION) { + return null; + } + + RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.timetable_widget_item); + views.setTextViewText(R.id.timetable_widget_item_subject, getSubjectName(position)); + views.setTextViewText(R.id.timetable_widget_item_time, getTimeText(position)); + views.setTextViewText(R.id.timetable_widget_item_room, getRoomText(position)); + + if (!getDescriptionText(position).isEmpty()) { + views.setTextViewText(R.id.timetable_widget_item_description, getDescriptionText(position)); + } else { + views.setViewVisibility(R.id.timetable_widget_item_description, View.GONE); + } + + views.setOnClickFillInIntent(R.id.timetable_widget_item_container, new Intent()); + + return views; + } + + @Override + public RemoteViews getLoadingView() { + return null; + } + + @Override + public int getViewTypeCount() { + return 1; + } + + @Override + public long getItemId(int position) { + return position; + } + + @Override + public boolean hasStableIds() { + return true; + } + + private String getSubjectName(int position) { + return lessonList.get(position).getSubject(); + } + + private String getRoomText(int position) { + TimetableLesson lesson = lessonList.get(position); + if (!lesson.getRoom().isEmpty()) { + return context.getString(R.string.timetable_dialog_room) + " " + lesson.getRoom(); + } + return lesson.getRoom(); + } + + private String getTimeText(int position) { + TimetableLesson lesson = lessonList.get(position); + return lesson.getStartTime() + " - " + lesson.getEndTime(); + } + + private String getDescriptionText(int position) { + return StringUtils.capitalize(lessonList.get(position).getDescription()); + } + +} diff --git a/app/src/main/java/io/github/wulkanowy/ui/widgets/TimetableWidgetProvider.java b/app/src/main/java/io/github/wulkanowy/ui/widgets/TimetableWidgetProvider.java new file mode 100644 index 00000000..bfb6292c --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/ui/widgets/TimetableWidgetProvider.java @@ -0,0 +1,102 @@ +package io.github.wulkanowy.ui.widgets; + +import android.app.PendingIntent; +import android.appwidget.AppWidgetManager; +import android.appwidget.AppWidgetProvider; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.support.v4.app.TaskStackBuilder; +import android.widget.RemoteViews; + +import javax.inject.Inject; + +import io.github.wulkanowy.R; +import io.github.wulkanowy.WulkanowyApp; +import io.github.wulkanowy.data.RepositoryContract; +import io.github.wulkanowy.services.widgets.TimetableWidgetServices; +import io.github.wulkanowy.ui.main.MainActivity; +import io.github.wulkanowy.utils.TimeUtils; + +public class TimetableWidgetProvider extends AppWidgetProvider { + + @Inject + RepositoryContract repository; + + @Override + public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { + inject(context); + + for (int appWidgetId : appWidgetIds) { + RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.timetable_widget); + + setViews(views, context, appWidgetId); + setToggleIntent(views, context); + setTemplateIntent(views, context); + updateWidget(views, appWidgetManager, appWidgetId); + } + super.onUpdate(context, appWidgetManager, appWidgetIds); + } + + @Override + public void onReceive(final Context context, Intent intent) { + super.onReceive(context, intent); + inject(context); + + if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(intent.getAction())) { + final AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); + ComponentName thisWidget = new ComponentName(context.getPackageName(), + TimetableWidgetProvider.class.getName()); + final int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget); + + repository.setTimetableWidgetState(!repository.getTimetableWidgetState()); + onUpdate(context, appWidgetManager, appWidgetIds); + } + } + + private void setToggleIntent(RemoteViews views, Context context) { + Intent refreshIntent = new Intent(context, TimetableWidgetProvider.class); + refreshIntent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); + PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, + refreshIntent, PendingIntent.FLAG_UPDATE_CURRENT); + views.setOnClickPendingIntent(R.id.timetable_widget_toggle, pendingIntent); + } + + private void setTemplateIntent(RemoteViews views, Context context) { + Intent intent = MainActivity.getStartIntent(context); + intent.putExtra(MainActivity.EXTRA_CARD_ID_KEY, 3); + + PendingIntent pendingIntent = TaskStackBuilder.create(context) + .addNextIntentWithParentStack(intent) + .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); + + views.setPendingIntentTemplate(R.id.timetable_widget_list, pendingIntent); + } + + private void setViews(RemoteViews views, Context context, int appWidgetId) { + Intent intent = new Intent(context, TimetableWidgetServices.class); + intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); + + views.setRemoteAdapter(appWidgetId, R.id.timetable_widget_list, intent); + views.setEmptyView(R.id.timetable_widget_list, R.id.timetable_widget_empty); + + boolean nextDay = repository.getTimetableWidgetState(); + + String toggleText = context.getString(nextDay ? R.string.widget_timetable_tomorrow + : R.string.widget_timetable_today); + + views.setTextViewText(R.id.timetable_widget_toggle, toggleText); + views.setTextViewText(R.id.timetable_widget_date, TimeUtils.getTodayOrNextDay(nextDay)); + } + + private void updateWidget(RemoteViews views, AppWidgetManager appWidgetManager, int appWidgetId) { + appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetId, R.id.timetable_widget_list); + appWidgetManager.updateAppWidget(appWidgetId, views); + } + + private void inject(Context context) { + if (repository == null) { + ((WulkanowyApp) context.getApplicationContext()).getApplicationComponent().inject(this); + } + } +} diff --git a/app/src/main/java/io/github/wulkanowy/utils/TimeUtils.java b/app/src/main/java/io/github/wulkanowy/utils/TimeUtils.java index a7162d15..de5d136f 100644 --- a/app/src/main/java/io/github/wulkanowy/utils/TimeUtils.java +++ b/app/src/main/java/io/github/wulkanowy/utils/TimeUtils.java @@ -86,4 +86,20 @@ public final class TimeUtils { } return currentDate.format(formatter); } + + public static int getTodayOrNextDayValue(boolean nextDay) { + DayOfWeek day = LocalDate.now().getDayOfWeek(); + if (nextDay) { + if (day == DayOfWeek.SUNDAY) { + return 0; + } + return day.getValue(); + } + return day.getValue() - 1; + } + + public static String getTodayOrNextDay(boolean nextDay) { + LocalDate current = LocalDate.now(); + return nextDay ? current.plusDays(1).format(formatter) : current.format(formatter); + } } diff --git a/app/src/main/res/drawable/widget_timetable_preview.png b/app/src/main/res/drawable/widget_timetable_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..d9f3538c4b3db7d16fb8008e12517214d0d52d49 GIT binary patch literal 50108 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

#1|G1 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/timetable_widget.xml b/app/src/main/res/layout/timetable_widget.xml new file mode 100644 index 00000000..c2f146ae --- /dev/null +++ b/app/src/main/res/layout/timetable_widget.xml @@ -0,0 +1,75 @@ + + + + + +