Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-04-18 18:41:48 +0300
committerStefan Niedermann <info@niedermann.it>2021-04-18 18:41:48 +0300
commitc184f4f326c754a6edd086cf4c21b645ec3bcc24 (patch)
treee863678a3d147e1de48858b3a72087a4fc84b14b
parente66947dbb081e3f83df89b2eb8096b2e9ceed8ac (diff)
Fix #932 Link to Board-view from Widget
Signed-off-by: Stefan Niedermann <info@niedermann.it>
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidget.java33
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidgetFactory.java9
-rw-r--r--fastlane/metadata/android/en-US/changelogs/1018000.txt1
3 files changed, 32 insertions, 11 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidget.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidget.java
index bedf5253f..1ec5bddcb 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidget.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidget.java
@@ -14,6 +14,7 @@ import androidx.annotation.NonNull;
import java.util.List;
import java.util.stream.Collectors;
+import it.niedermann.nextcloud.deck.BuildConfig;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.api.ResponseCallback;
@@ -30,8 +31,10 @@ import it.niedermann.nextcloud.deck.ui.card.EditActivity;
import static android.appwidget.AppWidgetManager.ACTION_APPWIDGET_UPDATE;
public class UpcomingWidget extends AppWidgetProvider {
- private static final int PENDING_INTENT_OPEN_APP_RQ = 0;
- private static final int PENDING_INTENT_EDIT_CARD_RQ = 1;
+ private static final String PENDING_INTENT_ACTION_EDIT = "edit";
+ private static final String PENDING_INTENT_ACTION_OPEN = "open";
+ private static final String PENDING_INTENT_PARAM_LOCAL_CARD_ID = "localCardId";
+ private static final String PENDING_INTENT_PARAM_ACCOUNT_ID = "accountId";
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
@@ -86,6 +89,17 @@ public class UpcomingWidget extends AppWidgetProvider {
DeckLog.verbose(ACTION_APPWIDGET_UPDATE, "→ Triggering update for all widgets of type", UpcomingWidget.class.getSimpleName());
updateAppWidget(context, awm, awm.getAppWidgetIds(new ComponentName(context, UpcomingWidget.class)));
}
+ } else if (PENDING_INTENT_ACTION_EDIT.equals(intent.getAction())) {
+ if (intent.hasExtra(PENDING_INTENT_PARAM_ACCOUNT_ID) && intent.hasExtra(PENDING_INTENT_PARAM_LOCAL_CARD_ID)) {
+ new Thread(() -> {
+ final SyncManager syncManager = new SyncManager(context);
+ context.startActivity(EditActivity.createEditCardIntent(context, syncManager.readAccountDirectly(intent.getLongExtra(PENDING_INTENT_PARAM_ACCOUNT_ID, -1)), syncManager.getBoardLocalIdByLocalCardIdDirectly(intent.getLongExtra(PENDING_INTENT_PARAM_LOCAL_CARD_ID, -1)), intent.getLongExtra(PENDING_INTENT_PARAM_LOCAL_CARD_ID, -1)));
+ }).start();
+ } else {
+ DeckLog.error(PENDING_INTENT_PARAM_ACCOUNT_ID, "and", PENDING_INTENT_PARAM_LOCAL_CARD_ID, "must be provided for action", PENDING_INTENT_ACTION_EDIT);
+ }
+ } else if (PENDING_INTENT_ACTION_OPEN.equals(intent.getAction())) {
+ context.startActivity(context.getPackageManager().getLaunchIntentForPackage(BuildConfig.APPLICATION_ID));
}
}
@@ -109,8 +123,7 @@ public class UpcomingWidget extends AppWidgetProvider {
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
- final PendingIntent templatePI = PendingIntent.getActivity(context, PENDING_INTENT_EDIT_CARD_RQ,
- new Intent(context, EditActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
+ final PendingIntent templatePI = PendingIntent.getBroadcast(context, appWidgetId, new Intent(context, UpcomingWidget.class), PendingIntent.FLAG_UPDATE_CURRENT);
views.setPendingIntentTemplate(R.id.upcoming_widget_lv, templatePI);
views.setRemoteAdapter(R.id.upcoming_widget_lv, serviceIntent);
@@ -121,4 +134,16 @@ public class UpcomingWidget extends AppWidgetProvider {
}).start();
}
}
+
+ static Intent fillEditPendingIntent(long accountId, long localCardId) {
+ return new Intent()
+ .setAction(PENDING_INTENT_ACTION_EDIT)
+ .putExtra(PENDING_INTENT_PARAM_ACCOUNT_ID, accountId)
+ .putExtra(PENDING_INTENT_PARAM_LOCAL_CARD_ID, localCardId);
+ }
+
+ static Intent fillOpenPendingIntent() {
+ return new Intent()
+ .setAction(PENDING_INTENT_ACTION_OPEN);
+ }
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidgetFactory.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidgetFactory.java
index 7da242179..c23e4ca3d 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidgetFactory.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/upcoming/UpcomingWidgetFactory.java
@@ -3,7 +3,6 @@ package it.niedermann.nextcloud.deck.ui.widget.upcoming;
import android.appwidget.AppWidgetManager;
import android.content.Context;
import android.content.Intent;
-import android.net.Uri;
import android.widget.RemoteViews;
import android.widget.RemoteViewsService;
@@ -18,7 +17,6 @@ import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.R;
import it.niedermann.nextcloud.deck.model.full.FullCard;
import it.niedermann.nextcloud.deck.persistence.sync.SyncManager;
-import it.niedermann.nextcloud.deck.ui.card.EditActivity;
import it.niedermann.nextcloud.deck.ui.upcomingcards.UpcomingCardsAdapterItem;
import it.niedermann.nextcloud.deck.ui.upcomingcards.UpcomingCardsAdapterSectionItem;
import it.niedermann.nextcloud.deck.ui.upcomingcards.UpcomingCardsUtil;
@@ -85,15 +83,12 @@ public class UpcomingWidgetFactory implements RemoteViewsService.RemoteViewsFact
} else {
widget_entry.setViewPadding(R.id.widget_entry_content_tv, headerHorizontalPadding, headerVerticalPaddingNth, headerHorizontalPadding, 0);
}
+ widget_entry.setOnClickFillInIntent(R.id.widget_stack_entry, UpcomingWidget.fillOpenPendingIntent());
} else if (data.get(i).getClass() == UpcomingCardsAdapterItem.class || data.get(i) instanceof UpcomingCardsAdapterItem) {
final FullCard card = ((UpcomingCardsAdapterItem) data.get(i)).getFullCard();
widget_entry = new RemoteViews(context.getPackageName(), R.layout.widget_stack_entry);
widget_entry.setTextViewText(R.id.widget_entry_content_tv, card.getCard().getTitle());
-
- final Long localCardId = card.getCard().getLocalId();
- final Intent intent = EditActivity.createEditCardIntent(context, syncManager.readAccountDirectly(card.getAccountId()), syncManager.getBoardLocalIdByLocalCardIdDirectly(localCardId), localCardId);
- intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
- widget_entry.setOnClickFillInIntent(R.id.widget_stack_entry, intent);
+ widget_entry.setOnClickFillInIntent(R.id.widget_stack_entry, UpcomingWidget.fillEditPendingIntent(card.getAccountId(), card.getLocalId()));
} else {
DeckLog.logError(new IllegalStateException("Expected items to be instance of " + UpcomingCardsAdapterSectionItem.class.getSimpleName() + " or " + UpcomingCardsAdapterItem.class.getSimpleName()));
return null;
diff --git a/fastlane/metadata/android/en-US/changelogs/1018000.txt b/fastlane/metadata/android/en-US/changelogs/1018000.txt
index f8f0a7c5a..f6436acde 100644
--- a/fastlane/metadata/android/en-US/changelogs/1018000.txt
+++ b/fastlane/metadata/android/en-US/changelogs/1018000.txt
@@ -1,2 +1,3 @@
- 🖼 Cover images for cards (optional)
+- 🆕 Upcoming widget: clicking on a time separator now opens last board (#932)
- 👤 Show display name instead of user id in account switcher (#864) \ No newline at end of file