Fixes
This commit is contained in:
@@ -19,8 +19,8 @@ android {
|
|||||||
applicationId 'org.koitharu.kotatsu'
|
applicationId 'org.koitharu.kotatsu'
|
||||||
minSdk = 21
|
minSdk = 21
|
||||||
targetSdk = 35
|
targetSdk = 35
|
||||||
versionCode = 1003
|
versionCode = 1004
|
||||||
versionName = '8.0-b3'
|
versionName = '8.0'
|
||||||
generatedDensities = []
|
generatedDensities = []
|
||||||
testInstrumentationRunner 'org.koitharu.kotatsu.HiltTestRunner'
|
testInstrumentationRunner 'org.koitharu.kotatsu.HiltTestRunner'
|
||||||
ksp {
|
ksp {
|
||||||
|
|||||||
@@ -21,19 +21,12 @@ class BottomSheetCollapseCallback(
|
|||||||
object : BottomSheetBehavior.BottomSheetCallback() {
|
object : BottomSheetBehavior.BottomSheetCallback() {
|
||||||
|
|
||||||
@SuppressLint("SwitchIntDef")
|
@SuppressLint("SwitchIntDef")
|
||||||
override fun onStateChanged(view: View, state: Int) {
|
override fun onStateChanged(view: View, state: Int) = onStateChanged(state)
|
||||||
when (state) {
|
|
||||||
STATE_EXPANDED,
|
|
||||||
STATE_HALF_EXPANDED -> isEnabled = true
|
|
||||||
|
|
||||||
STATE_COLLAPSED,
|
|
||||||
STATE_HIDDEN -> isEnabled = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onSlide(p0: View, p1: Float) = Unit
|
override fun onSlide(p0: View, p1: Float) = Unit
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
onStateChanged(behavior.state)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun handleOnBackPressed() = behavior.handleBackInvoked()
|
override fun handleOnBackPressed() = behavior.handleBackInvoked()
|
||||||
@@ -43,4 +36,14 @@ class BottomSheetCollapseCallback(
|
|||||||
override fun handleOnBackProgressed(backEvent: BackEventCompat) = behavior.updateBackProgress(backEvent)
|
override fun handleOnBackProgressed(backEvent: BackEventCompat) = behavior.updateBackProgress(backEvent)
|
||||||
|
|
||||||
override fun handleOnBackStarted(backEvent: BackEventCompat) = behavior.startBackProgress(backEvent)
|
override fun handleOnBackStarted(backEvent: BackEventCompat) = behavior.startBackProgress(backEvent)
|
||||||
|
|
||||||
|
private fun onStateChanged(state: Int) {
|
||||||
|
when (state) {
|
||||||
|
STATE_EXPANDED,
|
||||||
|
STATE_HALF_EXPANDED -> isEnabled = true
|
||||||
|
|
||||||
|
STATE_COLLAPSED,
|
||||||
|
STATE_HIDDEN -> isEnabled = false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,13 +4,11 @@ import android.content.Context
|
|||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.transition.TransitionManager
|
import android.transition.TransitionManager
|
||||||
import android.view.Gravity
|
import android.view.Gravity
|
||||||
import android.view.MenuItem
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.ViewTreeObserver
|
import android.view.ViewTreeObserver
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.appcompat.widget.PopupMenu
|
|
||||||
import androidx.core.text.method.LinkMovementMethodCompat
|
import androidx.core.text.method.LinkMovementMethodCompat
|
||||||
import androidx.core.view.OnApplyWindowInsetsListener
|
import androidx.core.view.OnApplyWindowInsetsListener
|
||||||
import androidx.core.view.ViewCompat
|
import androidx.core.view.ViewCompat
|
||||||
@@ -38,7 +36,6 @@ import coil3.transform.RoundedCornersTransformation
|
|||||||
import coil3.util.CoilUtils
|
import coil3.util.CoilUtils
|
||||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||||
import com.google.android.material.chip.Chip
|
import com.google.android.material.chip.Chip
|
||||||
import com.google.android.material.snackbar.Snackbar
|
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.FlowCollector
|
import kotlinx.coroutines.flow.FlowCollector
|
||||||
@@ -59,7 +56,6 @@ import org.koitharu.kotatsu.core.os.AppShortcutManager
|
|||||||
import org.koitharu.kotatsu.core.parser.favicon.faviconUri
|
import org.koitharu.kotatsu.core.parser.favicon.faviconUri
|
||||||
import org.koitharu.kotatsu.core.ui.BaseActivity
|
import org.koitharu.kotatsu.core.ui.BaseActivity
|
||||||
import org.koitharu.kotatsu.core.ui.BaseListAdapter
|
import org.koitharu.kotatsu.core.ui.BaseListAdapter
|
||||||
import org.koitharu.kotatsu.core.ui.OnContextClickListenerCompat
|
|
||||||
import org.koitharu.kotatsu.core.ui.dialog.buildAlertDialog
|
import org.koitharu.kotatsu.core.ui.dialog.buildAlertDialog
|
||||||
import org.koitharu.kotatsu.core.ui.image.CoverSizeResolver
|
import org.koitharu.kotatsu.core.ui.image.CoverSizeResolver
|
||||||
import org.koitharu.kotatsu.core.ui.image.FaviconDrawable
|
import org.koitharu.kotatsu.core.ui.image.FaviconDrawable
|
||||||
@@ -119,9 +115,9 @@ import com.google.android.material.R as materialR
|
|||||||
class DetailsActivity :
|
class DetailsActivity :
|
||||||
BaseActivity<ActivityDetailsBinding>(),
|
BaseActivity<ActivityDetailsBinding>(),
|
||||||
View.OnClickListener, OnApplyWindowInsetsListener,
|
View.OnClickListener, OnApplyWindowInsetsListener,
|
||||||
View.OnLongClickListener, PopupMenu.OnMenuItemClickListener, View.OnLayoutChangeListener,
|
View.OnLayoutChangeListener, ViewTreeObserver.OnDrawListener,
|
||||||
ViewTreeObserver.OnDrawListener, ChipsView.OnChipClickListener, OnListItemClickListener<Bookmark>,
|
ChipsView.OnChipClickListener, OnListItemClickListener<Bookmark>,
|
||||||
OnContextClickListenerCompat, SwipeRefreshLayout.OnRefreshListener {
|
SwipeRefreshLayout.OnRefreshListener {
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
lateinit var shortcutManager: AppShortcutManager
|
lateinit var shortcutManager: AppShortcutManager
|
||||||
@@ -284,40 +280,6 @@ class DetailsActivity :
|
|||||||
router.showTagDialog(tag)
|
router.showTagDialog(tag)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onContextClick(v: View): Boolean = onLongClick(v)
|
|
||||||
|
|
||||||
override fun onLongClick(v: View): Boolean = when (v.id) {
|
|
||||||
R.id.button_read -> {
|
|
||||||
val menu = PopupMenu(v.context, v)
|
|
||||||
menu.inflate(R.menu.popup_read)
|
|
||||||
menu.menu.findItem(R.id.action_forget)?.isVisible = viewModel.historyInfo.value.run {
|
|
||||||
!isIncognitoMode && history != null
|
|
||||||
}
|
|
||||||
menu.setOnMenuItemClickListener(this)
|
|
||||||
menu.setForceShowIcon(true)
|
|
||||||
menu.show()
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> false
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onMenuItemClick(item: MenuItem): Boolean {
|
|
||||||
return when (item.itemId) {
|
|
||||||
R.id.action_incognito -> {
|
|
||||||
openReader(isIncognitoMode = true)
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
R.id.action_forget -> {
|
|
||||||
viewModel.removeFromHistory()
|
|
||||||
true
|
|
||||||
}
|
|
||||||
|
|
||||||
else -> false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onItemClick(item: Bookmark, view: View) {
|
override fun onItemClick(item: Bookmark, view: View) {
|
||||||
router.openReader(ReaderIntent.Builder(view.context).bookmark(item).incognito(true).build())
|
router.openReader(ReaderIntent.Builder(view.context).bookmark(item).incognito(true).build())
|
||||||
Toast.makeText(view.context, R.string.incognito_mode, Toast.LENGTH_SHORT).show()
|
Toast.makeText(view.context, R.string.incognito_mode, Toast.LENGTH_SHORT).show()
|
||||||
@@ -536,25 +498,6 @@ class DetailsActivity :
|
|||||||
progress.isVisible = info.history != null
|
progress.isVisible = info.history != null
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun openReader(isIncognitoMode: Boolean) {
|
|
||||||
val manga = viewModel.manga.value ?: return
|
|
||||||
if (viewModel.historyInfo.value.isChapterMissing) {
|
|
||||||
Snackbar.make(viewBinding.scrollView, R.string.chapter_is_missing, Snackbar.LENGTH_SHORT)
|
|
||||||
.show()
|
|
||||||
} else {
|
|
||||||
router.openReader(
|
|
||||||
ReaderIntent.Builder(this)
|
|
||||||
.manga(manga)
|
|
||||||
.branch(viewModel.selectedBranchValue)
|
|
||||||
.incognito(isIncognitoMode)
|
|
||||||
.build(),
|
|
||||||
)
|
|
||||||
if (isIncognitoMode) {
|
|
||||||
Toast.makeText(this, R.string.incognito_mode, Toast.LENGTH_SHORT).show()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun bindTags(manga: Manga) {
|
private fun bindTags(manga: Manga) {
|
||||||
viewBinding.chipsTags.isVisible = manga.tags.isNotEmpty()
|
viewBinding.chipsTags.isVisible = manga.tags.isNotEmpty()
|
||||||
viewBinding.chipsTags.setChips(listMapper.mapTags(manga.tags))
|
viewBinding.chipsTags.setChips(listMapper.mapTags(manga.tags))
|
||||||
|
|||||||
@@ -150,6 +150,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), AppBarOwner, BottomNav
|
|||||||
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
|
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
|
||||||
super.onRestoreInstanceState(savedInstanceState)
|
super.onRestoreInstanceState(savedInstanceState)
|
||||||
adjustSearchUI(isSearchOpened(), animate = false)
|
adjustSearchUI(isSearchOpened(), animate = false)
|
||||||
|
navigationDelegate.syncSelectedItem()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onFragmentChanged(fragment: Fragment, fromUser: Boolean) {
|
override fun onFragmentChanged(fragment: Fragment, fromUser: Boolean) {
|
||||||
|
|||||||
@@ -97,6 +97,15 @@ class MainNavigationDelegate(
|
|||||||
setCounter(item.id, counter)
|
setCounter(item.id, counter)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun syncSelectedItem() {
|
||||||
|
val fragment = primaryFragment ?: return
|
||||||
|
onFragmentChanged(fragment, fromUser = false)
|
||||||
|
val itemId = getItemId(fragment)
|
||||||
|
if (navBar.selectedItemId != itemId) {
|
||||||
|
navBar.selectedItemId = itemId
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun setCounter(@IdRes id: Int, counter: Int) {
|
private fun setCounter(@IdRes id: Int, counter: Int) {
|
||||||
if (counter == 0) {
|
if (counter == 0) {
|
||||||
navBar.getBadge(id)?.isVisible = false
|
navBar.getBadge(id)?.isVisible = false
|
||||||
|
|||||||
Reference in New Issue
Block a user