diff --git a/app/src/main/java/com/denizd/textbasic/db/QuoteStorage.kt b/app/src/main/java/com/denizd/textbasic/db/QuoteStorage.kt index ae7bc09..72a0b20 100644 --- a/app/src/main/java/com/denizd/textbasic/db/QuoteStorage.kt +++ b/app/src/main/java/com/denizd/textbasic/db/QuoteStorage.kt @@ -103,6 +103,9 @@ class QuoteStorage private constructor(context: Context) { prefs.edit().putInt(KEY_BACKGROUND_TYPE, newValue).apply() } fun getTypefaceIndex(): Int = prefs.getInt(KEY_TYPEFACE, 0) + fun setTypefaceIndex(newValue: Int) { + prefs.edit().putInt(KEY_TYPEFACE, newValue).apply() + } fun getTypeface(): Typeface = Typeface.create( when (getTypefaceIndex()) { 1 -> Typeface.SERIF diff --git a/app/src/main/java/com/denizd/textbasic/fragment/SettingsNewFragment.kt b/app/src/main/java/com/denizd/textbasic/fragment/SettingsNewFragment.kt index 9597a95..cd01835 100644 --- a/app/src/main/java/com/denizd/textbasic/fragment/SettingsNewFragment.kt +++ b/app/src/main/java/com/denizd/textbasic/fragment/SettingsNewFragment.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.util.TypedValue import android.view.View import android.widget.ImageButton +import android.widget.PopupMenu import android.widget.TextView import androidx.annotation.ColorInt import com.denizd.textbasic.BuildConfig @@ -28,7 +29,59 @@ class SettingsNewFragment : BaseFragment(R.layout.fragment_settings_new) { storage = QuoteStorage.getInstance(context) // --- text font --- // +// binding.autoCompleteFont.setOnClickListener { +// // Create menu for selecting a new canteen +// PopupMenu(binding.root.context, binding.textLayoutFont).apply { +// setOnMenuItemClickListener { item -> +// item?.itemId?.let { id -> +// storage.setTypefaceStyle(id) +// } +// +// // Update the preview +// updatePreview() +// true +// } +// menu.add(0, 0, 0, getString(R.string.sansserif)) +// menu.add(1, 1, 1, getString(R.string.serif)) +// menu.add(2, 2, 2, getString(R.string.monospace)) +// show() +// } +// } +// val fontAdapter = ArrayAdapter( +// context, +// R.layout.item_dropdown_menu, +// resources.getStringArray(R.array.text_fonts), +// ) +// +// binding.autoCompleteFont.setAdapter(fontAdapter) + + binding.autoCompleteFont + .setText(context.resources.getStringArray(R.array.text_fonts)[storage.getTypefaceIndex()]) + + binding.autoCompleteFont.setOnClickListener { + PopupMenu(binding.root.context, binding.autoCompleteFont).apply { + setOnMenuItemClickListener { item -> + item?.itemId?.let { id -> + val index = when (id) { + R.id.serif -> 1 + R.id.monospace -> 2 + else -> 0 // sans-serif + } + storage.setTypefaceIndex(index) + + binding.autoCompleteFont + .setText(context.resources.getStringArray(R.array.text_fonts)[index]) + } + + // Refresh the canteen menu for the newly selected canteen + updatePreview() + true + } + inflate(R.menu.list_fonts) + show() + } + } // --- font style --- // binding.toggleGroupFont.apply { diff --git a/app/src/main/res/layout/item_dropdown_menu.xml b/app/src/main/res/layout/item_dropdown_menu.xml new file mode 100644 index 0000000..2cfc62a --- /dev/null +++ b/app/src/main/res/layout/item_dropdown_menu.xml @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/app/src/main/res/menu/list_fonts.xml b/app/src/main/res/menu/list_fonts.xml new file mode 100644 index 0000000..4f1996c --- /dev/null +++ b/app/src/main/res/menu/list_fonts.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7dc1474..7765789 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -79,6 +79,12 @@ Serif Monospace + + Sans-Serif + Serif + Monospace + + Background Outline Shadow