Commit b2316165 authored by wanglei's avatar wanglei

...

parent fb7d4083
package com.base.scanqr.bean package com.base.scanqr.bean
open class ScanBean( open class ScanBean(
val scanType: String = "" val scanType: String = "",
) { ) {
var listContent: String = ""//用来排序用,这个内容用来展示列表名
var createTime = System.currentTimeMillis() var createTime = System.currentTimeMillis()
var isCreateOrScan: Boolean = true//create:true ; scan:false var isCreateOrScan: Boolean = true//create:true ; scan:false
} }
\ No newline at end of file
...@@ -3,7 +3,6 @@ package com.base.scanqr.bean ...@@ -3,7 +3,6 @@ package com.base.scanqr.bean
import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WIFI import com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WIFI
data class WifiUIBean( data class WifiUIBean(
var ssid: String = "", var ssid: String = "",
var bssid: String = "", var bssid: String = "",
......
...@@ -38,21 +38,19 @@ class HistoryAdapter : BaseQuickAdapter<ScanBean, CommonViewHolder>() { ...@@ -38,21 +38,19 @@ class HistoryAdapter : BaseQuickAdapter<ScanBean, CommonViewHolder>() {
KEY_WIFI -> { KEY_WIFI -> {
if (item is WifiUIBean) { if (item is WifiUIBean) {
binding.ivIcon.setImageResource(R.mipmap.h_wifi) binding.ivIcon.setImageResource(R.mipmap.h_wifi)
binding.tvDesc.text = item.ssid
} }
} }
KEY_TEXT -> { KEY_TEXT -> {
if (item is TextUIBean) { if (item is TextUIBean) {
binding.ivIcon.setImageResource(R.mipmap.h_text) binding.ivIcon.setImageResource(R.mipmap.h_text)
binding.tvDesc.text = item.content
} }
} }
KEY_EMAIL -> { KEY_EMAIL -> {
if (item is EmailUIBean) { if (item is EmailUIBean) {
binding.ivIcon.setImageResource(R.mipmap.h_email) binding.ivIcon.setImageResource(R.mipmap.h_email)
binding.tvDesc.text = item.address
} }
} }
...@@ -80,6 +78,7 @@ class HistoryAdapter : BaseQuickAdapter<ScanBean, CommonViewHolder>() { ...@@ -80,6 +78,7 @@ class HistoryAdapter : BaseQuickAdapter<ScanBean, CommonViewHolder>() {
} }
binding.tvDesc.text = item.listContent
binding.tvTime.text = formatTimeAgo(item.createTime) binding.tvTime.text = formatTimeAgo(item.createTime)
binding.flMore.setOnClickListener { binding.flMore.setOnClickListener {
moreAction?.invoke(it, item) moreAction?.invoke(it, item)
......
...@@ -15,8 +15,10 @@ import com.base.scanqr.ui.email.EmailCodeActivity ...@@ -15,8 +15,10 @@ import com.base.scanqr.ui.email.EmailCodeActivity
import com.base.scanqr.ui.text.TextCodeActivity import com.base.scanqr.ui.text.TextCodeActivity
import com.base.scanqr.ui.widget.DeleteQRDialog.showDeleteQRDialog import com.base.scanqr.ui.widget.DeleteQRDialog.showDeleteQRDialog
import com.base.scanqr.ui.widget.HistoryMoreDialog.showHistoryMoreDialog import com.base.scanqr.ui.widget.HistoryMoreDialog.showHistoryMoreDialog
import com.base.scanqr.ui.widget.SortByDialog.showSortByDialog
import com.base.scanqr.ui.wifi.WifiCodeActivity import com.base.scanqr.ui.wifi.WifiCodeActivity
import com.base.scanqr.utils.BarUtils import com.base.scanqr.utils.BarUtils
import com.base.scanqr.utils.LogEx
import com.google.gson.Gson import com.google.gson.Gson
...@@ -107,6 +109,16 @@ class HistoryFragment : BaseFragment<FragmentHistoryBinding>(FragmentHistoryBind ...@@ -107,6 +109,16 @@ class HistoryFragment : BaseFragment<FragmentHistoryBinding>(FragmentHistoryBind
} else { } else {
createUI() createUI()
} }
binding.llSort.setOnClickListener {
requireContext().showSortByDialog {
LogEx.logDebug(TAG, "sortType=$sortType aesOrDes=$aesOrDes")
if (tab == 0) {
scanUI()
} else {
createUI()
}
}
}
} }
...@@ -137,7 +149,7 @@ class HistoryFragment : BaseFragment<FragmentHistoryBinding>(FragmentHistoryBind ...@@ -137,7 +149,7 @@ class HistoryFragment : BaseFragment<FragmentHistoryBinding>(FragmentHistoryBind
val uiRefresh = { val uiRefresh = {
val createList = viewModel.historyList.filter { it.isCreateOrScan == isCreateOrScan } val createList = viewModel.historyList.filter { it.isCreateOrScan == isCreateOrScan }
binding.llEmpty.isVisible = createList.isEmpty() binding.llEmpty.isVisible = createList.isEmpty()
adapter?.submitList(createList) adapter?.submitList(sortList(createList))
} }
if (viewModel.dataRefreshFinish.get()) { if (viewModel.dataRefreshFinish.get()) {
uiRefresh.invoke() uiRefresh.invoke()
...@@ -150,9 +162,39 @@ class HistoryFragment : BaseFragment<FragmentHistoryBinding>(FragmentHistoryBind ...@@ -150,9 +162,39 @@ class HistoryFragment : BaseFragment<FragmentHistoryBinding>(FragmentHistoryBind
} }
} }
private fun sortList(createList: List<ScanBean>): List<ScanBean> {
if (sortType == SORT_NAME) {
return if (aesOrDes) {
createList.sortedBy { it.listContent }
} else {
createList.sortedByDescending { it.listContent }
}
}
if (sortType == SORT_TIME) {
return if (aesOrDes) {
createList.sortedBy { it.createTime }
} else {
createList.sortedByDescending { it.createTime }
}
}
if (sortType == SORT_TYPE) {
return if (aesOrDes) {
createList.sortedBy { it.scanType }
} else {
createList.sortedByDescending { it.scanType }
}
}
return createList
}
companion object { companion object {
var tab: Int = 0 //scan=0 create=1 var tab: Int = 0 //scan=0 create=1
var sort: Int = 0 val SORT_NAME = "sort_name"
val SORT_TIME = "sort_time"
val SORT_TYPE = "sort_type"
var sortType: String = SORT_NAME
var aesOrDes = true//aes :ture des:false
} }
} }
\ No newline at end of file
...@@ -23,8 +23,11 @@ class HistoryViewModel() : ViewModel() { ...@@ -23,8 +23,11 @@ class HistoryViewModel() : ViewModel() {
historyList.clear() historyList.clear()
val wifiList = SpJsonUtils.getSpJsonList<WifiUIBean>(FunctionUIBean.KEY_WIFI) val wifiList = SpJsonUtils.getSpJsonList<WifiUIBean>(FunctionUIBean.KEY_WIFI)
wifiList.forEach { it.listContent = it.ssid }
val textList = SpJsonUtils.getSpJsonList<TextUIBean>(FunctionUIBean.KEY_TEXT) val textList = SpJsonUtils.getSpJsonList<TextUIBean>(FunctionUIBean.KEY_TEXT)
textList.forEach { it.listContent = it.content }
val emailList = SpJsonUtils.getSpJsonList<EmailUIBean>(FunctionUIBean.KEY_EMAIL) val emailList = SpJsonUtils.getSpJsonList<EmailUIBean>(FunctionUIBean.KEY_EMAIL)
emailList.forEach { it.listContent = it.address }
historyList.addAll(wifiList) historyList.addAll(wifiList)
historyList.addAll(textList) historyList.addAll(textList)
......
...@@ -53,6 +53,7 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl ...@@ -53,6 +53,7 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
} }
private var cameraInit = AtomicBoolean(false) private var cameraInit = AtomicBoolean(false)
private fun initCamera() { private fun initCamera() {
if (cameraInit.get()) return if (cameraInit.get()) return
val hasFlash = requireContext().packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH) val hasFlash = requireContext().packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH)
...@@ -140,7 +141,6 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl ...@@ -140,7 +141,6 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
} }
} }
override fun onStop() { override fun onStop() {
super.onStop() super.onStop()
val activity = requireActivity() as MainActivity? val activity = requireActivity() as MainActivity?
...@@ -202,10 +202,8 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl ...@@ -202,10 +202,8 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
activity?.cameraUtils?.setZoomRate(zoomPair.second) activity?.cameraUtils?.setZoomRate(zoomPair.second)
binding.seekbar.progress = binding.seekbar.max binding.seekbar.progress = binding.seekbar.max
} }
} }
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
scanJump.set(false) scanJump.set(false)
......
package com.base.scanqr.ui.widget
import android.app.AlertDialog
import android.content.Context
import android.view.Gravity
import android.view.LayoutInflater
import com.base.scanqr.R
import com.base.scanqr.databinding.DialogSortByBinding
import com.base.scanqr.ui.main.HistoryFragment.Companion.SORT_NAME
import com.base.scanqr.ui.main.HistoryFragment.Companion.SORT_TIME
import com.base.scanqr.ui.main.HistoryFragment.Companion.SORT_TYPE
import com.base.scanqr.ui.main.HistoryFragment.Companion.aesOrDes
import com.base.scanqr.ui.main.HistoryFragment.Companion.sortType
object SortByDialog {
fun Context.showSortByDialog(dismissAction: () -> Unit) {
val dialog = AlertDialog.Builder(this).create()
val binding = DialogSortByBinding.inflate(LayoutInflater.from(this))
dialog.setView(binding.root)
dialog.setCanceledOnTouchOutside(false)
dialog.show()
val params = dialog.window?.attributes
// params?.width = resources.getDimensionPixelOffset(R.dimen.dp_320)
// params?.height = resources.getDimensionPixelOffset(R.dimen.dp_400)
params?.gravity = Gravity.CENTER
// params?.y = 50
dialog.window?.attributes = params
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
when (sortType) {
SORT_NAME -> {
binding.rg.check(R.id.rbName)
}
SORT_TIME -> {
binding.rg.check(R.id.rbTime)
}
SORT_TYPE -> {
binding.rg.check(R.id.rbType)
}
}
binding.rg.setOnCheckedChangeListener { group, checkedId ->
when (checkedId) {
R.id.rbName -> {
sortType = SORT_NAME
}
R.id.rbTime -> {
sortType = SORT_TIME
}
R.id.rbType -> {
sortType = SORT_TYPE
}
}
}
binding.tvAscending.setOnClickListener {
dialog.dismiss()
aesOrDes = true
}
binding.tvDescending.setOnClickListener {
dialog.dismiss()
aesOrDes = false
}
dialog.setOnDismissListener {
dismissAction.invoke()
}
}
}
\ No newline at end of file
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
android:layout_width="142dp" android:layout_width="142dp"
android:layout_height="44dp" android:layout_height="44dp"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
android:layout_marginStart="16dp"
android:background="@drawable/bg_6473f8_90" android:background="@drawable/bg_6473f8_90"
android:gravity="center" android:gravity="center"
android:text="@string/confirm" android:text="@string/confirm"
......
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
app:cardBackgroundColor="@color/white"
app:cardCornerRadius="10dp"
app:cardElevation="5dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="30dp"
android:text="Sort by"
android:textColor="@color/black"
android:textSize="19sp"
android:textStyle="bold" />
<RadioGroup
android:id="@+id/rg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:orientation="vertical"
android:paddingHorizontal="26dp">
<RadioButton
android:id="@+id/rbName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Name"
android:textColor="@color/black"
android:textSize="16sp"
tools:ignore="HardcodedText" />
<RadioButton
android:id="@+id/rbTime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Time"
android:textColor="@color/black"
android:textSize="16sp"
tools:ignore="HardcodedText" />
<RadioButton
android:id="@+id/rbType"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Type"
android:textColor="@color/black"
android:textSize="16sp"
tools:ignore="HardcodedText" />
</RadioGroup>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="24dp"
android:layout_marginBottom="24dp">
<TextView
android:id="@+id/tvAscending"
android:layout_width="142dp"
android:layout_height="44dp"
android:layout_gravity="center_vertical"
android:background="@drawable/bg_f8f8fa_90"
android:gravity="center"
android:text="Ascending"
android:textColor="#333333"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tvDescending"
android:layout_width="142dp"
android:layout_height="44dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="16dp"
android:background="@drawable/bg_6473f8_90"
android:gravity="center"
android:text="Descending"
android:textColor="@color/white"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
\ 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