diff --git a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt index 4a6f8c16a..6a87ab36b 100644 --- a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt @@ -40,9 +40,9 @@ import org.koitharu.kotatsu.search.ui.suggestion.SearchSuggestionFragment import org.koitharu.kotatsu.search.ui.suggestion.SearchSuggestionListener import org.koitharu.kotatsu.search.ui.suggestion.SearchSuggestionViewModel import org.koitharu.kotatsu.settings.AppUpdateChecker -import org.koitharu.kotatsu.settings.SettingsHeadersFragment import org.koitharu.kotatsu.settings.newsources.NewSourcesDialogFragment import org.koitharu.kotatsu.settings.onboard.OnboardDialogFragment +import org.koitharu.kotatsu.settings.tools.ToolsFragment import org.koitharu.kotatsu.suggestions.ui.SuggestionsWorker import org.koitharu.kotatsu.tracker.ui.FeedFragment import org.koitharu.kotatsu.tracker.work.TrackWorker @@ -249,7 +249,7 @@ class MainActivity : binding.root.isLiftAppBarOnScroll = true // --//-- } R.id.nav_tools -> { - setPrimaryFragment(SettingsHeadersFragment()) + setPrimaryFragment(ToolsFragment.newInstance()) binding.root.isLiftAppBarOnScroll = true // --//-- } else -> return false diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/AppUpdateChecker.kt b/app/src/main/java/org/koitharu/kotatsu/settings/AppUpdateChecker.kt index 603fe1ce5..f148969f5 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/AppUpdateChecker.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/AppUpdateChecker.kt @@ -26,6 +26,7 @@ import java.security.MessageDigest import java.security.cert.CertificateFactory import java.security.cert.X509Certificate import java.util.concurrent.TimeUnit +import com.google.android.material.R as materialR class AppUpdateChecker(private val activity: ComponentActivity) { @@ -67,9 +68,10 @@ class AppUpdateChecker(private val activity: ComponentActivity) { appendLine() append(version.description) } - MaterialAlertDialogBuilder(activity) + MaterialAlertDialogBuilder(activity, materialR.style.ThemeOverlay_Material3_MaterialAlertDialog_Centered) .setTitle(R.string.app_update_available) .setMessage(message) + .setIcon(R.drawable.ic_app_update) .setPositiveButton(R.string.download) { _, _ -> val intent = Intent(Intent.ACTION_VIEW, version.apkUrl.toUri()) activity.startActivity(Intent.createChooser(intent, activity.getString(R.string.open_in_browser))) diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/tools/ToolsFragment.kt b/app/src/main/java/org/koitharu/kotatsu/settings/tools/ToolsFragment.kt new file mode 100644 index 000000000..da3cbbe8c --- /dev/null +++ b/app/src/main/java/org/koitharu/kotatsu/settings/tools/ToolsFragment.kt @@ -0,0 +1,48 @@ +package org.koitharu.kotatsu.settings.tools + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.core.graphics.Insets +import androidx.core.view.updatePadding +import org.koitharu.kotatsu.R +import org.koitharu.kotatsu.base.ui.BaseFragment +import org.koitharu.kotatsu.databinding.FragmentToolsBinding +import org.koitharu.kotatsu.settings.AppUpdateChecker +import org.koitharu.kotatsu.settings.SettingsActivity + +class ToolsFragment : BaseFragment(), View.OnClickListener { + + private var updateChecker: AppUpdateChecker? = null + + override fun onInflateView(inflater: LayoutInflater, container: ViewGroup?): FragmentToolsBinding { + return FragmentToolsBinding.inflate(inflater, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + binding.buttonSettings.setOnClickListener(this) + binding.cardUpdate.root.setOnClickListener(this) + binding.cardUpdate.buttonDownload.setOnClickListener(this) + } + + override fun onClick(v: View) { + when (v.id) { + R.id.button_settings -> startActivity(SettingsActivity.newIntent(v.context)) + } + } + + override fun onWindowInsetsChanged(insets: Insets) { + binding.root.updatePadding( + left = insets.left, + right = insets.right, + bottom = insets.bottom, + ) + } + + companion object { + + fun newInstance() = ToolsFragment() + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_circle.xml b/app/src/main/res/drawable/bg_circle.xml new file mode 100644 index 000000000..258fc4ce3 --- /dev/null +++ b/app/src/main/res/drawable/bg_circle.xml @@ -0,0 +1,8 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_app_update.xml b/app/src/main/res/drawable/ic_app_update.xml new file mode 100644 index 000000000..f9ded1f40 --- /dev/null +++ b/app/src/main/res/drawable/ic_app_update.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_download.xml b/app/src/main/res/drawable/ic_download.xml new file mode 100644 index 000000000..8bd663095 --- /dev/null +++ b/app/src/main/res/drawable/ic_download.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_tools.xml b/app/src/main/res/layout/fragment_tools.xml new file mode 100644 index 000000000..ab99ee165 --- /dev/null +++ b/app/src/main/res/layout/fragment_tools.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_app_update.xml b/app/src/main/res/layout/layout_app_update.xml new file mode 100644 index 000000000..520f9ef05 --- /dev/null +++ b/app/src/main/res/layout/layout_app_update.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + +