diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt b/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt index ae30b6f0..832baf94 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsDialogFragment.kt @@ -1,176 +1,178 @@ -package ani.dantotsu.settings - -import android.app.DownloadManager -import android.content.ActivityNotFoundException -import android.content.Intent -import android.content.Context -import android.graphics.Color -import android.net.Uri -import android.os.Bundle -import android.util.TypedValue -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.core.content.ContextCompat -import ani.dantotsu.BottomSheetDialogFragment -import ani.dantotsu.R -import android.content.SharedPreferences -import androidx.core.content.edit -import ani.dantotsu.connections.anilist.Anilist -import ani.dantotsu.databinding.BottomSheetSettingsBinding -import ani.dantotsu.download.DownloadContainerActivity -import ani.dantotsu.download.manga.OfflineMangaFragment -import ani.dantotsu.loadData -import ani.dantotsu.snackString -import ani.dantotsu.loadImage -import ani.dantotsu.openLinkInBrowser -import ani.dantotsu.others.imagesearch.ImageSearchActivity -import ani.dantotsu.setSafeOnClickListener -import ani.dantotsu.startMainActivity -import ani.dantotsu.toast -import ani.dantotsu.currContext - -class SettingsDialogFragment() : BottomSheetDialogFragment() { - private var _binding: BottomSheetSettingsBinding? = null - private val binding get() = _binding!! - - private lateinit var pageType: PageType - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - pageType = arguments?.getSerializable("pageType") as? PageType ?: PageType.HOME - } - override fun onCreateView( - inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View { - _binding = BottomSheetSettingsBinding.inflate(inflater, container, false) - return binding.root - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - val window = dialog?.window - window?.statusBarColor = Color.CYAN - val typedValue = TypedValue() - val theme = requireContext().theme - theme.resolveAttribute(com.google.android.material.R.attr.colorSurface, typedValue, true) - window?.navigationBarColor = typedValue.data - - if (Anilist.token != null) { - binding.settingsLogin.setText(R.string.logout) - binding.settingsLogin.setOnClickListener { - Anilist.removeSavedToken(it.context) - dismiss() - startMainActivity(requireActivity()) - } - binding.settingsUsername.text = Anilist.username - binding.settingsUserAvatar.loadImage(Anilist.avatar) - } else { - binding.settingsUsername.visibility = View.GONE - binding.settingsLogin.setText(R.string.login) - binding.settingsLogin.setOnClickListener { - dismiss() - Anilist.loginIntent(requireActivity()) - } - } - - currContext()?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE) - ?.getBoolean("incognito", false) ?: false - - binding.settingsIncognito.setOnCheckedChangeListener { _, isChecked -> - context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.edit() - ?.putBoolean("incognito", isChecked)?.apply() - } - - binding.settingsIncognito.isChecked = - context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.getBoolean( - "incognito", - false - ) ?: false - - var incognito = context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE) - ?.getBoolean( - "incognito", - false - ) - - currContext()?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE) - ?.getBoolean("offlineMode", false) ?: false - - binding.settingsDownloads.isChecked = - context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.getBoolean( - "offlineMode", - false - ) ?: false - - var offlineMode = context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE) - ?.getBoolean( - "offlineMode", - false - ) - - binding.settingsExtensionSettings.setSafeOnClickListener { - startActivity(Intent(activity, ExtensionsActivity::class.java)) - dismiss() - } - binding.settingsSettings.setSafeOnClickListener { - startActivity(Intent(activity, SettingsActivity::class.java)) - dismiss() - } - binding.settingsAnilistSettings.setOnClickListener { - openLinkInBrowser("https://anilist.co/settings/lists") - dismiss() - } - binding.imageSearch.setOnClickListener { - startActivity(Intent(activity, ImageSearchActivity::class.java)) - dismiss() - } - binding.settingsDownloads.setOnCheckedChangeListener { _, isChecked -> - if (!isChecked) { - startMainActivity(requireActivity()) - } else { - when (pageType) { - PageType.MANGA -> { - val intent = Intent(activity, DownloadContainerActivity::class.java) - intent.putExtra("FRAGMENT_CLASS_NAME", OfflineMangaFragment::class.java.name) - startActivity(intent) - } - PageType.ANIME -> { - val intent = Intent(activity, DownloadContainerActivity::class.java) - intent.putExtra("FRAGMENT_CLASS_NAME", OfflineMangaFragment::class.java.name) - startActivity(intent) - } - PageType.HOME -> { - val intent = Intent(activity, DownloadContainerActivity::class.java) - intent.putExtra("FRAGMENT_CLASS_NAME", OfflineMangaFragment::class.java.name) - startActivity(intent) - } - } - } - context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.edit() - ?.putBoolean("offlineMode", isChecked)?.apply() - dismiss() - } - } - - override fun onDestroyView() { - super.onDestroyView() - _binding = null - } - - companion object { - enum class PageType { - MANGA, ANIME, HOME - } - - fun newInstance(pageType: PageType): SettingsDialogFragment { - val fragment = SettingsDialogFragment() - val args = Bundle() - args.putSerializable("pageType", pageType) - fragment.arguments = args - return fragment - } - } +package ani.dantotsu.settings + +import android.content.Intent +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.util.TypedValue +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import ani.dantotsu.BottomSheetDialogFragment +import ani.dantotsu.R +import ani.dantotsu.MainActivity +import ani.dantotsu.connections.anilist.Anilist +import ani.dantotsu.databinding.BottomSheetSettingsBinding +import ani.dantotsu.download.manga.OfflineMangaFragment +import ani.dantotsu.loadImage +import ani.dantotsu.openLinkInBrowser +import ani.dantotsu.others.imagesearch.ImageSearchActivity +import ani.dantotsu.setSafeOnClickListener +import ani.dantotsu.startMainActivity +import ani.dantotsu.currContext +import ani.dantotsu.home.AnimeFragment +import ani.dantotsu.home.HomeFragment +import ani.dantotsu.home.LoginFragment +import ani.dantotsu.home.MangaFragment +import ani.dantotsu.home.NoInternet +import ani.dantotsu.offline.OfflineFragment + +class SettingsDialogFragment() : BottomSheetDialogFragment() { + private var _binding: BottomSheetSettingsBinding? = null + private val binding get() = _binding!! + + private lateinit var pageType: PageType + private lateinit var pageType2: PageType2 + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + pageType = arguments?.getSerializable("pageType") as? PageType ?: PageType.HOME + pageType2 = arguments?.getSerializable("pageType2") as? PageType2 ?: PageType2.OfflineMANGA // changed when offline home page comes + } + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = BottomSheetSettingsBinding.inflate(inflater, container, false) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + val window = dialog?.window + window?.statusBarColor = Color.CYAN + val typedValue = TypedValue() + val theme = requireContext().theme + theme.resolveAttribute(com.google.android.material.R.attr.colorSurface, typedValue, true) + window?.navigationBarColor = typedValue.data + + if (Anilist.token != null) { + binding.settingsLogin.setText(R.string.logout) + binding.settingsLogin.setOnClickListener { + Anilist.removeSavedToken(it.context) + dismiss() + startMainActivity(requireActivity()) + } + binding.settingsUsername.text = Anilist.username + binding.settingsUserAvatar.loadImage(Anilist.avatar) + } else { + binding.settingsUsername.visibility = View.GONE + binding.settingsLogin.setText(R.string.login) + binding.settingsLogin.setOnClickListener { + dismiss() + Anilist.loginIntent(requireActivity()) + } + } + + binding.settingsIncognito.isChecked = + context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.getBoolean( + "incognito", + false + ) ?: false + + binding.settingsIncognito.setOnCheckedChangeListener { _, isChecked -> + context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.edit() + ?.putBoolean("incognito", isChecked)?.apply() + } + binding.settingsExtensionSettings.setSafeOnClickListener { + startActivity(Intent(activity, ExtensionsActivity::class.java)) + dismiss() + } + binding.settingsSettings.setSafeOnClickListener { + startActivity(Intent(activity, SettingsActivity::class.java)) + dismiss() + } + binding.settingsAnilistSettings.setOnClickListener { + openLinkInBrowser("https://anilist.co/settings/lists") + dismiss() + } + binding.imageSearch.setOnClickListener { + startActivity(Intent(activity, ImageSearchActivity::class.java)) + dismiss() + } + + binding.settingsDownloads.isChecked = + context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.getBoolean("offlineMode", false) ?: false + binding.settingsDownloads.setOnCheckedChangeListener { _, isChecked -> + + if (!isChecked) { + when (pageType2) { + PageType2.OfflineMANGA -> { + val intent = Intent(activity, MainActivity::class.java) + intent.putExtra("FRAGMENT_CLASS_NAME", MangaFragment::class.java.name) + startActivity(intent) + } + PageType2.OfflineHOME -> { //no offline home for now + val intent = Intent(activity, MainActivity::class.java) + intent.putExtra("FRAGMENT_CLASS_NAME", if (Anilist.token != null) HomeFragment::class.java.name else LoginFragment::class.java.name) + startActivity(intent) + } + PageType2.OfflineANIME -> { //no offline anime for now + val intent = Intent(activity, MainActivity::class.java) + intent.putExtra("FRAGMENT_CLASS_NAME", AnimeFragment::class.java.name) + startActivity(intent) + } + } + } else { + when (pageType) { + PageType.MANGA -> { + val intent = Intent(activity, NoInternet::class.java) + intent.putExtra("FRAGMENT_CLASS_NAME", OfflineMangaFragment::class.java.name) + startActivity(intent) + } + PageType.ANIME -> { + val intent = Intent(activity, NoInternet::class.java) + intent.putExtra("FRAGMENT_CLASS_NAME", OfflineFragment::class.java.name) + startActivity(intent) + } + PageType.HOME -> { + val intent = Intent(activity, NoInternet::class.java) + intent.putExtra("FRAGMENT_CLASS_NAME", OfflineFragment::class.java.name) + startActivity(intent) + } + } + } + dismiss() + context?.getSharedPreferences("Dantotsu", Context.MODE_PRIVATE)?.edit() + ?.putBoolean("offlineMode", isChecked)?.apply() + } + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } + + companion object { + enum class PageType { + MANGA, ANIME, HOME + } + enum class PageType2 { + OfflineMANGA, OfflineANIME, OfflineHOME + } + fun newInstance(pageType: PageType): SettingsDialogFragment { + val fragment = SettingsDialogFragment() + val args = Bundle() + args.putSerializable("pageType", pageType) + fragment.arguments = args + return fragment + } + fun newInstance2(pageType: PageType2): SettingsDialogFragment { + val fragment = SettingsDialogFragment() + val args = Bundle() + args.putSerializable("pageType", pageType) + fragment.arguments = args + return fragment + } + } } \ No newline at end of file