diff --git a/app/build.gradle b/app/build.gradle index 60d65bcf..a0ec1a48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,7 +20,7 @@ android { minSdkVersion 16 targetSdkVersion 29 versionCode 57 - versionName "5.0-alpha4" + versionName "5.0-alpha5" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true } diff --git a/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt index b6286b76..6e56e7e3 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/dialog/DownloadLocationDialogFragment.kt @@ -47,13 +47,14 @@ class DownloadLocationDialogFragment : DialogFragment() { private val entries = mutableMapOf() @SuppressLint("InflateParams") - private fun build() : View { + private fun build() : View? { + val context = context ?: return null + val view = layoutInflater.inflate(R.layout.dialog_download_folder, null) as LinearLayout - val externalFilesDirs = ContextCompat.getExternalFilesDirs(requireContext(), null) + val externalFilesDirs = ContextCompat.getExternalFilesDirs(context, null) externalFilesDirs.forEachIndexed { index, dir -> - dir ?: return@forEachIndexed view.addView(layoutInflater.inflate(R.layout.item_download_folder, view, false).apply { @@ -106,7 +107,7 @@ class DownloadLocationDialogFragment : DialogFragment() { entries[null] = this }) - val downloadFolder = DownloadManager.getInstance(requireContext()).downloadFolder.canonicalPath + val downloadFolder = DownloadManager.getInstance(context).downloadFolder.canonicalPath val key = entries.keys.firstOrNull { it?.canonicalPath == downloadFolder } entries[key]!!.button.isChecked = true if (key == null) entries[key]!!.location_available.text = downloadFolder @@ -133,24 +134,28 @@ class DownloadLocationDialogFragment : DialogFragment() { when (requestCode) { R.id.request_download_folder.normalizeID() -> { if (resultCode == Activity.RESULT_OK) { + val activity = activity ?: return + val context = context ?: return + val dialog = dialog ?: return + data?.data?.also { uri -> val takeFlags: Int = - requireActivity().intent.flags and + activity.intent.flags and (Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) - requireContext().contentResolver.takePersistableUriPermission(uri, takeFlags) + context.contentResolver.takePersistableUriPermission(uri, takeFlags) - if (FileX(requireContext(), uri).canWrite()) + if (FileX(context, uri).canWrite()) Preferences["download_folder"] = uri.toString() else { Snackbar.make( - requireDialog().window!!.decorView.rootView, + dialog.window!!.decorView.rootView, R.string.settings_download_folder_not_writable, Snackbar.LENGTH_LONG ).show() - val downloadFolder = DownloadManager.getInstance(requireContext()).downloadFolder.canonicalPath + val downloadFolder = DownloadManager.getInstance(context).downloadFolder.canonicalPath val key = entries.keys.firstOrNull { it?.canonicalPath == downloadFolder } entries[key]!!.button.isChecked = true if (key == null) entries[key]!!.location_available.text = downloadFolder @@ -159,17 +164,20 @@ class DownloadLocationDialogFragment : DialogFragment() { } } R.id.request_download_folder_old.normalizeID() -> { + val context = context ?: return + val dialog = dialog ?: return + if (resultCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) { val directory = data?.getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR)!! if (!File(directory).canWrite()) { Snackbar.make( - requireDialog().window!!.decorView.rootView, + dialog.window!!.decorView.rootView, R.string.settings_download_folder_not_writable, Snackbar.LENGTH_LONG ).show() - val downloadFolder = DownloadManager.getInstance(requireContext()).downloadFolder.canonicalPath + val downloadFolder = DownloadManager.getInstance(context).downloadFolder.canonicalPath val key = entries.keys.firstOrNull { it?.canonicalPath == downloadFolder } entries[key]!!.button.isChecked = true if (key == null) entries[key]!!.location_available.text = downloadFolder diff --git a/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageFavoritesFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageFavoritesFragment.kt index 91b1aaae..d19f7186 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageFavoritesFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageFavoritesFragment.kt @@ -48,7 +48,7 @@ class ManageFavoritesFragment : PreferenceFragmentCompat() { findPreference("backup")?.setOnPreferenceClickListener { val request = Request.Builder() - .url(getString(R.string.backup_url)) + .url(context.getString(R.string.backup_url)) .post( FormBody.Builder() .add("f:1", File(ContextCompat.getDataDir(context), "favorites.json").readText()) @@ -75,7 +75,7 @@ class ManageFavoritesFragment : PreferenceFragmentCompat() { } findPreference("restore")?.setOnPreferenceClickListener { val editText = EditText(context).apply { - setText(getString(R.string.backup_url), TextView.BufferType.EDITABLE) + setText(context.getString(R.string.backup_url), TextView.BufferType.EDITABLE) } AlertDialog.Builder(context) @@ -88,7 +88,7 @@ class ManageFavoritesFragment : PreferenceFragmentCompat() { Snackbar.make(view, R.string.settings_restore_failed, Snackbar.LENGTH_LONG).show() }, onSuccess = onSuccess@{ val view = view ?: return@onSuccess - Snackbar.make(view, getString(R.string.settings_restore_success, it.size), Snackbar.LENGTH_LONG).show() + Snackbar.make(view, context.getString(R.string.settings_restore_success, it.size), Snackbar.LENGTH_LONG).show() }) }.setNegativeButton(android.R.string.cancel) { _, _ -> // Do Nothing diff --git a/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageStorageFragment.kt b/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageStorageFragment.kt index 053ff484..4557c8c6 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageStorageFragment.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/fragment/ManageStorageFragment.kt @@ -61,7 +61,7 @@ class ManageStorageFragment : PreferenceFragmentCompat(), Preference.OnPreferenc if (dir.exists()) dir.deleteRecursively() - summary = getString(R.string.settings_storage_usage, byteToString(0)) + summary = context.getString(R.string.settings_storage_usage, byteToString(0)) CoroutineScope(Dispatchers.IO).launch { var size = 0L @@ -69,7 +69,7 @@ class ManageStorageFragment : PreferenceFragmentCompat(), Preference.OnPreferenc size += it.length() launch(Dispatchers.Main) { - summary = getString(R.string.settings_storage_usage, byteToString(size)) + summary = context.getString(R.string.settings_storage_usage, byteToString(size)) } } } @@ -87,7 +87,7 @@ class ManageStorageFragment : PreferenceFragmentCompat(), Preference.OnPreferenc CoroutineScope(Dispatchers.IO).launch { job?.cancel() launch(Dispatchers.Main) { - summary = getString(R.string.settings_storage_usage_loading) + summary = context.getString(R.string.settings_storage_usage_loading) } if (dir.exists()) @@ -97,13 +97,13 @@ class ManageStorageFragment : PreferenceFragmentCompat(), Preference.OnPreferenc var size = 0L launch(Dispatchers.Main) { - summary = getString(R.string.settings_storage_usage, byteToString(size)) + summary = context.getString(R.string.settings_storage_usage, byteToString(size)) } dir.walk().forEach { size += it.length() launch(Dispatchers.Main) { - summary = getString(R.string.settings_storage_usage, byteToString(size)) + summary = context.getString(R.string.settings_storage_usage, byteToString(size)) } } } @@ -118,7 +118,7 @@ class ManageStorageFragment : PreferenceFragmentCompat(), Preference.OnPreferenc setMessage(R.string.settings_clear_history_alert_message) setPositiveButton(android.R.string.yes) { _, _ -> histories.clear() - summary = getString(R.string.settings_clear_history_summary, histories.size) + summary = context.getString(R.string.settings_clear_history_summary, histories.size) } setNegativeButton(android.R.string.no) { _, _ -> } }.show() @@ -138,7 +138,7 @@ class ManageStorageFragment : PreferenceFragmentCompat(), Preference.OnPreferenc val dir = File(context.cacheDir, "imageCache") - summary = getString(R.string.settings_storage_usage, byteToString(0)) + summary = context.getString(R.string.settings_storage_usage, byteToString(0)) CoroutineScope(Dispatchers.IO).launch { var size = 0L @@ -146,7 +146,7 @@ class ManageStorageFragment : PreferenceFragmentCompat(), Preference.OnPreferenc size += it.length() launch(Dispatchers.Main) { - summary = getString(R.string.settings_storage_usage, byteToString(size)) + summary = context.getString(R.string.settings_storage_usage, byteToString(size)) } } } @@ -159,14 +159,14 @@ class ManageStorageFragment : PreferenceFragmentCompat(), Preference.OnPreferenc val dir = DownloadManager.getInstance(context).downloadFolder - summary = getString(R.string.settings_storage_usage, byteToString(0)) + summary = context.getString(R.string.settings_storage_usage, byteToString(0)) job?.cancel() job = CoroutineScope(Dispatchers.IO).launch { var size = 0L dir.walk().forEach { launch(Dispatchers.Main) { - summary = getString(R.string.settings_storage_usage, byteToString(size)) + summary = context.getString(R.string.settings_storage_usage, byteToString(size)) } size += it.length() @@ -179,7 +179,7 @@ class ManageStorageFragment : PreferenceFragmentCompat(), Preference.OnPreferenc with(findPreference("clear_history")) { this ?: return@with - summary = getString(R.string.settings_clear_history_summary, histories.size) + summary = context.getString(R.string.settings_clear_history_summary, histories.size) onPreferenceClickListener = this@ManageStorageFragment }