diff --git a/data/src/main/java/util/Preferences.kt b/data/src/main/java/util/Preferences.kt index 81f55939..1475e7a9 100644 --- a/data/src/main/java/util/Preferences.kt +++ b/data/src/main/java/util/Preferences.kt @@ -32,6 +32,11 @@ class Preferences @Inject constructor(private val rxPrefs: RxSharedPreferences) const val NIGHT_MODE_OFF = 0 const val NIGHT_MODE_ON = 1 const val NIGHT_MODE_AUTO = 2 + + const val TEXT_SIZE_SMALL = 0 + const val TEXT_SIZE_NORMAL = 1 + const val TEXT_SIZE_LARGE = 2 + const val TEXT_SIZE_LARGER = 3 } val defaultSms = rxPrefs.getBoolean("defaultSms", false) @@ -42,6 +47,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 textSize = rxPrefs.getInteger("textSize", TEXT_SIZE_NORMAL) 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) diff --git a/presentation/src/main/java/common/widget/QkEditText.kt b/presentation/src/main/java/common/widget/QkEditText.kt index ee5c1421..c62e450c 100644 --- a/presentation/src/main/java/common/widget/QkEditText.kt +++ b/presentation/src/main/java/common/widget/QkEditText.kt @@ -27,8 +27,16 @@ import com.uber.autodispose.android.scope import com.uber.autodispose.kotlin.autoDisposable import common.util.Colors import common.util.FontProvider +import common.widget.QkTextView.Companion.SIZE_PRIMARY +import common.widget.QkTextView.Companion.SIZE_SECONDARY +import common.widget.QkTextView.Companion.SIZE_TERTIARY +import common.widget.QkTextView.Companion.SIZE_TOOLBAR import injection.appComponent import io.reactivex.Observable +import io.reactivex.rxkotlin.Observables +import io.reactivex.subjects.BehaviorSubject +import io.reactivex.subjects.Subject +import util.Preferences import javax.inject.Inject /** @@ -39,38 +47,76 @@ import javax.inject.Inject */ class QkEditText @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : EditText(context, attrs) { + companion object { + const val COLOR_PRIMARY = 0 + const val COLOR_SECONDARY = 1 + const val COLOR_TERTIARY = 2 + const val COLOR_PRIMARY_ON_THEME = 3 + const val COLOR_SECONDARY_ON_THEME = 4 + const val COLOR_TERTIARY_ON_THEME = 5 + + const val SIZE_PRIMARY = 0 + const val SIZE_SECONDARY = 1 + const val SIZE_TERTIARY = 2 + const val SIZE_TOOLBAR = 3 + } + @Inject lateinit var colors: Colors @Inject lateinit var fontProvider: FontProvider + @Inject lateinit var prefs: Preferences private var textColorObservable: Observable? = null private var textColorHintObservable: Observable? = null - init { - appComponent.inject(this) - fontProvider.getLato { setTypeface(it, typeface?.style ?: Typeface.NORMAL) } + private var textSizeAttrSubject: Subject = BehaviorSubject.create() - context.obtainStyledAttributes(attrs, R.styleable.QkEditText)?.run { - textColorObservable = when (getInt(R.styleable.QkEditText_textColor, -1)) { - 0 -> colors.textPrimary - 1 -> colors.textSecondary - 2 -> colors.textTertiary - 3 -> colors.textPrimaryOnTheme - 4 -> colors.textSecondaryOnTheme - 5 -> colors.textTertiaryOnTheme - else -> null + init { + if (!isInEditMode) { + appComponent.inject(this) + fontProvider.getLato { setTypeface(it, typeface?.style ?: Typeface.NORMAL) } + + context.obtainStyledAttributes(attrs, R.styleable.QkEditText)?.run { + val colorAttr = getInt(R.styleable.QkEditText_textColor, -1) + val colorHintAttr = getInt(R.styleable.QkEditText_textColorHint, -1) + val textSizeAttr = getInt(R.styleable.QkEditText_textSize, -1) + + textColorObservable = when (colorAttr) { + COLOR_PRIMARY -> colors.textPrimary + COLOR_SECONDARY -> colors.textSecondary + COLOR_TERTIARY -> colors.textTertiary + COLOR_PRIMARY_ON_THEME -> colors.textPrimaryOnTheme + COLOR_SECONDARY_ON_THEME -> colors.textSecondaryOnTheme + COLOR_TERTIARY_ON_THEME -> colors.textTertiaryOnTheme + else -> null + } + + textColorHintObservable = when (colorHintAttr) { + COLOR_PRIMARY -> colors.textPrimary + COLOR_SECONDARY -> colors.textSecondary + COLOR_TERTIARY -> colors.textTertiary + else -> null + } + + setTextSize(textSizeAttr) + + recycle() } - textColorHintObservable = when (getInt(R.styleable.QkEditText_textColorHint, -1)) { - 0 -> colors.textPrimary - 1 -> colors.textSecondary - 2 -> colors.textTertiary - else -> null - } - recycle() } } + /** + * @see SIZE_PRIMARY + * @see SIZE_SECONDARY + * @see SIZE_TERTIARY + * @see SIZE_TOOLBAR + */ + fun setTextSize(size: Int) { + textSizeAttrSubject.onNext(size) + } + override fun onAttachedToWindow() { super.onAttachedToWindow() + if (isInEditMode) return textColorObservable ?.autoDisposable(scope()) @@ -79,6 +125,45 @@ class QkEditText @JvmOverloads constructor(context: Context, attrs: AttributeSet textColorHintObservable ?.autoDisposable(scope()) ?.subscribe { color -> setHintTextColor(color) } + + Observables + .combineLatest(prefs.textSize.asObservable(), textSizeAttrSubject, { textSizePref, textSizeAttr -> + when (textSizeAttr) { + SIZE_PRIMARY -> textSize = when (textSizePref) { + Preferences.TEXT_SIZE_SMALL -> 14f + Preferences.TEXT_SIZE_NORMAL -> 16f + Preferences.TEXT_SIZE_LARGE -> 18f + Preferences.TEXT_SIZE_LARGER -> 20f + else -> 16f + } + + SIZE_SECONDARY -> textSize = when (textSizePref) { + Preferences.TEXT_SIZE_SMALL -> 12f + Preferences.TEXT_SIZE_NORMAL -> 14f + Preferences.TEXT_SIZE_LARGE -> 16f + Preferences.TEXT_SIZE_LARGER -> 18f + else -> 14f + } + + SIZE_TERTIARY -> textSize = when (textSizePref) { + Preferences.TEXT_SIZE_SMALL -> 10f + Preferences.TEXT_SIZE_NORMAL -> 12f + Preferences.TEXT_SIZE_LARGE -> 14f + Preferences.TEXT_SIZE_LARGER -> 16f + else -> 12f + } + + SIZE_TOOLBAR -> textSize = when (textSizePref) { + Preferences.TEXT_SIZE_SMALL -> 18f + Preferences.TEXT_SIZE_NORMAL -> 20f + Preferences.TEXT_SIZE_LARGE -> 22f + Preferences.TEXT_SIZE_LARGER -> 26f + else -> 20f + } + } + }) + .autoDisposable(scope()) + .subscribe() } } \ No newline at end of file diff --git a/presentation/src/main/java/common/widget/QkTextView.kt b/presentation/src/main/java/common/widget/QkTextView.kt index 5f80b0fb..04b43e8e 100644 --- a/presentation/src/main/java/common/widget/QkTextView.kt +++ b/presentation/src/main/java/common/widget/QkTextView.kt @@ -23,12 +23,18 @@ import android.graphics.Typeface import android.support.text.emoji.widget.EmojiAppCompatTextView import android.util.AttributeSet import com.moez.QKSMS.R +import com.uber.autodispose.android.scope +import com.uber.autodispose.kotlin.autoDisposable import common.util.Colors import common.util.FontProvider import common.util.extensions.getColorCompat import injection.appComponent import io.reactivex.Observable import io.reactivex.disposables.Disposable +import io.reactivex.rxkotlin.Observables +import io.reactivex.subjects.BehaviorSubject +import io.reactivex.subjects.Subject +import util.Preferences import javax.inject.Inject open class QkTextView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) @@ -41,10 +47,16 @@ open class QkTextView @JvmOverloads constructor(context: Context, attrs: Attribu const val COLOR_PRIMARY_ON_THEME = 3 const val COLOR_SECONDARY_ON_THEME = 4 const val COLOR_TERTIARY_ON_THEME = 5 + + const val SIZE_PRIMARY = 0 + const val SIZE_SECONDARY = 1 + const val SIZE_TERTIARY = 2 + const val SIZE_TOOLBAR = 3 } @Inject lateinit var colors: Colors @Inject lateinit var fontProvider: FontProvider + @Inject lateinit var prefs: Preferences var textColorObservable: Observable? = null set(value) { @@ -58,6 +70,8 @@ open class QkTextView @JvmOverloads constructor(context: Context, attrs: Attribu field = value } + private var textSizeAttrSubject: Subject = BehaviorSubject.create() + init { if (!isInEditMode) { appComponent.inject(this) @@ -66,6 +80,8 @@ open class QkTextView @JvmOverloads constructor(context: Context, attrs: Attribu context.obtainStyledAttributes(attrs, R.styleable.QkTextView)?.run { val colorAttr = getInt(R.styleable.QkTextView_textColor, -1) + val textSizeAttr = getInt(R.styleable.QkTextView_textSize, -1) + if (isInEditMode) { setTextColor(context.getColorCompat(when (colorAttr) { COLOR_PRIMARY -> R.color.textPrimary @@ -76,6 +92,14 @@ open class QkTextView @JvmOverloads constructor(context: Context, attrs: Attribu COLOR_TERTIARY_ON_THEME -> R.color.textTertiaryDark else -> R.color.textPrimary })) + + textSize = when (textSizeAttr) { + SIZE_PRIMARY -> 16f + SIZE_SECONDARY -> 14f + SIZE_TERTIARY -> 12f + SIZE_TOOLBAR -> 20f + else -> textSize + } } else { textColorObservable = when (colorAttr) { COLOR_PRIMARY -> colors.textPrimary @@ -86,12 +110,24 @@ open class QkTextView @JvmOverloads constructor(context: Context, attrs: Attribu COLOR_TERTIARY_ON_THEME -> colors.textTertiaryOnTheme else -> null } + + setTextSize(textSizeAttr) } recycle() } } + /** + * @see SIZE_PRIMARY + * @see SIZE_SECONDARY + * @see SIZE_TERTIARY + * @see SIZE_TOOLBAR + */ + fun setTextSize(size: Int) { + textSizeAttrSubject.onNext(size) + } + private fun updateSubscription() { if (isAttachedToWindow) { textColorDisposable = textColorObservable?.subscribe { color -> @@ -103,7 +139,48 @@ open class QkTextView @JvmOverloads constructor(context: Context, attrs: Attribu override fun onAttachedToWindow() { super.onAttachedToWindow() + if (isInEditMode) return + updateSubscription() + + Observables + .combineLatest(prefs.textSize.asObservable(), textSizeAttrSubject, { textSizePref, textSizeAttr -> + when (textSizeAttr) { + SIZE_PRIMARY -> textSize = when (textSizePref) { + Preferences.TEXT_SIZE_SMALL -> 14f + Preferences.TEXT_SIZE_NORMAL -> 16f + Preferences.TEXT_SIZE_LARGE -> 18f + Preferences.TEXT_SIZE_LARGER -> 20f + else -> 16f + } + + SIZE_SECONDARY -> textSize = when (textSizePref) { + Preferences.TEXT_SIZE_SMALL -> 12f + Preferences.TEXT_SIZE_NORMAL -> 14f + Preferences.TEXT_SIZE_LARGE -> 16f + Preferences.TEXT_SIZE_LARGER -> 18f + else -> 14f + } + + SIZE_TERTIARY -> textSize = when (textSizePref) { + Preferences.TEXT_SIZE_SMALL -> 10f + Preferences.TEXT_SIZE_NORMAL -> 12f + Preferences.TEXT_SIZE_LARGE -> 14f + Preferences.TEXT_SIZE_LARGER -> 16f + else -> 12f + } + + SIZE_TOOLBAR -> textSize = when (textSizePref) { + Preferences.TEXT_SIZE_SMALL -> 18f + Preferences.TEXT_SIZE_NORMAL -> 20f + Preferences.TEXT_SIZE_LARGE -> 22f + Preferences.TEXT_SIZE_LARGER -> 26f + else -> 20f + } + } + }) + .autoDisposable(scope()) + .subscribe() } override fun onDetachedFromWindow() { diff --git a/presentation/src/main/java/feature/main/MainActivity.kt b/presentation/src/main/java/feature/main/MainActivity.kt index 77cbb1ff..9919445b 100644 --- a/presentation/src/main/java/feature/main/MainActivity.kt +++ b/presentation/src/main/java/feature/main/MainActivity.kt @@ -45,6 +45,7 @@ import common.util.extensions.dpToPx import common.util.extensions.setBackgroundTint import common.util.extensions.setTint import common.util.extensions.setVisible +import common.widget.QkEditText import feature.conversations.ConversationItemTouchCallback import feature.conversations.ConversationsAdapter import injection.appComponent @@ -178,7 +179,7 @@ class MainActivity : QkThemedActivity(), MainView { override fun render(state: MainState) { toolbarSearch.isEnabled = state.page is Inbox - toolbarSearch.textSize = if (state.page is Inbox) 16f else 20f + toolbarSearch.setTextSize(if (state.page is Inbox) QkEditText.SIZE_PRIMARY else QkEditText.SIZE_TOOLBAR) toolbar.menu.findItem(R.id.clear)?.run { isVisible = state.page is Inbox && state.page.showClearButton diff --git a/presentation/src/main/java/feature/settings/SettingsActivity.kt b/presentation/src/main/java/feature/settings/SettingsActivity.kt index 60241c9a..739ed26c 100644 --- a/presentation/src/main/java/feature/settings/SettingsActivity.kt +++ b/presentation/src/main/java/feature/settings/SettingsActivity.kt @@ -45,6 +45,7 @@ import javax.inject.Inject class SettingsActivity : QkThemedActivity(), SettingsView { @Inject lateinit var nightModeAdapter: MenuItemAdapter + @Inject lateinit var textSizeAdapter: MenuItemAdapter @Inject lateinit var mmsSizeAdapter: MenuItemAdapter override val viewModelClass = SettingsViewModel::class @@ -53,6 +54,7 @@ class SettingsActivity : QkThemedActivity(), SettingsView { override val viewQksmsPlusIntent: Subject = PublishSubject.create() override val startTimeSelectedIntent: Subject> = PublishSubject.create() override val endTimeSelectedIntent: Subject> = PublishSubject.create() + override val textSizeSelectedIntent by lazy { textSizeAdapter.menuItemClicks } override val mmsSizeSelectedIntent: Subject by lazy { mmsSizeAdapter.menuItemClicks } // TODO remove this @@ -65,6 +67,7 @@ class SettingsActivity : QkThemedActivity(), SettingsView { } private var nightModeDialog: AlertDialog? = null + private var textSizeDialog: AlertDialog? = null private var mmsSizeDialog: AlertDialog? = null override fun onCreate(savedInstanceState: Bundle?) { @@ -76,6 +79,7 @@ class SettingsActivity : QkThemedActivity(), SettingsView { viewModel.bindView(this) nightModeAdapter.setData(R.array.night_modes) + textSizeAdapter.setData(R.array.text_sizes) mmsSizeAdapter.setData(R.array.mms_sizes, R.array.mms_sizes_ids) colors.background @@ -114,6 +118,9 @@ class SettingsActivity : QkThemedActivity(), SettingsView { autoEmoji.checkbox.isChecked = state.autoEmojiEnabled delivery.checkbox.isChecked = state.deliveryEnabled qkreply.checkbox.isChecked = state.qkReplyEnabled + + textSize.summary = state.textSizeSummary + unicode.checkbox.isChecked = state.stripUnicodeEnabled mms.checkbox.isChecked = state.mmsEnabled @@ -157,6 +164,22 @@ class SettingsActivity : QkThemedActivity(), SettingsView { }, hour, minute, false).show() } + override fun showTextSizePicker() { + val recyclerView = RecyclerView(this) + recyclerView.layoutManager = LinearLayoutManager(this) + recyclerView.adapter = textSizeAdapter + recyclerView.setPadding(0, 8.dpToPx(this), 0, 8.dpToPx(this)) + textSizeDialog = AlertDialog.Builder(this) + .setTitle(R.string.settings_text_size_title) + .setView(recyclerView) + .create().apply { show() } + } + + override fun dismissTextSizePicker() { + textSizeDialog?.dismiss() + textSizeDialog = null + } + override fun showMmsSizePicker() { val recyclerView = RecyclerView(this) recyclerView.layoutManager = LinearLayoutManager(this) diff --git a/presentation/src/main/java/feature/settings/SettingsState.kt b/presentation/src/main/java/feature/settings/SettingsState.kt index 720237ab..dcb0be82 100644 --- a/presentation/src/main/java/feature/settings/SettingsState.kt +++ b/presentation/src/main/java/feature/settings/SettingsState.kt @@ -34,6 +34,7 @@ data class SettingsState( val notificationsEnabled: Boolean = true, val deliveryEnabled: Boolean = false, val qkReplyEnabled: Boolean = Build.VERSION.SDK_INT < Build.VERSION_CODES.N, + val textSizeSummary: String = "", val splitSmsEnabled: Boolean = false, val stripUnicodeEnabled: Boolean = false, val mmsEnabled: Boolean = true, diff --git a/presentation/src/main/java/feature/settings/SettingsView.kt b/presentation/src/main/java/feature/settings/SettingsView.kt index 7d429000..4287131c 100644 --- a/presentation/src/main/java/feature/settings/SettingsView.kt +++ b/presentation/src/main/java/feature/settings/SettingsView.kt @@ -18,11 +18,10 @@ */ package feature.settings -import io.reactivex.Observable -import io.reactivex.subjects.Subject import common.base.QkView import common.widget.PreferenceView -import feature.settings.SettingsState +import io.reactivex.Observable +import io.reactivex.subjects.Subject interface SettingsView : QkView { @@ -31,6 +30,7 @@ interface SettingsView : QkView { val viewQksmsPlusIntent: Subject val startTimeSelectedIntent: Subject> val endTimeSelectedIntent: Subject> + val textSizeSelectedIntent: Subject val mmsSizeSelectedIntent: Observable fun showNightModeDialog() @@ -38,6 +38,8 @@ interface SettingsView : QkView { fun showQksmsPlusSnackbar() fun showStartTimePicker(hour: Int, minute: Int) fun showEndTimePicker(hour: Int, minute: Int) + fun showTextSizePicker() + fun dismissTextSizePicker() fun showMmsSizePicker() fun dismissMmsSizePicker() } diff --git a/presentation/src/main/java/feature/settings/SettingsViewModel.kt b/presentation/src/main/java/feature/settings/SettingsViewModel.kt index 19c1e1a9..c1758a18 100644 --- a/presentation/src/main/java/feature/settings/SettingsViewModel.kt +++ b/presentation/src/main/java/feature/settings/SettingsViewModel.kt @@ -82,6 +82,10 @@ class SettingsViewModel : QkViewModel(SettingsState disposables += prefs.qkreply.asObservable() .subscribe { enabled -> newState { it.copy(qkReplyEnabled = enabled) } } + val textSizeLabels = context.resources.getStringArray(R.array.text_sizes) + disposables += prefs.textSize.asObservable() + .subscribe { textSize -> newState { it.copy(textSizeSummary = textSizeLabels[textSize]) } } + disposables += prefs.unicode.asObservable() .subscribe { enabled -> newState { it.copy(stripUnicodeEnabled = enabled) } } @@ -136,6 +140,8 @@ class SettingsViewModel : QkViewModel(SettingsState R.id.qkreply -> prefs.qkreply.set(!prefs.qkreply.get()) + R.id.textSize -> view.showTextSizePicker() + R.id.unicode -> prefs.unicode.set(!prefs.unicode.get()) R.id.mms -> prefs.mms.set(!prefs.mms.get()) @@ -179,6 +185,11 @@ class SettingsViewModel : QkViewModel(SettingsState .autoDisposable(view.scope()) .subscribe { prefs.nightEnd.set(it) } + view.textSizeSelectedIntent + .doOnNext { view.dismissTextSizePicker() } + .autoDisposable(view.scope()) + .subscribe { prefs.textSize.set(it) } + view.mmsSizeSelectedIntent .doOnNext { view.dismissMmsSizePicker() } .autoDisposable(view.scope()) diff --git a/presentation/src/main/java/interactor/MigratePreferences.kt b/presentation/src/main/java/interactor/MigratePreferences.kt index 70fabca3..85532fd3 100644 --- a/presentation/src/main/java/interactor/MigratePreferences.kt +++ b/presentation/src/main/java/interactor/MigratePreferences.kt @@ -61,8 +61,13 @@ class MigratePreferences @Inject constructor( prefs.delivery.set(rxPrefs.getBoolean("pref_key_delivery", prefs.delivery.get()).get()) } .doOnNext { + // Quickreply prefs.qkreply.set(rxPrefs.getBoolean("pref_key_quickreply_enabled", prefs.qkreply.get()).get()) } + .doOnNext { + // Font size + prefs.textSize.set(rxPrefs.getString("pref_key_font_size", "${prefs.textSize.get()}").get().toInt()) + } .doOnNext { // Unicode prefs.unicode.set(rxPrefs.getBoolean("pref_key_strip_unicode", prefs.unicode.get()).get()) diff --git a/presentation/src/main/res/layout/avatar_view.xml b/presentation/src/main/res/layout/avatar_view.xml index 961a3743..0138b58c 100644 --- a/presentation/src/main/res/layout/avatar_view.xml +++ b/presentation/src/main/res/layout/avatar_view.xml @@ -19,7 +19,6 @@ --> \ No newline at end of file + app:textColorHint="tertiary" + app:textSize="primary" /> \ No newline at end of file diff --git a/presentation/src/main/res/layout/compose_activity.xml b/presentation/src/main/res/layout/compose_activity.xml index e0c45a4f..8bd3caed 100644 --- a/presentation/src/main/res/layout/compose_activity.xml +++ b/presentation/src/main/res/layout/compose_activity.xml @@ -1,4 +1,5 @@ - diff --git a/presentation/src/main/res/layout/main_activity.xml b/presentation/src/main/res/layout/main_activity.xml index 51a06f63..6662d193 100644 --- a/presentation/src/main/res/layout/main_activity.xml +++ b/presentation/src/main/res/layout/main_activity.xml @@ -71,6 +71,7 @@ + app:layout_constraintTop_toBottomOf="@id/syncingProgress" /> \ No newline at end of file diff --git a/presentation/src/main/res/layout/message_list_item_out.xml b/presentation/src/main/res/layout/message_list_item_out.xml index 6257f9b9..78ce9e35 100644 --- a/presentation/src/main/res/layout/message_list_item_out.xml +++ b/presentation/src/main/res/layout/message_list_item_out.xml @@ -114,8 +114,8 @@ android:layout_gravity="end" android:layout_marginEnd="24dp" android:layout_marginTop="4dp" - android:textSize="12sp" app:textColor="secondary" + app:textSize="tertiary" tools:text="Sending..." /> \ No newline at end of file diff --git a/presentation/src/main/res/layout/qkreply_activity.xml b/presentation/src/main/res/layout/qkreply_activity.xml index 519beb2e..cf6f3661 100644 --- a/presentation/src/main/res/layout/qkreply_activity.xml +++ b/presentation/src/main/res/layout/qkreply_activity.xml @@ -74,11 +74,11 @@ android:layout_height="wrap_content" android:layout_marginBottom="4dp" android:gravity="center" - android:textSize="12sp" app:layout_constraintBottom_toTopOf="@id/send" app:layout_constraintEnd_toEndOf="@id/send" app:layout_constraintStart_toStartOf="@id/send" app:textColor="secondary" + app:textSize="tertiary" tools:text="108 / 2" /> + app:textColor="primary" + app:textSize="primary" /> + app:textColor="secondary" + app:textSize="secondary" /> + app:textColor="primary" + app:textSize="secondary" /> + app:textColor="secondary" + app:textSize="secondary" /> @@ -175,9 +175,9 @@ android:layout_marginRight="16dp" android:layout_marginTop="24dp" android:text="@string/qksms_plus_coming_soon" - android:textSize="16sp" android:textStyle="bold" - app:textColor="primary" /> + app:textColor="primary" + app:textSize="primary" /> + + + app:textColor="primary" + app:textSize="toolbar" /> + android:text="@string/setup_summary" /> + android:textStyle="bold" /> + app:textColor="primary" + app:textSize="secondary" /> diff --git a/presentation/src/main/res/layout/tab_view.xml b/presentation/src/main/res/layout/tab_view.xml index 45ef33df..1b3d9c6b 100644 --- a/presentation/src/main/res/layout/tab_view.xml +++ b/presentation/src/main/res/layout/tab_view.xml @@ -19,6 +19,7 @@ --> \ No newline at end of file + android:textStyle="bold" + app:textSize="secondary" /> \ No newline at end of file diff --git a/presentation/src/main/res/layout/theme_picker_hsv.xml b/presentation/src/main/res/layout/theme_picker_hsv.xml index aa4ab1a2..c96f4256 100644 --- a/presentation/src/main/res/layout/theme_picker_hsv.xml +++ b/presentation/src/main/res/layout/theme_picker_hsv.xml @@ -17,6 +17,7 @@ + app:layout_constraintTop_toBottomOf="@id/picker" /> + + + + + + + + + diff --git a/presentation/src/main/res/values/strings.xml b/presentation/src/main/res/values/strings.xml index a6d34c39..65cfa334 100644 --- a/presentation/src/main/res/values/strings.xml +++ b/presentation/src/main/res/values/strings.xml @@ -97,6 +97,7 @@ Confirm that messages were sent successfully QK Reply Popup for new messages + Font size Strip accents Remove accents from characters in outgoing SMS messages MMS enabled @@ -182,6 +183,13 @@ Automatic + + Small + Normal + Large + Larger + + 100KB 200KB diff --git a/presentation/src/main/res/values/styles.xml b/presentation/src/main/res/values/styles.xml index 44479d84..c6aadcbd 100644 --- a/presentation/src/main/res/values/styles.xml +++ b/presentation/src/main/res/values/styles.xml @@ -19,18 +19,18 @@