chore: more debug to fix a context issue.
This commit is contained in:
parent
54dbda76ab
commit
5035392aff
@ -103,7 +103,8 @@ class ReaderActivity : AppCompatActivity(), DIAware {
|
|||||||
FragmentStateAdapter(fa) {
|
FragmentStateAdapter(fa) {
|
||||||
override fun getItemCount(): Int = allItems.size
|
override fun getItemCount(): Int = allItems.size
|
||||||
|
|
||||||
override fun createFragment(position: Int): Fragment = ArticleFragment.newInstance(allItems[position])
|
override fun createFragment(position: Int): Fragment =
|
||||||
|
ArticleFragment.newInstance(allItems[position])
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onKeyDown(
|
override fun onKeyDown(
|
||||||
@ -114,15 +115,17 @@ class ReaderActivity : AppCompatActivity(), DIAware {
|
|||||||
KeyEvent.KEYCODE_VOLUME_DOWN -> {
|
KeyEvent.KEYCODE_VOLUME_DOWN -> {
|
||||||
val currentFragment =
|
val currentFragment =
|
||||||
supportFragmentManager.findFragmentByTag("f" + binding.pager.currentItem) as ArticleFragment
|
supportFragmentManager.findFragmentByTag("f" + binding.pager.currentItem) as ArticleFragment
|
||||||
currentFragment.scrollDown()
|
currentFragment.volumeButtonScrollDown()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
KeyEvent.KEYCODE_VOLUME_UP -> {
|
KeyEvent.KEYCODE_VOLUME_UP -> {
|
||||||
val currentFragment =
|
val currentFragment =
|
||||||
supportFragmentManager.findFragmentByTag("f" + binding.pager.currentItem) as ArticleFragment
|
supportFragmentManager.findFragmentByTag("f" + binding.pager.currentItem) as ArticleFragment
|
||||||
currentFragment.scrollUp()
|
currentFragment.volumeButtonScrollUp()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
super.onKeyDown(keyCode, event)
|
super.onKeyDown(keyCode, event)
|
||||||
}
|
}
|
||||||
@ -187,6 +190,7 @@ class ReaderActivity : AppCompatActivity(), DIAware {
|
|||||||
onBackPressedDispatcher.onBackPressed()
|
onBackPressedDispatcher.onBackPressed()
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.star -> {
|
R.id.star -> {
|
||||||
if (allItems[binding.pager.currentItem].starred) {
|
if (allItems[binding.pager.currentItem].starred) {
|
||||||
CoroutineScope(Dispatchers.IO).launch {
|
CoroutineScope(Dispatchers.IO).launch {
|
||||||
@ -200,10 +204,12 @@ class ReaderActivity : AppCompatActivity(), DIAware {
|
|||||||
afterSave()
|
afterSave()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.align_left -> {
|
R.id.align_left -> {
|
||||||
switchAlignmentSetting(AppSettingsService.ALIGN_LEFT)
|
switchAlignmentSetting(AppSettingsService.ALIGN_LEFT)
|
||||||
refreshFragment()
|
refreshFragment()
|
||||||
}
|
}
|
||||||
|
|
||||||
R.id.align_justify -> {
|
R.id.align_justify -> {
|
||||||
switchAlignmentSetting(AppSettingsService.JUSTIFY)
|
switchAlignmentSetting(AppSettingsService.JUSTIFY)
|
||||||
refreshFragment()
|
refreshFragment()
|
||||||
@ -223,4 +229,4 @@ class ReaderActivity : AppCompatActivity(), DIAware {
|
|||||||
startActivity(intent)
|
startActivity(intent)
|
||||||
overridePendingTransition(0, 0)
|
overridePendingTransition(0, 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package bou.amine.apps.readerforselfossv2.android.fragments
|
package bou.amine.apps.readerforselfossv2.android.fragments
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.res.ColorStateList
|
import android.content.res.ColorStateList
|
||||||
import android.content.res.TypedArray
|
import android.content.res.TypedArray
|
||||||
@ -8,6 +9,7 @@ import android.graphics.Typeface
|
|||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.util.TypedValue
|
import android.util.TypedValue
|
||||||
|
import android.util.TypedValue.DATA_NULL_UNDEFINED
|
||||||
import android.view.GestureDetector
|
import android.view.GestureDetector
|
||||||
import android.view.InflateException
|
import android.view.InflateException
|
||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
@ -399,19 +401,45 @@ class ArticleFragment : Fragment(), DIAware {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun htmlToWebview() {
|
private fun htmlToWebview() {
|
||||||
|
val context: Context
|
||||||
|
try {
|
||||||
|
context = requireContext()
|
||||||
|
} catch (e: IllegalStateException) {
|
||||||
|
e.sendSilentlyWithAcraWithName("Context required is null")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
val colorOnSurface = TypedValue()
|
||||||
|
val colorSurface = TypedValue()
|
||||||
|
|
||||||
try {
|
try {
|
||||||
val attrs: IntArray = intArrayOf(android.R.attr.fontFamily)
|
val attrs: IntArray = intArrayOf(android.R.attr.fontFamily)
|
||||||
val a: TypedArray = requireContext().obtainStyledAttributes(resId, attrs)
|
val a: TypedArray = context.obtainStyledAttributes(resId, attrs)
|
||||||
|
|
||||||
binding.webcontent.settings.standardFontFamily = a.getString(0)
|
binding.webcontent.settings.standardFontFamily = a.getString(0)
|
||||||
binding.webcontent.visibility = View.VISIBLE
|
binding.webcontent.visibility = View.VISIBLE
|
||||||
|
|
||||||
val colorOnSurface = TypedValue()
|
context.theme.resolveAttribute(R.attr.colorOnSurface, colorOnSurface, true)
|
||||||
requireContext().theme.resolveAttribute(R.attr.colorOnSurface, colorOnSurface, true)
|
|
||||||
|
|
||||||
val colorSurface = TypedValue()
|
context.theme.resolveAttribute(R.attr.colorSurface, colorSurface, true)
|
||||||
requireContext().theme.resolveAttribute(R.attr.colorSurface, colorSurface, true)
|
|
||||||
|
|
||||||
|
} catch (e: IllegalStateException) {
|
||||||
|
e.sendSilentlyWithAcraWithName("Context issue when setting attributes, but context wasn't null before")
|
||||||
|
}
|
||||||
|
|
||||||
|
val colorSurfaceString =
|
||||||
|
String.format(
|
||||||
|
"#%06X",
|
||||||
|
0xFFFFFF and (if (colorSurface.data != DATA_NULL_UNDEFINED) colorSurface.data else 0xFFFFFF),
|
||||||
|
)
|
||||||
|
|
||||||
|
val colorOnSurfaceString =
|
||||||
|
String.format(
|
||||||
|
"#%06X",
|
||||||
|
0xFFFFFF and (if (colorOnSurface.data != DATA_NULL_UNDEFINED) colorOnSurface.data else 0),
|
||||||
|
)
|
||||||
|
|
||||||
|
try {
|
||||||
binding.webcontent.settings.useWideViewPort = true
|
binding.webcontent.settings.useWideViewPort = true
|
||||||
binding.webcontent.settings.loadWithOverviewMode = true
|
binding.webcontent.settings.loadWithOverviewMode = true
|
||||||
binding.webcontent.settings.javaScriptEnabled = false
|
binding.webcontent.settings.javaScriptEnabled = false
|
||||||
@ -428,13 +456,21 @@ class ArticleFragment : Fragment(), DIAware {
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
binding.webcontent.setOnTouchListener { _, event -> gestureDetector.onTouchEvent(event) }
|
binding.webcontent.setOnTouchListener { _, event ->
|
||||||
|
gestureDetector.onTouchEvent(
|
||||||
|
event
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
binding.webcontent.settings.layoutAlgorithm =
|
binding.webcontent.settings.layoutAlgorithm =
|
||||||
WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING
|
WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING
|
||||||
|
} catch (e: IllegalStateException) {
|
||||||
|
e.sendSilentlyWithAcraWithName("Context is null but wasn't, and that's causing issues with webview config")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
var baseUrl: String? = null
|
var baseUrl: String? = null
|
||||||
|
|
||||||
try {
|
try {
|
||||||
val itemUrl = URL(url)
|
val itemUrl = URL(url)
|
||||||
baseUrl = itemUrl.protocol + "://" + itemUrl.host
|
baseUrl = itemUrl.protocol + "://" + itemUrl.host
|
||||||
@ -484,12 +520,12 @@ class ArticleFragment : Fragment(), DIAware {
|
|||||||
| color: ${
|
| color: ${
|
||||||
String.format(
|
String.format(
|
||||||
"#%06X",
|
"#%06X",
|
||||||
0xFFFFFF and resources.getColor(R.color.colorAccent),
|
0xFFFFFF and context.resources.getColor(R.color.colorAccent),
|
||||||
)
|
)
|
||||||
} !important;
|
} !important;
|
||||||
| }
|
| }
|
||||||
| *:not(a) {
|
| *:not(a) {
|
||||||
| color: ${String.format("#%06X", 0xFFFFFF and colorOnSurface.data)};
|
| color: $colorOnSurfaceString;
|
||||||
| }
|
| }
|
||||||
| * {
|
| * {
|
||||||
| font-size: ${fontSize}px;
|
| font-size: ${fontSize}px;
|
||||||
@ -497,26 +533,11 @@ class ArticleFragment : Fragment(), DIAware {
|
|||||||
| word-break: break-word;
|
| word-break: break-word;
|
||||||
| overflow:hidden;
|
| overflow:hidden;
|
||||||
| line-height: 1.5em;
|
| line-height: 1.5em;
|
||||||
| background-color: ${
|
| background-color: $colorSurfaceString;
|
||||||
String.format(
|
|
||||||
"#%06X",
|
|
||||||
0xFFFFFF and colorSurface.data,
|
|
||||||
)
|
|
||||||
};
|
|
||||||
| }
|
| }
|
||||||
| body, html {
|
| body, html {
|
||||||
| background-color: ${
|
| background-color: $colorSurfaceString !important;
|
||||||
String.format(
|
| border-color: $colorSurfaceString !important;
|
||||||
"#%06X",
|
|
||||||
0xFFFFFF and colorSurface.data,
|
|
||||||
)
|
|
||||||
} !important;
|
|
||||||
| border-color: ${
|
|
||||||
String.format(
|
|
||||||
"#%06X",
|
|
||||||
0xFFFFFF and colorSurface.data,
|
|
||||||
)
|
|
||||||
} !important;
|
|
||||||
| padding: 0 !important;
|
| padding: 0 !important;
|
||||||
| margin: 0 !important;
|
| margin: 0 !important;
|
||||||
| }
|
| }
|
||||||
@ -526,12 +547,7 @@ class ArticleFragment : Fragment(), DIAware {
|
|||||||
| pre, code {
|
| pre, code {
|
||||||
| white-space: pre-wrap;
|
| white-space: pre-wrap;
|
||||||
| width:100%;
|
| width:100%;
|
||||||
| background-color: ${
|
| background-color: $colorSurfaceString;
|
||||||
String.format(
|
|
||||||
"#%06X",
|
|
||||||
0xFFFFFF and colorSurface.data,
|
|
||||||
)
|
|
||||||
};
|
|
||||||
| }
|
| }
|
||||||
| </style>
|
| </style>
|
||||||
| $fontLinkAndStyle
|
| $fontLinkAndStyle
|
||||||
@ -545,16 +561,16 @@ class ArticleFragment : Fragment(), DIAware {
|
|||||||
null,
|
null,
|
||||||
)
|
)
|
||||||
} catch (e: IllegalStateException) {
|
} catch (e: IllegalStateException) {
|
||||||
e.sendSilentlyWithAcraWithName("Context required is null")
|
e.sendSilentlyWithAcraWithName("Context required is still null ?")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun scrollDown() {
|
fun volumeButtonScrollDown() {
|
||||||
val height = binding.nestedScrollView.measuredHeight
|
val height = binding.nestedScrollView.measuredHeight
|
||||||
binding.nestedScrollView.smoothScrollBy(0, height / 2)
|
binding.nestedScrollView.smoothScrollBy(0, height / 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun scrollUp() {
|
fun volumeButtonScrollUp() {
|
||||||
val height = binding.nestedScrollView.measuredHeight
|
val height = binding.nestedScrollView.measuredHeight
|
||||||
binding.nestedScrollView.smoothScrollBy(0, -height / 2)
|
binding.nestedScrollView.smoothScrollBy(0, -height / 2)
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,9 @@ import bou.amine.apps.readerforselfossv2.android.databinding.ActivitySettingsBin
|
|||||||
import bou.amine.apps.readerforselfossv2.android.utils.acra.sendSilentlyWithAcraWithName
|
import bou.amine.apps.readerforselfossv2.android.utils.acra.sendSilentlyWithAcraWithName
|
||||||
import bou.amine.apps.readerforselfossv2.android.utils.openUrlInBrowser
|
import bou.amine.apps.readerforselfossv2.android.utils.openUrlInBrowser
|
||||||
import bou.amine.apps.readerforselfossv2.service.AppSettingsService
|
import bou.amine.apps.readerforselfossv2.service.AppSettingsService
|
||||||
|
import bou.amine.apps.readerforselfossv2.service.AppSettingsService.Companion.API_ITEMS_NUMBER
|
||||||
|
import bou.amine.apps.readerforselfossv2.service.AppSettingsService.Companion.CURRENT_THEME
|
||||||
|
import bou.amine.apps.readerforselfossv2.service.AppSettingsService.Companion.READER_FONT_SIZE
|
||||||
import com.mikepenz.aboutlibraries.LibsBuilder
|
import com.mikepenz.aboutlibraries.LibsBuilder
|
||||||
import org.kodein.di.DIAware
|
import org.kodein.di.DIAware
|
||||||
import org.kodein.di.android.closestDI
|
import org.kodein.di.android.closestDI
|
||||||
@ -102,7 +105,7 @@ class SettingsActivity :
|
|||||||
) {
|
) {
|
||||||
setPreferencesFromResource(R.xml.pref_main, rootKey)
|
setPreferencesFromResource(R.xml.pref_main, rootKey)
|
||||||
|
|
||||||
preferenceManager.findPreference<Preference>("currentMode")?.onPreferenceChangeListener =
|
preferenceManager.findPreference<Preference>(CURRENT_THEME)?.onPreferenceChangeListener =
|
||||||
Preference.OnPreferenceChangeListener { _, newValue ->
|
Preference.OnPreferenceChangeListener { _, newValue ->
|
||||||
AppCompatDelegate.setDefaultNightMode(
|
AppCompatDelegate.setDefaultNightMode(
|
||||||
newValue.toString().toInt()
|
newValue.toString().toInt()
|
||||||
@ -131,7 +134,7 @@ class SettingsActivity :
|
|||||||
setPreferencesFromResource(R.xml.pref_general, rootKey)
|
setPreferencesFromResource(R.xml.pref_general, rootKey)
|
||||||
|
|
||||||
val editTextPreference =
|
val editTextPreference =
|
||||||
preferenceManager.findPreference<EditTextPreference>("prefer_api_items_number")
|
preferenceManager.findPreference<EditTextPreference>(API_ITEMS_NUMBER)
|
||||||
editTextPreference?.setOnBindEditTextListener { editText ->
|
editTextPreference?.setOnBindEditTextListener { editText ->
|
||||||
editText.inputType = InputType.TYPE_CLASS_NUMBER
|
editText.inputType = InputType.TYPE_CLASS_NUMBER
|
||||||
editText.filters =
|
editText.filters =
|
||||||
@ -161,7 +164,7 @@ class SettingsActivity :
|
|||||||
) {
|
) {
|
||||||
setPreferencesFromResource(R.xml.pref_viewer, rootKey)
|
setPreferencesFromResource(R.xml.pref_viewer, rootKey)
|
||||||
|
|
||||||
val fontSize = preferenceManager.findPreference<EditTextPreference>("reader_font_size")
|
val fontSize = preferenceManager.findPreference<EditTextPreference>(READER_FONT_SIZE)
|
||||||
fontSize?.setOnBindEditTextListener { editText ->
|
fontSize?.setOnBindEditTextListener { editText ->
|
||||||
editText.inputType = InputType.TYPE_CLASS_NUMBER
|
editText.inputType = InputType.TYPE_CLASS_NUMBER
|
||||||
editText.addTextChangedListener {
|
editText.addTextChangedListener {
|
||||||
@ -218,23 +221,6 @@ class SettingsActivity :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ThemePreferenceFragment : PreferenceFragmentCompat() {
|
|
||||||
override fun onCreatePreferences(
|
|
||||||
savedInstanceState: Bundle?,
|
|
||||||
rootKey: String?,
|
|
||||||
) {
|
|
||||||
setPreferencesFromResource(R.xml.pref_theme, rootKey)
|
|
||||||
|
|
||||||
preferenceManager.findPreference<Preference>("currentMode")?.onPreferenceChangeListener =
|
|
||||||
Preference.OnPreferenceChangeListener { _, newValue ->
|
|
||||||
AppCompatDelegate.setDefaultNightMode(
|
|
||||||
newValue.toString().toInt()
|
|
||||||
) // ListPreference Only takes string-arrays ¯\_(ツ)_/¯
|
|
||||||
true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class LinksPreferenceFragment : PreferenceFragmentCompat() {
|
class LinksPreferenceFragment : PreferenceFragmentCompat() {
|
||||||
private fun openUrl(url: String) {
|
private fun openUrl(url: String) {
|
||||||
context?.openUrlInBrowser(url)
|
context?.openUrlInBrowser(url)
|
||||||
|
@ -1,13 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
|
||||||
|
|
||||||
<ListPreference
|
|
||||||
android:defaultValue="0"
|
|
||||||
android:entries="@array/ModeTitles"
|
|
||||||
android:entryValues="@array/ModeValues"
|
|
||||||
android:key="currentMode"
|
|
||||||
app:iconSpaceReserved="false"
|
|
||||||
android:title="@string/pref_theme_title"
|
|
||||||
app:useSimpleSummaryProvider="false" />
|
|
||||||
</PreferenceScreen>
|
|
Loading…
x
Reference in New Issue
Block a user