diff --git a/domain/src/main/java/com/moez/QKSMS/util/Preferences.kt b/domain/src/main/java/com/moez/QKSMS/util/Preferences.kt index d7711f3be..dde3a4b44 100644 --- a/domain/src/main/java/com/moez/QKSMS/util/Preferences.kt +++ b/domain/src/main/java/com/moez/QKSMS/util/Preferences.kt @@ -111,6 +111,7 @@ class Preferences @Inject constructor( val swipeLeft = rxPrefs.getInteger("swipeLeft", SWIPE_ACTION_ARCHIVE) val autoEmoji = rxPrefs.getBoolean("autoEmoji", true) val delivery = rxPrefs.getBoolean("delivery", false) + val messageSound = rxPrefs.getBoolean("messageSound", false) val signature = rxPrefs.getString("signature", "") val unicode = rxPrefs.getBoolean("unicode", false) val mobileOnly = rxPrefs.getBoolean("mobileOnly", false) diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeViewModel.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeViewModel.kt index ba601f2f7..0a05597e8 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeViewModel.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeViewModel.kt @@ -19,10 +19,13 @@ package com.moez.QKSMS.feature.compose import android.content.Context +import android.media.AudioManager +import android.media.MediaPlayer import android.net.Uri import android.os.Vibrator import android.provider.ContactsContract import android.telephony.SmsMessage +import android.util.Log import androidx.core.content.getSystemService import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator @@ -112,6 +115,7 @@ class ComposeViewModel @Inject constructor( private val searchSelection: Subject = BehaviorSubject.createDefault(-1) private var shouldShowContacts = threadId == 0L && addresses.isEmpty() + var audioPlayer: MediaPlayer? = null init { val initialConversation = threadId.takeIf { it != 0L } @@ -653,6 +657,13 @@ class ComposeViewModel @Inject constructor( } val sendAsGroup = !state.editingMode || state.sendAsGroup + //check if outgoing message sound is enabled then play sent sound every time user send messages + if (prefs.messageSound.get()) { + audioPlayer = MediaPlayer.create(context, R.raw.sentsound) + audioPlayer?.setAudioStreamType(AudioManager.STREAM_MUSIC) + audioPlayer?.isLooping = false + audioPlayer?.start() + } when { // Scheduling a message state.scheduled != 0L -> { diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsController.kt b/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsController.kt index f09adc3e9..b1025d692 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsController.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsController.kt @@ -169,6 +169,8 @@ class SettingsController : QkController newState { copy(deliveryEnabled = enabled) } } + disposables += prefs.messageSound.asObservable() + .subscribe { enabled -> newState { copy(messageSoundEnabled = enabled) } } + disposables += prefs.signature.asObservable() .subscribe { signature -> newState { copy(signature = signature) } } @@ -178,6 +181,8 @@ class SettingsPresenter @Inject constructor( R.id.delivery -> prefs.delivery.set(!prefs.delivery.get()) + R.id.outgoing_message_sound -> prefs.messageSound.set(!prefs.messageSound.get()) + R.id.signature -> view.showSignatureDialog(prefs.signature.get()) R.id.textSize -> view.showTextSizePicker() diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsState.kt b/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsState.kt index 35cf2252a..f2968bc4c 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsState.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsState.kt @@ -34,6 +34,7 @@ data class SettingsState( val sendDelaySummary: String = "", val sendDelayId: Int = 0, val deliveryEnabled: Boolean = false, + val messageSoundEnabled: Boolean = false, val signature: String = "", val textSizeSummary: String = "", val textSizeId: Int = Preferences.TEXT_SIZE_NORMAL, diff --git a/presentation/src/main/res/drawable/ic_outgoing_sound.xml b/presentation/src/main/res/drawable/ic_outgoing_sound.xml new file mode 100644 index 000000000..4bd8b201c --- /dev/null +++ b/presentation/src/main/res/drawable/ic_outgoing_sound.xml @@ -0,0 +1,5 @@ + + + diff --git a/presentation/src/main/res/layout/settings_controller.xml b/presentation/src/main/res/layout/settings_controller.xml index 4fe6e9b3d..3e687f201 100644 --- a/presentation/src/main/res/layout/settings_controller.xml +++ b/presentation/src/main/res/layout/settings_controller.xml @@ -143,6 +143,14 @@ app:summary="@string/settings_swipe_actions_summary" app:title="@string/settings_swipe_actions" /> + + Mark unread Delivery confirmations + Hear outgoing message sounds Confirm that messages were sent successfully Signature Add a signature to the end of your messages