diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt index 5b57f772..809190d6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt @@ -13,6 +13,10 @@ import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.extensions.config +import com.simplemobiletools.smsmessenger.extensions.getLockScreenVisibilityText +import com.simplemobiletools.smsmessenger.helpers.LOCK_SCREEN_NOTHING +import com.simplemobiletools.smsmessenger.helpers.LOCK_SCREEN_SENDER +import com.simplemobiletools.smsmessenger.helpers.LOCK_SCREEN_SENDER_MESSAGE import com.simplemobiletools.smsmessenger.helpers.refreshMessages import kotlinx.android.synthetic.main.activity_settings.* import java.util.* @@ -36,6 +40,7 @@ class SettingsActivity : SimpleActivity() { setupChangeDateTimeFormat() setupFontSize() setupShowCharacterCounter() + setupLockScreenVisibility() updateTextColors(settings_scrollview) if (blockedNumbersAtPause != -1 && blockedNumbersAtPause != getBlockedNumbers().hashCode()) { @@ -108,7 +113,8 @@ class SettingsActivity : SimpleActivity() { RadioItem(FONT_SIZE_SMALL, getString(R.string.small)), RadioItem(FONT_SIZE_MEDIUM, getString(R.string.medium)), RadioItem(FONT_SIZE_LARGE, getString(R.string.large)), - RadioItem(FONT_SIZE_EXTRA_LARGE, getString(R.string.extra_large))) + RadioItem(FONT_SIZE_EXTRA_LARGE, getString(R.string.extra_large)) + ) RadioGroupDialog(this@SettingsActivity, items, config.fontSize) { config.fontSize = it as Int @@ -124,4 +130,20 @@ class SettingsActivity : SimpleActivity() { config.showCharacterCounter = settings_show_character_counter.isChecked } } + + private fun setupLockScreenVisibility() { + settings_lock_screen_visibility.text = getLockScreenVisibilityText(config.lockScreenVisibilitySetting) + settings_lock_screen_visibility_holder.setOnClickListener { + val items = arrayListOf( + RadioItem(LOCK_SCREEN_SENDER_MESSAGE, getString(R.string.sender_and_message)), + RadioItem(LOCK_SCREEN_SENDER, getString(R.string.sender_only)), + RadioItem(LOCK_SCREEN_NOTHING, getString(R.string.nothing)), + ) + + RadioGroupDialog(this@SettingsActivity, items, config.lockScreenVisibilitySetting) { + config.lockScreenVisibilitySetting = it as Int + settings_lock_screen_visibility.text = getLockScreenVisibilityText(config.lockScreenVisibilitySetting) + } + } + } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt index 84d35a10..f32db870 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -709,24 +709,44 @@ fun Context.showMessageNotification(address: String, body: String, threadId: Lon } val largeIcon = bitmap ?: SimpleContactsHelper(this).getContactLetterIcon(sender) - val builder = NotificationCompat.Builder(this, NOTIFICATION_CHANNEL) - .setContentTitle(sender) - .setContentText(body) - .setColor(getAdjustedPrimaryColor()) - .setSmallIcon(R.drawable.ic_messenger) - .setLargeIcon(largeIcon) - .setStyle(NotificationCompat.BigTextStyle().setSummaryText(summaryText).bigText(body)) - .setContentIntent(pendingIntent) - .setPriority(NotificationCompat.PRIORITY_MAX) - .setDefaults(Notification.DEFAULT_LIGHTS) - .setCategory(Notification.CATEGORY_MESSAGE) - .setAutoCancel(true) - .setSound(soundUri, AudioManager.STREAM_NOTIFICATION) - if (replyAction != null) { + val builder = NotificationCompat.Builder(this, NOTIFICATION_CHANNEL).apply { + when (config.lockScreenVisibilitySetting) { + LOCK_SCREEN_SENDER_MESSAGE -> { + setContentTitle(sender) + setLargeIcon(largeIcon) + setContentText(body) + } + LOCK_SCREEN_SENDER -> { + setContentTitle(sender) + setLargeIcon(largeIcon) + } + } + + color = getAdjustedPrimaryColor() + setSmallIcon(R.drawable.ic_messenger) + setStyle(NotificationCompat.BigTextStyle().setSummaryText(summaryText).bigText(body)) + setContentIntent(pendingIntent) + priority = NotificationCompat.PRIORITY_MAX + setDefaults(Notification.DEFAULT_LIGHTS) + setCategory(Notification.CATEGORY_MESSAGE) + setAutoCancel(true) + setSound(soundUri, AudioManager.STREAM_NOTIFICATION) + } + + if (replyAction != null && config.lockScreenVisibilitySetting == LOCK_SCREEN_SENDER_MESSAGE) { builder.addAction(replyAction) } + builder.addAction(R.drawable.ic_check_vector, getString(R.string.mark_as_read), markAsReadPendingIntent) .setChannelId(NOTIFICATION_CHANNEL) notificationManager.notify(threadId.hashCode(), builder.build()) } + +fun Context.getLockScreenVisibilityText(type: Int) = getString( + when (type) { + LOCK_SCREEN_SENDER_MESSAGE -> R.string.sender_and_message + LOCK_SCREEN_SENDER -> R.string.sender_only + else -> R.string.nothing + } +) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt index 451fe60f..7b767cd3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt @@ -17,4 +17,8 @@ class Config(context: Context) : BaseConfig(context) { var showCharacterCounter: Boolean get() = prefs.getBoolean(SHOW_CHARACTER_COUNTER, false) set(showCharacterCounter) = prefs.edit().putBoolean(SHOW_CHARACTER_COUNTER, showCharacterCounter).apply() + + var lockScreenVisibilitySetting: Int + get() = prefs.getInt(LOCK_SCREEN_VISIBILITY, LOCK_SCREEN_SENDER_MESSAGE) + set(lockScreenVisibilitySetting) = prefs.edit().putInt(LOCK_SCREEN_VISIBILITY, lockScreenVisibilitySetting).apply() } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt index 477c8f9b..f73c12e0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt @@ -13,6 +13,7 @@ const val SEARCHED_MESSAGE_ID = "searched_message_id" const val USE_SIM_ID_PREFIX = "use_sim_id_" const val NOTIFICATION_CHANNEL = "simple_sms_messenger" const val SHOW_CHARACTER_COUNTER = "show_character_counter" +const val LOCK_SCREEN_VISIBILITY = "lock_screen_visibility" private const val PATH = "com.simplemobiletools.smsmessenger.action." const val MARK_AS_READ = PATH + "mark_as_read" @@ -26,6 +27,11 @@ const val THREAD_SENT_MESSAGE_ERROR = 4 const val THREAD_SENT_MESSAGE_SUCCESS = 5 const val THREAD_SENT_MESSAGE_SENDING = 6 +// lock screen visibility constants +const val LOCK_SCREEN_SENDER_MESSAGE = 1 +const val LOCK_SCREEN_SENDER = 2 +const val LOCK_SCREEN_NOTHING = 3 + fun refreshMessages() { EventBus.getDefault().post(Events.RefreshMessages()) } diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 25fd8250..1900f25b 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -193,5 +193,35 @@ app:switchPadding="@dimen/medium_margin" /> + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5cf58c57..6a0f4bfe 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -44,6 +44,11 @@ %d messages + + Lock screen notification visibility + Sender and message + Sender only + Why does the app require access to the internet? Sadly it is needed for sending MMS attachments. Not being able to send MMS would be a really huge disadvantage compared to other apps, so we decided to go this way.