Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
scanqrwhite2copy1
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
scanqrwhite2copy1
Commits
13281b4d
Commit
13281b4d
authored
Feb 24, 2025
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
3fd02b8f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
276 additions
and
4 deletions
+276
-4
QrStyleResultActivity.kt
...ain/java/com/base/scanqrclear/qr/QrStyleResultActivity.kt
+64
-1
HistoryAdapter.kt
.../main/java/com/base/scanqrclear/ui/main/HistoryAdapter.kt
+63
-0
HistoryFragment.kt
...main/java/com/base/scanqrclear/ui/main/HistoryFragment.kt
+60
-0
HistoryViewModel.kt
...ain/java/com/base/scanqrclear/ui/main/HistoryViewModel.kt
+88
-2
SortByDialog.kt
.../main/java/com/base/scanqrclear/ui/widget/SortByDialog.kt
+1
-1
No files found.
app/src/main/java/com/base/scanqrclear/qr/QrStyleResultActivity.kt
View file @
13281b4d
...
...
@@ -39,18 +39,22 @@ import com.base.scanqrclear.databinding.ActivityQrStyleResultBinding
import
com.base.scanqrclear.qr.QrStyleUtils.generateQRCodeWithBackground
import
com.base.scanqrclear.ui.widget.HintDialog.showHintDialog
import
com.base.scanqrclear.utils.BarUtils
import
com.base.scanqrclear.utils.BitmapUtils.saveBitmapToFile
import
com.base.scanqrclear.utils.LogEx
import
com.base.scanqrclear.utils.SpJsonUtils
import
com.bumptech.glide.Glide
import
com.bumptech.glide.request.target.CustomTarget
import
com.bumptech.glide.request.transition.Transition
import
com.google.gson.Gson
import
com.gyf.immersionbar.ktx.immersionBar
import
java.io.File
class
QrStyleResultActivity
:
BaseActivity
<
ActivityQrStyleResultBinding
>(
ActivityQrStyleResultBinding
::
inflate
)
{
private
var
scanBean
:
ScanBean
?
=
null
private
var
key
:
String
=
""
private
var
qrString
=
""
private
var
tempImagePath
:
String
=
""
override
fun
initView
()
{
super
.
initView
()
...
...
@@ -112,12 +116,60 @@ class QrStyleResultActivity : BaseActivity<ActivityQrStyleResultBinding>(Activit
override
fun
onResourceReady
(
resource
:
Bitmap
,
transition
:
Transition
<
in
Bitmap
>?)
{
// 在这里获取到 Bitmap
processBitmap
(
resource
,
bean
)
//创建临时图片
createTempImageFile
(
resource
)
}
override
fun
onLoadCleared
(
placeholder
:
Drawable
?)
{
// 图片加载失败时的回调
}
})
}
//创建历史记录
createHistorySp
()
}
private
fun
createHistorySp
()
{
scanBean
?.
let
{
if
(
it
.
needCreate
)
{
it
.
needCreate
=
false
when
(
key
)
{
KEY_WHATSAPP
->
{
SpJsonUtils
.
addJsonBean
<
WhatsappUIBean
>(
KEY_WHATSAPP
,
it
as
WhatsappUIBean
)
}
KEY_YOUTUBE
->
{
SpJsonUtils
.
addJsonBean
<
YoutubeUIBean
>(
KEY_YOUTUBE
,
it
as
YoutubeUIBean
)
}
KEY_FACEBOOK
->
{
SpJsonUtils
.
addJsonBean
<
FacebookUIBean
>(
KEY_FACEBOOK
,
it
as
FacebookUIBean
)
}
KEY_INSTAGRAM
->
{
SpJsonUtils
.
addJsonBean
<
InstagramUIBean
>(
KEY_INSTAGRAM
,
it
as
InstagramUIBean
)
}
KEY_X
->
{
SpJsonUtils
.
addJsonBean
<
XUIBean
>(
KEY_X
,
it
as
XUIBean
)
}
KEY_SPOTIFY
->
{
SpJsonUtils
.
addJsonBean
<
SpotifyUIBean
>(
KEY_SPOTIFY
,
it
as
SpotifyUIBean
)
}
KEY_PAYPAL
->
{
SpJsonUtils
.
addJsonBean
<
PaypalUIBean
>(
KEY_PAYPAL
,
it
as
PaypalUIBean
)
}
KEY_ADDRESS
->
{
SpJsonUtils
.
addJsonBean
<
AddressUIBean
>(
KEY_ADDRESS
,
it
as
AddressUIBean
)
}
}
}
}
}
...
...
@@ -220,9 +272,20 @@ class QrStyleResultActivity : BaseActivity<ActivityQrStyleResultBinding>(Activit
}.
start
()
fun
createTempImageFile
(
bitmap
:
Bitmap
)
=
Thread
{
val
file
=
File
(
cacheDir
,
System
.
currentTimeMillis
().
toString
()
+
".jpg"
)
val
flag
=
saveBitmapToFile
(
bitmap
,
file
.
absolutePath
)
if
(
flag
)
{
tempImagePath
=
file
.
absolutePath
}
}.
start
()
override
fun
initListener
()
{
super
.
initListener
()
onBackPressedDispatcher
.
addCallback
{
finish
()
}
onBackPressedDispatcher
.
addCallback
{
finishToMainTop
()
}
binding
.
flBack
.
setOnClickListener
{
onBackPressedDispatcher
.
onBackPressed
()
}
...
...
app/src/main/java/com/base/scanqrclear/ui/main/HistoryAdapter.kt
View file @
13281b4d
...
...
@@ -6,26 +6,42 @@ import android.view.ViewGroup
import
com.base.scanqrclear.R
import
com.base.scanqrclear.ads.AdsMgr
import
com.base.scanqrclear.bean.AdScanBean
import
com.base.scanqrclear.bean.AddressUIBean
import
com.base.scanqrclear.bean.ContractUIBean
import
com.base.scanqrclear.bean.EmailUIBean
import
com.base.scanqrclear.bean.EventUIBean
import
com.base.scanqrclear.bean.FacebookUIBean
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_ADDRESS
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_CONTACT
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_EMAIL
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_EVENT
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_FACEBOOK
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_INSTAGRAM
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_LOCATION
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_MESSAGE
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_PAYPAL
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_PRODUCT
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_SPOTIFY
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_TELEPHONE
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_TEXT
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_WEBSITE
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_WHATSAPP
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_WIFI
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_X
import
com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_YOUTUBE
import
com.base.scanqrclear.bean.InstagramUIBean
import
com.base.scanqrclear.bean.MessageUIBean
import
com.base.scanqrclear.bean.PaypalUIBean
import
com.base.scanqrclear.bean.ProductUIBean
import
com.base.scanqrclear.bean.ScanBean
import
com.base.scanqrclear.bean.SpotifyUIBean
import
com.base.scanqrclear.bean.TelephoneUIBean
import
com.base.scanqrclear.bean.TextUIBean
import
com.base.scanqrclear.bean.WebsiteUIBean
import
com.base.scanqrclear.bean.WhatsappUIBean
import
com.base.scanqrclear.bean.WifiUIBean
import
com.base.scanqrclear.bean.XUIBean
import
com.base.scanqrclear.bean.YoutubeUIBean
import
com.base.scanqrclear.databinding.ItemAdBinding
import
com.base.scanqrclear.databinding.ItemHistoryBinding
import
com.base.scanqrclear.ui.adapter.CommonViewHolder
...
...
@@ -120,6 +136,53 @@ class HistoryAdapter : BaseQuickAdapter<ScanBean, CommonViewHolder>() {
}
}
KEY_WHATSAPP
->
{
if
(
item
is
WhatsappUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_whatsapp
)
}
}
KEY_YOUTUBE
->
{
if
(
item
is
YoutubeUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_youtube
)
}
}
KEY_FACEBOOK
->
{
if
(
item
is
FacebookUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_facebook
)
}
}
KEY_INSTAGRAM
->
{
if
(
item
is
InstagramUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_instagram
)
}
}
KEY_X
->
{
if
(
item
is
XUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_x
)
}
}
KEY_SPOTIFY
->
{
if
(
item
is
SpotifyUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_spotify
)
}
}
KEY_PAYPAL
->
{
if
(
item
is
PaypalUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_paypal
)
}
}
KEY_ADDRESS
->
{
if
(
item
is
AddressUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_address
)
}
}
}
binding
.
tvDesc
.
text
=
item
.
listContent
...
...
app/src/main/java/com/base/scanqrclear/ui/main/HistoryFragment.kt
View file @
13281b4d
...
...
@@ -13,8 +13,11 @@ import com.base.scanqrclear.base.BaseFragment
import
com.base.scanqrclear.bean.AdScanBean
import
com.base.scanqrclear.bean.FunctionUIBean
import
com.base.scanqrclear.bean.ScanBean
import
com.base.scanqrclear.bean.WhatsappUIBean
import
com.base.scanqrclear.bean.config.AdConfigBean.Companion.adsConfigBean
import
com.base.scanqrclear.databinding.FragmentHistoryBinding
import
com.base.scanqrclear.qr.QrStyleActivity
import
com.base.scanqrclear.qr.QrStyleResultActivity
import
com.base.scanqrclear.ui.contact.ContractCodeActivity
import
com.base.scanqrclear.ui.email.EmailCodeActivity
import
com.base.scanqrclear.ui.event.EventCodeActivity
...
...
@@ -139,6 +142,63 @@ class HistoryFragment : BaseFragment<FragmentHistoryBinding>(FragmentHistoryBind
putExtra
(
"data"
,
Gson
().
toJson
(
item
))
})
}
FunctionUIBean
.
KEY_WHATSAPP
->
{
activity
?.
startActivity
(
Intent
(
activity
,
QrStyleResultActivity
::
class
.
java
).
apply
{
putExtra
(
"data"
,
Gson
().
toJson
(
item
))
putExtra
(
"key"
,
FunctionUIBean
.
KEY_WHATSAPP
)
})
}
FunctionUIBean
.
KEY_YOUTUBE
->
{
activity
?.
startActivity
(
Intent
(
activity
,
QrStyleResultActivity
::
class
.
java
).
apply
{
putExtra
(
"data"
,
Gson
().
toJson
(
item
))
putExtra
(
"key"
,
FunctionUIBean
.
KEY_YOUTUBE
)
})
}
FunctionUIBean
.
KEY_FACEBOOK
->
{
activity
?.
startActivity
(
Intent
(
activity
,
QrStyleResultActivity
::
class
.
java
).
apply
{
putExtra
(
"data"
,
Gson
().
toJson
(
item
))
putExtra
(
"key"
,
FunctionUIBean
.
KEY_FACEBOOK
)
})
}
FunctionUIBean
.
KEY_INSTAGRAM
->
{
activity
?.
startActivity
(
Intent
(
activity
,
QrStyleResultActivity
::
class
.
java
).
apply
{
putExtra
(
"data"
,
Gson
().
toJson
(
item
))
putExtra
(
"key"
,
FunctionUIBean
.
KEY_INSTAGRAM
)
})
}
FunctionUIBean
.
KEY_X
->
{
activity
?.
startActivity
(
Intent
(
activity
,
QrStyleResultActivity
::
class
.
java
).
apply
{
putExtra
(
"data"
,
Gson
().
toJson
(
item
))
putExtra
(
"key"
,
FunctionUIBean
.
KEY_X
)
})
}
FunctionUIBean
.
KEY_SPOTIFY
->
{
activity
?.
startActivity
(
Intent
(
activity
,
QrStyleResultActivity
::
class
.
java
).
apply
{
putExtra
(
"data"
,
Gson
().
toJson
(
item
))
putExtra
(
"key"
,
FunctionUIBean
.
KEY_SPOTIFY
)
})
}
FunctionUIBean
.
KEY_PAYPAL
->
{
activity
?.
startActivity
(
Intent
(
activity
,
QrStyleResultActivity
::
class
.
java
).
apply
{
putExtra
(
"data"
,
Gson
().
toJson
(
item
))
putExtra
(
"key"
,
FunctionUIBean
.
KEY_PAYPAL
)
})
}
FunctionUIBean
.
KEY_ADDRESS
->
{
activity
?.
startActivity
(
Intent
(
activity
,
QrStyleResultActivity
::
class
.
java
).
apply
{
putExtra
(
"data"
,
Gson
().
toJson
(
item
))
putExtra
(
"key"
,
FunctionUIBean
.
KEY_ADDRESS
)
})
}
}
}
...
...
app/src/main/java/com/base/scanqrclear/ui/main/HistoryViewModel.kt
View file @
13281b4d
...
...
@@ -2,19 +2,33 @@ package com.base.scanqrclear.ui.main
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.viewModelScope
import
com.base.scanqrclear.bean.AddressUIBean
import
com.base.scanqrclear.bean.AddressUIBean.Companion.createAddressUIBeanQrString
import
com.base.scanqrclear.bean.ContractUIBean
import
com.base.scanqrclear.bean.EmailUIBean
import
com.base.scanqrclear.bean.EventUIBean
import
com.base.scanqrclear.bean.FacebookUIBean
import
com.base.scanqrclear.bean.FacebookUIBean.Companion.createFacebookQrString
import
com.base.scanqrclear.bean.FunctionUIBean
import
com.base.scanqrclear.bean.InstagramUIBean
import
com.base.scanqrclear.bean.InstagramUIBean.Companion.createInstagramQrString
import
com.base.scanqrclear.bean.MessageUIBean
import
com.base.scanqrclear.bean.PaypalUIBean
import
com.base.scanqrclear.bean.PaypalUIBean.Companion.createPaypalQrString
import
com.base.scanqrclear.bean.ProductUIBean
import
com.base.scanqrclear.bean.ScanBean
import
com.base.scanqrclear.bean.S
canBean.Companion.CREATE_TYPE_SCAN
import
com.base.scanqrclear.bean.S
canBean.Companion.CREATE_TYPE_USER
import
com.base.scanqrclear.bean.S
potifyUIBean
import
com.base.scanqrclear.bean.S
potifyUIBean.Companion.createSpotifyQrString
import
com.base.scanqrclear.bean.TelephoneUIBean
import
com.base.scanqrclear.bean.TextUIBean
import
com.base.scanqrclear.bean.WebsiteUIBean
import
com.base.scanqrclear.bean.WhatsappUIBean
import
com.base.scanqrclear.bean.WhatsappUIBean.Companion.createWhatsappQrString
import
com.base.scanqrclear.bean.WifiUIBean
import
com.base.scanqrclear.bean.XUIBean
import
com.base.scanqrclear.bean.XUIBean.Companion.createXUIBeanQrString
import
com.base.scanqrclear.bean.YoutubeUIBean
import
com.base.scanqrclear.bean.YoutubeUIBean.Companion.createYoutubeQrString
import
com.base.scanqrclear.utils.LogEx
import
com.base.scanqrclear.utils.SpJsonUtils
import
kotlinx.coroutines.Dispatchers
...
...
@@ -50,6 +64,22 @@ class HistoryViewModel() : ViewModel() {
contractList
.
forEach
{
it
.
listContent
=
it
.
n
}
val
messageList
=
SpJsonUtils
.
getSpJsonList
<
MessageUIBean
>(
FunctionUIBean
.
KEY_MESSAGE
)
messageList
.
forEach
{
it
.
listContent
=
it
.
msg
}
val
whatsappList
=
SpJsonUtils
.
getSpJsonList
<
WhatsappUIBean
>(
FunctionUIBean
.
KEY_WHATSAPP
)
whatsappList
.
forEach
{
it
.
listContent
=
it
.
createWhatsappQrString
()
}
val
youtubeList
=
SpJsonUtils
.
getSpJsonList
<
YoutubeUIBean
>(
FunctionUIBean
.
KEY_YOUTUBE
)
youtubeList
.
forEach
{
it
.
listContent
=
it
.
createYoutubeQrString
()
}
val
facebookList
=
SpJsonUtils
.
getSpJsonList
<
FacebookUIBean
>(
FunctionUIBean
.
KEY_FACEBOOK
)
facebookList
.
forEach
{
it
.
listContent
=
it
.
createFacebookQrString
()
}
val
insList
=
SpJsonUtils
.
getSpJsonList
<
InstagramUIBean
>(
FunctionUIBean
.
KEY_INSTAGRAM
)
insList
.
forEach
{
it
.
listContent
=
it
.
createInstagramQrString
()
}
val
xList
=
SpJsonUtils
.
getSpJsonList
<
XUIBean
>(
FunctionUIBean
.
KEY_X
)
xList
.
forEach
{
it
.
listContent
=
it
.
createXUIBeanQrString
()
}
val
spotifyList
=
SpJsonUtils
.
getSpJsonList
<
SpotifyUIBean
>(
FunctionUIBean
.
KEY_SPOTIFY
)
spotifyList
.
forEach
{
it
.
listContent
=
it
.
createSpotifyQrString
()
}
val
paypalList
=
SpJsonUtils
.
getSpJsonList
<
PaypalUIBean
>(
FunctionUIBean
.
KEY_PAYPAL
)
paypalList
.
forEach
{
it
.
listContent
=
it
.
createPaypalQrString
()
}
val
addressList
=
SpJsonUtils
.
getSpJsonList
<
AddressUIBean
>(
FunctionUIBean
.
KEY_ADDRESS
)
addressList
.
forEach
{
it
.
listContent
=
it
.
createAddressUIBeanQrString
()
}
historyList
.
addAll
(
wifiList
)
historyList
.
addAll
(
textList
)
...
...
@@ -60,6 +90,14 @@ class HistoryViewModel() : ViewModel() {
historyList
.
addAll
(
telephoneList
)
historyList
.
addAll
(
contractList
)
historyList
.
addAll
(
messageList
)
historyList
.
addAll
(
whatsappList
)
historyList
.
addAll
(
youtubeList
)
historyList
.
addAll
(
facebookList
)
historyList
.
addAll
(
insList
)
historyList
.
addAll
(
xList
)
historyList
.
addAll
(
spotifyList
)
historyList
.
addAll
(
paypalList
)
historyList
.
addAll
(
addressList
)
historyList
.
forEach
{
LogEx
.
logDebug
(
TAG
,
"${it.scanType} ${it.createTime} ${it.createType} ${it.listContent}"
)
...
...
@@ -129,6 +167,54 @@ class HistoryViewModel() : ViewModel() {
it1
.
createTime
==
it2
.
createTime
})
}
FunctionUIBean
.
KEY_WHATSAPP
->
{
SpJsonUtils
.
removeJsonBean
<
WhatsappUIBean
>(
bean
.
scanType
,
bean
as
WhatsappUIBean
,
removeIf
=
{
it1
,
it2
->
it1
.
createTime
==
it2
.
createTime
})
}
FunctionUIBean
.
KEY_YOUTUBE
->
{
SpJsonUtils
.
removeJsonBean
<
YoutubeUIBean
>(
bean
.
scanType
,
bean
as
YoutubeUIBean
,
removeIf
=
{
it1
,
it2
->
it1
.
createTime
==
it2
.
createTime
})
}
FunctionUIBean
.
KEY_FACEBOOK
->
{
SpJsonUtils
.
removeJsonBean
<
FacebookUIBean
>(
bean
.
scanType
,
bean
as
FacebookUIBean
,
removeIf
=
{
it1
,
it2
->
it1
.
createTime
==
it2
.
createTime
})
}
FunctionUIBean
.
KEY_INSTAGRAM
->
{
SpJsonUtils
.
removeJsonBean
<
InstagramUIBean
>(
bean
.
scanType
,
bean
as
InstagramUIBean
,
removeIf
=
{
it1
,
it2
->
it1
.
createTime
==
it2
.
createTime
})
}
FunctionUIBean
.
KEY_X
->
{
SpJsonUtils
.
removeJsonBean
<
XUIBean
>(
bean
.
scanType
,
bean
as
XUIBean
,
removeIf
=
{
it1
,
it2
->
it1
.
createTime
==
it2
.
createTime
})
}
FunctionUIBean
.
KEY_SPOTIFY
->
{
SpJsonUtils
.
removeJsonBean
<
SpotifyUIBean
>(
bean
.
scanType
,
bean
as
SpotifyUIBean
,
removeIf
=
{
it1
,
it2
->
it1
.
createTime
==
it2
.
createTime
})
}
FunctionUIBean
.
KEY_PAYPAL
->
{
SpJsonUtils
.
removeJsonBean
<
PaypalUIBean
>(
bean
.
scanType
,
bean
as
PaypalUIBean
,
removeIf
=
{
it1
,
it2
->
it1
.
createTime
==
it2
.
createTime
})
}
FunctionUIBean
.
KEY_ADDRESS
->
{
SpJsonUtils
.
removeJsonBean
<
AddressUIBean
>(
bean
.
scanType
,
bean
as
AddressUIBean
,
removeIf
=
{
it1
,
it2
->
it1
.
createTime
==
it2
.
createTime
})
}
}
historyList
.
remove
(
bean
)
...
...
app/src/main/java/com/base/scanqrclear/ui/widget/SortByDialog.kt
View file @
13281b4d
...
...
@@ -19,7 +19,7 @@ object SortByDialog {
val
dialog
=
AlertDialog
.
Builder
(
this
).
create
()
val
binding
=
DialogSortByBinding
.
inflate
(
LayoutInflater
.
from
(
this
))
dialog
.
setView
(
binding
.
root
)
dialog
.
setCanceledOnTouchOutside
(
fals
e
)
dialog
.
setCanceledOnTouchOutside
(
tru
e
)
dialog
.
show
()
...
...
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