Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
Scan QR Code Barcode Reader
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
Scan QR Code Barcode Reader
Commits
b2316165
Commit
b2316165
authored
Dec 25, 2024
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
fb7d4083
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
229 additions
and
10 deletions
+229
-10
ScanBean.kt
app/src/main/java/com/base/scanqr/bean/ScanBean.kt
+2
-1
WifiUIBean.kt
app/src/main/java/com/base/scanqr/bean/WifiUIBean.kt
+0
-1
HistoryAdapter.kt
app/src/main/java/com/base/scanqr/ui/main/HistoryAdapter.kt
+2
-3
HistoryFragment.kt
app/src/main/java/com/base/scanqr/ui/main/HistoryFragment.kt
+44
-2
HistoryViewModel.kt
...src/main/java/com/base/scanqr/ui/main/HistoryViewModel.kt
+3
-0
ScanFragment.kt
app/src/main/java/com/base/scanqr/ui/main/ScanFragment.kt
+1
-3
SortByDialog.kt
app/src/main/java/com/base/scanqr/ui/widget/SortByDialog.kt
+76
-0
dialog_input_name.xml
app/src/main/res/layout/dialog_input_name.xml
+1
-0
dialog_sort_by.xml
app/src/main/res/layout/dialog_sort_by.xml
+100
-0
No files found.
app/src/main/java/com/base/scanqr/bean/ScanBean.kt
View file @
b2316165
package
com.base.scanqr.bean
open
class
ScanBean
(
val
scanType
:
String
=
""
val
scanType
:
String
=
""
,
)
{
var
listContent
:
String
=
""
//用来排序用,这个内容用来展示列表名
var
createTime
=
System
.
currentTimeMillis
()
var
isCreateOrScan
:
Boolean
=
true
//create:true ; scan:false
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/bean/WifiUIBean.kt
View file @
b2316165
...
...
@@ -3,7 +3,6 @@ package com.base.scanqr.bean
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_WIFI
data class
WifiUIBean
(
var
ssid
:
String
=
""
,
var
bssid
:
String
=
""
,
...
...
app/src/main/java/com/base/scanqr/ui/main/HistoryAdapter.kt
View file @
b2316165
...
...
@@ -38,21 +38,19 @@ class HistoryAdapter : BaseQuickAdapter<ScanBean, CommonViewHolder>() {
KEY_WIFI
->
{
if
(
item
is
WifiUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_wifi
)
binding
.
tvDesc
.
text
=
item
.
ssid
}
}
KEY_TEXT
->
{
if
(
item
is
TextUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_text
)
binding
.
tvDesc
.
text
=
item
.
content
}
}
KEY_EMAIL
->
{
if
(
item
is
EmailUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_email
)
binding
.
tvDesc
.
text
=
item
.
address
}
}
...
...
@@ -80,6 +78,7 @@ class HistoryAdapter : BaseQuickAdapter<ScanBean, CommonViewHolder>() {
}
binding
.
tvDesc
.
text
=
item
.
listContent
binding
.
tvTime
.
text
=
formatTimeAgo
(
item
.
createTime
)
binding
.
flMore
.
setOnClickListener
{
moreAction
?.
invoke
(
it
,
item
)
...
...
app/src/main/java/com/base/scanqr/ui/main/HistoryFragment.kt
View file @
b2316165
...
...
@@ -15,8 +15,10 @@ import com.base.scanqr.ui.email.EmailCodeActivity
import
com.base.scanqr.ui.text.TextCodeActivity
import
com.base.scanqr.ui.widget.DeleteQRDialog.showDeleteQRDialog
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.utils.BarUtils
import
com.base.scanqr.utils.LogEx
import
com.google.gson.Gson
...
...
@@ -107,6 +109,16 @@ class HistoryFragment : BaseFragment<FragmentHistoryBinding>(FragmentHistoryBind
}
else
{
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
val
uiRefresh
=
{
val
createList
=
viewModel
.
historyList
.
filter
{
it
.
isCreateOrScan
==
isCreateOrScan
}
binding
.
llEmpty
.
isVisible
=
createList
.
isEmpty
()
adapter
?.
submitList
(
createList
)
adapter
?.
submitList
(
sortList
(
createList
)
)
}
if
(
viewModel
.
dataRefreshFinish
.
get
())
{
uiRefresh
.
invoke
()
...
...
@@ -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
{
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
app/src/main/java/com/base/scanqr/ui/main/HistoryViewModel.kt
View file @
b2316165
...
...
@@ -23,8 +23,11 @@ class HistoryViewModel() : ViewModel() {
historyList
.
clear
()
val
wifiList
=
SpJsonUtils
.
getSpJsonList
<
WifiUIBean
>(
FunctionUIBean
.
KEY_WIFI
)
wifiList
.
forEach
{
it
.
listContent
=
it
.
ssid
}
val
textList
=
SpJsonUtils
.
getSpJsonList
<
TextUIBean
>(
FunctionUIBean
.
KEY_TEXT
)
textList
.
forEach
{
it
.
listContent
=
it
.
content
}
val
emailList
=
SpJsonUtils
.
getSpJsonList
<
EmailUIBean
>(
FunctionUIBean
.
KEY_EMAIL
)
emailList
.
forEach
{
it
.
listContent
=
it
.
address
}
historyList
.
addAll
(
wifiList
)
historyList
.
addAll
(
textList
)
...
...
app/src/main/java/com/base/scanqr/ui/main/ScanFragment.kt
View file @
b2316165
...
...
@@ -53,6 +53,7 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
}
private
var
cameraInit
=
AtomicBoolean
(
false
)
private
fun
initCamera
()
{
if
(
cameraInit
.
get
())
return
val
hasFlash
=
requireContext
().
packageManager
.
hasSystemFeature
(
PackageManager
.
FEATURE_CAMERA_FLASH
)
...
...
@@ -140,7 +141,6 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
}
}
override
fun
onStop
()
{
super
.
onStop
()
val
activity
=
requireActivity
()
as
MainActivity
?
...
...
@@ -202,10 +202,8 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
activity
?.
cameraUtils
?.
setZoomRate
(
zoomPair
.
second
)
binding
.
seekbar
.
progress
=
binding
.
seekbar
.
max
}
}
override
fun
onResume
()
{
super
.
onResume
()
scanJump
.
set
(
false
)
...
...
app/src/main/java/com/base/scanqr/ui/widget/SortByDialog.kt
0 → 100644
View file @
b2316165
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
app/src/main/res/layout/dialog_input_name.xml
View file @
b2316165
...
...
@@ -52,6 +52,7 @@
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=
"@string/confirm"
...
...
app/src/main/res/layout/dialog_sort_by.xml
0 → 100644
View file @
b2316165
<?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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment