diff --git a/app/build.gradle b/app/build.gradle index 81ff7cb27..ee04db19a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId 'org.koitharu.kotatsu' minSdk = 21 targetSdk = 34 - versionCode = 643 - versionName = '7.1' + versionCode = 644 + versionName = '7.1.1' generatedDensities = [] testInstrumentationRunner 'org.koitharu.kotatsu.HiltTestRunner' ksp { diff --git a/app/src/debug/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt b/app/src/debug/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt new file mode 100644 index 000000000..519db2319 --- /dev/null +++ b/app/src/debug/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt @@ -0,0 +1,33 @@ +package org.koitharu.kotatsu.settings + +import android.content.Context +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import androidx.core.view.MenuProvider +import leakcanary.LeakCanary +import org.koitharu.kotatsu.R +import org.koitharu.workinspector.WorkInspector + +class SettingsMenuProvider( + private val context: Context, +) : MenuProvider { + + override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) { + menuInflater.inflate(R.menu.opt_settings, menu) + } + + override fun onMenuItemSelected(menuItem: MenuItem): Boolean = when (menuItem.itemId) { + R.id.action_leaks -> { + context.startActivity(LeakCanary.newLeakDisplayActivityIntent()) + true + } + + R.id.action_works -> { + context.startActivity(WorkInspector.getIntent(context)) + true + } + + else -> false + } +} diff --git a/app/src/debug/res/menu/opt_settings.xml b/app/src/debug/res/menu/opt_settings.xml index 0ad9f78bc..b7bb4a5ac 100644 --- a/app/src/debug/res/menu/opt_settings.xml +++ b/app/src/debug/res/menu/opt_settings.xml @@ -8,14 +8,9 @@ android:title="@string/leak_canary_display_activity_label" app:showAsAction="never" /> - - diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BasePreferenceFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BasePreferenceFragment.kt index aabadc67a..0a5a90c07 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BasePreferenceFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/core/ui/BasePreferenceFragment.kt @@ -63,7 +63,7 @@ abstract class BasePreferenceFragment(@StringRes private val titleId: Int) : ) } - protected fun setTitle(title: CharSequence?) { + protected open fun setTitle(title: CharSequence?) { (activity as? SettingsActivity)?.setSectionTitle(title) } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/RootSettingsFragment.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/RootSettingsFragment.kt index f095ec6c7..220c65bda 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/RootSettingsFragment.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/RootSettingsFragment.kt @@ -43,6 +43,12 @@ class RootSettingsFragment : BasePreferenceFragment(0) { } } + override fun setTitle(title: CharSequence?) { + if (!resources.getBoolean(R.bool.is_tablet)) { + super.setTitle(title) + } + } + private fun bindPreferenceSummary(key: String, @StringRes vararg items: Int) { findPreference(key)?.summary = items.joinToString { getString(it) } } diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/settings/SettingsActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/settings/SettingsActivity.kt index b36099f34..f9ae0f40d 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/settings/SettingsActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/settings/SettingsActivity.kt @@ -1,11 +1,8 @@ package org.koitharu.kotatsu.settings -import android.content.ComponentName import android.content.Context import android.content.Intent import android.os.Bundle -import android.view.Menu -import android.view.MenuItem import android.view.ViewGroup.MarginLayoutParams import androidx.core.graphics.Insets import androidx.core.view.updateLayoutParams @@ -44,9 +41,12 @@ class SettingsActivity : private val isMasterDetails get() = viewBinding.containerMaster != null + private var screenPadding = 0 + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(ActivitySettingsBinding.inflate(layoutInflater)) + screenPadding = resources.getDimensionPixelOffset(R.dimen.screen_padding) supportActionBar?.setDisplayHomeAsUpEnabled(true) val fm = supportFragmentManager val currentFragment = fm.findFragmentById(R.id.container) @@ -59,38 +59,7 @@ class SettingsActivity : replace(R.id.container_master, RootSettingsFragment()) } } - } - - override fun onCreateOptionsMenu(menu: Menu): Boolean { - super.onCreateOptionsMenu(menu) - menuInflater.inflate(R.menu.opt_settings, menu) - return true - } - - override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) { - R.id.action_leaks -> { - val intent = Intent() - intent.component = ComponentName(this, "leakcanary.internal.activity.LeakActivity") - intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP - startActivity(intent) - true - } - - R.id.action_tracker -> { - val intent = Intent() - intent.component = ComponentName(this, "org.koitharu.kotatsu.tracker.ui.debug.TrackerDebugActivity") - startActivity(intent) - true - } - - R.id.action_works -> { - val intent = Intent() - intent.component = ComponentName(this, "org.koitharu.workinspector.WorkInspectorActivity") - startActivity(intent) - true - } - - else -> super.onOptionsItemSelected(item) + addMenuProvider(SettingsMenuProvider(this)) } override fun onPreferenceStartFragment( @@ -109,8 +78,8 @@ class SettingsActivity : left = insets.left, right = insets.right, ) - viewBinding.cardDetails?.updateLayoutParams { - bottomMargin = marginStart + insets.bottom + viewBinding.textViewHeader?.updateLayoutParams { + topMargin = screenPadding + insets.top } } diff --git a/app/src/main/res/layout-w600dp-land/activity_settings.xml b/app/src/main/res/layout-w600dp-land/activity_settings.xml index 31a7ed000..4b3d15d9e 100644 --- a/app/src/main/res/layout-w600dp-land/activity_settings.xml +++ b/app/src/main/res/layout-w600dp-land/activity_settings.xml @@ -13,7 +13,7 @@ android:elevation="0dp" android:fitsSystemWindows="true" app:elevation="0dp" - app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintEnd_toEndOf="@id/container_master" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:liftOnScroll="false"> @@ -30,50 +30,46 @@ android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toStartOf="@id/card_details" + app:layout_constraintEnd_toStartOf="@id/container" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/appbar" app:layout_constraintWidth_max="400dp" app:layout_constraintWidth_min="320dp" - app:layout_constraintWidth_percent="0.35" /> + app:layout_constraintWidth_percent="0.4" /> - + + + app:layout_constraintTop_toBottomOf="@id/textView_header" + tools:layout="@layout/fragment_settings_sources" /> - - - - - - - - - + diff --git a/app/src/main/res/menu/opt_settings.xml b/app/src/main/res/menu/opt_settings.xml deleted file mode 100644 index 1fe7aa6d4..000000000 --- a/app/src/main/res/menu/opt_settings.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/app/src/release/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt b/app/src/release/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt new file mode 100644 index 000000000..e9cc4b9a5 --- /dev/null +++ b/app/src/release/kotlin/org/koitharu/kotatsu/settings/SettingsMenuProvider.kt @@ -0,0 +1,15 @@ +package org.koitharu.kotatsu.settings + +import android.content.Context +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import androidx.core.view.MenuProvider + +@Suppress("UNUSED_PARAMETER") +class SettingsMenuProvider(context: Context) : MenuProvider { + + override fun onCreateMenu(menu: Menu, menuInflater: MenuInflater) = Unit + + override fun onMenuItemSelected(menuItem: MenuItem): Boolean = false +}