From 5f59dee84a4616bc108ae79fdd9ae14bca6d7c0a 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 +- .../notification/WorkerNotificationManager.kt | 3 +- .../nextcloud/client/media/PlayerService.kt | 3 +- .../AppNotificationManagerImpl.kt | 3 +- .../android/syncadapter/FileSyncAdapter.java | 3 +- .../ui/activity/NotificationsActivity.kt | 24 ++++- .../ui/adapter/NotificationListAdapter.java | 22 ++++- app/src/main/res/drawable/ic_notification.xml | 13 ++- .../res/layout/notification_list_item.xml | 3 +- .../main/res/layout/notifications_layout.xml | 2 + .../main/res/layout/toolbar_back_button.xml | 24 ++++- app/src/main/res/values-night/colors.xml | 68 ++++++++++++++ app/src/main/res/values/colors.xml | 93 +++++++++++++++++++ app/src/main/res/values/dimens.xml | 31 +++++++ 17 files changed, 278 insertions(+), 31 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 f7c7694ba662..06881b41d4b8 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/MediaFoldersDetectionWork.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/MediaFoldersDetectionWork.kt @@ -221,7 +221,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 f95e110ff491..1e2114968ccd 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/NotificationWork.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/NotificationWork.kt @@ -166,7 +166,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()) { @@ -222,9 +223,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() ) diff --git a/app/src/main/java/com/nextcloud/client/jobs/notification/WorkerNotificationManager.kt b/app/src/main/java/com/nextcloud/client/jobs/notification/WorkerNotificationManager.kt index 573e1d1d02ac..e6a65e38c1d0 100644 --- a/app/src/main/java/com/nextcloud/client/jobs/notification/WorkerNotificationManager.kt +++ b/app/src/main/java/com/nextcloud/client/jobs/notification/WorkerNotificationManager.kt @@ -39,7 +39,8 @@ open class WorkerNotificationManager( setVibrate(null) setOnlyAlertOnce(true) setSilent(true) - viewThemeUtils.androidx.themeNotificationCompatBuilder(context, this) + // NMC Customization + setColor(context.resources.getColor(R.color.primary, null)) } fun showNotification() { 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 e7c67a7a6ccc..5d903a8bd29b 100644 --- a/app/src/main/java/com/nextcloud/client/media/PlayerService.kt +++ b/app/src/main/java/com/nextcloud/client/media/PlayerService.kt @@ -109,7 +109,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 2aed1d21e740..996f92ab3398 100644 --- a/app/src/main/java/com/nextcloud/client/notifications/AppNotificationManagerImpl.kt +++ b/app/src/main/java/com/nextcloud/client/notifications/AppNotificationManagerImpl.kt @@ -39,7 +39,8 @@ class AppNotificationManagerImpl @Inject constructor( private fun builder(channelId: String): NotificationCompat.Builder { val builder = NotificationCompat.Builder(context, channelId) - 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 5a8b609465d4..d1e35fbe1003 100644 --- a/app/src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java +++ b/app/src/main/java/com/owncloud/android/syncadapter/FileSyncAdapter.java @@ -510,7 +510,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 dc24fb140963..a003c834e679 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 @@ -18,6 +18,9 @@ import android.view.View import android.view.WindowInsetsController import androidx.annotation.VisibleForTesting import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.Toolbar +import androidx.core.graphics.BlendModeColorFilterCompat +import androidx.core.graphics.BlendModeCompat import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.snackbar.Snackbar import com.nextcloud.android.common.ui.util.extensions.applyEdgeToEdgeWithSystemBarPadding @@ -105,11 +108,19 @@ class NotificationsActivity : } private fun setupActionBar() { - setSupportActionBar(findViewById(R.id.toolbar_back_button)) + // NMC Customization + val toolbar = findViewById(R.id.toolbar_back_button) + setSupportActionBar(toolbar) + // custom color for overflow icon required for NMC + toolbar.getOverflowIcon()?.colorFilter = + BlendModeColorFilterCompat.createBlendModeColorFilterCompat( + getResources().getColor(R.color.fontAppbar, null), + BlendModeCompat.SRC_ATOP + ) + viewThemeUtils.platform.themeStatusBar(this) supportActionBar?.apply { - setTitle(R.string.drawer_item_notifications) setDisplayHomeAsUpEnabled(true) - setHomeAsUpIndicator(R.drawable.ic_arrow_back_foreground) + viewThemeUtils.files.themeActionBar(this@NotificationsActivity, this,R.string.drawer_item_notifications) } } @@ -212,14 +223,17 @@ class NotificationsActivity : 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 67ca8c616846..821678e0831a 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 @@ -213,7 +213,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); @@ -225,8 +229,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); @@ -268,12 +276,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/res/drawable/ic_notification.xml b/app/src/main/res/drawable/ic_notification.xml index 7243af32a3e3..f4b9ebe8859e 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"/> 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/layout/notifications_layout.xml b/app/src/main/res/layout/notifications_layout.xml index 686a3bff8392..da3916c56904 100644 --- a/app/src/main/res/layout/notifications_layout.xml +++ b/app/src/main/res/layout/notifications_layout.xml @@ -15,9 +15,11 @@ + diff --git a/app/src/main/res/layout/toolbar_back_button.xml b/app/src/main/res/layout/toolbar_back_button.xml index aa89fae12bc7..9fd6b16a1796 100644 --- a/app/src/main/res/layout/toolbar_back_button.xml +++ b/app/src/main/res/layout/toolbar_back_button.xml @@ -5,10 +5,26 @@ ~ SPDX-FileCopyrightText: 2024 Alper Ozturk ~ SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only --> - + + android:layout_height="wrap_content" + android:orientation="vertical"> + + + + + diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index db1e1d218038..6fad48e480b9 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -23,6 +23,9 @@ #ffffff #EAE0E5 + + @color/grey_30 + @color/appbar #373535 @@ -39,4 +42,69 @@ @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 + #7d94f9 + + + #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 36d7459ecdaf..f893a338b5f9 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -36,6 +36,9 @@ #666666 #CC000000 + + #191919 + #e9322d @@ -89,4 +92,94 @@ #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 + #2238df + + + @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