Compare commits
	
		
			1 Commits
		
	
	
		
			v125040991
			...
			eaa6eee531
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| eaa6eee531 | 
@@ -156,7 +156,7 @@ dependencies {
 | 
			
		||||
    implementation("com.github.bumptech.glide:okhttp3-integration:4.16.0")
 | 
			
		||||
 | 
			
		||||
    // Themes
 | 
			
		||||
    implementation("com.github.rubensousa:floatingtoolbar:1.5.1")
 | 
			
		||||
    implementation("com.leinardi.android:speed-dial:3.3.0")
 | 
			
		||||
 | 
			
		||||
    // Pager
 | 
			
		||||
    implementation("me.relex:circleindicator:2.1.6")
 | 
			
		||||
 
 | 
			
		||||
@@ -65,19 +65,6 @@ class SettingsActivityGeneralTest {
 | 
			
		||||
                ),
 | 
			
		||||
            ),
 | 
			
		||||
        )
 | 
			
		||||
        onView(withSettingsCheckboxWidget(R.string.reader_static_bar_title)).check(
 | 
			
		||||
            matches(
 | 
			
		||||
                allOf(
 | 
			
		||||
                    isDisplayed(),
 | 
			
		||||
                    not(isChecked()),
 | 
			
		||||
                ),
 | 
			
		||||
            ),
 | 
			
		||||
        )
 | 
			
		||||
        onView(withSettingsCheckboxFrame(R.string.reader_static_bar_title)).check(
 | 
			
		||||
            matches(
 | 
			
		||||
                isEnabled(),
 | 
			
		||||
            ),
 | 
			
		||||
        )
 | 
			
		||||
        onView(withText(R.string.pref_general_category_displaying)).check(matches(isDisplayed()))
 | 
			
		||||
        onView(withSettingsCheckboxWidget(R.string.pref_switch_card_view_title)).check(
 | 
			
		||||
            matches(
 | 
			
		||||
@@ -161,19 +148,6 @@ class SettingsActivityGeneralTest {
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    fun testGeneralActionsCheckboxes() {
 | 
			
		||||
        // article viewer settings
 | 
			
		||||
        onView(withSettingsCheckboxFrame(R.string.reader_static_bar_title)).check(
 | 
			
		||||
            matches(
 | 
			
		||||
                isEnabled(),
 | 
			
		||||
            ),
 | 
			
		||||
        )
 | 
			
		||||
        onView(withSettingsCheckboxWidget(R.string.pref_article_viewer_title)).perform(click())
 | 
			
		||||
        onView(withSettingsCheckboxFrame(R.string.reader_static_bar_title)).check(
 | 
			
		||||
            matches(
 | 
			
		||||
                not(isEnabled()),
 | 
			
		||||
            ),
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
        onView(withSettingsCheckboxFrame(R.string.card_height_title)).check(matches(not(isEnabled())))
 | 
			
		||||
        onView(withSettingsCheckboxWidget(R.string.pref_switch_card_view_title)).perform(click())
 | 
			
		||||
        onView(withSettingsCheckboxFrame(R.string.card_height_title)).check(matches(isEnabled()))
 | 
			
		||||
 
 | 
			
		||||
@@ -2,18 +2,14 @@ package bou.amine.apps.readerforselfossv2.android.fragments
 | 
			
		||||
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import android.content.Intent
 | 
			
		||||
import android.content.res.ColorStateList
 | 
			
		||||
import android.content.res.TypedArray
 | 
			
		||||
import android.graphics.Bitmap
 | 
			
		||||
import android.graphics.Typeface
 | 
			
		||||
import android.graphics.drawable.ColorDrawable
 | 
			
		||||
import android.os.Bundle
 | 
			
		||||
import android.util.TypedValue
 | 
			
		||||
import android.util.TypedValue.DATA_NULL_UNDEFINED
 | 
			
		||||
import android.view.GestureDetector
 | 
			
		||||
import android.view.InflateException
 | 
			
		||||
import android.view.LayoutInflater
 | 
			
		||||
import android.view.MenuItem
 | 
			
		||||
import android.view.MotionEvent
 | 
			
		||||
import android.view.View
 | 
			
		||||
import android.view.ViewGroup
 | 
			
		||||
@@ -23,7 +19,6 @@ import android.webkit.WebView
 | 
			
		||||
import android.webkit.WebViewClient
 | 
			
		||||
import android.widget.Toast
 | 
			
		||||
import androidx.appcompat.app.AlertDialog
 | 
			
		||||
import androidx.core.widget.NestedScrollView
 | 
			
		||||
import androidx.fragment.app.Fragment
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.ImageActivity
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.R
 | 
			
		||||
@@ -32,6 +27,8 @@ import bou.amine.apps.readerforselfossv2.android.model.ParecelableItem
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.model.toModel
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.model.toParcelable
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.utils.acra.sendSilentlyWithAcraWithName
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.utils.bottombar.addHomeMadeActionItem
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.utils.getColorFromAttr
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.utils.glide.bitmapFitCenter
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.utils.glide.getBitmapInputStream
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.utils.glide.getGlideImageForResource
 | 
			
		||||
@@ -48,8 +45,7 @@ import bou.amine.apps.readerforselfossv2.utils.getHtmlDecoded
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.utils.getImages
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.utils.getThumbnail
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.utils.isEmptyOrNullOrNullString
 | 
			
		||||
import com.github.rubensousa.floatingtoolbar.FloatingToolbar
 | 
			
		||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
 | 
			
		||||
import com.leinardi.android.speeddial.SpeedDialView
 | 
			
		||||
import kotlinx.coroutines.CoroutineScope
 | 
			
		||||
import kotlinx.coroutines.Dispatchers
 | 
			
		||||
import kotlinx.coroutines.launch
 | 
			
		||||
@@ -74,6 +70,8 @@ private const val DEFAULT_FONT_SIZE = 16
 | 
			
		||||
class ArticleFragment :
 | 
			
		||||
    Fragment(),
 | 
			
		||||
    DIAware {
 | 
			
		||||
    private var colorOnSurface: Int = 0
 | 
			
		||||
    private var colorSurface: Int = 0
 | 
			
		||||
    private var fontSize: Int = DEFAULT_FONT_SIZE
 | 
			
		||||
    private lateinit var item: SelfossModel.Item
 | 
			
		||||
    private lateinit var url: String
 | 
			
		||||
@@ -82,7 +80,7 @@ class ArticleFragment :
 | 
			
		||||
    private lateinit var contentImage: String
 | 
			
		||||
    private lateinit var contentTitle: String
 | 
			
		||||
    private lateinit var allImages: ArrayList<String>
 | 
			
		||||
    private lateinit var fab: FloatingActionButton
 | 
			
		||||
    private lateinit var fab: SpeedDialView
 | 
			
		||||
    private lateinit var textAlignment: String
 | 
			
		||||
    private lateinit var binding: FragmentArticleBinding
 | 
			
		||||
 | 
			
		||||
@@ -93,7 +91,6 @@ class ArticleFragment :
 | 
			
		||||
    private var typeface: Typeface? = null
 | 
			
		||||
    private var resId: Int = 0
 | 
			
		||||
    private var font = ""
 | 
			
		||||
    private var staticBar = false
 | 
			
		||||
 | 
			
		||||
    private val mercuryApi: MercuryApi by instance()
 | 
			
		||||
 | 
			
		||||
@@ -120,6 +117,9 @@ class ArticleFragment :
 | 
			
		||||
                e.sendSilentlyWithAcra()
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            colorOnSurface = requireContext().getColorFromAttr(R.attr.colorOnSurface)
 | 
			
		||||
            colorSurface = requireContext().getColorFromAttr(R.attr.colorSurface)
 | 
			
		||||
 | 
			
		||||
            contentText = item.content
 | 
			
		||||
            contentTitle = item.title.getHtmlDecoded()
 | 
			
		||||
            contentImage = item.getThumbnail(repository.baseUrl)
 | 
			
		||||
@@ -133,23 +133,11 @@ class ArticleFragment :
 | 
			
		||||
            allImages = item.getImages()
 | 
			
		||||
 | 
			
		||||
            fontSize = appSettingsService.getFontSize()
 | 
			
		||||
            staticBar = appSettingsService.isStaticBarEnabled()
 | 
			
		||||
            font = appSettingsService.getFont()
 | 
			
		||||
 | 
			
		||||
            refreshAlignment()
 | 
			
		||||
 | 
			
		||||
            fab = binding.fab
 | 
			
		||||
 | 
			
		||||
            fab.backgroundTintList = ColorStateList.valueOf(resources.getColor(R.color.colorAccent))
 | 
			
		||||
 | 
			
		||||
            fab.rippleColor = resources.getColor(R.color.colorAccentDark)
 | 
			
		||||
 | 
			
		||||
            val floatingToolbar: FloatingToolbar = handleFloatingToolbar()
 | 
			
		||||
 | 
			
		||||
            if (staticBar) {
 | 
			
		||||
                fab.hide()
 | 
			
		||||
                floatingToolbar.show()
 | 
			
		||||
            }
 | 
			
		||||
            handleFloatingToolbar()
 | 
			
		||||
 | 
			
		||||
            binding.source.text = contentSource
 | 
			
		||||
            if (typeface != null) {
 | 
			
		||||
@@ -157,21 +145,6 @@ class ArticleFragment :
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            handleContent()
 | 
			
		||||
 | 
			
		||||
            binding.nestedScrollView.setOnScrollChangeListener(
 | 
			
		||||
                NestedScrollView.OnScrollChangeListener { _, _, scrollY, _, oldScrollY ->
 | 
			
		||||
                    if (scrollY > oldScrollY) {
 | 
			
		||||
                        floatingToolbar.hide()
 | 
			
		||||
                        fab.hide()
 | 
			
		||||
                    } else {
 | 
			
		||||
                        if (staticBar) {
 | 
			
		||||
                            floatingToolbar.show()
 | 
			
		||||
                        } else {
 | 
			
		||||
                            if (floatingToolbar.isShowing) floatingToolbar.hide() else fab.show()
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                },
 | 
			
		||||
            )
 | 
			
		||||
        } catch (e: InflateException) {
 | 
			
		||||
            e.sendSilentlyWithAcraWithName("webview not available")
 | 
			
		||||
            try {
 | 
			
		||||
@@ -216,60 +189,77 @@ class ArticleFragment :
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun handleFloatingToolbar(): FloatingToolbar {
 | 
			
		||||
        val floatingToolbar: FloatingToolbar = binding.floatingToolbar
 | 
			
		||||
        if (appSettingsService.getPublicAccess()) {
 | 
			
		||||
            floatingToolbar.setMenu(R.menu.reader_toolbar_no_read)
 | 
			
		||||
        }
 | 
			
		||||
        floatingToolbar.attachFab(fab)
 | 
			
		||||
    private fun handleFloatingToolbar() {
 | 
			
		||||
        fab = binding.speedDial
 | 
			
		||||
        fab.mainFabClosedIconColor = colorOnSurface
 | 
			
		||||
        fab.mainFabOpenedIconColor = colorOnSurface
 | 
			
		||||
 | 
			
		||||
        floatingToolbar.background = ColorDrawable(resources.getColor(R.color.colorAccent))
 | 
			
		||||
        handleFloatingToolbarActionItems()
 | 
			
		||||
 | 
			
		||||
        floatingToolbar.setClickListener(
 | 
			
		||||
            object : FloatingToolbar.ItemClickListener {
 | 
			
		||||
                override fun onItemClick(item: MenuItem) {
 | 
			
		||||
                    when (item.itemId) {
 | 
			
		||||
                        R.id.share_action -> requireActivity().shareLink(url, contentTitle)
 | 
			
		||||
                        R.id.open_action -> requireActivity().openItemUrlInBrowserAsNewTask(this@ArticleFragment.item)
 | 
			
		||||
                        R.id.unread_action ->
 | 
			
		||||
                            try {
 | 
			
		||||
                                if (this@ArticleFragment.item.unread) {
 | 
			
		||||
                                    CoroutineScope(Dispatchers.IO).launch {
 | 
			
		||||
                                        repository.markAsRead(this@ArticleFragment.item)
 | 
			
		||||
                                    }
 | 
			
		||||
                                    this@ArticleFragment.item.unread = false
 | 
			
		||||
                                    Toast
 | 
			
		||||
                                        .makeText(
 | 
			
		||||
                                            requireContext(),
 | 
			
		||||
                                            R.string.marked_as_read,
 | 
			
		||||
                                            Toast.LENGTH_LONG,
 | 
			
		||||
                                        ).show()
 | 
			
		||||
                                } else {
 | 
			
		||||
                                    CoroutineScope(Dispatchers.IO).launch {
 | 
			
		||||
                                        repository.unmarkAsRead(this@ArticleFragment.item)
 | 
			
		||||
                                    }
 | 
			
		||||
                                    this@ArticleFragment.item.unread = true
 | 
			
		||||
                                    Toast
 | 
			
		||||
                                        .makeText(
 | 
			
		||||
                                            context,
 | 
			
		||||
                                            R.string.marked_as_unread,
 | 
			
		||||
                                            Toast.LENGTH_LONG,
 | 
			
		||||
                                        ).show()
 | 
			
		||||
                                }
 | 
			
		||||
                            } catch (e: IllegalStateException) {
 | 
			
		||||
                                e.sendSilentlyWithAcraWithName("Context required is null")
 | 
			
		||||
        fab.setOnActionSelectedListener { actionItem ->
 | 
			
		||||
            when (actionItem.id) {
 | 
			
		||||
                R.id.share_action -> requireActivity().shareLink(url, contentTitle)
 | 
			
		||||
                R.id.open_action -> requireActivity().openItemUrlInBrowserAsNewTask(this@ArticleFragment.item)
 | 
			
		||||
                R.id.unread_action ->
 | 
			
		||||
                    try {
 | 
			
		||||
                        if (this@ArticleFragment.item.unread) {
 | 
			
		||||
                            CoroutineScope(Dispatchers.IO).launch {
 | 
			
		||||
                                repository.markAsRead(this@ArticleFragment.item)
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                        else -> Unit
 | 
			
		||||
                            this@ArticleFragment.item.unread = false
 | 
			
		||||
                            Toast
 | 
			
		||||
                                .makeText(
 | 
			
		||||
                                    requireContext(),
 | 
			
		||||
                                    R.string.marked_as_read,
 | 
			
		||||
                                    Toast.LENGTH_LONG,
 | 
			
		||||
                                ).show()
 | 
			
		||||
                        } else {
 | 
			
		||||
                            CoroutineScope(Dispatchers.IO).launch {
 | 
			
		||||
                                repository.unmarkAsRead(this@ArticleFragment.item)
 | 
			
		||||
                            }
 | 
			
		||||
                            this@ArticleFragment.item.unread = true
 | 
			
		||||
                            Toast
 | 
			
		||||
                                .makeText(
 | 
			
		||||
                                    context,
 | 
			
		||||
                                    R.string.marked_as_unread,
 | 
			
		||||
                                    Toast.LENGTH_LONG,
 | 
			
		||||
                                ).show()
 | 
			
		||||
                        }
 | 
			
		||||
                    } catch (e: IllegalStateException) {
 | 
			
		||||
                        e.sendSilentlyWithAcraWithName("Context required is null")
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                override fun onItemLongClick(item: MenuItem?) {
 | 
			
		||||
                    // We do nothing
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
                else -> Unit
 | 
			
		||||
            }
 | 
			
		||||
            false
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun handleFloatingToolbarActionItems() {
 | 
			
		||||
        fab.addHomeMadeActionItem(
 | 
			
		||||
            R.id.share_action,
 | 
			
		||||
            resources.getDrawable(R.drawable.ic_share_white_24dp),
 | 
			
		||||
            R.string.reader_action_share,
 | 
			
		||||
            colorOnSurface,
 | 
			
		||||
            colorSurface,
 | 
			
		||||
            requireContext(),
 | 
			
		||||
        )
 | 
			
		||||
        fab.addHomeMadeActionItem(
 | 
			
		||||
            R.id.open_action,
 | 
			
		||||
            resources.getDrawable(R.drawable.ic_open_in_browser_white_24dp),
 | 
			
		||||
            R.string.reader_action_open,
 | 
			
		||||
            colorOnSurface,
 | 
			
		||||
            colorSurface,
 | 
			
		||||
            requireContext(),
 | 
			
		||||
        )
 | 
			
		||||
        fab.addHomeMadeActionItem(
 | 
			
		||||
            R.id.unread_action,
 | 
			
		||||
            resources.getDrawable(R.drawable.ic_baseline_white_eye_24dp),
 | 
			
		||||
            R.string.unmark,
 | 
			
		||||
            colorOnSurface,
 | 
			
		||||
            colorSurface,
 | 
			
		||||
            requireContext(),
 | 
			
		||||
        )
 | 
			
		||||
        return floatingToolbar
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun refreshAlignment() {
 | 
			
		||||
@@ -392,19 +382,12 @@ class ArticleFragment :
 | 
			
		||||
            return
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val colorOnSurface = TypedValue()
 | 
			
		||||
        val colorSurface = TypedValue()
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            val attrs: IntArray = intArrayOf(android.R.attr.fontFamily)
 | 
			
		||||
            val a: TypedArray = context.obtainStyledAttributes(resId, attrs)
 | 
			
		||||
 | 
			
		||||
            binding.webcontent.settings.standardFontFamily = a.getString(0)
 | 
			
		||||
            binding.webcontent.visibility = View.VISIBLE
 | 
			
		||||
 | 
			
		||||
            context.theme.resolveAttribute(R.attr.colorOnSurface, colorOnSurface, true)
 | 
			
		||||
 | 
			
		||||
            context.theme.resolveAttribute(R.attr.colorSurface, colorSurface, true)
 | 
			
		||||
        } catch (e: IllegalStateException) {
 | 
			
		||||
            e.sendSilentlyWithAcraWithName("Context issue when setting attributes, but context wasn't null before")
 | 
			
		||||
        }
 | 
			
		||||
@@ -412,13 +395,13 @@ class ArticleFragment :
 | 
			
		||||
        val colorSurfaceString =
 | 
			
		||||
            String.format(
 | 
			
		||||
                "#%06X",
 | 
			
		||||
                WHITE_COLOR_HEX and (if (colorSurface.data != DATA_NULL_UNDEFINED) colorSurface.data else WHITE_COLOR_HEX),
 | 
			
		||||
                WHITE_COLOR_HEX and (if (colorSurface != DATA_NULL_UNDEFINED) colorSurface else WHITE_COLOR_HEX),
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
        val colorOnSurfaceString =
 | 
			
		||||
            String.format(
 | 
			
		||||
                "#%06X",
 | 
			
		||||
                WHITE_COLOR_HEX and (if (colorOnSurface.data != DATA_NULL_UNDEFINED) colorOnSurface.data else 0),
 | 
			
		||||
                WHITE_COLOR_HEX and (if (colorOnSurface != DATA_NULL_UNDEFINED) colorOnSurface else 0),
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,11 @@ package bou.amine.apps.readerforselfossv2.android.utils
 | 
			
		||||
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import android.content.Intent
 | 
			
		||||
import android.util.TypedValue
 | 
			
		||||
import androidx.annotation.AttrRes
 | 
			
		||||
import androidx.annotation.ColorInt
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.R
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.utils.acra.sendSilentlyWithAcraWithName
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.utils.toStringUriWithHttp
 | 
			
		||||
 | 
			
		||||
fun Context.shareLink(
 | 
			
		||||
@@ -23,3 +27,17 @@ fun Context.shareLink(
 | 
			
		||||
            ).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK),
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ColorInt
 | 
			
		||||
fun Context.getColorFromAttr(
 | 
			
		||||
    @AttrRes attrColor: Int,
 | 
			
		||||
    resolveRefs: Boolean = true,
 | 
			
		||||
): Int {
 | 
			
		||||
    val typedValue = TypedValue()
 | 
			
		||||
    try {
 | 
			
		||||
        this.theme.resolveAttribute(attrColor, typedValue, resolveRefs)
 | 
			
		||||
    } catch (e: Throwable) {
 | 
			
		||||
        e.sendSilentlyWithAcraWithName("ColorFromAttr")
 | 
			
		||||
    }
 | 
			
		||||
    return typedValue.data
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,13 @@
 | 
			
		||||
package bou.amine.apps.readerforselfossv2.android.utils.bottombar
 | 
			
		||||
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import android.graphics.drawable.Drawable
 | 
			
		||||
import androidx.annotation.IdRes
 | 
			
		||||
import androidx.annotation.StringRes
 | 
			
		||||
import bou.amine.apps.readerforselfossv2.android.R
 | 
			
		||||
import com.ashokvarma.bottomnavigation.TextBadgeItem
 | 
			
		||||
import com.leinardi.android.speeddial.SpeedDialActionItem
 | 
			
		||||
import com.leinardi.android.speeddial.SpeedDialView
 | 
			
		||||
 | 
			
		||||
fun TextBadgeItem.removeBadge(): TextBadgeItem {
 | 
			
		||||
    this.setText("")
 | 
			
		||||
@@ -9,3 +16,25 @@ fun TextBadgeItem.removeBadge(): TextBadgeItem {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fun TextBadgeItem.maybeShow(): TextBadgeItem = if (this.isHidden) this.show() else this
 | 
			
		||||
 | 
			
		||||
@Suppress("detekt:LongParameterList")
 | 
			
		||||
fun SpeedDialView.addHomeMadeActionItem(
 | 
			
		||||
    @IdRes actionId: Int,
 | 
			
		||||
    actionIcon: Drawable,
 | 
			
		||||
    @StringRes labelId: Int,
 | 
			
		||||
    colorOnSurface: Int,
 | 
			
		||||
    colorSurface: Int,
 | 
			
		||||
    context: Context,
 | 
			
		||||
) {
 | 
			
		||||
    this.addActionItem(
 | 
			
		||||
        SpeedDialActionItem
 | 
			
		||||
            .Builder(actionId, actionIcon)
 | 
			
		||||
            .setFabBackgroundColor(context.resources.getColor(R.color.colorAccent))
 | 
			
		||||
            .setFabImageTintColor(colorOnSurface)
 | 
			
		||||
            .setLabel(context.getString(labelId))
 | 
			
		||||
            .setLabelClickable(false)
 | 
			
		||||
            .setLabelBackgroundColor(colorOnSurface)
 | 
			
		||||
            .setLabelColor(colorSurface)
 | 
			
		||||
            .create(),
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -71,35 +71,13 @@
 | 
			
		||||
 | 
			
		||||
    </androidx.core.widget.NestedScrollView>
 | 
			
		||||
 | 
			
		||||
    <FrameLayout
 | 
			
		||||
        android:layout_width="match_parent"
 | 
			
		||||
    <com.leinardi.android.speeddial.SpeedDialView
 | 
			
		||||
        android:id="@+id/speedDial"
 | 
			
		||||
        android:layout_width="wrap_content"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:layout_gravity="start|bottom|end"
 | 
			
		||||
        app:layout_constraintBottom_toBottomOf="parent"
 | 
			
		||||
        app:layout_constraintEnd_toEndOf="parent"
 | 
			
		||||
        app:layout_constraintStart_toStartOf="parent">
 | 
			
		||||
 | 
			
		||||
        <com.github.rubensousa.floatingtoolbar.FloatingToolbar
 | 
			
		||||
            android:id="@+id/floatingToolbar"
 | 
			
		||||
            android:layout_width="match_parent"
 | 
			
		||||
            android:layout_height="?attr/actionBarSize"
 | 
			
		||||
            android:layout_gravity="bottom"
 | 
			
		||||
            app:floatingMenu="@menu/reader_toolbar" />
 | 
			
		||||
 | 
			
		||||
        <com.google.android.material.floatingactionbutton.FloatingActionButton
 | 
			
		||||
            android:id="@+id/fab"
 | 
			
		||||
            android:layout_width="wrap_content"
 | 
			
		||||
            android:layout_height="wrap_content"
 | 
			
		||||
            android:layout_gravity="end|bottom"
 | 
			
		||||
            android:layout_marginEnd="16dp"
 | 
			
		||||
            android:layout_marginBottom="16dp"
 | 
			
		||||
            android:paddingTop="@dimen/activity_vertical_margin"
 | 
			
		||||
            android:paddingBottom="@dimen/activity_vertical_margin"
 | 
			
		||||
            android:src="@drawable/ic_add_white_24dp"
 | 
			
		||||
            app:backgroundTint="?attr/colorAccent"
 | 
			
		||||
            app:fabSize="mini"
 | 
			
		||||
            app:rippleColor="?attr/colorAccentDark" />
 | 
			
		||||
    </FrameLayout>
 | 
			
		||||
        android:layout_gravity="bottom|end"
 | 
			
		||||
        app:layout_behavior="@string/speeddial_scrolling_view_snackbar_behavior"
 | 
			
		||||
        app:sdMainFabClosedSrc="@drawable/ic_add_white_24dp" />
 | 
			
		||||
 | 
			
		||||
    <FrameLayout
 | 
			
		||||
        android:id="@+id/progressBar"
 | 
			
		||||
@@ -119,4 +97,5 @@
 | 
			
		||||
            android:progressTint="?attr/colorAccent" />
 | 
			
		||||
    </FrameLayout>
 | 
			
		||||
 | 
			
		||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
 | 
			
		||||
 | 
			
		||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,23 +0,0 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto">
 | 
			
		||||
 | 
			
		||||
    <item
 | 
			
		||||
        android:id="@+id/unread_action"
 | 
			
		||||
        android:icon="@drawable/ic_baseline_white_eye_24dp"
 | 
			
		||||
        android:title="@string/unmark"
 | 
			
		||||
        app:showAsAction="ifRoom" />
 | 
			
		||||
 | 
			
		||||
    <item
 | 
			
		||||
        android:id="@+id/open_action"
 | 
			
		||||
        android:icon="@drawable/ic_open_in_browser_white_24dp"
 | 
			
		||||
        android:title="@string/reader_action_open"
 | 
			
		||||
        app:showAsAction="ifRoom" />
 | 
			
		||||
 | 
			
		||||
    <item
 | 
			
		||||
        android:id="@+id/share_action"
 | 
			
		||||
        android:icon="@drawable/ic_share_white_24dp"
 | 
			
		||||
        android:title="@string/reader_action_share"
 | 
			
		||||
        app:showAsAction="ifRoom" />
 | 
			
		||||
 | 
			
		||||
</menu>
 | 
			
		||||
@@ -106,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">Align left</string>
 | 
			
		||||
    <string name="reader_text_align_justify">Justify</string>
 | 
			
		||||
    <string name="settings_reader_font">Reader font</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Static bottom bar in the article viewer</string>
 | 
			
		||||
    <string name="reader_static_bar_on">The bottom bar will always be displayed</string>
 | 
			
		||||
    <string name="reader_static_bar_off">The bottom bar can be shown through the floating button</string>
 | 
			
		||||
    <string name="remove_source">Remove source</string>
 | 
			
		||||
    <string name="pref_theme_title">Light/Dark mode</string>
 | 
			
		||||
    <string name="mode_dark">Dark mode</string>
 | 
			
		||||
@@ -132,4 +129,4 @@
 | 
			
		||||
    <string name="action_about">"Quant a"</string>
 | 
			
		||||
    <string name="marked_as_read">"Element llegit"</string>
 | 
			
		||||
    <string name="marked_as_unread">"Item unread"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -106,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">Linksbündig</string>
 | 
			
		||||
    <string name="reader_text_align_justify">Blocksatz</string>
 | 
			
		||||
    <string name="settings_reader_font">Schriftgröße im Lesemodus</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Statische untere Leiste im Lesemodus</string>
 | 
			
		||||
    <string name="reader_static_bar_on">Die untere Leiste wird dauerhaft angezeigt</string>
 | 
			
		||||
    <string name="reader_static_bar_off">Die untere Leiste kann über einen schwebenden Button angezeigt werden</string>
 | 
			
		||||
    <string name="remove_source">Quelle entfernen</string>
 | 
			
		||||
    <string name="pref_theme_title">Heller/Dunkler Modus</string>
 | 
			
		||||
    <string name="mode_dark">Dunkler Modus</string>
 | 
			
		||||
@@ -132,4 +129,4 @@
 | 
			
		||||
    <string name="action_about">"Über"</string>
 | 
			
		||||
    <string name="marked_as_read">"Artikel gelesen"</string>
 | 
			
		||||
    <string name="marked_as_unread">"Item unread"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -106,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">Alinear a la izquierda</string>
 | 
			
		||||
    <string name="reader_text_align_justify">Justificado</string>
 | 
			
		||||
    <string name="settings_reader_font">Modo lectura</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Static bottom bar in the article viewer</string>
 | 
			
		||||
    <string name="reader_static_bar_on">The bottom bar will always be displayed</string>
 | 
			
		||||
    <string name="reader_static_bar_off">The bottom bar can be shown through the floating button</string>
 | 
			
		||||
    <string name="remove_source">Remove source</string>
 | 
			
		||||
    <string name="pref_theme_title">Light/Dark mode</string>
 | 
			
		||||
    <string name="mode_dark">Dark mode</string>
 | 
			
		||||
@@ -132,4 +129,4 @@
 | 
			
		||||
    <string name="action_about">"Acerca de"</string>
 | 
			
		||||
    <string name="marked_as_read">"Artículo leído"</string>
 | 
			
		||||
    <string name="marked_as_unread">"Artículo no leído"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -106,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">Aligner à gauche</string>
 | 
			
		||||
    <string name="reader_text_align_justify">Justifier le texte</string>
 | 
			
		||||
    <string name="settings_reader_font">Police du lecteur d\'articles</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Barre statique pour le visionneur d\'articles</string>
 | 
			
		||||
    <string name="reader_static_bar_on">La barre sera affichée</string>
 | 
			
		||||
    <string name="reader_static_bar_off">La barre sera affichée grâce au bouton</string>
 | 
			
		||||
    <string name="remove_source">Supprimer la source</string>
 | 
			
		||||
    <string name="pref_theme_title">Thème Clair/Sombre</string>
 | 
			
		||||
    <string name="mode_dark">Thème sombre</string>
 | 
			
		||||
@@ -132,4 +129,4 @@
 | 
			
		||||
    <string name="action_about">"À propos"</string>
 | 
			
		||||
    <string name="marked_as_read">"Marqué comme lu"</string>
 | 
			
		||||
    <string name="marked_as_unread">"Marqué comme non lu"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -106,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">Aliñar á esquerda</string>
 | 
			
		||||
    <string name="reader_text_align_justify">Xustificado</string>
 | 
			
		||||
    <string name="settings_reader_font">Modo lector</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Barra inferior estática na vista de artigos</string>
 | 
			
		||||
    <string name="reader_static_bar_on">A barra inferior mostrarase sempre</string>
 | 
			
		||||
    <string name="reader_static_bar_off">A barra inferior pode mostrarse a través do botón flotante</string>
 | 
			
		||||
    <string name="remove_source">Eliminar fonte</string>
 | 
			
		||||
    <string name="pref_theme_title">Modo Claro/Escuro</string>
 | 
			
		||||
    <string name="mode_dark">Modo escuro</string>
 | 
			
		||||
@@ -132,4 +129,4 @@
 | 
			
		||||
    <string name="action_about">"Acerca de"</string>
 | 
			
		||||
    <string name="marked_as_read">"Elemento lido"</string>
 | 
			
		||||
    <string name="marked_as_unread">"Elemento non lido"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -106,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">Align left</string>
 | 
			
		||||
    <string name="reader_text_align_justify">Justify</string>
 | 
			
		||||
    <string name="settings_reader_font">Reader font</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Static bottom bar in the article viewer</string>
 | 
			
		||||
    <string name="reader_static_bar_on">The bottom bar will always be displayed</string>
 | 
			
		||||
    <string name="reader_static_bar_off">The bottom bar can be shown through the floating button</string>
 | 
			
		||||
    <string name="remove_source">Remove source</string>
 | 
			
		||||
    <string name="pref_theme_title">Light/Dark mode</string>
 | 
			
		||||
    <string name="mode_dark">Dark mode</string>
 | 
			
		||||
@@ -132,4 +129,4 @@
 | 
			
		||||
    <string name="action_about">"Tentang"</string>
 | 
			
		||||
    <string name="marked_as_read">"Membaca item"</string>
 | 
			
		||||
    <string name="marked_as_unread">"Item unread"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -106,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">Align left</string>
 | 
			
		||||
    <string name="reader_text_align_justify">Justify</string>
 | 
			
		||||
    <string name="settings_reader_font">Reader font</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Static bottom bar in the article viewer</string>
 | 
			
		||||
    <string name="reader_static_bar_on">The bottom bar will always be displayed</string>
 | 
			
		||||
    <string name="reader_static_bar_off">The bottom bar can be shown through the floating button</string>
 | 
			
		||||
    <string name="remove_source">Remove source</string>
 | 
			
		||||
    <string name="pref_theme_title">Light/Dark mode</string>
 | 
			
		||||
    <string name="mode_dark">Dark mode</string>
 | 
			
		||||
@@ -132,4 +129,4 @@
 | 
			
		||||
    <string name="action_about">"Informazioni"</string>
 | 
			
		||||
    <string name="marked_as_read">"Articolo letto"</string>
 | 
			
		||||
    <string name="marked_as_unread">"Item unread"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -106,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">Align left</string>
 | 
			
		||||
    <string name="reader_text_align_justify">Justify</string>
 | 
			
		||||
    <string name="settings_reader_font">Reader font</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Static bottom bar in the article viewer</string>
 | 
			
		||||
    <string name="reader_static_bar_on">The bottom bar will always be displayed</string>
 | 
			
		||||
    <string name="reader_static_bar_off">The bottom bar can be shown through the floating button</string>
 | 
			
		||||
    <string name="remove_source">Remove source</string>
 | 
			
		||||
    <string name="pref_theme_title">Light/Dark mode</string>
 | 
			
		||||
    <string name="mode_dark">Dark mode</string>
 | 
			
		||||
@@ -132,4 +129,4 @@
 | 
			
		||||
    <string name="action_about">"정보"</string>
 | 
			
		||||
    <string name="marked_as_read">"항목 읽기"</string>
 | 
			
		||||
    <string name="marked_as_unread">"Item unread"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,7 @@
 | 
			
		||||
    <string name="wrong_infos">"Controleer de gegevens nogmaals."</string>
 | 
			
		||||
    <string name="all_posts_not_read">"Fout bij markeren als gelezen"</string>
 | 
			
		||||
    <string name="all_posts_read">"Alle artikelen gemarkeerd als gelezen"</string>
 | 
			
		||||
    <string name="undo_string">"Ongedaan maken"</string>
 | 
			
		||||
    <string name="addStringNoUrl">"Login om bronnen toe te voegen"</string>
 | 
			
		||||
    <string name="cant_get_sources">"Kan de lijst met bronnen niet ophalen"</string>
 | 
			
		||||
    <string name="cant_create_source">"Kan bron niet creëeren"</string>
 | 
			
		||||
@@ -105,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">Align left</string>
 | 
			
		||||
    <string name="reader_text_align_justify">Justify</string>
 | 
			
		||||
    <string name="settings_reader_font">Reader font</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Static bottom bar in the article viewer</string>
 | 
			
		||||
    <string name="reader_static_bar_on">The bottom bar will always be displayed</string>
 | 
			
		||||
    <string name="reader_static_bar_off">The bottom bar can be shown through the floating button</string>
 | 
			
		||||
    <string name="remove_source">Remove source</string>
 | 
			
		||||
    <string name="pref_theme_title">Light/Dark mode</string>
 | 
			
		||||
    <string name="mode_dark">Dark mode</string>
 | 
			
		||||
@@ -131,5 +129,4 @@
 | 
			
		||||
    <string name="action_about">"Over"</string>
 | 
			
		||||
    <string name="marked_as_read">"Artikel gelezen"</string>
 | 
			
		||||
    <string name="marked_as_unread">"Item unread"</string>
 | 
			
		||||
    <string name="undo_string">"Ongedaan maken"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -106,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">Align left</string>
 | 
			
		||||
    <string name="reader_text_align_justify">Justify</string>
 | 
			
		||||
    <string name="settings_reader_font">Reader font</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Static bottom bar in the article viewer</string>
 | 
			
		||||
    <string name="reader_static_bar_on">The bottom bar will always be displayed</string>
 | 
			
		||||
    <string name="reader_static_bar_off">The bottom bar can be shown through the floating button</string>
 | 
			
		||||
    <string name="remove_source">Remove source</string>
 | 
			
		||||
    <string name="pref_theme_title">Light/Dark mode</string>
 | 
			
		||||
    <string name="mode_dark">Dark mode</string>
 | 
			
		||||
@@ -132,4 +129,4 @@
 | 
			
		||||
    <string name="action_about">"Sobre"</string>
 | 
			
		||||
    <string name="marked_as_read">"Item lido"</string>
 | 
			
		||||
    <string name="marked_as_unread">"Item unread"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -106,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">Align left</string>
 | 
			
		||||
    <string name="reader_text_align_justify">Justify</string>
 | 
			
		||||
    <string name="settings_reader_font">Reader font</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Static bottom bar in the article viewer</string>
 | 
			
		||||
    <string name="reader_static_bar_on">The bottom bar will always be displayed</string>
 | 
			
		||||
    <string name="reader_static_bar_off">The bottom bar can be shown through the floating button</string>
 | 
			
		||||
    <string name="remove_source">Remove source</string>
 | 
			
		||||
    <string name="pref_theme_title">Light/Dark mode</string>
 | 
			
		||||
    <string name="mode_dark">Dark mode</string>
 | 
			
		||||
@@ -132,4 +129,4 @@
 | 
			
		||||
    <string name="action_about">"Sobre"</string>
 | 
			
		||||
    <string name="marked_as_read">"Item lido"</string>
 | 
			
		||||
    <string name="marked_as_unread">"Item unread"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -106,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">Align left</string>
 | 
			
		||||
    <string name="reader_text_align_justify">Justify</string>
 | 
			
		||||
    <string name="settings_reader_font">Reader font</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Static bottom bar in the article viewer</string>
 | 
			
		||||
    <string name="reader_static_bar_on">The bottom bar will always be displayed</string>
 | 
			
		||||
    <string name="reader_static_bar_off">The bottom bar can be shown through the floating button</string>
 | 
			
		||||
    <string name="remove_source">Remove source</string>
 | 
			
		||||
    <string name="pref_theme_title">Light/Dark mode</string>
 | 
			
		||||
    <string name="mode_dark">Dark mode</string>
 | 
			
		||||
@@ -132,4 +129,4 @@
 | 
			
		||||
    <string name="action_about">"මේ ගැන"</string>
 | 
			
		||||
    <string name="marked_as_read">"Item read"</string>
 | 
			
		||||
    <string name="marked_as_unread">"Item unread"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -106,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">Align left</string>
 | 
			
		||||
    <string name="reader_text_align_justify">Justify</string>
 | 
			
		||||
    <string name="settings_reader_font">Reader font</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Static bottom bar in the article viewer</string>
 | 
			
		||||
    <string name="reader_static_bar_on">The bottom bar will always be displayed</string>
 | 
			
		||||
    <string name="reader_static_bar_off">The bottom bar can be shown through the floating button</string>
 | 
			
		||||
    <string name="remove_source">Remove source</string>
 | 
			
		||||
    <string name="pref_theme_title">Light/Dark mode</string>
 | 
			
		||||
    <string name="mode_dark">Dark mode</string>
 | 
			
		||||
@@ -132,4 +129,4 @@
 | 
			
		||||
    <string name="action_about">"Hakkında"</string>
 | 
			
		||||
    <string name="marked_as_read">"Öğeleri oku"</string>
 | 
			
		||||
    <string name="marked_as_unread">"Item unread"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -106,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">左对齐</string>
 | 
			
		||||
    <string name="reader_text_align_justify">左右对齐</string>
 | 
			
		||||
    <string name="settings_reader_font">阅读器字体</string>
 | 
			
		||||
    <string name="reader_static_bar_title">文章查看器中的静态底部栏</string>
 | 
			
		||||
    <string name="reader_static_bar_on">底部栏将始终显示</string>
 | 
			
		||||
    <string name="reader_static_bar_off">底部栏可以通过浮动按钮显示</string>
 | 
			
		||||
    <string name="remove_source">删除源</string>
 | 
			
		||||
    <string name="pref_theme_title">浅色/深色模式</string>
 | 
			
		||||
    <string name="mode_dark">深色模式</string>
 | 
			
		||||
@@ -132,4 +129,4 @@
 | 
			
		||||
    <string name="action_about">"关于我们"</string>
 | 
			
		||||
    <string name="marked_as_read">"已读"</string>
 | 
			
		||||
    <string name="marked_as_unread">"未读条目"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -106,9 +106,6 @@
 | 
			
		||||
    <string name="reader_text_align_left">Align left</string>
 | 
			
		||||
    <string name="reader_text_align_justify">Justify</string>
 | 
			
		||||
    <string name="settings_reader_font">Reader font</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Static bottom bar in the article viewer</string>
 | 
			
		||||
    <string name="reader_static_bar_on">The bottom bar will always be displayed</string>
 | 
			
		||||
    <string name="reader_static_bar_off">The bottom bar can be shown through the floating button</string>
 | 
			
		||||
    <string name="remove_source">Remove source</string>
 | 
			
		||||
    <string name="pref_theme_title">Light/Dark mode</string>
 | 
			
		||||
    <string name="mode_dark">Dark mode</string>
 | 
			
		||||
@@ -132,4 +129,4 @@
 | 
			
		||||
    <string name="action_about">"关于我们"</string>
 | 
			
		||||
    <string name="marked_as_read">"已读"</string>
 | 
			
		||||
    <string name="marked_as_unread">"未讀項目"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								androidApp/src/main/res/values/ids.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								androidApp/src/main/res/values/ids.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<resources>
 | 
			
		||||
    <item name="unread_action" type="id" />
 | 
			
		||||
    <item name="open_action" type="id" />
 | 
			
		||||
    <item name="share_action" type="id" />
 | 
			
		||||
</resources>
 | 
			
		||||
@@ -108,9 +108,6 @@
 | 
			
		||||
    <string name="source_code_pro_font_id" translatable="false">source_code_pro_medium</string>
 | 
			
		||||
    <string name="open_sans_font_id" translatable="false">open_sans</string>
 | 
			
		||||
    <string name="roboto_font_id" translatable="false">roboto</string>
 | 
			
		||||
    <string name="reader_static_bar_title">Static bottom bar in the article viewer</string>
 | 
			
		||||
    <string name="reader_static_bar_on">The bottom bar will always be displayed</string>
 | 
			
		||||
    <string name="reader_static_bar_off">The bottom bar can be shown through the floating button</string>
 | 
			
		||||
    <string name="remove_source">Remove source</string>
 | 
			
		||||
    <string name="pref_theme_title">Light/Dark mode</string>
 | 
			
		||||
    <string name="mode_dark">Dark mode</string>
 | 
			
		||||
@@ -134,4 +131,4 @@
 | 
			
		||||
    <string name="action_about">"About"</string>
 | 
			
		||||
    <string name="marked_as_read">"Item read"</string>
 | 
			
		||||
    <string name="marked_as_unread">"Item unread"</string>
 | 
			
		||||
</resources>
 | 
			
		||||
</resources>
 | 
			
		||||
 
 | 
			
		||||
@@ -30,14 +30,6 @@
 | 
			
		||||
        android:summaryOn="@string/pref_article_viewer_on"
 | 
			
		||||
        android:title="@string/pref_article_viewer_title"
 | 
			
		||||
        app:iconSpaceReserved="false"/>
 | 
			
		||||
    <SwitchPreference
 | 
			
		||||
        android:defaultValue="false"
 | 
			
		||||
        android:dependency="prefer_article_viewer"
 | 
			
		||||
        android:key="reader_static_bar"
 | 
			
		||||
        android:summaryOff="@string/reader_static_bar_off"
 | 
			
		||||
        android:summaryOn="@string/reader_static_bar_on"
 | 
			
		||||
        android:title="@string/reader_static_bar_title"
 | 
			
		||||
        app:iconSpaceReserved="false"/>
 | 
			
		||||
 | 
			
		||||
    <PreferenceCategory
 | 
			
		||||
        android:title="@string/pref_general_category_displaying">
 | 
			
		||||
 
 | 
			
		||||
@@ -18,7 +18,7 @@ kotlin.code.style=official
 | 
			
		||||
#Android
 | 
			
		||||
android.useAndroidX=true
 | 
			
		||||
#android.nonTransitiveRClass=true
 | 
			
		||||
android.enableJetifier=true
 | 
			
		||||
android.enableJetifier=false
 | 
			
		||||
android.nonTransitiveRClass=false
 | 
			
		||||
#MPP
 | 
			
		||||
kotlin.mpp.enableCInteropCommonization=true
 | 
			
		||||
 
 | 
			
		||||
@@ -53,7 +53,6 @@ class AppSettingsService(
 | 
			
		||||
    private var activeAlignment: Int? = null
 | 
			
		||||
 | 
			
		||||
    private var fontSize: Int? = null
 | 
			
		||||
    private var staticBar: Boolean? = null
 | 
			
		||||
    private var font: String = ""
 | 
			
		||||
    private var theme: Int? = null
 | 
			
		||||
 | 
			
		||||
@@ -386,17 +385,6 @@ class AppSettingsService(
 | 
			
		||||
        return fontSize ?: DEFAULT_FONT_SIZE
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun refreshStaticBarEnabled() {
 | 
			
		||||
        staticBar = settings.getBoolean(READER_STATIC_BAR, false)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun isStaticBarEnabled(): Boolean {
 | 
			
		||||
        if (staticBar != null) {
 | 
			
		||||
            refreshStaticBarEnabled()
 | 
			
		||||
        }
 | 
			
		||||
        return staticBar == true
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun refreshFont() {
 | 
			
		||||
        font = settings.getString(READER_FONT, "")
 | 
			
		||||
    }
 | 
			
		||||
@@ -449,7 +437,6 @@ class AppSettingsService(
 | 
			
		||||
        refreshActiveAllignment()
 | 
			
		||||
        refreshFontSize()
 | 
			
		||||
        refreshFont()
 | 
			
		||||
        refreshStaticBarEnabled()
 | 
			
		||||
        refreshCurrentTheme()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -547,8 +534,6 @@ class AppSettingsService(
 | 
			
		||||
 | 
			
		||||
        const val READER_FONT = "reader_font"
 | 
			
		||||
 | 
			
		||||
        const val READER_STATIC_BAR = "reader_static_bar"
 | 
			
		||||
 | 
			
		||||
        const val READER_FONT_SIZE = "reader_font_size"
 | 
			
		||||
 | 
			
		||||
        const val TEXT_ALIGN = "text_align"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user