Skip to content

Commit

Permalink
feat: integrate FilePickerSphere for folder selection, rename layout …
Browse files Browse the repository at this point in the history
…to avoid conflicts
  • Loading branch information
Ruan625Br committed Jan 30, 2024
1 parent d0435f5 commit 9e6bc61
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 46 deletions.
3 changes: 3 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,9 @@ dependencies {

//Baseline Profile
baselineProfile(project(":app:benchmark"))

//FilePickerSphere
implementation("com.github.Ruan625Br:FilePickerSphere:1.0.0")
}


Expand Down
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
android:requestRawExternalStorageAccess="true"
android:supportsRtl="true"
android:theme="@style/Theme.FileManager"
tools:replace="android:theme"
tools:targetApi="31">
<activity
android:name=".activity.SettingsActivity"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import com.bumptech.glide.Glide
import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.request.RequestOptions
import com.etb.filemanager.R
import com.etb.filemanager.databinding.FileItemBinding
import com.etb.filemanager.databinding.FileItemViewBinding
import com.etb.filemanager.files.extensions.createShapeModelBasedOnCornerFamilyPreference
import com.etb.filemanager.files.provider.archive.common.mime.MimeTypeUtil
import com.etb.filemanager.files.util.FileUtil
Expand Down Expand Up @@ -161,7 +161,7 @@ class FileModelAdapter(
}
}

