From e1986f3d581499fd895a0a121033541a50631478 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 22 Jul 2019 20:59:22 +0200 Subject: [PATCH] adding a Go To Today button at the list widget --- app/src/main/AndroidManifest.xml | 4 +++ .../pro/adapters/EventListWidgetAdapter.kt | 8 +++--- .../adapters/EventListWidgetAdapterEmpty.kt | 26 +++++++++++++++++++ .../pro/helpers/MyWidgetListProvider.kt | 22 ++++++++++++++++ .../pro/services/WidgetServiceEmpty.kt | 9 +++++++ app/src/main/res/layout/widget_event_list.xml | 24 ++++++++++++++--- 6 files changed, 85 insertions(+), 8 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/calendar/pro/adapters/EventListWidgetAdapterEmpty.kt create mode 100644 app/src/main/kotlin/com/simplemobiletools/calendar/pro/services/WidgetServiceEmpty.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5f80c7acf..71fecca98 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -176,6 +176,10 @@ android:name=".services.WidgetService" android:permission="android.permission.BIND_REMOTEVIEWS"/> + + context.launchNewEventIntent() LAUNCH_CAL -> launchCalenderInDefaultView(context) + GO_TO_TODAY -> goToToday(context) else -> super.onReceive(context, intent) } } @@ -87,4 +93,20 @@ class MyWidgetListProvider : AppWidgetProvider() { context.startActivity(this) } } + + // hacky solution for reseting the events list + private fun goToToday(context: Context) { + val appWidgetManager = AppWidgetManager.getInstance(context) + appWidgetManager.getAppWidgetIds(getComponentName(context)).forEach { + val views = RemoteViews(context.packageName, R.layout.widget_event_list) + Intent(context, WidgetServiceEmpty::class.java).apply { + data = Uri.parse(this.toUri(Intent.URI_INTENT_SCHEME)) + views.setRemoteAdapter(R.id.widget_event_list, this) + } + + appWidgetManager.updateAppWidget(it, views) + } + + performUpdate(context) + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/services/WidgetServiceEmpty.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/services/WidgetServiceEmpty.kt new file mode 100644 index 000000000..f29ccd84a --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/services/WidgetServiceEmpty.kt @@ -0,0 +1,9 @@ +package com.simplemobiletools.calendar.pro.services + +import android.content.Intent +import android.widget.RemoteViewsService +import com.simplemobiletools.calendar.pro.adapters.EventListWidgetAdapterEmpty + +class WidgetServiceEmpty : RemoteViewsService() { + override fun onGetViewFactory(intent: Intent) = EventListWidgetAdapterEmpty(applicationContext) +} diff --git a/app/src/main/res/layout/widget_event_list.xml b/app/src/main/res/layout/widget_event_list.xml index f80e18dba..d1f62d1c7 100644 --- a/app/src/main/res/layout/widget_event_list.xml +++ b/app/src/main/res/layout/widget_event_list.xml @@ -1,6 +1,7 @@ @@ -9,15 +10,30 @@ android:id="@+id/widget_event_list_today" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_alignTop="@+id/widget_event_new_event" - android:layout_alignBottom="@+id/widget_event_new_event" - android:layout_toStartOf="@+id/widget_event_new_event" + android:layout_alignTop="@+id/widget_event_go_to_today" + android:layout_alignBottom="@+id/widget_event_go_to_today" + android:layout_toStartOf="@+id/widget_event_go_to_today" android:ellipsize="end" android:gravity="center_vertical" android:maxLines="1" android:paddingStart="@dimen/medium_margin" android:paddingEnd="@dimen/medium_margin" - android:textSize="@dimen/normal_text_size"/> + android:textSize="@dimen/normal_text_size" + tools:text="July 18"/> + +