Commit 7e5a143d authored by wanglei's avatar wanglei

...

parent 784df70b
...@@ -15,6 +15,13 @@ import com.base.datarecovery.activity.ResultActivity ...@@ -15,6 +15,13 @@ import com.base.datarecovery.activity.ResultActivity
import com.base.datarecovery.adapter.LargeFileAdapter import com.base.datarecovery.adapter.LargeFileAdapter
import com.base.datarecovery.ads.AdmobMaxHelper import com.base.datarecovery.ads.AdmobMaxHelper
import com.base.datarecovery.bean.ConstObject import com.base.datarecovery.bean.ConstObject
import com.base.datarecovery.bean.ConstObject.SELECT_FILE_ALL
import com.base.datarecovery.bean.ConstObject.SELECT_FILE_AUDIO
import com.base.datarecovery.bean.ConstObject.SELECT_FILE_DOCUMENT
import com.base.datarecovery.bean.ConstObject.SELECT_FILE_OTHER
import com.base.datarecovery.bean.ConstObject.SELECT_FILE_PICTURE
import com.base.datarecovery.bean.ConstObject.SELECT_FILE_VIDEO
import com.base.datarecovery.bean.MediaBean
import com.base.datarecovery.databinding.ActivityLargeFileBinding import com.base.datarecovery.databinding.ActivityLargeFileBinding
import com.base.datarecovery.help.BaseActivity import com.base.datarecovery.help.BaseActivity
import com.base.datarecovery.help.KotlinExt.toFormatSize import com.base.datarecovery.help.KotlinExt.toFormatSize
...@@ -25,6 +32,7 @@ import com.base.datarecovery.help.PermissionHelp.requestStorePermission ...@@ -25,6 +32,7 @@ import com.base.datarecovery.help.PermissionHelp.requestStorePermission
import com.base.datarecovery.view.DialogViews.showDeletePermanentlyDialog import com.base.datarecovery.view.DialogViews.showDeletePermanentlyDialog
import com.base.datarecovery.view.DialogViews.showExitFunctionDialog import com.base.datarecovery.view.DialogViews.showExitFunctionDialog
import com.base.datarecovery.view.DialogViews.showGerPermission import com.base.datarecovery.view.DialogViews.showGerPermission
import com.base.datarecovery.view.DialogViews.showLargeFileTypeDialog
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
...@@ -33,11 +41,14 @@ import java.io.File ...@@ -33,11 +41,14 @@ import java.io.File
class LargeFileActivity : BaseActivity<ActivityLargeFileBinding>() { class LargeFileActivity : BaseActivity<ActivityLargeFileBinding>() {
private lateinit var largeFileAdapter: LargeFileAdapter private lateinit var largeFileAdapter: LargeFileAdapter
private var largeData = listOf<MediaBean>()
override val binding: ActivityLargeFileBinding by lazy { override val binding: ActivityLargeFileBinding by lazy {
ActivityLargeFileBinding.inflate(layoutInflater) ActivityLargeFileBinding.inflate(layoutInflater)
} }
var selectType = SELECT_FILE_ALL
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun initView() { override fun initView() {
...@@ -83,6 +94,51 @@ class LargeFileActivity : BaseActivity<ActivityLargeFileBinding>() { ...@@ -83,6 +94,51 @@ class LargeFileActivity : BaseActivity<ActivityLargeFileBinding>() {
deleteFiles() deleteFiles()
} }
} }
binding.flFilter.setOnClickListener {
showLargeFileTypeDialog(selectType) { type ->
selectType = type
largeFileAdapter.setData(largeData.filter { selectFilter(it) })
}
}
}
private fun selectFilter(mediaBean: MediaBean): Boolean {
when (selectType) {
SELECT_FILE_ALL -> return true
SELECT_FILE_PICTURE -> {
return mediaBean.mimeType.contains("image")
}
SELECT_FILE_VIDEO -> {
return mediaBean.mimeType.contains("video")
}
SELECT_FILE_AUDIO -> {
return mediaBean.mimeType.contains("audio")
}
SELECT_FILE_DOCUMENT -> {
return mediaBean.mimeType.contains("pdf")
|| mediaBean.mimeType.contains("msword")
|| mediaBean.mimeType.contains("document")
|| mediaBean.mimeType.contains("excel")
|| mediaBean.mimeType.contains("sheet")
|| mediaBean.mimeType.contains("powerpoint")
|| mediaBean.mimeType.contains("presentation")
}
SELECT_FILE_OTHER -> {
return mediaBean.mimeType.contains("zip")
|| mediaBean.mimeType.contains("rar")
|| mediaBean.mimeType.contains("7z")
|| mediaBean.mimeType.contains("tar")
|| mediaBean.mimeType.contains("archive")
|| mediaBean.mimeType.contains("stream")
}
}
return false
} }
private fun deleteFiles() = lifecycleScope.launch(Dispatchers.IO) { private fun deleteFiles() = lifecycleScope.launch(Dispatchers.IO) {
...@@ -106,6 +162,7 @@ class LargeFileActivity : BaseActivity<ActivityLargeFileBinding>() { ...@@ -106,6 +162,7 @@ class LargeFileActivity : BaseActivity<ActivityLargeFileBinding>() {
private fun initData() = lifecycleScope.launch(Dispatchers.IO) { private fun initData() = lifecycleScope.launch(Dispatchers.IO) {
val beanList = getAllMedia { size -> size > 1024 * 1024 * 50 } val beanList = getAllMedia { size -> size > 1024 * 1024 * 50 }
launch(Dispatchers.Main) { launch(Dispatchers.Main) {
largeData = beanList
binding.ivEmpty.isVisible = beanList.isEmpty() binding.ivEmpty.isVisible = beanList.isEmpty()
largeFileAdapter.setData(beanList) largeFileAdapter.setData(beanList)
} }
......
...@@ -30,6 +30,13 @@ object ConstObject { ...@@ -30,6 +30,13 @@ object ConstObject {
const val SCAN_DOCUMENTS = 2 const val SCAN_DOCUMENTS = 2
const val SCAN_VIDEOS = 3 const val SCAN_VIDEOS = 3
const val SELECT_FILE_ALL = 0
const val SELECT_FILE_PICTURE = 1
const val SELECT_FILE_VIDEO = 2
const val SELECT_FILE_AUDIO = 3
const val SELECT_FILE_DOCUMENT = 4
const val SELECT_FILE_OTHER = 5
var ifAgreePrivacy = false var ifAgreePrivacy = false
get() { get() {
......
...@@ -28,17 +28,25 @@ import com.base.datarecovery.bean.ConstObject.RECOVERY_PHOTOS ...@@ -28,17 +28,25 @@ import com.base.datarecovery.bean.ConstObject.RECOVERY_PHOTOS
import com.base.datarecovery.bean.ConstObject.RECOVERY_VIDEOS import com.base.datarecovery.bean.ConstObject.RECOVERY_VIDEOS
import com.base.datarecovery.bean.ConstObject.REPEAT_PHOTOS import com.base.datarecovery.bean.ConstObject.REPEAT_PHOTOS
import com.base.datarecovery.bean.ConstObject.SCREENSHOT_CLEANER import com.base.datarecovery.bean.ConstObject.SCREENSHOT_CLEANER
import com.base.datarecovery.bean.ConstObject.SELECT_FILE_ALL
import com.base.datarecovery.bean.ConstObject.SELECT_FILE_AUDIO
import com.base.datarecovery.bean.ConstObject.SELECT_FILE_DOCUMENT
import com.base.datarecovery.bean.ConstObject.SELECT_FILE_OTHER
import com.base.datarecovery.bean.ConstObject.SELECT_FILE_PICTURE
import com.base.datarecovery.bean.ConstObject.SELECT_FILE_VIDEO
import com.base.datarecovery.databinding.DialogCameraSettingBinding import com.base.datarecovery.databinding.DialogCameraSettingBinding
import com.base.datarecovery.databinding.DialogDeletePermanentlyBinding import com.base.datarecovery.databinding.DialogDeletePermanentlyBinding
import com.base.datarecovery.databinding.DialogExitAppBinding import com.base.datarecovery.databinding.DialogExitAppBinding
import com.base.datarecovery.databinding.DialogExitFunctionBinding import com.base.datarecovery.databinding.DialogExitFunctionBinding
import com.base.datarecovery.databinding.DialogImageTakeBinding import com.base.datarecovery.databinding.DialogImageTakeBinding
import com.base.datarecovery.databinding.DialogLargeFileTypeBinding
import com.base.datarecovery.databinding.DialogPermissionBottomsheetBinding import com.base.datarecovery.databinding.DialogPermissionBottomsheetBinding
import com.base.datarecovery.databinding.DialogPermissonOpenBinding import com.base.datarecovery.databinding.DialogPermissonOpenBinding
import com.base.datarecovery.databinding.DialogRecoveringBinding import com.base.datarecovery.databinding.DialogRecoveringBinding
import com.base.datarecovery.databinding.DialogRemoveFileTipBinding import com.base.datarecovery.databinding.DialogRemoveFileTipBinding
import com.base.datarecovery.utils.AppPreferences import com.base.datarecovery.utils.AppPreferences
import com.base.datarecovery.utils.LogEx import com.base.datarecovery.utils.LogEx
import com.base.datarecovery.view.DialogViews.showExitDialog
import com.base.datarecovery.view.PermissionDialog.showPermissionBottomSheet import com.base.datarecovery.view.PermissionDialog.showPermissionBottomSheet
import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog
...@@ -324,4 +332,52 @@ object DialogViews { ...@@ -324,4 +332,52 @@ object DialogViews {
} }
} }
fun Context.showLargeFileTypeDialog(type: Int, click: (type: Int) -> Unit) {
val binding = DialogLargeFileTypeBinding.inflate(LayoutInflater.from(this))
val dialog = AlertDialog.Builder(this).create()
dialog.setView(binding.root)
// dialog.setCanceledOnTouchOutside(false)
// dialog.setCancelable(false)
dialog.show()
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
val lp: WindowManager.LayoutParams? = dialog.window?.attributes
lp?.gravity = Gravity.BOTTOM
lp?.width = ConstraintLayout.LayoutParams.MATCH_PARENT
dialog.window?.setAttributes(lp)
when (type) {
SELECT_FILE_ALL -> binding.flAllType.isSelected = true
SELECT_FILE_PICTURE -> binding.flPicture.isSelected = true
SELECT_FILE_VIDEO -> binding.flVideo.isSelected = true
SELECT_FILE_AUDIO -> binding.flAudio.isSelected = true
SELECT_FILE_DOCUMENT -> binding.flDocument.isSelected = true
SELECT_FILE_OTHER -> binding.flOther.isSelected = true
}
binding.flAllType.setOnClickListener {
dialog.dismiss()
click.invoke(SELECT_FILE_ALL)
}
binding.flPicture.setOnClickListener {
dialog.dismiss()
click.invoke(SELECT_FILE_PICTURE)
}
binding.flVideo.setOnClickListener {
dialog.dismiss()
click.invoke(SELECT_FILE_VIDEO)
}
binding.flAudio.setOnClickListener {
dialog.dismiss()
click.invoke(SELECT_FILE_AUDIO)
}
binding.flDocument.setOnClickListener {
dialog.dismiss()
click.invoke(SELECT_FILE_DOCUMENT)
}
binding.flOther.setOnClickListener {
dialog.dismiss()
click.invoke(SELECT_FILE_OTHER)
}
}
} }
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_ffffff_tlr10"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="22dp"
android:layout_marginTop="25dp"
android:text="Select type"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold"
tools:ignore="HardcodedText" />
<View
android:layout_width="match_parent"
android:layout_height="1px"
android:layout_marginTop="16dp"
android:background="#EEEEEE" />
<FrameLayout
android:id="@+id/fl_all_type"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginVertical="18dp"
android:layout_marginStart="22dp"
android:text="All types"
android:textColor="@color/black"
android:textSize="14sp"
tools:ignore="HardcodedText" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="22dp"
android:src="@drawable/bg_circle_selector"
tools:ignore="ContentDescription" />
</FrameLayout>
<FrameLayout
android:id="@+id/fl_picture"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginVertical="18dp"
android:layout_marginStart="22dp"
android:text="Picture"
android:textColor="@color/black"
android:textSize="14sp"
tools:ignore="HardcodedText" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="22dp"
android:src="@drawable/bg_circle_selector"
tools:ignore="ContentDescription" />
</FrameLayout>
<FrameLayout
android:id="@+id/fl_Video"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginVertical="18dp"
android:layout_marginStart="22dp"
android:text="Video"
android:textColor="@color/black"
android:textSize="14sp"
tools:ignore="HardcodedText" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="22dp"
android:src="@drawable/bg_circle_selector"
tools:ignore="ContentDescription" />
</FrameLayout>
<FrameLayout
android:id="@+id/fl_Audio"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginVertical="18dp"
android:layout_marginStart="22dp"
android:text="Audio"
android:textColor="@color/black"
android:textSize="14sp"
tools:ignore="HardcodedText" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="22dp"
android:src="@drawable/bg_circle_selector"
tools:ignore="ContentDescription" />
</FrameLayout>
<FrameLayout
android:id="@+id/fl_document"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginVertical="18dp"
android:layout_marginStart="22dp"
android:text="Document"
android:textColor="@color/black"
android:textSize="14sp"
tools:ignore="HardcodedText" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="22dp"
android:src="@drawable/bg_circle_selector"
tools:ignore="ContentDescription" />
</FrameLayout>
<FrameLayout
android:id="@+id/fl_other"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginVertical="18dp"
android:layout_marginStart="22dp"
android:text="Other types"
android:textColor="@color/black"
android:textSize="14sp"
tools:ignore="HardcodedText" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|end"
android:layout_marginEnd="22dp"
android:src="@drawable/bg_circle_selector"
tools:ignore="ContentDescription" />
</FrameLayout>
</LinearLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment