From 20a21ef6f3a48b62d18e52bfe5a3a353e8b87c79 Mon Sep 17 00:00:00 2001 From: A200073727 Date: Wed, 12 Apr 2023 15:57:16 +0530 Subject: [PATCH] implemented notification with customization NMC-2250: Notification tray icon customized --- .../documentscan/GeneratePdfFromImagesWork.kt | 3 +- .../nextcloud/client/jobs/FilesExportWork.kt | 3 +- .../client/jobs/MediaFoldersDetectionWork.kt | 3 +- .../nextcloud/client/jobs/NotificationWork.kt | 8 +- .../nextcloud/client/media/PlayerService.kt | 3 +- .../AppNotificationManagerImpl.kt | 3 +- .../android/syncadapter/FileSyncAdapter.java | 3 +- .../ui/activity/NotificationsActivity.kt | 9 +- .../ui/adapter/NotificationListAdapter.java | 22 ++++- .../ui/notifications/NotificationUtils.java | 4 +- app/src/main/res/drawable/ic_notification.xml | 15 +-- .../res/layout/notification_list_item.xml | 3 +- app/src/main/res/values-night/colors.xml | 67 ++++++++++++++ app/src/main/res/values/colors.xml | 92 +++++++++++++++++++ app/src/main/res/values/dimens.xml | 31 +++++++ 15 files changed, 244 insertions(+), 25 deletions(-) create mode 100644 app/src/main/res/values/dimens.xml diff --git a/app/src/main/java/com/nextcloud/client/documentscan/GeneratePdfFromImagesWork.kt b/app/src/main/java/com/nextcloud/client/documentscan/GeneratePdfFromImagesWork.kt index c1115de62e35..401ebad3dea8 100644 --- a/app/src/main/java/com/nextcloud/client/documentscan/GeneratePdfFromImagesWork.kt +++ b/app/src/main/java/com/nextcloud/client/documentscan/GeneratePdfFromImagesWork.kt @@ -98,7 +98,8 @@ class GeneratePdfFromImagesWork( .setContentText(message) .setAutoCancel(true) - viewThemeUtils.androidx.themeNotificationCompatBuilder(appContext, notificationBuilder) + // NMC Customization + notificationBuilder.color = appContext.resources.getColor(R.color.primary, null) notificationManager.notify(notificationId, notificationBuilder.build()) diff --git a/app/src/main/java/com/nextcloud/client/jobs/FilesExportWork.kt b/app/src/main/java/com/nextcloud/client/jobs/FilesExportWork.kt index 812be5cb75c6..035a4957ce66 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/FilesExportWork.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/FilesExportWork.kt @@ -135,7 +135,8 @@ class FilesExportWork( .setContentTitle(message) .setAutoCancel(true) - viewThemeUtils.androidx.themeNotificationCompatBuilder(appContext, notificationBuilder) + // NMC Customization + notificationBuilder.color = appContext.resources.getColor(R.color.primary, null) val actionIntent = Intent(DownloadManager.ACTION_VIEW_DOWNLOADS).apply { flags = FLAG_ACTIVITY_NEW_TASK diff --git a/app/src/main/java/com/nextcloud/client/jobs/MediaFoldersDetectionWork.kt b/app/src/main/java/com/nextcloud/client/jobs/MediaFoldersDetectionWork.kt index a81ba9d0011d..249b7971b2d4 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/MediaFoldersDetectionWork.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/MediaFoldersDetectionWork.kt @@ -268,7 +268,8 @@ class MediaFoldersDetectionWork constructor( .setAutoCancel(true) .setContentIntent(pendingIntent) - viewThemeUtils.androidx.themeNotificationCompatBuilder(context, notificationBuilder) + // NMC Customization + notificationBuilder.color = context.resources.getColor(R.color.primary, null) val disableDetection = Intent(context, NotificationReceiver::class.java) disableDetection.putExtra(NOTIFICATION_ID, notificationId) diff --git a/app/src/main/java/com/nextcloud/client/jobs/NotificationWork.kt b/app/src/main/java/com/nextcloud/client/jobs/NotificationWork.kt index e6f37a16e2cd..8783915ca181 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/NotificationWork.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/NotificationWork.kt @@ -163,7 +163,8 @@ class NotificationWork constructor( .setVisibility(NotificationCompat.VISIBILITY_PRIVATE) .setContentIntent(pendingIntent) - viewThemeUtils.androidx.themeNotificationCompatBuilder(context, notificationBuilder) + // NMC Customization + notificationBuilder.color = context.resources.getColor(R.color.primary, null) // Remove if (notification.getActions().isEmpty()) { @@ -219,9 +220,8 @@ class NotificationWork constructor( .setAutoCancel(true) .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setContentIntent(pendingIntent) - .also { - viewThemeUtils.androidx.themeNotificationCompatBuilder(context, it) - } + // NMC Customization + .setColor(context.resources.getColor(R.color.primary, null)) .build() ) val notificationManager = NotificationManagerCompat.from(context) diff --git a/app/src/main/java/com/nextcloud/client/media/PlayerService.kt b/app/src/main/java/com/nextcloud/client/media/PlayerService.kt index f953a799735a..c5d1065aa63f 100644 --- a/app/src/main/java/com/nextcloud/client/media/PlayerService.kt +++ b/app/src/main/java/com/nextcloud/client/media/PlayerService.kt @@ -110,7 +110,8 @@ class PlayerService : Service() { AndroidInjection.inject(this) player = Player(applicationContext, clientFactory, playerListener, audioManager) notificationBuilder = NotificationCompat.Builder(this) - viewThemeUtils.androidx.themeNotificationCompatBuilder(this, notificationBuilder) + // NMC Customization + notificationBuilder.color = resources.getColor(R.color.primary, null) val stop = Intent(this, PlayerService::class.java).apply { action = ACTION_STOP diff --git a/app/src/main/java/com/nextcloud/client/notifications/AppNotificationManagerImpl.kt b/app/src/main/java/com/nextcloud/client/notifications/AppNotificationManagerImpl.kt index 5c29b972134f..481922ca31fa 100644 --- a/app/src/main/java/com/nextcloud/client/notifications/AppNotificationManagerImpl.kt +++ b/app/src/main/java/com/nextcloud/client/notifications/AppNotificationManagerImpl.kt @@ -43,7 +43,8 @@ class AppNotificationManagerImpl @Inject constructor( } else { NotificationCompat.Builder(context) } - viewThemeUtils.androidx.themeNotificationCompatBuilder(context, builder) + // NMC Customization + builder.color = context.resources.getColor(R.color.primary, null) return builder } diff --git a/app/src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java b/app/src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java index 64a80fb345aa..71c83a044547 100644 --- a/app/src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java +++ b/app/src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java @@ -512,7 +512,8 @@ private void notifyForgottenLocalFiles() { private NotificationCompat.Builder createNotificationBuilder() { NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(getContext()); notificationBuilder.setSmallIcon(R.drawable.notification_icon).setAutoCancel(true); - viewThemeUtils.androidx.themeNotificationCompatBuilder(getContext(), notificationBuilder); + // NMC Customization + notificationBuilder.setColor(getContext().getResources().getColor(R.color.primary, null)); return notificationBuilder; } diff --git a/app/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.kt index 1840ca079c76..ffed1ed293cb 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/NotificationsActivity.kt @@ -104,6 +104,8 @@ class NotificationsActivity : AppCompatActivity(), NotificationsContract.View, I setDisplayHomeAsUpEnabled(true) setHomeAsUpIndicator(R.drawable.ic_arrow_back_foreground) } + // NMC Customization + viewThemeUtils.platform.themeStatusBar(this) } private fun setupStatusBar() { @@ -199,14 +201,17 @@ class NotificationsActivity : AppCompatActivity(), NotificationsContract.View, I Snackbar.LENGTH_INDEFINITE ) } else { - val pushValue = arbitraryDataProvider.getValue(accountName, PushUtils.KEY_PUSH) + // NMC Note -> Need to disable this error message for now as we will configure our + // own push notification server later not now + // once we will configure our server we will uncomment the below code. + /* val pushValue = arbitraryDataProvider.getValue(accountName, PushUtils.KEY_PUSH) if (pushValue.isEmpty()) { snackbar = Snackbar.make( binding.emptyList.emptyListView, R.string.push_notifications_temp_error, Snackbar.LENGTH_INDEFINITE ) - } + }*/ } } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/NotificationListAdapter.java b/app/src/main/java/com/owncloud/android/ui/adapter/NotificationListAdapter.java index 0894dd98ac12..e3c5c0447ebe 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/NotificationListAdapter.java +++ b/app/src/main/java/com/owncloud/android/ui/adapter/NotificationListAdapter.java @@ -208,7 +208,11 @@ public void setButtons(NotificationViewHolder holder, Notification notification) } }); - viewThemeUtils.material.colorMaterialButtonPrimaryFilled(button); + //NMC Customization + button.setBackgroundColor(ResourcesCompat.getColor(resources, + R.color.shared_with_me_color, null)); + button.setTextColor(ResourcesCompat.getColor(resources, + R.color.white, null)); holder.binding.buttons.addView(button); } else { overflowActions.add(action); @@ -220,8 +224,12 @@ public void setButtons(NotificationViewHolder holder, Notification notification) moreButton.setBackgroundColor(ResourcesCompat.getColor(resources, android.R.color.transparent, null)); - viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(moreButton); - + //NMC Customization + moreButton.setBackgroundColor(ResourcesCompat.getColor(resources, + android.R.color.transparent, + null)); + moreButton.setTextColor(ResourcesCompat.getColor(resources, + R.color.shared_with_me_color, null)); moreButton.setAllCaps(false); moreButton.setText(R.string.more); @@ -263,12 +271,16 @@ public void setButtons(NotificationViewHolder holder, Notification notification) final MaterialButton button = new MaterialButton(notificationsActivity); if (action.primary) { - viewThemeUtils.material.colorMaterialButtonPrimaryFilled(button); + button.setBackgroundColor(ResourcesCompat.getColor(resources, + R.color.shared_with_me_color, null)); + button.setTextColor(ResourcesCompat.getColor(resources, + R.color.white, null)); } else { button.setBackgroundColor(ResourcesCompat.getColor(resources, android.R.color.transparent, null)); - viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(button); + button.setTextColor(ResourcesCompat.getColor(resources, + R.color.shared_with_me_color, null)); } button.setAllCaps(false); diff --git a/app/src/main/java/com/owncloud/android/ui/notifications/NotificationUtils.java b/app/src/main/java/com/owncloud/android/ui/notifications/NotificationUtils.java index 5a529dd90d4e..a293778f5edd 100644 --- a/app/src/main/java/com/owncloud/android/ui/notifications/NotificationUtils.java +++ b/app/src/main/java/com/owncloud/android/ui/notifications/NotificationUtils.java @@ -16,6 +16,7 @@ import android.os.HandlerThread; import android.os.Process; +import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.utils.theme.ViewThemeUtils; @@ -56,7 +57,8 @@ private NotificationUtils() { */ public static NotificationCompat.Builder newNotificationBuilder(Context context, String channelId, final ViewThemeUtils viewThemeUtils) { final NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId); - viewThemeUtils.androidx.themeNotificationCompatBuilder(context, builder); + // NMC Customization + builder.setColor(context.getResources().getColor(R.color.primary, null)); return builder; } diff --git a/app/src/main/res/drawable/ic_notification.xml b/app/src/main/res/drawable/ic_notification.xml index 9e18e108c019..571a860dee81 100644 --- a/app/src/main/res/drawable/ic_notification.xml +++ b/app/src/main/res/drawable/ic_notification.xml @@ -7,10 +7,13 @@ + android:tint="@color/notification_icon_color" + android:viewportWidth="24" + android:viewportHeight="24"> - + android:pathData="M21.25,17.25C19.6384,15.6405 18.6407,13.5179 18.43,11.25L18.27,9.5C18.0256,6.7093 15.9678,4.4152 13.22,3.87C13.665,3.2479 13.5706,2.3905 13.0009,1.8801C12.4313,1.3697 11.5687,1.3697 10.9991,1.8801C10.4294,2.3905 10.335,3.2479 10.78,3.87C8.0322,4.4152 5.9744,6.7093 5.73,9.5L5.57,11.255C5.3593,13.5229 4.3616,15.6455 2.75,17.255L2.75,17.255L2.75,19.755L8.25,19.755C8.245,19.8383 8.245,19.9217 8.25,20.005C8.25,22.0761 9.9289,23.755 12,23.755C14.0711,23.755 15.75,22.0761 15.75,20.005C15.755,19.9217 15.755,19.8383 15.75,19.755L21.25,19.755L21.25,17.25ZM14.25,20C14.25,21.2426 13.2426,22.25 12,22.25C10.7574,22.25 9.75,21.2426 9.75,20C9.7534,19.9162 9.7617,19.8328 9.775,19.75L14.225,19.75C14.2383,19.8328 14.2466,19.9162 14.25,20Z" + android:strokeWidth="1" + android:fillColor="#191919" + android:fillType="evenOdd" + android:strokeColor="#00000000"/> + \ No newline at end of file diff --git a/app/src/main/res/layout/notification_list_item.xml b/app/src/main/res/layout/notification_list_item.xml index 1419aafd5b92..cb709e668295 100644 --- a/app/src/main/res/layout/notification_list_item.xml +++ b/app/src/main/res/layout/notification_list_item.xml @@ -61,6 +61,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" + android:paddingBottom="@dimen/standard_quarter_padding" android:textColor="@color/secondary_text_color" android:textSize="@dimen/text_size_13sp" tools:text="@string/placeholder_sentence" /> @@ -69,7 +70,7 @@ android:id="@+id/buttons" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/standard_quarter_margin" + android:layout_marginTop="@dimen/alternate_half_margin" android:layout_marginEnd="@dimen/notification_list_item_grid_layout_left_start_margin" android:columnCount="3" android:gravity="start" diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index 8972d2bb6716..07930b6e3ebf 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -22,6 +22,9 @@ #ffffff #EAE0E5 + + @color/grey_30 + @color/appbar #373535 @@ -38,4 +41,68 @@ @android:color/white #101418 + + + #FFFFFF + @color/grey_30 + @color/grey_30 + #CCCCCC + @color/grey_70 + @color/grey_80 + #2D2D2D + @color/grey_70 + @color/grey_70 + + + @color/grey_80 + @color/grey_0 + + + @color/grey_80 + @color/grey_0 + + + @color/grey_60 + @color/grey_0 + @color/grey_0 + @color/grey_30 + #FFFFFF + @color/grey_30 + @color/grey_80 + #FFFFFF + + + @color/grey_80 + @color/grey_30 + @color/grey_0 + + + @color/grey_80 + @color/grey_0 + @color/grey_80 + + + @color/grey_70 + @color/grey_60 + + + @color/grey_70 + @color/grey_70 + + + #FFFFFF + @color/grey_30 + @color/grey_0 + @color/grey_0 + @color/grey_0 + @color/grey_0 + @color/grey_60 + @color/grey_0 + #FFFFFF + + + #121212 + @color/grey_0 + @color/grey_80 + @color/grey_80 diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index e0da603d4f8a..77a5b30ad9e0 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -37,6 +37,9 @@ #666666 #CC000000 + + #191919 + #e9322d @@ -78,4 +81,93 @@ #A5A5A5 #F7F9FF + + + #191919 + @color/primary + #191919 + #191919 + @color/grey_30 + @android:color/white + #FFFFFF + @color/grey_0 + #CCCCCC + #77c4ff + #B3FFFFFF + @color/grey_10 + + + #101010 + #F2F2F2 + #E5E5E5 + #B2B2B2 + #666666 + #4C4C4C + #333333 + + + @color/design_snackbar_background_color + @color/white + + + #FFFFFF + #191919 + + + @color/grey_0 + #191919 + @color/primary + #191919 + @color/primary + @color/grey_30 + @color/white + #191919 + + + #FFFFFF + #191919 + #191919 + + + #FFFFFF + #191919 + #FFFFFF + + + @color/primary + #F399C7 + #FFFFFF + @color/grey_30 + @color/grey_10 + @color/grey_0 + + + @color/primary + @color/grey_30 + @color/grey_30 + #CCCCCC + + + #191919 + @color/grey_30 + #191919 + #191919 + #191919 + #191919 + @color/grey_30 + #191919 + #000000 + #191919 + #F6E5EB + #C16F81 + #0D39DF + #0099ff + + + @color/grey_0 + #191919 + @color/grey_0 + @color/grey_30 + #77b6bb + #5077b6bb diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml new file mode 100644 index 000000000000..cc9e25255a10 --- /dev/null +++ b/app/src/main/res/values/dimens.xml @@ -0,0 +1,31 @@ + + + 4dp + 16dp + 24dp + 6dp + 18sp + 15sp + 15dp + 56dp + 86dp + 80dp + 11sp + 30dp + 55dp + 258dp + 17sp + 20dp + 160dp + 50dp + 150dp + 55dp + 48dp + 48dp + 24dp + 26dp + 20sp + 145dp + 1dp + 13sp + \ No newline at end of file