diff options
author | Stefan Niedermann <info@niedermann.it> | 2021-10-18 10:27:47 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2021-10-18 10:27:47 +0300 |
commit | a2c59e2b4ec05ac4498389110522c049b6605f5c (patch) | |
tree | 7818e40a0f3977dcce0cd6938c3b2148d5188cd7 /app/src/main | |
parent | 05e7ca848b0c79a6663a50e5d88bde53f2ecd1d0 (diff) | |
parent | 5b524bc0e28a0afde1a741f32687c065df0e72fc (diff) |
Merge branch 'target-sdk-31'
# Conflicts:
# app/build.gradle
Diffstat (limited to 'app/src/main')
15 files changed, 152 insertions, 87 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 311829a4c..f889a4831 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -45,7 +45,8 @@ <activity android:name=".ui.MainActivity" android:label="@string/app_name_short" - android:theme="@style/SplashTheme"> + android:theme="@style/SplashTheme" + android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> @@ -77,7 +78,8 @@ <activity android:name=".ui.sharetarget.ShareTargetActivity" android:label="@string/share_add_to_card" - android:theme="@style/SplashTheme"> + android:theme="@style/SplashTheme" + android:exported="false"> <intent-filter> <action android:name="android.intent.action.SEND" /> @@ -129,7 +131,8 @@ <activity android:name=".ui.preparecreate.PrepareCreateActivity" android:description="@string/add_a_new_card_using_the_button" - android:label="@string/add_card"> + android:label="@string/add_card" + android:exported="true"> <intent-filter> <action android:name="android.intent.action.SEND" /> @@ -145,7 +148,8 @@ <activity android:name=".ui.PushNotificationActivity" - android:label="@string/app_name"> + android:label="@string/app_name" + android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> </intent-filter> @@ -174,7 +178,8 @@ <receiver android:name="it.niedermann.nextcloud.deck.ui.widget.upcoming.UpcomingWidget" - android:label="@string/widget_upcoming_title"> + android:label="@string/widget_upcoming_title" + android:exported="true"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> @@ -185,7 +190,8 @@ android:resource="@xml/upcoming_widget_provider" /> </receiver> - <activity android:name=".ui.widget.stack.StackWidgetConfigurationActivity"> + <activity android:name=".ui.widget.stack.StackWidgetConfigurationActivity" + android:exported="true"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" /> </intent-filter> @@ -193,7 +199,8 @@ <receiver android:name="it.niedermann.nextcloud.deck.ui.widget.stack.StackWidget" - android:label="@string/widget_stack_title"> + android:label="@string/widget_stack_title" + android:exported="true"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> @@ -209,7 +216,8 @@ android:description="@string/add_a_new_card_using_the_button" android:icon="@drawable/ic_app_logo" android:label="@string/add_card" - android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> + android:permission="android.permission.BIND_QUICK_SETTINGS_TILE" + android:exported="true"> <intent-filter> <action android:name="android.service.quicksettings.action.QS_TILE" /> </intent-filter> @@ -222,7 +230,8 @@ <activity android:name=".ui.widget.singlecard.SelectCardForWidgetActivity" android:label="@string/share_add_to_card" - android:theme="@style/SplashTheme"> + android:theme="@style/SplashTheme" + android:exported="true"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" /> @@ -235,7 +244,8 @@ <receiver android:name=".ui.widget.singlecard.SingleCardWidget" - android:label="@string/single_card"> + android:label="@string/single_card" + android:exported="true"> <intent-filter> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> </intent-filter> diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/singlecard/SingleCardWidget.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/singlecard/SingleCardWidget.java index b3e4d622b..bdfd111d0 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/singlecard/SingleCardWidget.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/singlecard/SingleCardWidget.java @@ -1,5 +1,7 @@ package it.niedermann.nextcloud.deck.ui.widget.singlecard; +import static it.niedermann.nextcloud.deck.util.WidgetUtil.pendingIntentFlagCompat; + import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; @@ -38,7 +40,7 @@ public class SingleCardWidget extends AppWidgetProvider { final FullSingleCardWidgetModel fullModel = syncManager.getSingleCardWidgetModelDirectly(appWidgetId); final Intent intent = EditActivity.createEditCardIntent(context, fullModel.getAccount(), fullModel.getModel().getBoardId(), fullModel.getFullCard().getLocalId()); - final PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT); + final PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, pendingIntentFlagCompat(PendingIntent.FLAG_UPDATE_CURRENT)); final RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_single_card); final Intent serviceIntent = new Intent(context, SingleCardWidgetService.class); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/stack/StackWidget.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/stack/StackWidget.java index 02d426bbb..3d7d1100d 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/stack/StackWidget.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/stack/StackWidget.java @@ -1,5 +1,8 @@ package it.niedermann.nextcloud.deck.ui.widget.stack; +import static android.appwidget.AppWidgetManager.ACTION_APPWIDGET_UPDATE; +import static it.niedermann.nextcloud.deck.util.WidgetUtil.pendingIntentFlagCompat; + import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetProvider; @@ -22,8 +25,6 @@ import it.niedermann.nextcloud.deck.persistence.sync.SyncManager; import it.niedermann.nextcloud.deck.ui.MainActivity; import it.niedermann.nextcloud.deck.ui.card.EditActivity; -import static android.appwidget.AppWidgetManager.ACTION_APPWIDGET_UPDATE; - public class StackWidget extends AppWidgetProvider { private static final int PENDING_INTENT_OPEN_APP_RQ = 0; private static final int PENDING_INTENT_EDIT_CARD_RQ = 1; @@ -77,9 +78,9 @@ public class StackWidget extends AppWidgetProvider { final Intent intent = new Intent(Intent.ACTION_MAIN).setComponent(new ComponentName(context.getPackageName(), MainActivity.class.getName())); final PendingIntent pendingIntent = PendingIntent.getActivity(context, PENDING_INTENT_OPEN_APP_RQ, - intent, PendingIntent.FLAG_UPDATE_CURRENT); + intent, pendingIntentFlagCompat(PendingIntent.FLAG_UPDATE_CURRENT)); final PendingIntent templatePI = PendingIntent.getActivity(context, PENDING_INTENT_EDIT_CARD_RQ, - new Intent(context, EditActivity.class), PendingIntent.FLAG_UPDATE_CURRENT); + new Intent(context, EditActivity.class), pendingIntentFlagCompat(PendingIntent.FLAG_UPDATE_CURRENT)); views.setOnClickPendingIntent(R.id.widget_stack_header_rl, pendingIntent); 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 cfb22bccd..bbb1b0af3 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 @@ -1,6 +1,7 @@ package it.niedermann.nextcloud.deck.ui.widget.upcoming; import static android.appwidget.AppWidgetManager.ACTION_APPWIDGET_UPDATE; +import static it.niedermann.nextcloud.deck.util.WidgetUtil.pendingIntentFlagCompat; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; @@ -126,7 +127,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.getBroadcast(context, appWidgetId, new Intent(context, UpcomingWidget.class), PendingIntent.FLAG_UPDATE_CURRENT); + final PendingIntent templatePI = PendingIntent.getBroadcast(context, appWidgetId, new Intent(context, UpcomingWidget.class), pendingIntentFlagCompat(PendingIntent.FLAG_UPDATE_CURRENT)); views.setPendingIntentTemplate(R.id.upcoming_widget_lv, templatePI); views.setRemoteAdapter(R.id.upcoming_widget_lv, serviceIntent); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/util/WidgetUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/util/WidgetUtil.java new file mode 100644 index 000000000..fed243ee6 --- /dev/null +++ b/app/src/main/java/it/niedermann/nextcloud/deck/util/WidgetUtil.java @@ -0,0 +1,30 @@ +package it.niedermann.nextcloud.deck.util; + +import android.app.PendingIntent; +import android.os.Build; + +public class WidgetUtil { + + private WidgetUtil() { + throw new UnsupportedOperationException("This class must not get instantiated"); + } + + /** + * Android S requires either {@link PendingIntent#FLAG_MUTABLE} or + * {@link PendingIntent#FLAG_IMMUTABLE} to be set on a {@link PendingIntent}. + * This is enforced by Android and will lead to an app crash if neither of those flags is + * present. + * To keep the app working, this compatibility method can be used to add the + * {@link PendingIntent#FLAG_MUTABLE} flag on Android S and higher to restore the behavior of + * older SDK versions. + * + * @param flags wanted flags for {@link PendingIntent} + * @return {@param flags} | {@link PendingIntent#FLAG_MUTABLE} + */ + public static int pendingIntentFlagCompat(int flags) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + return flags | PendingIntent.FLAG_MUTABLE; + } + return flags; + } +} diff --git a/app/src/main/res/drawable-v21/bg_navdrawer_item.xml b/app/src/main/res/drawable-v21/bg_navdrawer_item.xml deleted file mode 100644 index 0cdc61323..000000000 --- a/app/src/main/res/drawable-v21/bg_navdrawer_item.xml +++ /dev/null @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<ripple xmlns:android="http://schemas.android.com/apk/res/android" - android:color="?colorControlHighlight"> - - <item - android:id="@android:id/mask" - android:left="@dimen/spacer_1x" - android:right="@dimen/spacer_1x"> - - <shape android:shape="rectangle"> - <!-- value of color is irrelevant, but solid needs to be defined for mask to work --> - <solid android:color="@color/bg_highlighted" /> - <corners android:radius="@dimen/spacer_1hx" /> - </shape> - </item> - - <item - android:left="@dimen/spacer_1x" - android:right="@dimen/spacer_1x"> - - <selector> - <item android:state_checked="true"> - <shape android:shape="rectangle"> - <corners android:radius="@dimen/spacer_1hx" /> - <solid android:color="@color/bg_highlighted" /> - </shape> - </item> - - <item> - <shape android:shape="rectangle"> - <corners android:radius="@dimen/spacer_1hx" /> - </shape> - </item> - </selector> - </item> - -</ripple>
\ No newline at end of file diff --git a/app/src/main/res/drawable-v21/bottom_sheet_rounded.xml b/app/src/main/res/drawable-v21/bottom_sheet_rounded.xml deleted file mode 100644 index ba266ed32..000000000 --- a/app/src/main/res/drawable-v21/bottom_sheet_rounded.xml +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<shape xmlns:android="http://schemas.android.com/apk/res/android" - android:shape="rectangle"> - <solid android:color="?attr/colorSurface" /> - <corners - android:topLeftRadius="16dp" - android:topRightRadius="16dp" /> - -</shape>
\ No newline at end of file diff --git a/app/src/main/res/drawable/bg_navdrawer_item.xml b/app/src/main/res/drawable/bg_navdrawer_item.xml index 39e2c2f47..0cdc61323 100644 --- a/app/src/main/res/drawable/bg_navdrawer_item.xml +++ b/app/src/main/res/drawable/bg_navdrawer_item.xml @@ -1,14 +1,37 @@ <?xml version="1.0" encoding="utf-8"?> -<selector xmlns:android="http://schemas.android.com/apk/res/android" android:left="@dimen/spacer_1x" android:right="@dimen/spacer_1x"> +<ripple xmlns:android="http://schemas.android.com/apk/res/android" + android:color="?colorControlHighlight"> + + <item + android:id="@android:id/mask" + android:left="@dimen/spacer_1x" + android:right="@dimen/spacer_1x"> - <item android:state_checked="true"> <shape android:shape="rectangle"> + <!-- value of color is irrelevant, but solid needs to be defined for mask to work --> <solid android:color="@color/bg_highlighted" /> + <corners android:radius="@dimen/spacer_1hx" /> </shape> </item> - <item> - <shape android:shape="rectangle" /> + <item + android:left="@dimen/spacer_1x" + android:right="@dimen/spacer_1x"> + + <selector> + <item android:state_checked="true"> + <shape android:shape="rectangle"> + <corners android:radius="@dimen/spacer_1hx" /> + <solid android:color="@color/bg_highlighted" /> + </shape> + </item> + + <item> + <shape android:shape="rectangle"> + <corners android:radius="@dimen/spacer_1hx" /> + </shape> + </item> + </selector> </item> -</selector>
\ No newline at end of file +</ripple>
\ No newline at end of file diff --git a/app/src/main/res/drawable/bottom_sheet_rounded.xml b/app/src/main/res/drawable/bottom_sheet_rounded.xml index cef4c2314..ba266ed32 100644 --- a/app/src/main/res/drawable/bottom_sheet_rounded.xml +++ b/app/src/main/res/drawable/bottom_sheet_rounded.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> - <solid android:color="@color/primary" /> + <solid android:color="?attr/colorSurface" /> <corners android:topLeftRadius="16dp" android:topRightRadius="16dp" /> + </shape>
\ No newline at end of file diff --git a/app/src/main/res/drawable/widget_stack_entry_background.xml b/app/src/main/res/drawable/widget_stack_entry_background.xml index 1d348b58e..62f9d4746 100644 --- a/app/src/main/res/drawable/widget_stack_entry_background.xml +++ b/app/src/main/res/drawable/widget_stack_entry_background.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="@color/widget_background" /> - <corners android:radius="@dimen/widget_outer_radius" /> + <corners android:radius="@dimen/widget_inner_radius" /> <padding android:bottom="0dp" android:left="0dp" diff --git a/app/src/main/res/layout/widget_single_card.xml b/app/src/main/res/layout/widget_single_card.xml index cf3bac763..287841c46 100644 --- a/app/src/main/res/layout/widget_single_card.xml +++ b/app/src/main/res/layout/widget_single_card.xml @@ -6,23 +6,21 @@ android:layout_height="match_parent" android:background="@drawable/widget_single_card_background" android:orientation="vertical" - android:paddingTop="@dimen/spacer_1hx" - android:paddingBottom="@dimen/spacer_1x" - android:paddingStart="@dimen/spacer_2x" - android:paddingEnd="@dimen/spacer_2x" tools:layout_height="200dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="horizontal"> + android:orientation="horizontal" + android:paddingStart="@dimen/widget_inner_padding_horizontal" + android:paddingTop="@dimen/widget_inner_padding_vertical" + android:paddingEnd="@dimen/widget_inner_padding_horizontal"> <TextView android:id="@+id/title" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - android:paddingTop="@dimen/spacer_1hx" android:paddingBottom="@dimen/spacer_1hx" android:textColor="@color/widget_foreground" android:textSize="@dimen/widget_font_size_header" @@ -58,7 +56,9 @@ <FrameLayout android:layout_width="match_parent" android:layout_height="0dp" - android:layout_weight="1"> + android:layout_weight="1" + android:paddingStart="@dimen/widget_inner_padding_horizontal" + android:paddingEnd="@dimen/widget_inner_padding_horizontal"> <ListView android:id="@+id/description_lv" @@ -74,7 +74,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/spacer_1hx" - android:gravity="bottom"> + android:gravity="bottom" + android:paddingStart="@dimen/widget_inner_padding_horizontal" + android:paddingEnd="@dimen/widget_inner_padding_horizontal" + android:paddingBottom="@dimen/widget_inner_padding_vertical"> <ImageView android:id="@+id/card_count_comments_image" diff --git a/app/src/main/res/layout/widget_stack.xml b/app/src/main/res/layout/widget_stack.xml index c0e5887a8..b02e9a1db 100644 --- a/app/src/main/res/layout/widget_stack.xml +++ b/app/src/main/res/layout/widget_stack.xml @@ -10,9 +10,9 @@ <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingStart="@dimen/spacer_1x" - android:paddingTop="@dimen/spacer_1x" - android:paddingEnd="@dimen/spacer_1x"> + android:paddingStart="@dimen/widget_inner_padding_horizontal" + android:paddingTop="@dimen/widget_inner_padding_vertical" + android:paddingEnd="@dimen/widget_inner_padding_horizontal"> <RelativeLayout android:id="@+id/widget_stack_header_rl" @@ -55,7 +55,10 @@ android:layout_height="wrap_content" android:divider="@android:color/transparent" android:dividerHeight="@dimen/spacer_1x" - android:padding="@dimen/spacer_1x" + android:paddingStart="@dimen/widget_inner_padding_horizontal" + android:paddingTop="@dimen/spacer_1x" + android:paddingEnd="@dimen/widget_inner_padding_horizontal" + android:paddingBottom="@dimen/widget_inner_padding_vertical" tools:listitem="@layout/widget_stack_entry" /> <ImageView diff --git a/app/src/main/res/layout/widget_upcoming.xml b/app/src/main/res/layout/widget_upcoming.xml index 4ae9ca4ad..75aa09d9b 100644 --- a/app/src/main/res/layout/widget_upcoming.xml +++ b/app/src/main/res/layout/widget_upcoming.xml @@ -13,10 +13,10 @@ android:layout_height="wrap_content" android:divider="@android:color/transparent" android:dividerHeight="@dimen/spacer_1x" - android:paddingTop="@dimen/spacer_1x" - android:paddingStart="@dimen/spacer_1x" - android:paddingEnd="@dimen/spacer_1x" - android:paddingBottom="@dimen/spacer_1x" + android:paddingStart="@dimen/widget_inner_padding_horizontal" + android:paddingTop="@dimen/widget_inner_padding_vertical" + android:paddingEnd="@dimen/widget_inner_padding_horizontal" + android:paddingBottom="@dimen/widget_inner_padding_vertical" tools:listitem="@layout/widget_stack_entry" /> <ImageView diff --git a/app/src/main/res/values-v31/dimens.xml b/app/src/main/res/values-v31/dimens.xml new file mode 100644 index 000000000..a454cb9b8 --- /dev/null +++ b/app/src/main/res/values-v31/dimens.xml @@ -0,0 +1,35 @@ +<resources> + <dimen name="spacer_1qx">2dp</dimen> + <dimen name="spacer_1hx">4dp</dimen> + <dimen name="spacer_1x">8dp</dimen> + <dimen name="spacer_2x">16dp</dimen> + <dimen name="spacer_3x">24dp</dimen> + <dimen name="spacer_4x">32dp</dimen> + + <dimen name="compact_label_height">6dp</dimen> + <dimen name="attachments_bottom_navigation_height">64dp</dimen> + + <dimen name="font_size_description">18sp</dimen> + + <!-- Drawer header --> + <dimen name="drawer_header_height">100dp</dimen> + <dimen name="drawer_header_logo_size">42dp</dimen> + + <dimen name="fab_margin">@dimen/spacer_2x</dimen> + + <dimen name="avatar_size">40dp</dimen> + <dimen name="avatar_size_small">32dp</dimen> + <dimen name="avatar_size_small_overlapping">20dp</dimen> + <dimen name="avatar_size_small_overlapping_border">2dp</dimen> + + <dimen name="icon_size_details">24dp</dimen> + <dimen name="empty_content_font_size">26sp</dimen> + + <dimen name="widget_outer_radius">@android:dimen/system_app_widget_background_radius</dimen> + <dimen name="widget_inner_radius">@android:dimen/system_app_widget_inner_radius</dimen> + <dimen name="widget_inner_padding_vertical">@dimen/widget_inner_radius</dimen> + <dimen name="widget_inner_padding_horizontal">@dimen/spacer_1x</dimen> + <dimen name="widget_stack_card_padding">@dimen/spacer_1hx</dimen> + + <dimen name="widget_font_size_header">16sp</dimen> +</resources>
\ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index b9f6663ca..65db48fc3 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -25,8 +25,10 @@ <dimen name="icon_size_details">24dp</dimen> <dimen name="empty_content_font_size">26sp</dimen> - <dimen name="widget_outer_radius">@dimen/spacer_1x</dimen> - <dimen name="widget_inner_radius">@dimen/spacer_1hx</dimen> + <dimen name="widget_outer_radius">@dimen/spacer_4x</dimen> + <dimen name="widget_inner_radius">@dimen/spacer_2x</dimen> + <dimen name="widget_inner_padding_vertical">@dimen/widget_inner_radius</dimen> + <dimen name="widget_inner_padding_horizontal">@dimen/spacer_1x</dimen> <dimen name="widget_stack_card_padding">@dimen/spacer_1hx</dimen> <dimen name="widget_font_size_header">16sp</dimen> |