Commit d40c2db8 authored by wanglei's avatar wanglei

...

parent b2c901d9
......@@ -5,11 +5,12 @@ import android.graphics.Bitmap
import android.graphics.Color
import android.graphics.Point
import android.graphics.drawable.Drawable
import android.util.Log
import androidx.activity.addCallback
import androidx.core.view.updatePadding
import androidx.lifecycle.ViewModelProvider
import com.base.scanqrclear.R
import com.base.scanqrclear.ads.AdsMgr
import com.base.scanqrclear.ads.AdsShowCallBack
import com.base.scanqrclear.base.BaseActivity
import com.base.scanqrclear.bean.AddressUIBean
import com.base.scanqrclear.bean.AddressUIBean.Companion.createAddressUIBeanQrString
......@@ -37,11 +38,23 @@ 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.bean.config.AdConfigBean
import com.base.scanqrclear.databinding.ActivityQrStyleResultBinding
import com.base.scanqrclear.qr.QrStyleUtils.generateQRCodeWithBackground
import com.base.scanqrclear.ui.addressqr.AddressDialog.showAddressDialog
import com.base.scanqrclear.ui.facebookqr.FacebookDialog.showFacebookDialog
import com.base.scanqrclear.ui.insqr.InstagramDialog.showInstagramDialog
import com.base.scanqrclear.ui.paypalqr.PaypalDialog.showPaypalDialog
import com.base.scanqrclear.ui.spotifyqr.SpotifyDialog.showSpotifyDialog
import com.base.scanqrclear.ui.vm.QrViewModel
import com.base.scanqrclear.ui.whatsappqr.WhatsappDialog.showWhatsappDialog
import com.base.scanqrclear.ui.widget.HintDialog.showHintDialog
import com.base.scanqrclear.ui.widget.InputNameDialog.showInputNameDialog
import com.base.scanqrclear.ui.xqr.XDialog.showXDialog
import com.base.scanqrclear.ui.youtubeqr.YoutubeDialog.showYoutubeDialog
import com.base.scanqrclear.utils.BarUtils
import com.base.scanqrclear.utils.BitmapUtils.saveBitmapToFile
import com.base.scanqrclear.utils.IntentUtils.intentShareImage
import com.base.scanqrclear.utils.LogEx
import com.base.scanqrclear.utils.SpJsonUtils
import com.bumptech.glide.Glide
......@@ -58,6 +71,10 @@ class QrStyleResultActivity : BaseActivity<ActivityQrStyleResultBinding>(Activit
private var qrString = ""
private var tempImagePath: String = ""
private val viewModel by lazy(LazyThreadSafetyMode.NONE) {
ViewModelProvider(this)[QrViewModel::class.java]
}
override fun initView() {
super.initView()
binding.clTop.updatePadding(top = BarUtils.getStatusBarHeight())
......@@ -118,8 +135,7 @@ 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?) {
......@@ -336,9 +352,14 @@ class QrStyleResultActivity : BaseActivity<ActivityQrStyleResultBinding>(Activit
binding.iv.setImageBitmap(qrBitmap)
}
qrBitmap?.let {
//创建临时图片
createTempImageFile(it)
}
}.start()
fun createTempImageFile(bitmap: Bitmap) = Thread {
private fun createTempImageFile(bitmap: Bitmap) = Thread {
val file = File(cacheDir, System.currentTimeMillis().toString() + ".jpg")
val flag = saveBitmapToFile(bitmap, file.absolutePath)
if (flag) {
......@@ -355,7 +376,10 @@ class QrStyleResultActivity : BaseActivity<ActivityQrStyleResultBinding>(Activit
onBackPressedDispatcher.onBackPressed()
}
binding.llDelete.setOnClickListener {
showHintDialog { }
showHintDialog {
viewModel.deleteScanBean(key, scanBean)
finishToMainTop()
}
}
binding.llReplaceStyle.setOnClickListener {
startActivity(Intent(this, QrStyleActivity::class.java).apply {
......@@ -365,7 +389,93 @@ class QrStyleResultActivity : BaseActivity<ActivityQrStyleResultBinding>(Activit
})
finish()
}
binding.llRegenerate.setOnClickListener {
when (key) {
KEY_WHATSAPP -> {
showWhatsappDialog(launcher, dismissAction = {
if (it) finish()
})
}
KEY_YOUTUBE -> {
showYoutubeDialog(dismissAction = {
if (it) finish()
})
}
KEY_FACEBOOK -> {
showFacebookDialog(dismissAction = {
if (it) finish()
})
}
KEY_INSTAGRAM -> {
showInstagramDialog(dismissAction = {
if (it) finish()
})
}
KEY_X -> {
showXDialog(dismissAction = {
if (it) finish()
})
}
KEY_SPOTIFY -> {
showSpotifyDialog(dismissAction = {
if (it) finish()
})
}
KEY_PAYPAL -> {
showPaypalDialog(dismissAction = {
if (it) finish()
})
}
KEY_ADDRESS -> {
showAddressDialog(dismissAction = {
if (it) finish()
})
}
}
}
binding.tvShare.setOnClickListener {
val intent = intentShareImage(this, tempImagePath)
runCatching {
startActivity(intent)
}
}
binding.tvSave.setOnClickListener {
if (AdConfigBean.adsConfigBean.functionUseShowAd) {
AdsMgr.showInsert(this, true, object : AdsShowCallBack() {
override fun close(where: Int) {
useDownload()
}
override fun failed(where: Int) {
useDownload()
}
override fun googleFailed(where: Int) {
useDownload()
}
})
} else {
useDownload()
}
}
}
fun useDownload() {
kotlin.runCatching {
val newName = File(tempImagePath).name
showInputNameDialog(newName) { name ->
viewModel.copyFileToDownloads(this, name, tempImagePath)
}
}
}
override fun configSystemBar() {
immersionBar {
......
......@@ -12,7 +12,6 @@ import com.base.scanqrclear.R
import com.base.scanqrclear.ads.AdsMgr
import com.base.scanqrclear.ads.AdsShowCallBack
import com.base.scanqrclear.bean.AddressUIBean
import com.base.scanqrclear.bean.AddressUIBean.Companion.createAddressUIBeanQrString
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_ADDRESS
import com.base.scanqrclear.databinding.DialogAddressBinding
import com.base.scanqrclear.qr.QrStyleActivity
......@@ -20,7 +19,9 @@ import com.google.gson.Gson
object AddressDialog {
fun Activity.showAddressDialog() {
fun Activity.showAddressDialog(
dismissAction: ((flag: Boolean) -> Unit)? = null
) {
val dialog = AlertDialog.Builder(this).create()
val binding = DialogAddressBinding.inflate(LayoutInflater.from(this))
dialog.setView(binding.root)
......@@ -62,9 +63,9 @@ object AddressDialog {
putExtra("key", KEY_ADDRESS)
})
}
var dismissFlag = false
binding.tvBtn.setOnClickListener {
dismissFlag = true
AdsMgr.showInsert(this, false, object : AdsShowCallBack() {
override fun close(where: Int) {
jump.invoke()
......@@ -81,6 +82,9 @@ object AddressDialog {
}
dialog.setOnDismissListener {
dismissAction?.invoke(dismissFlag)
}
}
}
\ No newline at end of file
......@@ -12,7 +12,6 @@ import com.base.scanqrclear.R
import com.base.scanqrclear.ads.AdsMgr
import com.base.scanqrclear.ads.AdsShowCallBack
import com.base.scanqrclear.bean.FacebookUIBean
import com.base.scanqrclear.bean.FacebookUIBean.Companion.createFacebookQrString
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_FACEBOOK
import com.base.scanqrclear.databinding.DialogFacebookBinding
import com.base.scanqrclear.qr.QrStyleActivity
......@@ -21,7 +20,9 @@ import com.google.gson.Gson
object FacebookDialog {
fun Activity.showFacebookDialog() {
fun Activity.showFacebookDialog(
dismissAction: ((flag: Boolean) -> Unit)? = null
) {
val dialog = AlertDialog.Builder(this).create()
val binding = DialogFacebookBinding.inflate(LayoutInflater.from(this))
......@@ -74,8 +75,9 @@ object FacebookDialog {
})
}
var dismissFlag = false
binding.tvBtn.setOnClickListener {
dismissFlag = true
AdsMgr.showInsert(this, false, object : AdsShowCallBack() {
override fun close(where: Int) {
jump.invoke()
......@@ -91,6 +93,9 @@ object FacebookDialog {
})
}
dialog.setOnDismissListener {
dismissAction?.invoke(dismissFlag)
}
}
}
\ No newline at end of file
......@@ -13,14 +13,15 @@ import com.base.scanqrclear.ads.AdsMgr
import com.base.scanqrclear.ads.AdsShowCallBack
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_INSTAGRAM
import com.base.scanqrclear.bean.InstagramUIBean
import com.base.scanqrclear.bean.InstagramUIBean.Companion.createInstagramQrString
import com.base.scanqrclear.databinding.DialogFacebookBinding
import com.base.scanqrclear.qr.QrStyleActivity
import com.google.gson.Gson
object InstagramDialog {
fun Activity.showInstagramDialog() {
fun Activity.showInstagramDialog(
dismissAction: ((flag: Boolean) -> Unit)? = null
) {
val dialog = AlertDialog.Builder(this).create()
val binding = DialogFacebookBinding.inflate(LayoutInflater.from(this))
......@@ -73,8 +74,9 @@ object InstagramDialog {
})
}
var dismissFlag = false
binding.tvBtn.setOnClickListener {
dismissFlag = true
AdsMgr.showInsert(this, false, object : AdsShowCallBack() {
override fun close(where: Int) {
jump.invoke()
......@@ -90,5 +92,9 @@ object InstagramDialog {
})
}
dialog?.setOnDismissListener {
dismissAction?.invoke(dismissFlag)
}
}
}
\ No newline at end of file
......@@ -13,14 +13,15 @@ import com.base.scanqrclear.ads.AdsMgr
import com.base.scanqrclear.ads.AdsShowCallBack
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_PAYPAL
import com.base.scanqrclear.bean.PaypalUIBean
import com.base.scanqrclear.bean.PaypalUIBean.Companion.createPaypalQrString
import com.base.scanqrclear.databinding.DialogPaypalBinding
import com.base.scanqrclear.qr.QrStyleActivity
import com.google.gson.Gson
object PaypalDialog {
fun Activity.showPaypalDialog() {
fun Activity.showPaypalDialog(
dismissAction: ((flag: Boolean) -> Unit)? = null
) {
val dialog = AlertDialog.Builder(this).create()
val binding = DialogPaypalBinding.inflate(LayoutInflater.from(this))
......@@ -72,9 +73,9 @@ object PaypalDialog {
putExtra("key", KEY_PAYPAL)
})
}
var dismissFlag = false
binding.tvBtn.setOnClickListener {
dismissFlag = true
AdsMgr.showInsert(this, false, object : AdsShowCallBack() {
override fun close(where: Int) {
jump.invoke()
......@@ -91,6 +92,10 @@ object PaypalDialog {
}
dialog.setOnDismissListener {
dismissAction?.invoke(dismissFlag)
}
}
}
\ No newline at end of file
......@@ -13,14 +13,15 @@ import com.base.scanqrclear.ads.AdsMgr
import com.base.scanqrclear.ads.AdsShowCallBack
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_SPOTIFY
import com.base.scanqrclear.bean.SpotifyUIBean
import com.base.scanqrclear.bean.SpotifyUIBean.Companion.createSpotifyQrString
import com.base.scanqrclear.databinding.DialogSpotifyBinding
import com.base.scanqrclear.qr.QrStyleActivity
import com.google.gson.Gson
object SpotifyDialog {
fun Activity.showSpotifyDialog() {
fun Activity.showSpotifyDialog(
dismissAction: ((flag: Boolean) -> Unit)? = null
) {
val dialog = AlertDialog.Builder(this).create()
val binding = DialogSpotifyBinding.inflate(LayoutInflater.from(this))
dialog.setView(binding.root)
......@@ -62,9 +63,9 @@ object SpotifyDialog {
putExtra("key", KEY_SPOTIFY)
})
}
var dismissFlag = false
binding.tvBtn.setOnClickListener {
dismissFlag = true
AdsMgr.showInsert(this, false, object : AdsShowCallBack() {
override fun close(where: Int) {
jump.invoke()
......@@ -80,6 +81,9 @@ object SpotifyDialog {
})
}
dialog.setOnDismissListener {
dismissAction?.invoke(dismissFlag)
}
}
}
\ No newline at end of file
......@@ -5,6 +5,24 @@ import android.os.Environment
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.base.scanqrclear.R
import com.base.scanqrclear.bean.AddressUIBean
import com.base.scanqrclear.bean.FacebookUIBean
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_ADDRESS
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_PAYPAL
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_SPOTIFY
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_WHATSAPP
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.PaypalUIBean
import com.base.scanqrclear.bean.ScanBean
import com.base.scanqrclear.bean.SpotifyUIBean
import com.base.scanqrclear.bean.WhatsappUIBean
import com.base.scanqrclear.bean.XUIBean
import com.base.scanqrclear.bean.YoutubeUIBean
import com.base.scanqrclear.utils.SpJsonUtils
import com.base.scanqrclear.utils.ToastUtils.toast
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
......@@ -32,4 +50,58 @@ class QrViewModel : ViewModel() {
}
}
}
fun deleteScanBean(key: String, scanBean: ScanBean?) {
when (key) {
KEY_WHATSAPP -> {
val list = SpJsonUtils.getSpJsonList<WhatsappUIBean>(KEY_WHATSAPP).toMutableList()
list.removeIf { it.createTime == scanBean?.createTime }
SpJsonUtils.saveJsonBeanList(KEY_WHATSAPP, list)
}
KEY_YOUTUBE -> {
val list = SpJsonUtils.getSpJsonList<YoutubeUIBean>(KEY_YOUTUBE).toMutableList()
list.removeIf { it.createTime == scanBean?.createTime }
SpJsonUtils.saveJsonBeanList(KEY_YOUTUBE, list)
}
KEY_FACEBOOK -> {
val list = SpJsonUtils.getSpJsonList<FacebookUIBean>(KEY_FACEBOOK).toMutableList()
list.removeIf { it.createTime == scanBean?.createTime }
SpJsonUtils.saveJsonBeanList(KEY_FACEBOOK, list)
}
KEY_INSTAGRAM -> {
val list = SpJsonUtils.getSpJsonList<InstagramUIBean>(KEY_INSTAGRAM).toMutableList()
list.removeIf { it.createTime == scanBean?.createTime }
SpJsonUtils.saveJsonBeanList(KEY_INSTAGRAM, list)
}
KEY_X -> {
val list = SpJsonUtils.getSpJsonList<XUIBean>(KEY_X).toMutableList()
list.removeIf { it.createTime == scanBean?.createTime }
SpJsonUtils.saveJsonBeanList(KEY_X, list)
}
KEY_SPOTIFY -> {
val list = SpJsonUtils.getSpJsonList<SpotifyUIBean>(KEY_SPOTIFY).toMutableList()
list.removeIf { it.createTime == scanBean?.createTime }
SpJsonUtils.saveJsonBeanList(KEY_SPOTIFY, list)
}
KEY_PAYPAL -> {
val list = SpJsonUtils.getSpJsonList<PaypalUIBean>(KEY_PAYPAL).toMutableList()
list.removeIf { it.createTime == scanBean?.createTime }
SpJsonUtils.saveJsonBeanList(KEY_PAYPAL, list)
}
KEY_ADDRESS -> {
val list = SpJsonUtils.getSpJsonList<AddressUIBean>(KEY_ADDRESS).toMutableList()
list.removeIf { it.createTime == scanBean?.createTime }
SpJsonUtils.saveJsonBeanList(KEY_ADDRESS, list)
}
}
}
}
\ No newline at end of file
......@@ -15,7 +15,6 @@ import com.base.scanqrclear.ads.AdsMgr
import com.base.scanqrclear.ads.AdsShowCallBack
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_WHATSAPP
import com.base.scanqrclear.bean.WhatsappUIBean
import com.base.scanqrclear.bean.WhatsappUIBean.Companion.createWhatsappQrString
import com.base.scanqrclear.databinding.DialogWhastsppBinding
import com.base.scanqrclear.qr.QrStyleActivity
import com.base.scanqrclear.utils.ActivityLauncher
......@@ -29,8 +28,10 @@ object WhatsappDialog {
private val TAG = "WhatsappDialog"
@SuppressLint("SetTextI18n")
fun Activity.showWhatsappDialog(launcher: ActivityLauncher) {
fun Activity.showWhatsappDialog(
launcher: ActivityLauncher,
dismissAction: ((dismissFlag: Boolean) -> Unit)? = null
) {
val dialog = AlertDialog.Builder(this).create()
val binding = DialogWhastsppBinding.inflate(LayoutInflater.from(this))
......@@ -89,9 +90,9 @@ object WhatsappDialog {
putExtra("key", KEY_WHATSAPP)
})
}
var dismissFlag: Boolean = false
binding.tvBtn.setOnClickListener {
dismissFlag = true
AdsMgr.showInsert(this, false, object : AdsShowCallBack() {
override fun close(where: Int) {
jump.invoke()
......@@ -106,9 +107,11 @@ object WhatsappDialog {
}
})
}
dialog?.setOnDismissListener {
dismissAction?.invoke(dismissFlag)
}
}
}
\ No newline at end of file
......@@ -13,14 +13,15 @@ import com.base.scanqrclear.ads.AdsMgr
import com.base.scanqrclear.ads.AdsShowCallBack
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_X
import com.base.scanqrclear.bean.XUIBean
import com.base.scanqrclear.bean.XUIBean.Companion.createXUIBeanQrString
import com.base.scanqrclear.databinding.DialogXBinding
import com.base.scanqrclear.qr.QrStyleActivity
import com.google.gson.Gson
object XDialog {
fun Activity.showXDialog() {
fun Activity.showXDialog(
dismissAction: ((flag: Boolean) -> Unit)? = null
) {
val dialog = AlertDialog.Builder(this).create()
val binding = DialogXBinding.inflate(LayoutInflater.from(this))
......@@ -73,8 +74,9 @@ object XDialog {
})
}
var dismissFlag = false
binding.tvBtn.setOnClickListener {
dismissFlag = true
AdsMgr.showInsert(this, false, object : AdsShowCallBack() {
override fun close(where: Int) {
jump.invoke()
......@@ -91,5 +93,9 @@ object XDialog {
}
dialog.setOnDismissListener {
dismissAction?.invoke(dismissFlag)
}
}
}
\ No newline at end of file
......@@ -13,14 +13,15 @@ import com.base.scanqrclear.ads.AdsMgr
import com.base.scanqrclear.ads.AdsShowCallBack
import com.base.scanqrclear.bean.FunctionUIBean.Companion.KEY_YOUTUBE
import com.base.scanqrclear.bean.YoutubeUIBean
import com.base.scanqrclear.bean.YoutubeUIBean.Companion.createYoutubeQrString
import com.base.scanqrclear.databinding.DialogYoutubeBinding
import com.base.scanqrclear.qr.QrStyleActivity
import com.google.gson.Gson
object YoutubeDialog {
fun Activity.showYoutubeDialog() {
fun Activity.showYoutubeDialog(
dismissAction: ((flag: Boolean) -> Unit)? = null
) {
val dialog = AlertDialog.Builder(this).create()
val binding = DialogYoutubeBinding.inflate(LayoutInflater.from(this))
......@@ -76,9 +77,9 @@ object YoutubeDialog {
})
}
var dismissFlag: Boolean = false
binding.tvBtn.setOnClickListener {
dismissFlag = true
AdsMgr.showInsert(this, false, object : AdsShowCallBack() {
override fun close(where: Int) {
jump.invoke()
......@@ -95,5 +96,9 @@ object YoutubeDialog {
}
dialog.setOnDismissListener {
dismissAction?.invoke(dismissFlag)
}
}
}
\ No newline at end of file
......@@ -167,6 +167,7 @@
</LinearLayout>
<LinearLayout
android:id="@+id/llRegenerate"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
......
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