diff --git a/app/src/main/java/sushi/hardcore/droidfs/BaseActivity.kt b/app/src/main/java/sushi/hardcore/droidfs/BaseActivity.kt index aee1583..0d3b94b 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/BaseActivity.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/BaseActivity.kt @@ -14,7 +14,7 @@ open class BaseActivity: AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this) - themeValue = sharedPrefs.getString(ConstValues.THEME_VALUE_KEY, ConstValues.DEFAULT_THEME_VALUE)!! + themeValue = sharedPrefs.getString(Constants.THEME_VALUE_KEY, Constants.DEFAULT_THEME_VALUE)!! if (shouldCheckTheme && applyCustomTheme) { when (themeValue) { "black_green" -> setTheme(R.style.BlackGreen) diff --git a/app/src/main/java/sushi/hardcore/droidfs/ChangePasswordActivity.kt b/app/src/main/java/sushi/hardcore/droidfs/ChangePasswordActivity.kt index d4d0098..489261f 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/ChangePasswordActivity.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/ChangePasswordActivity.kt @@ -50,7 +50,7 @@ class ChangePasswordActivity: BaseActivity() { if (!usfFingerprint || fingerprintProtector == null) { binding.checkboxSavePassword.visibility = View.GONE } - if (sharedPrefs.getBoolean(ConstValues.PIN_PASSWORDS_KEY, false)) { + if (sharedPrefs.getBoolean(Constants.PIN_PASSWORDS_KEY, false)) { arrayOf(binding.editCurrentPassword, binding.editNewPassword, binding.editPasswordConfirm).forEach { it.inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD } diff --git a/app/src/main/java/sushi/hardcore/droidfs/ConstValues.kt b/app/src/main/java/sushi/hardcore/droidfs/ConstValues.kt deleted file mode 100644 index cbe96bb..0000000 --- a/app/src/main/java/sushi/hardcore/droidfs/ConstValues.kt +++ /dev/null @@ -1,48 +0,0 @@ -package sushi.hardcore.droidfs - -import android.net.Uri -import java.io.File - -object ConstValues { - const val VOLUME_DATABASE_NAME = "SavedVolumes" - const val CRYFS_LOCAL_STATE_DIR = "cryfsLocalState" - const val SORT_ORDER_KEY = "sort_order" - val FAKE_URI: Uri = Uri.parse("fakeuri://droidfs") - const val WIPE_PASSES = 2 - const val IO_BUFF_SIZE = 16384 - const val SLIDESHOW_DELAY: Long = 4000 - const val DEFAULT_THEME_VALUE = "dark_green" - const val THEME_VALUE_KEY = "theme" - const val DEFAULT_VOLUME_KEY = "default_volume" - const val REMEMBER_VOLUME_KEY = "remember_volume" - const val THUMBNAIL_MAX_SIZE_KEY = "thumbnail_max_size" - const val DEFAULT_THUMBNAIL_MAX_SIZE = 10_000L - const val PIN_PASSWORDS_KEY = "pin_passwords" - private val FILE_EXTENSIONS = mapOf( - Pair("image", listOf("png", "jpg", "jpeg", "gif", "webp", "bmp", "heic")), - Pair("video", listOf("mp4", "webm", "mkv", "mov")), - Pair("audio", listOf("mp3", "ogg", "m4a", "wav", "flac")), - Pair("pdf", listOf("pdf")), - Pair("text", listOf("txt", "json", "conf", "log", "xml", "java", "kt", "py", "pl", "rb", "go", "c", "h", "cpp", "hpp", "rs", "sh", "bat", "js", "html", "css", "php", "yml", "yaml", "toml", "ini", "md", "properties")) - ) - - fun isExtensionType(extensionType: String, path: String): Boolean { - return FILE_EXTENSIONS[extensionType]?.contains(File(path).extension.lowercase()) ?: false - } - - fun isImage(path: String): Boolean { - return isExtensionType("image", path) - } - fun isVideo(path: String): Boolean { - return isExtensionType("video", path) - } - fun isAudio(path: String): Boolean { - return isExtensionType("audio", path) - } - fun isPDF(path: String): Boolean { - return isExtensionType("pdf", path) - } - fun isText(path: String): Boolean { - return isExtensionType("text", path) - } -} \ No newline at end of file diff --git a/app/src/main/java/sushi/hardcore/droidfs/Constants.kt b/app/src/main/java/sushi/hardcore/droidfs/Constants.kt new file mode 100644 index 0000000..9e027a2 --- /dev/null +++ b/app/src/main/java/sushi/hardcore/droidfs/Constants.kt @@ -0,0 +1,20 @@ +package sushi.hardcore.droidfs + +import android.net.Uri + +object Constants { + const val VOLUME_DATABASE_NAME = "SavedVolumes" + const val CRYFS_LOCAL_STATE_DIR = "cryfsLocalState" + const val SORT_ORDER_KEY = "sort_order" + val FAKE_URI: Uri = Uri.parse("fakeuri://droidfs") + const val WIPE_PASSES = 2 + const val IO_BUFF_SIZE = 16384 + const val SLIDESHOW_DELAY: Long = 4000 + const val DEFAULT_THEME_VALUE = "dark_green" + const val THEME_VALUE_KEY = "theme" + const val DEFAULT_VOLUME_KEY = "default_volume" + const val REMEMBER_VOLUME_KEY = "remember_volume" + const val THUMBNAIL_MAX_SIZE_KEY = "thumbnail_max_size" + const val DEFAULT_THUMBNAIL_MAX_SIZE = 10_000L + const val PIN_PASSWORDS_KEY = "pin_passwords" +} \ No newline at end of file diff --git a/app/src/main/java/sushi/hardcore/droidfs/FileTypes.kt b/app/src/main/java/sushi/hardcore/droidfs/FileTypes.kt new file mode 100644 index 0000000..986574b --- /dev/null +++ b/app/src/main/java/sushi/hardcore/droidfs/FileTypes.kt @@ -0,0 +1,87 @@ +package sushi.hardcore.droidfs + +import java.io.File + +object FileTypes { + private val FILE_EXTENSIONS = mapOf( + Pair("image", listOf("png", "jpg", "jpeg", "gif", "webp", "bmp", "heic")), + Pair("video", listOf("mp4", "webm", "mkv", "mov")), + Pair("audio", listOf("mp3", "ogg", "m4a", "wav", "flac")), + Pair("pdf", listOf("pdf")), + Pair("text", listOf( + "asc", + "asm", + "awk", + "bash", + "c", + "cfg", + "conf", + "cpp", + "css", + "csv", + "desktop", + "dot", + "g4", + "go", + "gradle", + "h", + "hpp", + "hs", + "html", + "ini", + "java", + "js", + "json", + "kt", + "lisp", + "log", + "lua", + "markdown", + "md", + "mod", + "org", + "php", + "pl", + "pro", + "properties", + "py", + "qml", + "rb", + "rc", + "rs", + "sh", + "smali", + "sql", + "srt", + "tex", + "toml", + "ts", + "txt", + "vala", + "vim", + "xml", + "yaml", + "yml", + )) + ) + + fun isExtensionType(extensionType: String, path: String): Boolean { + return FILE_EXTENSIONS[extensionType]?.contains(File(path).extension.lowercase()) ?: false + } + + fun isImage(path: String): Boolean { + return isExtensionType("image", path) + } + fun isVideo(path: String): Boolean { + return isExtensionType("video", path) + } + fun isAudio(path: String): Boolean { + return isExtensionType("audio", path) + } + fun isPDF(path: String): Boolean { + return isExtensionType("pdf", path) + } + fun isText(path: String): Boolean { + return isExtensionType("text", path) + } +} \ No newline at end of file diff --git a/app/src/main/java/sushi/hardcore/droidfs/MainActivity.kt b/app/src/main/java/sushi/hardcore/droidfs/MainActivity.kt index d4e2c79..faa8f59 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/MainActivity.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/MainActivity.kt @@ -17,7 +17,7 @@ import androidx.documentfile.provider.DocumentFile import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.coroutines.launch -import sushi.hardcore.droidfs.ConstValues.DEFAULT_VOLUME_KEY +import sushi.hardcore.droidfs.Constants.DEFAULT_VOLUME_KEY import sushi.hardcore.droidfs.adapters.VolumeAdapter import sushi.hardcore.droidfs.add_volume.AddVolumeActivity import sushi.hardcore.droidfs.content_providers.RestrictedFileProvider @@ -137,7 +137,7 @@ class MainActivity : BaseActivity(), VolumeAdapter.Listener { override fun onStart() { super.onStart() // refresh theme if changed in SettingsActivity - val newThemeValue = sharedPrefs.getString(ConstValues.THEME_VALUE_KEY, ConstValues.DEFAULT_THEME_VALUE)!! + val newThemeValue = sharedPrefs.getString(Constants.THEME_VALUE_KEY, Constants.DEFAULT_THEME_VALUE)!! onThemeChanged(newThemeValue) volumeOpener.themeValue = newThemeValue volumeAdapter.refresh() diff --git a/app/src/main/java/sushi/hardcore/droidfs/SettingsActivity.kt b/app/src/main/java/sushi/hardcore/droidfs/SettingsActivity.kt index 7995834..29b0b2a 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/SettingsActivity.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/SettingsActivity.kt @@ -60,7 +60,7 @@ class SettingsActivity : BaseActivity() { showMaxSizeDialog() } else { with(sharedPrefs.edit()) { - putLong(ConstValues.THUMBNAIL_MAX_SIZE_KEY, value) + putLong(Constants.THUMBNAIL_MAX_SIZE_KEY, value) apply() } maxSizePreference.summary = PathUtils.formatSize(size) @@ -82,16 +82,16 @@ class SettingsActivity : BaseActivity() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.root_preferences, rootKey) sharedPrefs = PreferenceManager.getDefaultSharedPreferences(requireContext()) - findPreference(ConstValues.THEME_VALUE_KEY)?.setOnPreferenceChangeListener { _, newValue -> + findPreference(Constants.THEME_VALUE_KEY)?.setOnPreferenceChangeListener { _, newValue -> (activity as BaseActivity).onThemeChanged(newValue as String) true } - findPreference(ConstValues.THUMBNAIL_MAX_SIZE_KEY)?.let { + findPreference(Constants.THUMBNAIL_MAX_SIZE_KEY)?.let { maxSizePreference = it maxSizePreference.summary = getString( R.string.thumbnail_max_size_summary, PathUtils.formatSize(sharedPrefs.getLong( - ConstValues.THUMBNAIL_MAX_SIZE_KEY, ConstValues.DEFAULT_THUMBNAIL_MAX_SIZE + Constants.THUMBNAIL_MAX_SIZE_KEY, Constants.DEFAULT_THUMBNAIL_MAX_SIZE )*1000) ) maxSizePreference.setOnPreferenceClickListener { diff --git a/app/src/main/java/sushi/hardcore/droidfs/VolumeDatabase.kt b/app/src/main/java/sushi/hardcore/droidfs/VolumeDatabase.kt index 6ad279a..0ce0286 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/VolumeDatabase.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/VolumeDatabase.kt @@ -10,7 +10,7 @@ import sushi.hardcore.droidfs.filesystems.EncryptedVolume import sushi.hardcore.droidfs.util.PathUtils import java.io.File -class VolumeDatabase(private val context: Context): SQLiteOpenHelper(context, ConstValues.VOLUME_DATABASE_NAME, null, 4) { +class VolumeDatabase(private val context: Context): SQLiteOpenHelper(context, Constants.VOLUME_DATABASE_NAME, null, 4) { companion object { const val TABLE_NAME = "Volumes" const val COLUMN_NAME = "name" diff --git a/app/src/main/java/sushi/hardcore/droidfs/VolumeOpener.kt b/app/src/main/java/sushi/hardcore/droidfs/VolumeOpener.kt index bdc114c..77d9d49 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/VolumeOpener.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/VolumeOpener.kt @@ -9,7 +9,7 @@ import android.widget.Toast import androidx.fragment.app.FragmentActivity import androidx.lifecycle.lifecycleScope import androidx.preference.PreferenceManager -import sushi.hardcore.droidfs.ConstValues.DEFAULT_VOLUME_KEY +import sushi.hardcore.droidfs.Constants.DEFAULT_VOLUME_KEY import sushi.hardcore.droidfs.databinding.DialogOpenVolumeBinding import sushi.hardcore.droidfs.filesystems.EncryptedVolume import sushi.hardcore.droidfs.util.ObjRef @@ -28,7 +28,7 @@ class VolumeOpener( private val volumeDatabase = VolumeDatabase(activity) private var fingerprintProtector: FingerprintProtector? = null private val sharedPrefs = PreferenceManager.getDefaultSharedPreferences(activity) - var themeValue = sharedPrefs.getString(ConstValues.THEME_VALUE_KEY, ConstValues.DEFAULT_THEME_VALUE)!! + var themeValue = sharedPrefs.getString(Constants.THEME_VALUE_KEY, Constants.DEFAULT_THEME_VALUE)!! var defaultVolumeName: String? = sharedPrefs.getString(DEFAULT_VOLUME_KEY, null) private var dialogBinding: DialogOpenVolumeBinding? = null @@ -148,7 +148,7 @@ class VolumeOpener( onPasswordSubmitted(volume, isVolumeSaved, callbacks) true } - if (sharedPrefs.getBoolean(ConstValues.PIN_PASSWORDS_KEY, false)) { + if (sharedPrefs.getBoolean(Constants.PIN_PASSWORDS_KEY, false)) { inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_PASSWORD } } diff --git a/app/src/main/java/sushi/hardcore/droidfs/adapters/ExplorerElementAdapter.kt b/app/src/main/java/sushi/hardcore/droidfs/adapters/ExplorerElementAdapter.kt index 79d4ac0..aa07fcc 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/adapters/ExplorerElementAdapter.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/adapters/ExplorerElementAdapter.kt @@ -16,7 +16,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.request.target.DrawableImageViewTarget import com.bumptech.glide.request.transition.Transition import kotlinx.coroutines.* -import sushi.hardcore.droidfs.ConstValues +import sushi.hardcore.droidfs.FileTypes import sushi.hardcore.droidfs.R import sushi.hardcore.droidfs.explorers.ExplorerElement import sushi.hardcore.droidfs.filesystems.EncryptedVolume @@ -173,17 +173,17 @@ class ExplorerElementAdapter( override fun bind(explorerElement: ExplorerElement, position: Int, isSelected: Boolean) { super.bind(explorerElement, position, isSelected) when { - ConstValues.isImage(explorerElement.name) -> { + FileTypes.isImage(explorerElement.name) -> { setThumbnailOrDefaultIcon(explorerElement.fullPath, R.drawable.icon_file_image) } - ConstValues.isVideo(explorerElement.name) -> { + FileTypes.isVideo(explorerElement.name) -> { setThumbnailOrDefaultIcon(explorerElement.fullPath, R.drawable.icon_file_video) } else -> icon.setImageResource( when { - ConstValues.isText(explorerElement.name) -> R.drawable.icon_file_text - ConstValues.isPDF(explorerElement.name) -> R.drawable.icon_file_pdf - ConstValues.isAudio(explorerElement.name) -> R.drawable.icon_file_audio + FileTypes.isText(explorerElement.name) -> R.drawable.icon_file_text + FileTypes.isPDF(explorerElement.name) -> R.drawable.icon_file_pdf + FileTypes.isAudio(explorerElement.name) -> R.drawable.icon_file_audio else -> R.drawable.icon_file_unknown } ) diff --git a/app/src/main/java/sushi/hardcore/droidfs/add_volume/AddVolumeActivity.kt b/app/src/main/java/sushi/hardcore/droidfs/add_volume/AddVolumeActivity.kt index dc5fb9c..4e8360b 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/add_volume/AddVolumeActivity.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/add_volume/AddVolumeActivity.kt @@ -99,7 +99,7 @@ class AddVolumeActivity: BaseActivity() { volumePath, isHidden, rememberVolume, - sharedPrefs.getBoolean(ConstValues.PIN_PASSWORDS_KEY, false), + sharedPrefs.getBoolean(Constants.PIN_PASSWORDS_KEY, false), sharedPrefs.getBoolean("usf_fingerprint", false), ) ) diff --git a/app/src/main/java/sushi/hardcore/droidfs/add_volume/CreateVolumeFragment.kt b/app/src/main/java/sushi/hardcore/droidfs/add_volume/CreateVolumeFragment.kt index 0752c1b..57d9994 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/add_volume/CreateVolumeFragment.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/add_volume/CreateVolumeFragment.kt @@ -30,7 +30,7 @@ class CreateVolumeFragment: Fragment() { private const val KEY_VOLUME_PATH = "path" private const val KEY_IS_HIDDEN = "hidden" private const val KEY_REMEMBER_VOLUME = "remember" - private const val KEY_PIN_PASSWORDS = ConstValues.PIN_PASSWORDS_KEY + private const val KEY_PIN_PASSWORDS = Constants.PIN_PASSWORDS_KEY private const val KEY_USF_FINGERPRINT = "fingerprint" fun newInstance( @@ -55,7 +55,7 @@ class CreateVolumeFragment: Fragment() { } private lateinit var binding: FragmentCreateVolumeBinding - private var themeValue = ConstValues.DEFAULT_THEME_VALUE + private var themeValue = Constants.DEFAULT_THEME_VALUE private val volumeTypes = ArrayList(2) private lateinit var volumePath: String private var isHiddenVolume: Boolean = false diff --git a/app/src/main/java/sushi/hardcore/droidfs/add_volume/SelectPathFragment.kt b/app/src/main/java/sushi/hardcore/droidfs/add_volume/SelectPathFragment.kt index 0307419..bfe1820 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/add_volume/SelectPathFragment.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/add_volume/SelectPathFragment.kt @@ -20,7 +20,7 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.preference.PreferenceManager -import sushi.hardcore.droidfs.ConstValues +import sushi.hardcore.droidfs.Constants import sushi.hardcore.droidfs.R import sushi.hardcore.droidfs.VolumeData import sushi.hardcore.droidfs.VolumeDatabase @@ -62,7 +62,7 @@ class SelectPathFragment: Fragment() { if (uri != null) onDirectoryPicked(uri) } - private var themeValue = ConstValues.DEFAULT_THEME_VALUE + private var themeValue = Constants.DEFAULT_THEME_VALUE private lateinit var volumeDatabase: VolumeDatabase private lateinit var filesDir: String private lateinit var sharedPrefs: SharedPreferences @@ -82,7 +82,7 @@ class SelectPathFragment: Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { sharedPrefs = PreferenceManager.getDefaultSharedPreferences(requireContext()) - originalRememberVolume = sharedPrefs.getBoolean(ConstValues.REMEMBER_VOLUME_KEY, true) + originalRememberVolume = sharedPrefs.getBoolean(Constants.REMEMBER_VOLUME_KEY, true) binding.switchRemember.isChecked = originalRememberVolume arguments?.let { arguments -> arguments.getString(KEY_THEME_VALUE)?.let { themeValue = it } @@ -229,7 +229,7 @@ class SelectPathFragment: Fragment() { private fun onPathSelected() { if (binding.switchRemember.isChecked != originalRememberVolume) { with(sharedPrefs.edit()) { - putBoolean(ConstValues.REMEMBER_VOLUME_KEY, binding.switchRemember.isChecked) + putBoolean(Constants.REMEMBER_VOLUME_KEY, binding.switchRemember.isChecked) apply() } } diff --git a/app/src/main/java/sushi/hardcore/droidfs/explorers/BaseExplorerActivity.kt b/app/src/main/java/sushi/hardcore/droidfs/explorers/BaseExplorerActivity.kt index 856ab0b..66e807b 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/explorers/BaseExplorerActivity.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/explorers/BaseExplorerActivity.kt @@ -23,12 +23,8 @@ import androidx.recyclerview.widget.RecyclerView import androidx.swiperefreshlayout.widget.SwipeRefreshLayout import kotlinx.coroutines.* import sushi.hardcore.droidfs.BaseActivity -import sushi.hardcore.droidfs.ConstValues -import sushi.hardcore.droidfs.ConstValues.isAudio -import sushi.hardcore.droidfs.ConstValues.isImage -import sushi.hardcore.droidfs.ConstValues.isPDF -import sushi.hardcore.droidfs.ConstValues.isText -import sushi.hardcore.droidfs.ConstValues.isVideo +import sushi.hardcore.droidfs.Constants +import sushi.hardcore.droidfs.FileTypes import sushi.hardcore.droidfs.R import sushi.hardcore.droidfs.adapters.ExplorerElementAdapter import sushi.hardcore.droidfs.adapters.OpenAsDialogAdapter @@ -88,7 +84,7 @@ open class BaseExplorerActivity : BaseActivity(), ExplorerElementAdapter.Listene sortOrderValues = resources.getStringArray(R.array.sort_orders_values) foldersFirst = sharedPrefs.getBoolean("folders_first", true) mapFolders = sharedPrefs.getBoolean("map_folders", true) - currentSortOrderIndex = resources.getStringArray(R.array.sort_orders_values).indexOf(sharedPrefs.getString(ConstValues.SORT_ORDER_KEY, "name")) + currentSortOrderIndex = resources.getStringArray(R.array.sort_orders_values).indexOf(sharedPrefs.getString(Constants.SORT_ORDER_KEY, "name")) init() recycler_view_explorer = findViewById(R.id.recycler_view_explorer) refresher = findViewById(R.id.refresher) @@ -112,7 +108,7 @@ open class BaseExplorerActivity : BaseActivity(), ExplorerElementAdapter.Listene null }, this, - sharedPrefs.getLong(ConstValues.THUMBNAIL_MAX_SIZE_KEY, ConstValues.DEFAULT_THUMBNAIL_MAX_SIZE)*1000, + sharedPrefs.getLong(Constants.THUMBNAIL_MAX_SIZE_KEY, Constants.DEFAULT_THUMBNAIL_MAX_SIZE)*1000, ) explorerViewModel = ViewModelProvider(this).get(ExplorerViewModel::class.java) currentDirectoryPath = explorerViewModel.currentDirectoryPath @@ -233,19 +229,19 @@ open class BaseExplorerActivity : BaseActivity(), ExplorerElementAdapter.Listene explorerElements[position].isParentFolder -> { setCurrentPath(PathUtils.getParentPath(currentDirectoryPath)) } - isImage(fullPath) -> { + FileTypes.isImage(fullPath) -> { startFileViewer(ImageViewer::class.java, fullPath) } - isVideo(fullPath) -> { + FileTypes.isVideo(fullPath) -> { startFileViewer(VideoPlayer::class.java, fullPath) } - isText(fullPath) -> { + FileTypes.isText(fullPath) -> { startFileViewer(TextEditor::class.java, fullPath) } - isPDF(fullPath) -> { + FileTypes.isPDF(fullPath) -> { startFileViewer(PdfViewer::class.java, fullPath) } - isAudio(fullPath) -> { + FileTypes.isAudio(fullPath) -> { startFileViewer(AudioPlayer::class.java, fullPath) } else -> showOpenAsDialog(fullPath) @@ -271,7 +267,7 @@ open class BaseExplorerActivity : BaseActivity(), ExplorerElementAdapter.Listene unselectAll(false) explorerAdapter.explorerElements = explorerElements val sharedPrefsEditor = sharedPrefs.edit() - sharedPrefsEditor.putString(ConstValues.SORT_ORDER_KEY, sortOrderValues[currentSortOrderIndex]) + sharedPrefsEditor.putString(Constants.SORT_ORDER_KEY, sortOrderValues[currentSortOrderIndex]) sharedPrefsEditor.apply() } diff --git a/app/src/main/java/sushi/hardcore/droidfs/file_operations/FileOperationService.kt b/app/src/main/java/sushi/hardcore/droidfs/file_operations/FileOperationService.kt index 6ce88b1..4f37d49 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/file_operations/FileOperationService.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/file_operations/FileOperationService.kt @@ -14,7 +14,7 @@ import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import androidx.documentfile.provider.DocumentFile import kotlinx.coroutines.* -import sushi.hardcore.droidfs.ConstValues +import sushi.hardcore.droidfs.Constants import sushi.hardcore.droidfs.R import sushi.hardcore.droidfs.explorers.ExplorerElement import sushi.hardcore.droidfs.filesystems.EncryptedVolume @@ -130,7 +130,7 @@ class FileOperationService : Service() { val dstFileHandle = encryptedVolume.openFile(dstPath) if (dstFileHandle != -1L) { var offset: Long = 0 - val ioBuffer = ByteArray(ConstValues.IO_BUFF_SIZE) + val ioBuffer = ByteArray(Constants.IO_BUFF_SIZE) var length: Long while (remoteEncryptedVolume.read(srcFileHandle, offset, ioBuffer, 0, ioBuffer.size.toLong()).also { length = it.toLong() } > 0) { val written = encryptedVolume.write(dstFileHandle, offset, ioBuffer, 0, length).toLong() diff --git a/app/src/main/java/sushi/hardcore/droidfs/file_viewers/EncryptedVolumeDataSource.kt b/app/src/main/java/sushi/hardcore/droidfs/file_viewers/EncryptedVolumeDataSource.kt index f4e59ca..dd21c2f 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/file_viewers/EncryptedVolumeDataSource.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/file_viewers/EncryptedVolumeDataSource.kt @@ -5,7 +5,7 @@ import com.google.android.exoplayer2.C import com.google.android.exoplayer2.upstream.DataSource import com.google.android.exoplayer2.upstream.DataSpec import com.google.android.exoplayer2.upstream.TransferListener -import sushi.hardcore.droidfs.ConstValues +import sushi.hardcore.droidfs.Constants import sushi.hardcore.droidfs.filesystems.EncryptedVolume import kotlin.math.min @@ -27,7 +27,7 @@ class EncryptedVolumeDataSource(private val encryptedVolume: EncryptedVolume, pr } override fun getUri(): Uri { - return ConstValues.FAKE_URI + return Constants.FAKE_URI } override fun close() { diff --git a/app/src/main/java/sushi/hardcore/droidfs/file_viewers/FileViewerActivity.kt b/app/src/main/java/sushi/hardcore/droidfs/file_viewers/FileViewerActivity.kt index 610386c..2af9f00 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/file_viewers/FileViewerActivity.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/file_viewers/FileViewerActivity.kt @@ -12,7 +12,7 @@ import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import sushi.hardcore.droidfs.BaseActivity -import sushi.hardcore.droidfs.ConstValues +import sushi.hardcore.droidfs.FileTypes import sushi.hardcore.droidfs.R import sushi.hardcore.droidfs.content_providers.RestrictedFileProvider import sushi.hardcore.droidfs.explorers.ExplorerElement @@ -116,7 +116,7 @@ abstract class FileViewerActivity: BaseActivity() { encryptedVolume.recursiveMapFiles(originalParentPath)?.let { elements -> for (e in elements) { if (e.isRegularFile) { - if (ConstValues.isExtensionType(getFileType(), e.name) || filePath == e.fullPath) { + if (FileTypes.isExtensionType(getFileType(), e.name) || filePath == e.fullPath) { mappedPlaylist.add(e) } } diff --git a/app/src/main/java/sushi/hardcore/droidfs/file_viewers/ImageViewer.kt b/app/src/main/java/sushi/hardcore/droidfs/file_viewers/ImageViewer.kt index b6ed103..e65d578 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/file_viewers/ImageViewer.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/file_viewers/ImageViewer.kt @@ -14,7 +14,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.RequestBuilder import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool import com.bumptech.glide.load.resource.bitmap.BitmapTransformation -import sushi.hardcore.droidfs.ConstValues +import sushi.hardcore.droidfs.Constants import sushi.hardcore.droidfs.R import sushi.hardcore.droidfs.databinding.ActivityImageViewerBinding import sushi.hardcore.droidfs.widgets.CustomAlertDialogBuilder @@ -120,7 +120,7 @@ class ImageViewer: FileViewerActivity() { binding.imageButtonSlideshow.setOnClickListener { if (!slideshowActive){ slideshowActive = true - handler.postDelayed(slideshowNext, ConstValues.SLIDESHOW_DELAY) + handler.postDelayed(slideshowNext, Constants.SLIDESHOW_DELAY) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) hideUI.run() Toast.makeText(this, R.string.slideshow_started, Toast.LENGTH_SHORT).show() @@ -187,7 +187,7 @@ class ImageViewer: FileViewerActivity() { if (!slideshowSwipe) { //reset slideshow delay if user swipes handler.removeCallbacks(slideshowNext) } - handler.postDelayed(slideshowNext, ConstValues.SLIDESHOW_DELAY) + handler.postDelayed(slideshowNext, Constants.SLIDESHOW_DELAY) } } diff --git a/app/src/main/java/sushi/hardcore/droidfs/file_viewers/MediaPlayer.kt b/app/src/main/java/sushi/hardcore/droidfs/file_viewers/MediaPlayer.kt index 7dc3989..a4be14b 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/file_viewers/MediaPlayer.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/file_viewers/MediaPlayer.kt @@ -6,7 +6,7 @@ import com.google.android.exoplayer2.extractor.DefaultExtractorsFactory import com.google.android.exoplayer2.source.MediaSource import com.google.android.exoplayer2.source.ProgressiveMediaSource import com.google.android.exoplayer2.video.VideoSize -import sushi.hardcore.droidfs.ConstValues +import sushi.hardcore.droidfs.Constants import sushi.hardcore.droidfs.R import sushi.hardcore.droidfs.widgets.CustomAlertDialogBuilder import java.io.File @@ -27,7 +27,7 @@ abstract class MediaPlayer: FileViewerActivity() { private fun createMediaSource(filePath: String): MediaSource { val dataSourceFactory = EncryptedVolumeDataSource.Factory(encryptedVolume, filePath) return ProgressiveMediaSource.Factory(dataSourceFactory, DefaultExtractorsFactory()) - .createMediaSource(MediaItem.fromUri(ConstValues.FAKE_URI)) + .createMediaSource(MediaItem.fromUri(Constants.FAKE_URI)) } private fun initializePlayer(){ diff --git a/app/src/main/java/sushi/hardcore/droidfs/filesystems/CryfsVolume.kt b/app/src/main/java/sushi/hardcore/droidfs/filesystems/CryfsVolume.kt index c679810..9b5f9e2 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/filesystems/CryfsVolume.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/filesystems/CryfsVolume.kt @@ -1,7 +1,7 @@ package sushi.hardcore.droidfs.filesystems import android.os.Parcel -import sushi.hardcore.droidfs.ConstValues +import sushi.hardcore.droidfs.Constants import sushi.hardcore.droidfs.explorers.ExplorerElement import sushi.hardcore.droidfs.util.ObjRef import sushi.hardcore.droidfs.util.PathUtils @@ -47,7 +47,7 @@ class CryfsVolume(private val fusePtr: Long): EncryptedVolume() { private external fun nativeIsClosed(fusePtr: Long): Boolean fun getLocalStateDir(filesDir: String): String { - return PathUtils.pathJoin(filesDir, ConstValues.CRYFS_LOCAL_STATE_DIR) + return PathUtils.pathJoin(filesDir, Constants.CRYFS_LOCAL_STATE_DIR) } private fun init( diff --git a/app/src/main/java/sushi/hardcore/droidfs/filesystems/EncryptedVolume.kt b/app/src/main/java/sushi/hardcore/droidfs/filesystems/EncryptedVolume.kt index db06975..aa3a533 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/filesystems/EncryptedVolume.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/filesystems/EncryptedVolume.kt @@ -4,7 +4,7 @@ import android.content.Context import android.net.Uri import android.os.Parcel import android.os.Parcelable -import sushi.hardcore.droidfs.ConstValues +import sushi.hardcore.droidfs.Constants import sushi.hardcore.droidfs.VolumeData import sushi.hardcore.droidfs.explorers.ExplorerElement import sushi.hardcore.droidfs.util.ObjRef @@ -94,7 +94,7 @@ abstract class EncryptedVolume: Parcelable { fun exportFile(fileHandle: Long, os: OutputStream): Boolean { var offset: Long = 0 - val ioBuffer = ByteArray(ConstValues.IO_BUFF_SIZE) + val ioBuffer = ByteArray(Constants.IO_BUFF_SIZE) var length: Int while (read(fileHandle, offset, ioBuffer, 0, ioBuffer.size.toLong()).also { length = it } > 0) { os.write(ioBuffer, 0, length) @@ -131,7 +131,7 @@ abstract class EncryptedVolume: Parcelable { if (dstfileHandle != -1L) { var success = true var offset: Long = 0 - val ioBuffer = ByteArray(ConstValues.IO_BUFF_SIZE) + val ioBuffer = ByteArray(Constants.IO_BUFF_SIZE) var length: Long while (inputStream.read(ioBuffer).also { length = it.toLong() } > 0) { val written = write(dstfileHandle, offset, ioBuffer, 0, length).toLong() diff --git a/app/src/main/java/sushi/hardcore/droidfs/util/Wiper.kt b/app/src/main/java/sushi/hardcore/droidfs/util/Wiper.kt index 6be6f0c..a6f36ba 100644 --- a/app/src/main/java/sushi/hardcore/droidfs/util/Wiper.kt +++ b/app/src/main/java/sushi/hardcore/droidfs/util/Wiper.kt @@ -4,7 +4,7 @@ import android.content.Context import android.net.Uri import android.provider.OpenableColumns import androidx.documentfile.provider.DocumentFile -import sushi.hardcore.droidfs.ConstValues +import sushi.hardcore.droidfs.Constants import sushi.hardcore.droidfs.R import java.io.File import java.io.FileOutputStream @@ -25,11 +25,11 @@ object Wiper { val buff = ByteArray(buff_size) Arrays.fill(buff, 0.toByte()) val writes = ceil(size.toDouble() / buff_size).toInt() - for (i in 0 until ConstValues.WIPE_PASSES) { + for (i in 0 until Constants.WIPE_PASSES) { for (j in 0 until writes) { os.write(buff) } - if (i < ConstValues.WIPE_PASSES - 1) { + if (i < Constants.WIPE_PASSES - 1) { //reopening to flush and seek os.close() os = context.contentResolver.openOutputStream(uri)!! @@ -57,11 +57,11 @@ object Wiper { val buff = ByteArray(buff_size) Arrays.fill(buff, 0.toByte()) val writes = ceil(size.toDouble() / buff_size).toInt() - for (i in 0 until ConstValues.WIPE_PASSES) { + for (i in 0 until Constants.WIPE_PASSES) { for (j in 0 until writes) { os.write(buff) } - if (i < ConstValues.WIPE_PASSES - 1) { + if (i < Constants.WIPE_PASSES - 1) { //reopening to flush and seek os.close() os = FileOutputStream(file)