private fun applyStyle(binding: FileItemBinding) {
private fun applyStyle(binding: FileItemViewBinding) {
if (Preferences.Interface.isEnabledRoundedCorners) {
mContext.let { ctx ->
binding.itemFile.radius = ctx.getDimension(R.dimen.corner_radius_base)
Expand All @@ -177,7 +177,7 @@ class FileModelAdapter(


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder = ViewHolder(
FileItemBinding.inflate(parent.context.layoutInflater, parent, false)
FileItemViewBinding.inflate(parent.context.layoutInflater, parent, false)
).apply {
applyStyle(binding)
binding.itemFile.background = CheckableItemBackground.create(binding.itemFile.context)
Expand Down Expand Up @@ -246,7 +246,7 @@ class FileModelAdapter(

}

private fun setVisibility(isDir: Boolean, mimeType: String?, binding: FileItemBinding) {
private fun setVisibility(isDir: Boolean, mimeType: String?, binding: FileItemViewBinding) {
val isMedia = mimeType?.isMimeTypeMedia() ?: false
val viewFileInformationOption = Preferences.Interface.viewFileInformationOption
val colorPrimary = mContext.getColorByAttr(com.google.android.material.R.attr.colorPrimary)
Expand Down Expand Up @@ -289,7 +289,7 @@ class FileModelAdapter(


private fun getIconByMimeType(
mimeType: String?, binding: FileItemBinding
mimeType: String?, binding: FileItemViewBinding
) {
val icFile = AppCompatResources.getDrawable(mContext, R.drawable.file_generic_icon)
val tint = getTintForIcons()
Expand All @@ -302,15 +302,15 @@ class FileModelAdapter(

}

private fun loadImage(path: String, binding: FileItemBinding) {
private fun loadImage(path: String, binding: FileItemViewBinding) {
val imageView = binding.iconFile

binding.iconFile.clearColorFilter()
Glide.with(mContext).load(path).diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
.override(50, 50).placeholder(R.drawable.ic_image).into(imageView)
}

private fun loadImageFromDirectory(binding: FileItemBinding) {
private fun loadImageFromDirectory(binding: FileItemViewBinding) {
val icFolder = AppCompatResources.getDrawable(mContext, R.drawable.ic_folder)!!
icFolder.setTint(getTintForIcons())
binding.iconFile.setColorFilter(getTintForIcons(), PorterDuff.Mode.SRC_IN)
Expand All @@ -335,7 +335,7 @@ class FileModelAdapter(
}


class ViewHolder(val binding: FileItemBinding) : RecyclerView.ViewHolder(binding.root)
class ViewHolder(val binding: FileItemViewBinding) : RecyclerView.ViewHolder(binding.root)

override fun clear() {
super.clear()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,18 @@
package com.etb.filemanager.settings.preference

import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.preference.Preference
import androidx.preference.SwitchPreferenceCompat
import com.etb.filemanager.R
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.textfield.TextInputEditText
import java.io.File

class BehaviorPreferences : PreferenceFragment(){
import com.jn.filepickersphere.filelist.common.mime.MimeType
import com.jn.filepickersphere.filepicker.FilePickerCallbacks
import com.jn.filepickersphere.filepicker.FilePickerSphereManager
import com.jn.filepickersphere.filepicker.style.FilePickerStyle
import com.jn.filepickersphere.models.FileModel
import com.jn.filepickersphere.models.FilePickerModel
import com.jn.filepickersphere.models.PickOptions

class BehaviorPreferences : PreferenceFragment() {
override fun getTitle(): Int {
return R.string.pref_behavior_title
}
Expand All @@ -27,53 +29,73 @@ class BehaviorPreferences : PreferenceFragment(){
preferenceManager.preferenceDataStore = SettingsDataStore()


val prefDefaultFolder = findPreference<Preference>("default_folder")
//Default folder
val prefDefaultFolder = findPreference<Preference>("default_folder")!!
val currentDefaultFolder = Preferences.Behavior.defaultFolder

prefDefaultFolder.summary = currentDefaultFolder
prefDefaultFolder.setOnPreferenceClickListener { _ ->

//Default folder
prefDefaultFolder!!.summary = currentDefaultFolder
val inflater = LayoutInflater.from(requireContext())
val dialogView = inflater.inflate(R.layout.layout_basic_dialog, null)
val eInputEditText = dialogView.findViewById<TextInputEditText>(R.id.eInputEditText)

val title = requireContext().getString(R.string.pref_behavior_set_default_folder_title)
prefDefaultFolder.setOnPreferenceClickListener { preference ->
val parent = dialogView.parent as? ViewGroup
parent?.removeView(dialogView)
eInputEditText.setText(currentDefaultFolder)

MaterialAlertDialogBuilder(requireContext())
.setTitle(title)
.setView(dialogView)
.setCancelable(false)
.setPositiveButton(getString(R.string.set)) { _, _ ->
val enteredText = eInputEditText.text.toString()
val path = File(enteredText)
if (enteredText != currentDefaultFolder && path.exists()){
preference.summary = enteredText
Preferences.Behavior.defaultFolder = enteredText
}

}.setNegativeButton(R.string.dialog_cancel) { _, _ ->
}.show()
selectFolder {
Preferences.Behavior.defaultFolder = it
prefDefaultFolder.summary = it
}
true

}

//Select file long click

val switchSelectFileLongClick = findPreference<SwitchPreferenceCompat>("select_file_long_click")
val switchSelectFileLongClick =
findPreference<SwitchPreferenceCompat>("select_file_long_click")
val selectFileLongClick = Preferences.Behavior.selectFileLongClick

switchSelectFileLongClick?.isChecked = selectFileLongClick

//Show fast scroll
val swShowFastScroll = findPreference<SwitchPreferenceCompat>(getString(R.string.pref_key_show_fast_scroll))
val swShowFastScroll =
findPreference<SwitchPreferenceCompat>(getString(R.string.pref_key_show_fast_scroll))
val isFastScrollEnabled = Preferences.Behavior.isFastScrollEnabled
swShowFastScroll?.isChecked = isFastScrollEnabled


}

private fun selectFolder(onSelectedFolder: (String) -> Unit) {

val defaultPath = requireContext().getString(R.string.default_pref_default_folder)
val model = FilePickerModel(
PickOptions(
mimeType = listOf(MimeType.DIRECTORY),
localOnly = false,
maxSelection = null
)
)
FilePickerSphereManager(
context = requireContext(), filePickerCallbacks = object : FilePickerCallbacks {
override fun onAllFilesSelected(files: List<FileModel>) {
val path = if (files.isEmpty()) defaultPath else files.first().path
onSelectedFolder(path)
}

override fun onFileSelectionChanged(file: FileModel, selected: Boolean) {

}

override fun onOpenFile(file: FileModel) {

}

override fun onSelectedFilesChanged(files: List<FileModel>) {

}

}, filePickerModel = model
).style(
FilePickerStyle(
appTheme = Preferences.Appearance.getAppTheme()
)
).picker()
}

}

File renamed without changes.
2 changes: 1 addition & 1 deletion app/src/main/res/layout/fragment_home.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
<androidx.recyclerview.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/file_item"
tools:listitem="@layout/file_item_view"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/recyclerView"
/>
Expand Down
1 change: 1 addition & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
maven("https://jitpack.io")
}
}
rootProject.name = "File Manager Sphere"
Expand Down

0 comments on commit 9e6bc61

Please sign in to comment.