From d4a2d97071b00038304dd3d50130df909c0b56f8 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Tue, 4 Mar 2025 14:33:50 +0200 Subject: [PATCH] Fixes --- app/build.gradle | 4 +- .../ui/sheet/BottomSheetCollapseCallback.kt | 21 ++++--- .../kotatsu/details/ui/DetailsActivity.kt | 63 +------------------ .../koitharu/kotatsu/main/ui/MainActivity.kt | 1 + .../kotatsu/main/ui/MainNavigationDelegate.kt | 9 +++ 5 files changed, 27 insertions(+), 71 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ebf73e22e..58d2b7b72 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,8 +19,8 @@ android { applicationId 'org.koitharu.kotatsu' minSdk = 21 targetSdk = 35 - versionCode = 1003 - versionName = '8.0-b3' + versionCode = 1004 + versionName = '8.0' generatedDensities = [] testInstrumentationRunner 'org.koitharu.kotatsu.HiltTestRunner' ksp { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/sheet/BottomSheetCollapseCallback.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/sheet/BottomSheetCollapseCallback.kt index ee6a25c58..f8144b533 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/sheet/BottomSheetCollapseCallback.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/sheet/BottomSheetCollapseCallback.kt @@ -21,19 +21,12 @@ class BottomSheetCollapseCallback( object : BottomSheetBehavior.BottomSheetCallback() { @SuppressLint("SwitchIntDef") - override fun onStateChanged(view: View, state: Int) { - when (state) { - STATE_EXPANDED, - STATE_HALF_EXPANDED -> isEnabled = true - - STATE_COLLAPSED, - STATE_HIDDEN -> isEnabled = false - } - } + override fun onStateChanged(view: View, state: Int) = onStateChanged(state) override fun onSlide(p0: View, p1: Float) = Unit }, ) + onStateChanged(behavior.state) } override fun handleOnBackPressed() = behavior.handleBackInvoked() @@ -43,4 +36,14 @@ class BottomSheetCollapseCallback( override fun handleOnBackProgressed(backEvent: BackEventCompat) = behavior.updateBackProgress(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 + } + } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt index a52f757e3..030b80357 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt @@ -4,13 +4,11 @@ import android.content.Context import android.os.Bundle import android.transition.TransitionManager import android.view.Gravity -import android.view.MenuItem import android.view.View import android.view.ViewGroup import android.view.ViewTreeObserver import android.widget.Toast import androidx.activity.viewModels -import androidx.appcompat.widget.PopupMenu import androidx.core.text.method.LinkMovementMethodCompat import androidx.core.view.OnApplyWindowInsetsListener import androidx.core.view.ViewCompat @@ -38,7 +36,6 @@ import coil3.transform.RoundedCornersTransformation import coil3.util.CoilUtils import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.chip.Chip -import com.google.android.material.snackbar.Snackbar import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.Flow 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.ui.BaseActivity 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.image.CoverSizeResolver import org.koitharu.kotatsu.core.ui.image.FaviconDrawable @@ -119,9 +115,9 @@ import com.google.android.material.R as materialR class DetailsActivity : BaseActivity(), View.OnClickListener, OnApplyWindowInsetsListener, - View.OnLongClickListener, PopupMenu.OnMenuItemClickListener, View.OnLayoutChangeListener, - ViewTreeObserver.OnDrawListener, ChipsView.OnChipClickListener, OnListItemClickListener, - OnContextClickListenerCompat, SwipeRefreshLayout.OnRefreshListener { + View.OnLayoutChangeListener, ViewTreeObserver.OnDrawListener, + ChipsView.OnChipClickListener, OnListItemClickListener, + SwipeRefreshLayout.OnRefreshListener { @Inject lateinit var shortcutManager: AppShortcutManager @@ -284,40 +280,6 @@ class DetailsActivity : 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) { router.openReader(ReaderIntent.Builder(view.context).bookmark(item).incognito(true).build()) Toast.makeText(view.context, R.string.incognito_mode, Toast.LENGTH_SHORT).show() @@ -536,25 +498,6 @@ class DetailsActivity : 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) { viewBinding.chipsTags.isVisible = manga.tags.isNotEmpty() viewBinding.chipsTags.setChips(listMapper.mapTags(manga.tags)) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/main/ui/MainActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/main/ui/MainActivity.kt index f13934434..e43dc5d26 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/main/ui/MainActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/main/ui/MainActivity.kt @@ -150,6 +150,7 @@ class MainActivity : BaseActivity(), AppBarOwner, BottomNav override fun onRestoreInstanceState(savedInstanceState: Bundle) { super.onRestoreInstanceState(savedInstanceState) adjustSearchUI(isSearchOpened(), animate = false) + navigationDelegate.syncSelectedItem() } override fun onFragmentChanged(fragment: Fragment, fromUser: Boolean) { diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/main/ui/MainNavigationDelegate.kt b/app/src/main/kotlin/org/koitharu/kotatsu/main/ui/MainNavigationDelegate.kt index e26cb70c0..111157a44 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/main/ui/MainNavigationDelegate.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/main/ui/MainNavigationDelegate.kt @@ -97,6 +97,15 @@ class MainNavigationDelegate( 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) { if (counter == 0) { navBar.getBadge(id)?.isVisible = false