Skip to content

Commit

Permalink
MBX-3508: return layout for collapsed state
Browse files Browse the repository at this point in the history
  • Loading branch information
Sergey Sozinov committed Jul 17, 2024
1 parent 4156824 commit 567803c
Show file tree
Hide file tree
Showing 4 changed files with 106 additions and 26 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import androidx.core.content.ContextCompat
import cloud.mindbox.mobile_sdk.Mindbox
import cloud.mindbox.mobile_sdk.R
import cloud.mindbox.mobile_sdk.logger.MindboxLoggerImpl
import cloud.mindbox.mobile_sdk.logger.mindboxLogE
import cloud.mindbox.mobile_sdk.logger.mindboxLogI
import cloud.mindbox.mobile_sdk.pushes.handler.MessageHandlingState
import cloud.mindbox.mobile_sdk.pushes.handler.MindboxMessageHandler
Expand Down Expand Up @@ -637,35 +636,15 @@ internal object PushNotificationManager {
) = apply {
LoggingExceptionHandler.runCatching(
block = {
setStyle(NotificationCompat.DecoratedCustomViewStyle())
if (image != null) {
setCustomBigContentView(
RemoteViews(
context.packageName,
R.layout.mindbox_notification_custom_text_with_image
).apply {
setTextViewText(R.id.text_view_title, title)
setTextViewText(R.id.text_view_content, text)
setImageViewBitmap(R.id.image_view_picture, image)
})
val oldNotificationStyle = context.resources.getBoolean(R.bool.mindbox_old_notification_style)
if (oldNotificationStyle) {
setOldNotificationStyle(image, title, text)
} else {
setCustomBigContentView(
RemoteViews(
context.packageName,
R.layout.mindbox_notification_custom_text_without_image
).apply {
setTextViewText(R.id.text_view_title, title)
setTextViewText(R.id.text_view_content, text)
})
setNewNotificationStyle(context, image, title, text)
}
},
defaultValue = {
mindboxLogE("Error setting notification style, trying to draw using the standard method")
if (image != null) {
setImage(image, title, text)
} else {
setText(text)
}
setOldNotificationStyle(image, title, text)
}
)
}
Expand Down Expand Up @@ -724,4 +703,60 @@ internal object PushNotificationManager {
`package` = context.packageName
}

private fun NotificationCompat.Builder.setOldNotificationStyle(
image: Bitmap?,
title: String,
text: String?
) {
if (image != null) {
setImage(image, title, text)
} else {
setText(text)
}
}

private fun NotificationCompat.Builder.setNewNotificationStyle(
context: Context,
image: Bitmap?,
title: String,
text: String?
) {
setStyle(NotificationCompat.DecoratedCustomViewStyle())
setCustomContentView(createCollapsedView(context, title, text, image))
setCustomBigContentView(createExpandedView(context, title, text, image))
}

private fun createCollapsedView(
context: Context,
title: String,
text: String?,
image: Bitmap?
): RemoteViews {
return RemoteViews(context.packageName, R.layout.mindbox_notification_custom_text).apply {
setTextViewText(R.id.text_view_title, title)
setTextViewText(R.id.text_view_content, text)
setImageViewBitmap(R.id.image_view_large_icon, image)
}
}

private fun createExpandedView(
context: Context,
title: String,
text: String?,
image: Bitmap?
): RemoteViews {
val layoutId = if (image != null) {
R.layout.mindbox_notification_custom_text_with_image
} else {
R.layout.mindbox_notification_custom_text_without_image
}

return RemoteViews(context.packageName, layoutId).apply {
setTextViewText(R.id.text_view_title, title)
setTextViewText(R.id.text_view_content, text)
if (image != null) {
setImageViewBitmap(R.id.image_view_picture, image)
}
}
}
}
34 changes: 34 additions & 0 deletions sdk/src/main/res/layout/mindbox_notification_custom_text.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<TextView
android:id="@+id/text_view_title"
style="@style/MindboxNotificationCollapsedTitleStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/mindbox_notification_content_margin_end"
android:layout_toStartOf="@+id/image_view_large_icon"
android:singleLine="true" />

<TextView
android:id="@+id/text_view_content"
style="@style/MindboxTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/text_view_title"
android:layout_marginEnd="@dimen/mindbox_notification_content_margin_end"
android:layout_marginTop="@dimen/mindbox_notification_content_margin_top"
android:layout_toStartOf="@+id/image_view_large_icon"
android:singleLine="true"/>

<ImageView
android:id="@+id/image_view_large_icon"
android:layout_width="@dimen/mindbox_notification_large_icon_size"
android:layout_height="@dimen/mindbox_notification_large_icon_size"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:scaleType="centerCrop" />
</RelativeLayout>
4 changes: 4 additions & 0 deletions sdk/src/main/res/values/bools.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="mindbox_old_notification_style">true</bool>
</resources>
7 changes: 7 additions & 0 deletions sdk/src/main/res/values/styles.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@
<item name="android:fontFamily">sans-serif</item>
</style>

<style name="MindboxNotificationCollapsedTitleStyle">
<item name="android:textSize">14sp</item>
<item name="android:textColor">@color/mindbox_title_notification_color</item>
<item name="android:textStyle">normal</item>
<item name="android:fontFamily">sans-serif</item>
</style>

<style name="MindboxTextStyle">
<item name="android:textSize">14sp</item>
<item name="android:textColor">@color/mindbox_content_notification_color</item>
Expand Down

0 comments on commit 567803c

Please sign in to comment.