This commit is contained in:
Koitharu
2022-03-26 09:07:15 +02:00
parent 85b8bc5d07
commit b0f221e5a7
13 changed files with 51 additions and 20 deletions

View File

@@ -56,7 +56,7 @@ android {
} }
lint { lint {
abortOnError false abortOnError false
disable 'MissingTranslation' disable 'MissingTranslation', 'PrivateResource'
} }
testOptions { testOptions {
unitTests.includeAndroidResources = true unitTests.includeAndroidResources = true
@@ -65,7 +65,7 @@ android {
} }
dependencies { dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
implementation 'com.github.nv95:kotatsu-parsers:e15dbf2a4b' implementation 'com.github.nv95:kotatsu-parsers:1ba2bba12e'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.0'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0'

View File

@@ -4,9 +4,10 @@ import android.content.Context
import android.graphics.Canvas import android.graphics.Canvas
import android.graphics.Paint import android.graphics.Paint
import android.graphics.Rect import android.graphics.Rect
import androidx.core.content.ContextCompat
import androidx.core.view.children import androidx.core.view.children
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import org.koitharu.kotatsu.utils.ext.getThemeColor import org.koitharu.kotatsu.R
class ChaptersSelectionDecoration(context: Context) : RecyclerView.ItemDecoration() { class ChaptersSelectionDecoration(context: Context) : RecyclerView.ItemDecoration() {
@@ -15,7 +16,7 @@ class ChaptersSelectionDecoration(context: Context) : RecyclerView.ItemDecoratio
private val paint = Paint(Paint.ANTI_ALIAS_FLAG) private val paint = Paint(Paint.ANTI_ALIAS_FLAG)
init { init {
paint.color = context.getThemeColor(com.google.android.material.R.attr.scrimBackground) paint.color = ContextCompat.getColor(context, R.color.selector_foreground)
paint.style = Paint.Style.FILL paint.style = Paint.Style.FILL
} }

View File

@@ -8,6 +8,7 @@ import android.view.MenuItem
import android.view.View import android.view.View
import android.view.ViewGroup.MarginLayoutParams import android.view.ViewGroup.MarginLayoutParams
import androidx.appcompat.app.ActionBarDrawerToggle import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.core.content.ContextCompat
import androidx.core.graphics.Insets import androidx.core.graphics.Insets
import androidx.core.view.GravityCompat import androidx.core.view.GravityCompat
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
@@ -62,7 +63,8 @@ import com.google.android.material.R as materialR
private const val TAG_PRIMARY = "primary" private const val TAG_PRIMARY = "primary"
private const val TAG_SEARCH = "search" private const val TAG_SEARCH = "search"
class MainActivity : BaseActivity<ActivityMainBinding>(), class MainActivity :
BaseActivity<ActivityMainBinding>(),
NavigationView.OnNavigationItemSelectedListener, NavigationView.OnNavigationItemSelectedListener,
AppBarOwner, AppBarOwner,
View.OnClickListener, View.OnClickListener,
@@ -92,6 +94,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>(),
R.string.open_menu, R.string.open_menu,
R.string.close_menu R.string.close_menu
).apply { ).apply {
setHomeAsUpIndicator(
ContextCompat.getDrawable(this@MainActivity, materialR.drawable.abc_ic_ab_back_material)
)
setToolbarNavigationClickListener { setToolbarNavigationClickListener {
binding.searchView.hideKeyboard() binding.searchView.hideKeyboard()
onBackPressed() onBackPressed()
@@ -304,11 +309,13 @@ class MainActivity : BaseActivity<ActivityMainBinding>(),
private fun onLoadingStateChanged(isLoading: Boolean) { private fun onLoadingStateChanged(isLoading: Boolean) {
binding.fab.isEnabled = !isLoading binding.fab.isEnabled = !isLoading
if (isLoading) { if (isLoading) {
binding.fab.setImageDrawable(CircularProgressDrawable(this).also { binding.fab.setImageDrawable(
it.setColorSchemeColors(R.color.kotatsu_onPrimaryContainer) CircularProgressDrawable(this).also {
it.strokeWidth = resources.resolveDp(3.5f) it.setColorSchemeColors(R.color.kotatsu_onPrimaryContainer)
it.start() it.strokeWidth = resources.resolveDp(3.5f)
}) it.start()
}
)
} else { } else {
binding.fab.setImageResource(R.drawable.ic_read_fill) binding.fab.setImageResource(R.drawable.ic_read_fill)
} }

View File

@@ -8,14 +8,19 @@ import androidx.core.graphics.Insets
import androidx.core.view.updateLayoutParams import androidx.core.view.updateLayoutParams
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.fragment.app.commit import androidx.fragment.app.commit
import com.google.android.material.appbar.AppBarLayout
import org.koitharu.kotatsu.BuildConfig import org.koitharu.kotatsu.BuildConfig
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.BaseActivity import org.koitharu.kotatsu.base.ui.BaseActivity
import org.koitharu.kotatsu.databinding.ActivitySettingsSimpleBinding import org.koitharu.kotatsu.databinding.ActivitySettingsSimpleBinding
import org.koitharu.kotatsu.main.ui.AppBarOwner
import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.settings.* import org.koitharu.kotatsu.settings.*
class SimpleSettingsActivity : BaseActivity<ActivitySettingsSimpleBinding>() { class SimpleSettingsActivity : BaseActivity<ActivitySettingsSimpleBinding>(), AppBarOwner {
override val appBar: AppBarLayout
get() = binding.appbar
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)

View File

@@ -15,7 +15,8 @@ import org.koitharu.kotatsu.main.ui.AppBarOwner
import org.koitharu.kotatsu.search.ui.suggestion.adapter.SearchSuggestionAdapter import org.koitharu.kotatsu.search.ui.suggestion.adapter.SearchSuggestionAdapter
import org.koitharu.kotatsu.utils.ext.measureHeight import org.koitharu.kotatsu.utils.ext.measureHeight
class SearchSuggestionFragment : BaseFragment<FragmentSearchSuggestionBinding>(), class SearchSuggestionFragment :
BaseFragment<FragmentSearchSuggestionBinding>(),
SearchSuggestionItemCallback.SuggestionItemListener { SearchSuggestionItemCallback.SuggestionItemListener {
private val viewModel by sharedViewModel<SearchSuggestionViewModel>() private val viewModel by sharedViewModel<SearchSuggestionViewModel>()
@@ -44,8 +45,8 @@ class SearchSuggestionFragment : BaseFragment<FragmentSearchSuggestionBinding>()
val headerHeight = (activity as? AppBarOwner)?.appBar?.measureHeight() ?: insets.top val headerHeight = (activity as? AppBarOwner)?.appBar?.measureHeight() ?: insets.top
binding.root.updatePadding( binding.root.updatePadding(
top = headerHeight, top = headerHeight,
left = insets.left, // left = insets.left,
right = insets.right, // right = insets.right,
bottom = insets.bottom, bottom = insets.bottom,
) )
} }

View File

@@ -11,6 +11,7 @@ import androidx.appcompat.widget.AppCompatEditText
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import com.google.android.material.R import com.google.android.material.R
import org.koitharu.kotatsu.search.ui.suggestion.SearchSuggestionListener import org.koitharu.kotatsu.search.ui.suggestion.SearchSuggestionListener
import org.koitharu.kotatsu.utils.ext.drawableStart
private const val DRAWABLE_END = 2 private const val DRAWABLE_END = 2
@@ -57,7 +58,7 @@ class SearchEditText @JvmOverloads constructor(
) { ) {
super.onTextChanged(text, start, lengthBefore, lengthAfter) super.onTextChanged(text, start, lengthBefore, lengthAfter)
setCompoundDrawablesRelativeWithIntrinsicBounds( setCompoundDrawablesRelativeWithIntrinsicBounds(
null, drawableStart,
null, null,
if (text.isNullOrEmpty()) null else clearIcon, if (text.isNullOrEmpty()) null else clearIcon,
null, null,
@@ -86,4 +87,4 @@ class SearchEditText @JvmOverloads constructor(
super.clearFocus() super.clearFocus()
text?.clear() text?.clear()
} }
} }

View File

@@ -10,17 +10,24 @@ import androidx.fragment.app.FragmentTransaction
import androidx.fragment.app.commit import androidx.fragment.app.commit
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.PreferenceFragmentCompat import androidx.preference.PreferenceFragmentCompat
import com.google.android.material.appbar.AppBarLayout
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.BaseActivity import org.koitharu.kotatsu.base.ui.BaseActivity
import org.koitharu.kotatsu.base.ui.util.RecyclerViewOwner import org.koitharu.kotatsu.base.ui.util.RecyclerViewOwner
import org.koitharu.kotatsu.databinding.ActivitySettingsBinding import org.koitharu.kotatsu.databinding.ActivitySettingsBinding
import org.koitharu.kotatsu.main.ui.AppBarOwner
import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.utils.ext.isScrolledToTop import org.koitharu.kotatsu.utils.ext.isScrolledToTop
class SettingsActivity : BaseActivity<ActivitySettingsBinding>(), class SettingsActivity :
BaseActivity<ActivitySettingsBinding>(),
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback, PreferenceFragmentCompat.OnPreferenceStartFragmentCallback,
AppBarOwner,
FragmentManager.OnBackStackChangedListener { FragmentManager.OnBackStackChangedListener {
override val appBar: AppBarLayout
get() = binding.appbar
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
setContentView(ActivitySettingsBinding.inflate(layoutInflater)) setContentView(ActivitySettingsBinding.inflate(layoutInflater))

View File

@@ -13,6 +13,7 @@ import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.base.ui.BaseFragment import org.koitharu.kotatsu.base.ui.BaseFragment
import org.koitharu.kotatsu.base.ui.util.RecyclerViewOwner import org.koitharu.kotatsu.base.ui.util.RecyclerViewOwner
import org.koitharu.kotatsu.databinding.FragmentSettingsSourcesBinding import org.koitharu.kotatsu.databinding.FragmentSettingsSourcesBinding
import org.koitharu.kotatsu.main.ui.AppBarOwner
import org.koitharu.kotatsu.settings.SettingsActivity import org.koitharu.kotatsu.settings.SettingsActivity
import org.koitharu.kotatsu.settings.sources.adapter.SourceConfigAdapter import org.koitharu.kotatsu.settings.sources.adapter.SourceConfigAdapter
import org.koitharu.kotatsu.settings.sources.adapter.SourceConfigListener import org.koitharu.kotatsu.settings.sources.adapter.SourceConfigListener
@@ -108,7 +109,10 @@ class SourcesSettingsFragment : BaseFragment<FragmentSettingsSourcesBinding>(),
return true return true
} }
override fun onMenuItemActionExpand(item: MenuItem?): Boolean = true override fun onMenuItemActionExpand(item: MenuItem?): Boolean {
(activity as? AppBarOwner)?.appBar?.setExpanded(false, true)
return true
}
override fun onMenuItemActionCollapse(item: MenuItem): Boolean { override fun onMenuItemActionCollapse(item: MenuItem): Boolean {
(item.actionView as SearchView).setQuery("", false) (item.actionView as SearchView).setQuery("", false)

View File

@@ -62,8 +62,9 @@
android:drawablePadding="16dp" android:drawablePadding="16dp"
android:gravity="center_vertical" android:gravity="center_vertical"
android:hint="@string/search_manga" android:hint="@string/search_manga"
android:imeOptions="actionSearch" android:imeOptions="actionSearch|flagNoFullscreen"
android:importantForAutofill="no" android:importantForAutofill="no"
android:inputType="textShortMessage"
android:singleLine="true" /> android:singleLine="true" />
</com.google.android.material.appbar.MaterialToolbar> </com.google.android.material.appbar.MaterialToolbar>

View File

@@ -54,8 +54,9 @@
android:background="@null" android:background="@null"
android:gravity="center_vertical" android:gravity="center_vertical"
android:hint="@string/search_manga" android:hint="@string/search_manga"
android:imeOptions="actionSearch" android:imeOptions="actionSearch|flagNoFullscreen"
android:importantForAutofill="no" android:importantForAutofill="no"
android:inputType="textShortMessage"
android:paddingBottom="1dp" android:paddingBottom="1dp"
android:singleLine="true" android:singleLine="true"
tools:drawableEnd="@drawable/abc_ic_clear_material" /> tools:drawableEnd="@drawable/abc_ic_clear_material" />

View File

@@ -7,6 +7,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?android:windowBackground" android:background="?android:windowBackground"
android:clickable="true" android:clickable="true"
android:clipToPadding="false"
android:orientation="vertical" android:orientation="vertical"
android:scrollbars="vertical" android:scrollbars="vertical"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"

View File

@@ -6,5 +6,6 @@
<color name="onError">#680003</color> <color name="onError">#680003</color>
<color name="onErrorContainer">#FFDAD4</color> <color name="onErrorContainer">#FFDAD4</color>
<color name="scrollbar">#66FFFFFF</color> <color name="scrollbar">#66FFFFFF</color>
<color name="selector_foreground">#29FFFFFF</color>
</resources> </resources>

View File

@@ -19,5 +19,6 @@
<color name="grey_dark">#212121</color> <color name="grey_dark">#212121</color>
<color name="dim">#99000000</color> <color name="dim">#99000000</color>
<color name="scrollbar">#66000000</color> <color name="scrollbar">#66000000</color>
<color name="selector_foreground">#29000000</color>
</resources> </resources>