Update tools fragment layout

This commit is contained in:
Koitharu
2023-01-09 14:32:02 +02:00
parent 516470e8ae
commit 24463720b1
4 changed files with 141 additions and 22 deletions

View File

@@ -46,6 +46,7 @@ class MainNavigationDelegate(
fun onCreate(savedInstanceState: Bundle?) { fun onCreate(savedInstanceState: Bundle?) {
primaryFragment?.let { primaryFragment?.let {
onFragmentChanged(it, fromUser = false) onFragmentChanged(it, fromUser = false)
navBar.selectedItemId = getItemId(it)
} ?: onNavigationItemSelected(navBar.selectedItemId) } ?: onNavigationItemSelected(navBar.selectedItemId)
} }
@@ -92,6 +93,14 @@ class MainNavigationDelegate(
return true return true
} }
private fun getItemId(fragment: Fragment) = when (fragment) {
is ShelfFragment -> R.id.nav_shelf
is ExploreFragment -> R.id.nav_explore
is FeedFragment -> R.id.nav_feed
is ToolsFragment -> R.id.nav_tools
else -> 0
}
private fun setPrimaryFragment(fragment: Fragment) { private fun setPrimaryFragment(fragment: Fragment) {
fragmentManager.beginTransaction() fragmentManager.beginTransaction()
.setReorderingAllowed(true) .setReorderingAllowed(true)

View File

@@ -16,7 +16,6 @@ import androidx.core.view.isVisible
import androidx.core.view.updatePadding import androidx.core.view.updatePadding
import androidx.core.widget.TextViewCompat import androidx.core.widget.TextViewCompat
import androidx.fragment.app.viewModels import androidx.fragment.app.viewModels
import com.google.android.material.R as materialR
import com.google.android.material.color.MaterialColors import com.google.android.material.color.MaterialColors
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
@@ -30,6 +29,7 @@ import org.koitharu.kotatsu.settings.about.AppUpdateDialog
import org.koitharu.kotatsu.settings.tools.model.StorageUsage import org.koitharu.kotatsu.settings.tools.model.StorageUsage
import org.koitharu.kotatsu.utils.FileSize import org.koitharu.kotatsu.utils.FileSize
import org.koitharu.kotatsu.utils.ext.getThemeColor import org.koitharu.kotatsu.utils.ext.getThemeColor
import com.google.android.material.R as materialR
@AndroidEntryPoint @AndroidEntryPoint
class ToolsFragment : class ToolsFragment :
@@ -48,6 +48,7 @@ class ToolsFragment :
binding.buttonSettings.setOnClickListener(this) binding.buttonSettings.setOnClickListener(this)
binding.buttonDownloads.setOnClickListener(this) binding.buttonDownloads.setOnClickListener(this)
binding.cardUpdate.root.setOnClickListener(this) binding.cardUpdate.root.setOnClickListener(this)
binding.cardUpdate.buttonChangelog.setOnClickListener(this)
binding.cardUpdate.buttonDownload.setOnClickListener(this) binding.cardUpdate.buttonDownload.setOnClickListener(this)
binding.switchIncognito.setOnCheckedChangeListener(this) binding.switchIncognito.setOnCheckedChangeListener(this)
@@ -69,10 +70,13 @@ class ToolsFragment :
intent.data = url.toUri() intent.data = url.toUri()
startActivity(Intent.createChooser(intent, getString(R.string.open_in_browser))) startActivity(Intent.createChooser(intent, getString(R.string.open_in_browser)))
} }
R.id.card_update -> { R.id.card_update -> {
val version = viewModel.appUpdate.value ?: return val version = viewModel.appUpdate.value ?: return
AppUpdateDialog(v.context).show(version) AppUpdateDialog(v.context).show(version)
} }
R.id.button_changelog -> showChangelog()
} }
} }
@@ -141,6 +145,13 @@ class ToolsFragment :
return MaterialColors.harmonize(color, backgroundColor) return MaterialColors.harmonize(color, backgroundColor)
} }
private fun showChangelog() {
TransitionManager.beginDelayedTransition(binding.cardUpdate.root)
binding.cardUpdate.buttonChangelog.isVisible = false
binding.cardUpdate.textSecondary.isVisible = true
binding.cardUpdate.textChangelog.isVisible = true
}
companion object { companion object {
fun newInstance() = ToolsFragment() fun newInstance() = ToolsFragment()

View File

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
<include
android:id="@+id/card_update"
layout="@layout/layout_app_update"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_normal"
android:visibility="gone"
app:layout_constraintEnd_toStartOf="@id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible" />
<include
android:id="@+id/layout_sync"
layout="@layout/layout_synchronization"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/guideline"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible" />
<include
android:id="@+id/layout_storage"
layout="@layout/layout_memory_usage"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintEnd_toStartOf="@id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/card_update" />
<com.google.android.material.materialswitch.MaterialSwitch
android:id="@+id/switch_incognito"
style="?listItemTextViewStyle"
android:layout_width="0dp"
android:layout_height="?android:listPreferredItemHeightSmall"
android:layout_marginTop="2dp"
android:drawableStart="@drawable/ic_incognito"
android:drawablePadding="?android:listPreferredItemPaddingStart"
android:paddingStart="?android:listPreferredItemPaddingStart"
android:paddingEnd="?android:listPreferredItemPaddingEnd"
android:text="@string/incognito_mode"
android:textAppearance="?attr/textAppearanceButton"
android:textColor="?attr/colorControlNormal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/guideline"
app:layout_constraintTop_toBottomOf="@id/layout_sync"
app:layout_goneMarginTop="8dp" />
<org.koitharu.kotatsu.base.ui.widgets.ListItemTextView
android:id="@+id/button_downloads"
android:layout_width="0dp"
android:layout_height="?android:listPreferredItemHeightSmall"
android:drawableStart="@drawable/ic_download"
android:drawablePadding="?android:listPreferredItemPaddingStart"
android:paddingStart="?android:listPreferredItemPaddingStart"
android:paddingEnd="?android:listPreferredItemPaddingEnd"
android:text="@string/downloads"
android:textAppearance="?attr/textAppearanceButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/guideline"
app:layout_constraintTop_toBottomOf="@id/switch_incognito" />
<org.koitharu.kotatsu.base.ui.widgets.ListItemTextView
android:id="@+id/button_settings"
android:layout_width="0dp"
android:layout_height="?android:listPreferredItemHeightSmall"
android:drawableStart="@drawable/ic_settings"
android:drawablePadding="?android:listPreferredItemPaddingStart"
android:paddingStart="?android:listPreferredItemPaddingStart"
android:paddingEnd="?android:listPreferredItemPaddingEnd"
android:text="@string/settings"
android:textAppearance="?attr/textAppearanceButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/guideline"
app:layout_constraintTop_toBottomOf="@id/button_downloads" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>

View File

@@ -13,18 +13,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<ImageView
android:id="@+id/icon"
android:layout_width="86dp"
android:layout_height="86dp"
android:background="@drawable/bg_circle"
android:contentDescription="@null"
android:padding="16dp"
android:scaleType="fitCenter"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_totoro" />
<TextView <TextView
android:id="@+id/textPrimary" android:id="@+id/textPrimary"
android:layout_width="0dp" android:layout_width="0dp"
@@ -33,7 +21,7 @@
android:text="@string/app_update_available" android:text="@string/app_update_available"
android:textAppearance="?attr/textAppearanceTitleLarge" android:textAppearance="?attr/textAppearanceTitleLarge"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/icon" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
<TextView <TextView
@@ -44,10 +32,11 @@
android:layout_marginTop="@dimen/margin_small" android:layout_marginTop="@dimen/margin_small"
android:text="@string/new_version_s" android:text="@string/new_version_s"
android:textAppearance="?attr/textAppearanceBodyMedium" android:textAppearance="?attr/textAppearanceBodyMedium"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/icon" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/textPrimary" /> app:layout_constraintTop_toBottomOf="@id/textPrimary"
tools:visibility="visible" />
<TextView <TextView
android:id="@+id/textChangelog" android:id="@+id/textChangelog"
@@ -55,14 +44,25 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/margin_normal" android:layout_marginStart="@dimen/margin_normal"
android:layout_marginTop="@dimen/margin_small" android:layout_marginTop="@dimen/margin_small"
android:background="@drawable/bg_badge_empty"
android:fontFamily="monospace" android:fontFamily="monospace"
android:padding="8dp"
android:textAppearance="?attr/textAppearanceBodyMedium" android:textAppearance="?attr/textAppearanceBodyMedium"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/icon" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/textSecondary" app:layout_constraintTop_toBottomOf="@id/textSecondary"
tools:text="- Fixes\n- Improvements" /> tools:text="- Fixes\n- Improvements"
tools:visibility="visible" />
<Button
android:id="@+id/button_changelog"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:layout_marginEnd="12dp"
android:text="@string/details"
app:layout_constraintEnd_toStartOf="@id/button_download"
app:layout_constraintTop_toBottomOf="@id/textChangelog" />
<Button <Button
android:id="@+id/button_download" android:id="@+id/button_download"
@@ -74,7 +74,6 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/textChangelog" /> app:layout_constraintTop_toBottomOf="@id/textChangelog" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView> </com.google.android.material.card.MaterialCardView>