forked from upstream-mirrors/quik
Add preference for qkreply
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
package util
|
||||
|
||||
import android.os.Build
|
||||
import android.provider.Settings
|
||||
import com.f2prateek.rx.preferences2.Preference
|
||||
import com.f2prateek.rx.preferences2.RxSharedPreferences
|
||||
@@ -41,6 +42,7 @@ class Preferences @Inject constructor(private val rxPrefs: RxSharedPreferences)
|
||||
val black = rxPrefs.getBoolean("black", false)
|
||||
val autoEmoji = rxPrefs.getBoolean("autoEmoji", true)
|
||||
val delivery = rxPrefs.getBoolean("delivery", false)
|
||||
val qkreply = rxPrefs.getBoolean("qkreply", Build.VERSION.SDK_INT < Build.VERSION_CODES.N)
|
||||
val unicode = rxPrefs.getBoolean("unicode", false)
|
||||
val mms = rxPrefs.getBoolean("mms", true)
|
||||
val mmsSize = rxPrefs.getInteger("mmsSize", 100)
|
||||
|
||||
@@ -48,7 +48,7 @@ class NotificationManagerImpl @Inject constructor(
|
||||
private val prefs: Preferences,
|
||||
private val colors: Colors,
|
||||
private val messageRepo: MessageRepository
|
||||
): manager.NotificationManager {
|
||||
) : manager.NotificationManager {
|
||||
|
||||
companion object {
|
||||
const val DEFAULT_CHANNEL_ID = "notifications_default"
|
||||
@@ -92,15 +92,19 @@ class NotificationManagerImpl @Inject constructor(
|
||||
|
||||
val conversation = messageRepo.getConversation(threadId) ?: return
|
||||
|
||||
// If QK Reply is enabled, use the default importance so that we don't have a notification
|
||||
// card in addition to the popup. Otherwise, use max importance
|
||||
val importance = when (prefs.qkreply.get()) {
|
||||
true -> NotificationManagerCompat.IMPORTANCE_DEFAULT
|
||||
false -> NotificationManagerCompat.IMPORTANCE_MAX
|
||||
}
|
||||
|
||||
val style = NotificationCompat.MessagingStyle("Me")
|
||||
messages.forEach { message ->
|
||||
val name = if (message.isMe()) null else conversation.getTitle()
|
||||
style.addMessage(message.getSummary(), message.date, name)
|
||||
}
|
||||
|
||||
val intent = Intent(context, QkReplyActivity::class.java).putExtra("threadId", threadId).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
context.startActivity(intent)
|
||||
|
||||
val contentIntent = Intent(context, ComposeActivity::class.java).putExtra("threadId", threadId)
|
||||
val taskStackBuilder = TaskStackBuilder.create(context)
|
||||
taskStackBuilder.addParentStack(ComposeActivity::class.java)
|
||||
@@ -116,7 +120,7 @@ class NotificationManagerImpl @Inject constructor(
|
||||
|
||||
val notification = NotificationCompat.Builder(context, getChannelIdForNotification(threadId))
|
||||
.setColor(colors.themeForConversation(threadId).blockingFirst())
|
||||
.setPriority(NotificationManagerCompat.IMPORTANCE_MAX)
|
||||
.setPriority(importance)
|
||||
.setSmallIcon(R.drawable.ic_notification)
|
||||
.setNumber(messages.size)
|
||||
.setAutoCancel(true)
|
||||
@@ -132,6 +136,14 @@ class NotificationManagerImpl @Inject constructor(
|
||||
notification.addAction(getReplyAction(conversation.recipients[0]?.address.orEmpty(), threadId))
|
||||
}
|
||||
|
||||
if (prefs.qkreply.get()) {
|
||||
val intent = Intent(context, QkReplyActivity::class.java)
|
||||
.putExtra("threadId", threadId)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
|
||||
context.startActivity(intent)
|
||||
}
|
||||
|
||||
notificationManager.notify(threadId.toInt(), notification.build())
|
||||
}
|
||||
|
||||
|
||||
@@ -29,17 +29,17 @@ import com.jakewharton.rxbinding2.view.clicks
|
||||
import com.moez.QKSMS.R
|
||||
import com.uber.autodispose.android.lifecycle.scope
|
||||
import com.uber.autodispose.kotlin.autoDisposable
|
||||
import injection.appComponent
|
||||
import util.Preferences
|
||||
import common.MenuItemAdapter
|
||||
import common.base.QkThemedActivity
|
||||
import common.util.extensions.dpToPx
|
||||
import common.util.extensions.setVisible
|
||||
import common.widget.PreferenceView
|
||||
import injection.appComponent
|
||||
import io.reactivex.subjects.PublishSubject
|
||||
import io.reactivex.subjects.Subject
|
||||
import kotlinx.android.synthetic.main.settings_activity.*
|
||||
import kotlinx.android.synthetic.main.settings_switch_widget.view.*
|
||||
import common.MenuItemAdapter
|
||||
import common.base.QkThemedActivity
|
||||
import common.widget.PreferenceView
|
||||
import util.Preferences
|
||||
import javax.inject.Inject
|
||||
|
||||
class SettingsActivity : QkThemedActivity<SettingsViewModel>(), SettingsView {
|
||||
@@ -113,6 +113,7 @@ class SettingsActivity : QkThemedActivity<SettingsViewModel>(), SettingsView {
|
||||
|
||||
autoEmoji.checkbox.isChecked = state.autoEmojiEnabled
|
||||
delivery.checkbox.isChecked = state.deliveryEnabled
|
||||
qkreply.checkbox.isChecked = state.qkReplyEnabled
|
||||
unicode.checkbox.isChecked = state.stripUnicodeEnabled
|
||||
mms.checkbox.isChecked = state.mmsEnabled
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
*/
|
||||
package feature.settings
|
||||
|
||||
import android.os.Build
|
||||
import util.Preferences
|
||||
|
||||
data class SettingsState(
|
||||
@@ -32,6 +33,7 @@ data class SettingsState(
|
||||
val autoEmojiEnabled: Boolean = true,
|
||||
val notificationsEnabled: Boolean = true,
|
||||
val deliveryEnabled: Boolean = false,
|
||||
val qkReplyEnabled: Boolean = Build.VERSION.SDK_INT < Build.VERSION_CODES.N,
|
||||
val splitSmsEnabled: Boolean = false,
|
||||
val stripUnicodeEnabled: Boolean = false,
|
||||
val mmsEnabled: Boolean = true,
|
||||
|
||||
@@ -22,17 +22,17 @@ import android.content.Context
|
||||
import com.moez.QKSMS.R
|
||||
import com.uber.autodispose.android.lifecycle.scope
|
||||
import com.uber.autodispose.kotlin.autoDisposable
|
||||
import injection.appComponent
|
||||
import common.Navigator
|
||||
import common.base.QkViewModel
|
||||
import common.util.BillingManager
|
||||
import common.util.DateFormatter
|
||||
import common.util.NightModeManager
|
||||
import util.Preferences
|
||||
import injection.appComponent
|
||||
import interactor.FullSync
|
||||
import io.reactivex.rxkotlin.plusAssign
|
||||
import io.reactivex.rxkotlin.withLatestFrom
|
||||
import common.Navigator
|
||||
import common.base.QkViewModel
|
||||
import timber.log.Timber
|
||||
import util.Preferences
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
||||
@@ -79,6 +79,9 @@ class SettingsViewModel : QkViewModel<SettingsView, SettingsState>(SettingsState
|
||||
disposables += prefs.delivery.asObservable()
|
||||
.subscribe { enabled -> newState { it.copy(deliveryEnabled = enabled) } }
|
||||
|
||||
disposables += prefs.qkreply.asObservable()
|
||||
.subscribe { enabled -> newState { it.copy(qkReplyEnabled = enabled) } }
|
||||
|
||||
disposables += prefs.unicode.asObservable()
|
||||
.subscribe { enabled -> newState { it.copy(stripUnicodeEnabled = enabled) } }
|
||||
|
||||
@@ -131,6 +134,8 @@ class SettingsViewModel : QkViewModel<SettingsView, SettingsState>(SettingsState
|
||||
|
||||
R.id.delivery -> prefs.delivery.set(!prefs.delivery.get())
|
||||
|
||||
R.id.qkreply -> prefs.qkreply.set(!prefs.qkreply.get())
|
||||
|
||||
R.id.unicode -> prefs.unicode.set(!prefs.unicode.get())
|
||||
|
||||
R.id.mms -> prefs.mms.set(!prefs.mms.get())
|
||||
|
||||
@@ -148,6 +148,14 @@
|
||||
app:title="@string/settings_delivery_title"
|
||||
app:widget="@layout/settings_switch_widget" />
|
||||
|
||||
<common.widget.PreferenceView
|
||||
android:id="@+id/qkreply"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:summary="@string/settings_qkreply_summary"
|
||||
app:title="@string/settings_qkreply_title"
|
||||
app:widget="@layout/settings_switch_widget" />
|
||||
|
||||
<common.widget.PreferenceView
|
||||
android:id="@+id/unicode"
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -95,6 +95,8 @@
|
||||
<string name="settings_blocking_title">Blocked</string>
|
||||
<string name="settings_delivery_title">Delivery confirmations</string>
|
||||
<string name="settings_delivery_summary">Confirm that messages were sent successfully</string>
|
||||
<string name="settings_qkreply_title">QK Reply</string>
|
||||
<string name="settings_qkreply_summary">Popup for new messages</string>
|
||||
<string name="settings_unicode_title">Strip accents</string>
|
||||
<string name="settings_unicode_summary">Remove accents from characters in outgoing SMS messages</string>
|
||||
<string name="settings_mms_title">MMS enabled</string>
|
||||
|
||||
Reference in New Issue
Block a user