Loading domain/src/main/java/com/moez/QKSMS/util/Preferences.kt +1 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ class Preferences @Inject constructor( val signature = rxPrefs.getString("signature", "") val unicode = rxPrefs.getBoolean("unicode", false) val mobileOnly = rxPrefs.getBoolean("mobileOnly", false) val autoDelete = rxPrefs.getInteger("autoDelete", 0) val longAsMms = rxPrefs.getBoolean("longAsMms", false) val mmsSize = rxPrefs.getInteger("mmsSize", 300) val logging = rxPrefs.getBoolean("logging", false) Loading presentation/src/main/java/com/moez/QKSMS/common/widget/FieldDialog.kt→presentation/src/main/java/com/moez/QKSMS/common/widget/TextInputDialog.kt +4 −4 Original line number Diff line number Diff line Loading @@ -22,11 +22,11 @@ import android.app.Activity import android.content.DialogInterface import androidx.appcompat.app.AlertDialog import com.moez.QKSMS.R import com.moez.QKSMS.databinding.FieldDialogBinding import com.moez.QKSMS.databinding.TextInputDialogBinding class FieldDialog(context: Activity, hint: String, listener: (String) -> Unit) : AlertDialog(context) { class TextInputDialog(context: Activity, hint: String, listener: (String) -> Unit) : AlertDialog(context) { private val binding = FieldDialogBinding.inflate(context.layoutInflater) private val binding = TextInputDialogBinding.inflate(context.layoutInflater) init { binding.field.hint = hint Loading @@ -39,7 +39,7 @@ class FieldDialog(context: Activity, hint: String, listener: (String) -> Unit) : } } fun setText(text: String): FieldDialog { fun setText(text: String): TextInputDialog { binding.field.setText(text) return this } Loading presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoController.kt +3 −3 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ import com.moez.QKSMS.common.Navigator import com.moez.QKSMS.common.QkChangeHandler import com.moez.QKSMS.common.base.QkController import com.moez.QKSMS.common.util.extensions.scrapViews import com.moez.QKSMS.common.widget.FieldDialog import com.moez.QKSMS.common.widget.TextInputDialog import com.moez.QKSMS.databinding.ConversationInfoControllerBinding import com.moez.QKSMS.feature.blocking.BlockingDialog import com.moez.QKSMS.feature.conversationinfo.injection.ConversationInfoModule Loading @@ -50,8 +50,8 @@ class ConversationInfoController( @Inject lateinit var navigator: Navigator @Inject lateinit var adapter: ConversationInfoAdapter private val nameDialog: FieldDialog by lazy { FieldDialog(activity!!, activity!!.getString(R.string.info_name), nameChangeSubject::onNext) private val nameDialog: TextInputDialog by lazy { TextInputDialog(activity!!, activity!!.getString(R.string.info_name), nameChangeSubject::onNext) } private val nameChangeSubject: Subject<String> = PublishSubject.create() Loading presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsController.kt +22 −6 Original line number Diff line number Diff line Loading @@ -39,11 +39,12 @@ import com.moez.QKSMS.common.util.Colors import com.moez.QKSMS.common.util.extensions.animateLayoutChanges import com.moez.QKSMS.common.util.extensions.setBackgroundTint import com.moez.QKSMS.common.util.extensions.setVisible import com.moez.QKSMS.common.widget.FieldDialog import com.moez.QKSMS.common.widget.TextInputDialog import com.moez.QKSMS.common.widget.PreferenceView import com.moez.QKSMS.common.widget.QkSwitch import com.moez.QKSMS.databinding.SettingsControllerBinding import com.moez.QKSMS.feature.settings.about.AboutController import com.moez.QKSMS.feature.settings.autodelete.AutoDeleteDialog import com.moez.QKSMS.feature.settings.swipe.SwipeActionsController import com.moez.QKSMS.feature.themepicker.ThemePickerController import com.moez.QKSMS.injection.appComponent Loading @@ -69,14 +70,18 @@ class SettingsController : QkController<SettingsView, SettingsState, SettingsPre @Inject override lateinit var presenter: SettingsPresenter private val signatureDialog: FieldDialog by lazy { FieldDialog(activity!!, context.getString(R.string.settings_signature_title), signatureSubject::onNext) private val signatureDialog: TextInputDialog by lazy { TextInputDialog(activity!!, context.getString(R.string.settings_signature_title), signatureSubject::onNext) } private val autoDeleteDialog: AutoDeleteDialog by lazy { AutoDeleteDialog(activity!!, autoDeleteSubject::onNext) } private val viewQksmsPlusSubject: Subject<Unit> = PublishSubject.create() private val startTimeSelectedSubject: Subject<Pair<Int, Int>> = PublishSubject.create() private val endTimeSelectedSubject: Subject<Pair<Int, Int>> = PublishSubject.create() private val signatureSubject: Subject<String> = PublishSubject.create() private val autoDeleteSubject: Subject<Int> = PublishSubject.create() private val progressAnimator by lazy { ObjectAnimator.ofInt(binding.syncingProgress, "progress", 0, 0) } Loading Loading @@ -132,7 +137,9 @@ class SettingsController : QkController<SettingsView, SettingsState, SettingsPre override fun sendDelaySelected(): Observable<Int> = sendDelayDialog.adapter.menuItemClicks override fun signatureSet(): Observable<String> = signatureSubject override fun signatureChanged(): Observable<String> = signatureSubject override fun autoDeleteChanged(): Observable<Int> = autoDeleteSubject override fun mmsSizeSelected(): Observable<Int> = mmsSizeDialog.adapter.menuItemClicks Loading Loading @@ -167,6 +174,13 @@ class SettingsController : QkController<SettingsView, SettingsState, SettingsPre binding.unicode.widget<QkSwitch>().isChecked = state.stripUnicodeEnabled binding.mobileOnly.widget<QkSwitch>().isChecked = state.mobileOnly binding.autoDelete.summary = when (state.autoDelete) { 0 -> context.getString(R.string.settings_auto_delete_never) else -> context.resources.getQuantityString( R.plurals.settings_auto_delete_summary, state.autoDelete, state.autoDelete) } binding.longAsMms.widget<QkSwitch>().isChecked = state.longAsMms binding.mmsSize.summary = state.maxMmsSizeSummary Loading Loading @@ -198,13 +212,13 @@ class SettingsController : QkController<SettingsView, SettingsState, SettingsPre override fun showNightModeDialog() = nightModeDialog.show(activity!!) override fun showStartTimePicker(hour: Int, minute: Int) { TimePickerDialog(activity, TimePickerDialog.OnTimeSetListener { _, newHour, newMinute -> TimePickerDialog(activity, { _, newHour, newMinute -> startTimeSelectedSubject.onNext(Pair(newHour, newMinute)) }, hour, minute, DateFormat.is24HourFormat(activity)).show() } override fun showEndTimePicker(hour: Int, minute: Int) { TimePickerDialog(activity, TimePickerDialog.OnTimeSetListener { _, newHour, newMinute -> TimePickerDialog(activity, { _, newHour, newMinute -> endTimeSelectedSubject.onNext(Pair(newHour, newMinute)) }, hour, minute, DateFormat.is24HourFormat(activity)).show() } Loading @@ -215,6 +229,8 @@ class SettingsController : QkController<SettingsView, SettingsState, SettingsPre override fun showSignatureDialog(signature: String) = signatureDialog.setText(signature).show() override fun showAutoDeleteDialog(days: Int) = autoDeleteDialog.setExpiry(days).show() override fun showMmsSizePicker() = mmsSizeDialog.show(activity!!) override fun showSwipeActions() { Loading presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsPresenter.kt +11 −1 Original line number Diff line number Diff line Loading @@ -114,6 +114,9 @@ class SettingsPresenter @Inject constructor( disposables += prefs.mobileOnly.asObservable() .subscribe { enabled -> newState { copy(mobileOnly = enabled) } } disposables += prefs.autoDelete.asObservable() .subscribe { autoDelete -> newState { copy(autoDelete = autoDelete) } } disposables += prefs.longAsMms.asObservable() .subscribe { enabled -> newState { copy(longAsMms = enabled) } } Loading Loading @@ -183,6 +186,8 @@ class SettingsPresenter @Inject constructor( R.id.mobileOnly -> prefs.mobileOnly.set(!prefs.mobileOnly.get()) R.id.autoDelete -> view.showAutoDeleteDialog(prefs.autoDelete.get()) R.id.longAsMms -> prefs.longAsMms.set(!prefs.longAsMms.get()) R.id.mmsSize -> view.showMmsSizePicker() Loading Loading @@ -242,11 +247,16 @@ class SettingsPresenter @Inject constructor( .autoDisposable(view.scope()) .subscribe() view.signatureSet() view.signatureChanged() .doOnNext(prefs.signature::set) .autoDisposable(view.scope()) .subscribe() view.autoDeleteChanged() .doOnNext(prefs.autoDelete::set) .autoDisposable(view.scope()) .subscribe() view.mmsSizeSelected() .autoDisposable(view.scope()) .subscribe(prefs.mmsSize::set) Loading Loading
domain/src/main/java/com/moez/QKSMS/util/Preferences.kt +1 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,7 @@ class Preferences @Inject constructor( val signature = rxPrefs.getString("signature", "") val unicode = rxPrefs.getBoolean("unicode", false) val mobileOnly = rxPrefs.getBoolean("mobileOnly", false) val autoDelete = rxPrefs.getInteger("autoDelete", 0) val longAsMms = rxPrefs.getBoolean("longAsMms", false) val mmsSize = rxPrefs.getInteger("mmsSize", 300) val logging = rxPrefs.getBoolean("logging", false) Loading
presentation/src/main/java/com/moez/QKSMS/common/widget/FieldDialog.kt→presentation/src/main/java/com/moez/QKSMS/common/widget/TextInputDialog.kt +4 −4 Original line number Diff line number Diff line Loading @@ -22,11 +22,11 @@ import android.app.Activity import android.content.DialogInterface import androidx.appcompat.app.AlertDialog import com.moez.QKSMS.R import com.moez.QKSMS.databinding.FieldDialogBinding import com.moez.QKSMS.databinding.TextInputDialogBinding class FieldDialog(context: Activity, hint: String, listener: (String) -> Unit) : AlertDialog(context) { class TextInputDialog(context: Activity, hint: String, listener: (String) -> Unit) : AlertDialog(context) { private val binding = FieldDialogBinding.inflate(context.layoutInflater) private val binding = TextInputDialogBinding.inflate(context.layoutInflater) init { binding.field.hint = hint Loading @@ -39,7 +39,7 @@ class FieldDialog(context: Activity, hint: String, listener: (String) -> Unit) : } } fun setText(text: String): FieldDialog { fun setText(text: String): TextInputDialog { binding.field.setText(text) return this } Loading
presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoController.kt +3 −3 Original line number Diff line number Diff line Loading @@ -27,7 +27,7 @@ import com.moez.QKSMS.common.Navigator import com.moez.QKSMS.common.QkChangeHandler import com.moez.QKSMS.common.base.QkController import com.moez.QKSMS.common.util.extensions.scrapViews import com.moez.QKSMS.common.widget.FieldDialog import com.moez.QKSMS.common.widget.TextInputDialog import com.moez.QKSMS.databinding.ConversationInfoControllerBinding import com.moez.QKSMS.feature.blocking.BlockingDialog import com.moez.QKSMS.feature.conversationinfo.injection.ConversationInfoModule Loading @@ -50,8 +50,8 @@ class ConversationInfoController( @Inject lateinit var navigator: Navigator @Inject lateinit var adapter: ConversationInfoAdapter private val nameDialog: FieldDialog by lazy { FieldDialog(activity!!, activity!!.getString(R.string.info_name), nameChangeSubject::onNext) private val nameDialog: TextInputDialog by lazy { TextInputDialog(activity!!, activity!!.getString(R.string.info_name), nameChangeSubject::onNext) } private val nameChangeSubject: Subject<String> = PublishSubject.create() Loading
presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsController.kt +22 −6 Original line number Diff line number Diff line Loading @@ -39,11 +39,12 @@ import com.moez.QKSMS.common.util.Colors import com.moez.QKSMS.common.util.extensions.animateLayoutChanges import com.moez.QKSMS.common.util.extensions.setBackgroundTint import com.moez.QKSMS.common.util.extensions.setVisible import com.moez.QKSMS.common.widget.FieldDialog import com.moez.QKSMS.common.widget.TextInputDialog import com.moez.QKSMS.common.widget.PreferenceView import com.moez.QKSMS.common.widget.QkSwitch import com.moez.QKSMS.databinding.SettingsControllerBinding import com.moez.QKSMS.feature.settings.about.AboutController import com.moez.QKSMS.feature.settings.autodelete.AutoDeleteDialog import com.moez.QKSMS.feature.settings.swipe.SwipeActionsController import com.moez.QKSMS.feature.themepicker.ThemePickerController import com.moez.QKSMS.injection.appComponent Loading @@ -69,14 +70,18 @@ class SettingsController : QkController<SettingsView, SettingsState, SettingsPre @Inject override lateinit var presenter: SettingsPresenter private val signatureDialog: FieldDialog by lazy { FieldDialog(activity!!, context.getString(R.string.settings_signature_title), signatureSubject::onNext) private val signatureDialog: TextInputDialog by lazy { TextInputDialog(activity!!, context.getString(R.string.settings_signature_title), signatureSubject::onNext) } private val autoDeleteDialog: AutoDeleteDialog by lazy { AutoDeleteDialog(activity!!, autoDeleteSubject::onNext) } private val viewQksmsPlusSubject: Subject<Unit> = PublishSubject.create() private val startTimeSelectedSubject: Subject<Pair<Int, Int>> = PublishSubject.create() private val endTimeSelectedSubject: Subject<Pair<Int, Int>> = PublishSubject.create() private val signatureSubject: Subject<String> = PublishSubject.create() private val autoDeleteSubject: Subject<Int> = PublishSubject.create() private val progressAnimator by lazy { ObjectAnimator.ofInt(binding.syncingProgress, "progress", 0, 0) } Loading Loading @@ -132,7 +137,9 @@ class SettingsController : QkController<SettingsView, SettingsState, SettingsPre override fun sendDelaySelected(): Observable<Int> = sendDelayDialog.adapter.menuItemClicks override fun signatureSet(): Observable<String> = signatureSubject override fun signatureChanged(): Observable<String> = signatureSubject override fun autoDeleteChanged(): Observable<Int> = autoDeleteSubject override fun mmsSizeSelected(): Observable<Int> = mmsSizeDialog.adapter.menuItemClicks Loading Loading @@ -167,6 +174,13 @@ class SettingsController : QkController<SettingsView, SettingsState, SettingsPre binding.unicode.widget<QkSwitch>().isChecked = state.stripUnicodeEnabled binding.mobileOnly.widget<QkSwitch>().isChecked = state.mobileOnly binding.autoDelete.summary = when (state.autoDelete) { 0 -> context.getString(R.string.settings_auto_delete_never) else -> context.resources.getQuantityString( R.plurals.settings_auto_delete_summary, state.autoDelete, state.autoDelete) } binding.longAsMms.widget<QkSwitch>().isChecked = state.longAsMms binding.mmsSize.summary = state.maxMmsSizeSummary Loading Loading @@ -198,13 +212,13 @@ class SettingsController : QkController<SettingsView, SettingsState, SettingsPre override fun showNightModeDialog() = nightModeDialog.show(activity!!) override fun showStartTimePicker(hour: Int, minute: Int) { TimePickerDialog(activity, TimePickerDialog.OnTimeSetListener { _, newHour, newMinute -> TimePickerDialog(activity, { _, newHour, newMinute -> startTimeSelectedSubject.onNext(Pair(newHour, newMinute)) }, hour, minute, DateFormat.is24HourFormat(activity)).show() } override fun showEndTimePicker(hour: Int, minute: Int) { TimePickerDialog(activity, TimePickerDialog.OnTimeSetListener { _, newHour, newMinute -> TimePickerDialog(activity, { _, newHour, newMinute -> endTimeSelectedSubject.onNext(Pair(newHour, newMinute)) }, hour, minute, DateFormat.is24HourFormat(activity)).show() } Loading @@ -215,6 +229,8 @@ class SettingsController : QkController<SettingsView, SettingsState, SettingsPre override fun showSignatureDialog(signature: String) = signatureDialog.setText(signature).show() override fun showAutoDeleteDialog(days: Int) = autoDeleteDialog.setExpiry(days).show() override fun showMmsSizePicker() = mmsSizeDialog.show(activity!!) override fun showSwipeActions() { Loading
presentation/src/main/java/com/moez/QKSMS/feature/settings/SettingsPresenter.kt +11 −1 Original line number Diff line number Diff line Loading @@ -114,6 +114,9 @@ class SettingsPresenter @Inject constructor( disposables += prefs.mobileOnly.asObservable() .subscribe { enabled -> newState { copy(mobileOnly = enabled) } } disposables += prefs.autoDelete.asObservable() .subscribe { autoDelete -> newState { copy(autoDelete = autoDelete) } } disposables += prefs.longAsMms.asObservable() .subscribe { enabled -> newState { copy(longAsMms = enabled) } } Loading Loading @@ -183,6 +186,8 @@ class SettingsPresenter @Inject constructor( R.id.mobileOnly -> prefs.mobileOnly.set(!prefs.mobileOnly.get()) R.id.autoDelete -> view.showAutoDeleteDialog(prefs.autoDelete.get()) R.id.longAsMms -> prefs.longAsMms.set(!prefs.longAsMms.get()) R.id.mmsSize -> view.showMmsSizePicker() Loading Loading @@ -242,11 +247,16 @@ class SettingsPresenter @Inject constructor( .autoDisposable(view.scope()) .subscribe() view.signatureSet() view.signatureChanged() .doOnNext(prefs.signature::set) .autoDisposable(view.scope()) .subscribe() view.autoDeleteChanged() .doOnNext(prefs.autoDelete::set) .autoDisposable(view.scope()) .subscribe() view.mmsSizeSelected() .autoDisposable(view.scope()) .subscribe(prefs.mmsSize::set) Loading