diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index 7f43a7d..b40ece8 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,5 +1,6 @@ package com.casic.xz.meterage.fragment +import android.app.ProgressDialog import android.graphics.Color import android.view.View import android.widget.LinearLayout @@ -17,7 +18,7 @@ import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.view.notice.NoticeListActivity -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector @@ -36,9 +37,10 @@ class MinePageFragment : KotlinBaseFragment() { - private lateinit var uploadViewModel: FileUploadViewModel + private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var progressDialog: ProgressDialog override fun initData() { val userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -69,8 +71,8 @@ } } - uploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] - uploadViewModel.resultModel.observe(this) { + fileViewModel = ViewModelProvider(this)[FileViewModel::class.java] + fileViewModel.resultModel.observe(this) { if (it.code == 200) { //更新用户信息表 userViewModel.updateUserInfo( @@ -91,6 +93,29 @@ .into(userAvatarView) } } + fileViewModel.versionResult.observe(this) { +// if (BuildConfig.VERSION_NAME == it.version) { +// "已是最新版本,无需更新".show(requireContext()) +// } else { +// AlertControlDialog.Builder() +// .setContext(requireContext()) +// .setTitle("提示") +// .setMessage("有新版本,是否更新?") +// .setNegativeButton("稍后再说") +// .setPositiveButton("立即下载") +// .setOnDialogButtonClickListener(object : +// AlertControlDialog.OnDialogButtonClickListener { +// override fun onConfirmClick() { +// downloadApk(it.downloadUrl) +// } +// +// override fun onCancelClick() { +// +// } +// }).build().show() +// } + } + noticeViewModel = ViewModelProvider(this)[NoticeViewModel::class.java] noticeViewModel.noticeList.observe(this) { @@ -116,6 +141,13 @@ } } } + + //初始化下载对话框 + progressDialog = ProgressDialog(requireContext()) + progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) + progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) + progressDialog.setCanceledOnTouchOutside(false) + progressDialog.setCancelable(false) } override fun onResume() { @@ -132,7 +164,7 @@ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { - 0 -> PictureSelector.create(context) + 0 -> PictureSelector.create(requireContext()) .openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -147,14 +179,14 @@ } }) - 1 -> PictureSelector.create(context) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) .isMaxSelectEnabledMask(true) .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -176,6 +208,10 @@ noticeLayout.setOnClickListener { requireContext().navigatePageTo() } + + updateLayout.setOnClickListener { + fileViewModel.updateVersion() + } } private fun analyticalSelectResults(result: LocalMedia) { @@ -183,7 +219,7 @@ result.realPath.compressImage(requireContext(), object : OnImageCompressListener { override fun onSuccess(file: File) { //上传图片 - uploadViewModel.uploadFile(file, FileType.IMAGE) + fileViewModel.uploadFile(file, FileType.IMAGE) } override fun onError(e: Throwable) { @@ -195,7 +231,7 @@ override fun initLayoutView(): Int = R.layout.fragment_mine override fun observeRequestState() { - uploadViewModel.loadState.observe(this) { + fileViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") else -> LoadingDialogHub.dismiss() diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index 7f43a7d..b40ece8 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,5 +1,6 @@ package com.casic.xz.meterage.fragment +import android.app.ProgressDialog import android.graphics.Color import android.view.View import android.widget.LinearLayout @@ -17,7 +18,7 @@ import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.view.notice.NoticeListActivity -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector @@ -36,9 +37,10 @@ class MinePageFragment : KotlinBaseFragment() { - private lateinit var uploadViewModel: FileUploadViewModel + private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var progressDialog: ProgressDialog override fun initData() { val userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -69,8 +71,8 @@ } } - uploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] - uploadViewModel.resultModel.observe(this) { + fileViewModel = ViewModelProvider(this)[FileViewModel::class.java] + fileViewModel.resultModel.observe(this) { if (it.code == 200) { //更新用户信息表 userViewModel.updateUserInfo( @@ -91,6 +93,29 @@ .into(userAvatarView) } } + fileViewModel.versionResult.observe(this) { +// if (BuildConfig.VERSION_NAME == it.version) { +// "已是最新版本,无需更新".show(requireContext()) +// } else { +// AlertControlDialog.Builder() +// .setContext(requireContext()) +// .setTitle("提示") +// .setMessage("有新版本,是否更新?") +// .setNegativeButton("稍后再说") +// .setPositiveButton("立即下载") +// .setOnDialogButtonClickListener(object : +// AlertControlDialog.OnDialogButtonClickListener { +// override fun onConfirmClick() { +// downloadApk(it.downloadUrl) +// } +// +// override fun onCancelClick() { +// +// } +// }).build().show() +// } + } + noticeViewModel = ViewModelProvider(this)[NoticeViewModel::class.java] noticeViewModel.noticeList.observe(this) { @@ -116,6 +141,13 @@ } } } + + //初始化下载对话框 + progressDialog = ProgressDialog(requireContext()) + progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) + progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) + progressDialog.setCanceledOnTouchOutside(false) + progressDialog.setCancelable(false) } override fun onResume() { @@ -132,7 +164,7 @@ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { - 0 -> PictureSelector.create(context) + 0 -> PictureSelector.create(requireContext()) .openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -147,14 +179,14 @@ } }) - 1 -> PictureSelector.create(context) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) .isMaxSelectEnabledMask(true) .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -176,6 +208,10 @@ noticeLayout.setOnClickListener { requireContext().navigatePageTo() } + + updateLayout.setOnClickListener { + fileViewModel.updateVersion() + } } private fun analyticalSelectResults(result: LocalMedia) { @@ -183,7 +219,7 @@ result.realPath.compressImage(requireContext(), object : OnImageCompressListener { override fun onSuccess(file: File) { //上传图片 - uploadViewModel.uploadFile(file, FileType.IMAGE) + fileViewModel.uploadFile(file, FileType.IMAGE) } override fun onError(e: Throwable) { @@ -195,7 +231,7 @@ override fun initLayoutView(): Int = R.layout.fragment_mine override fun observeRequestState() { - uploadViewModel.loadState.observe(this) { + fileViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") else -> LoadingDialogHub.dismiss() diff --git a/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java new file mode 100644 index 0000000..3758903 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java @@ -0,0 +1,5 @@ +package com.casic.xz.meterage.model; + +public class VersionResultModel { + +} diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index 7f43a7d..b40ece8 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,5 +1,6 @@ package com.casic.xz.meterage.fragment +import android.app.ProgressDialog import android.graphics.Color import android.view.View import android.widget.LinearLayout @@ -17,7 +18,7 @@ import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.view.notice.NoticeListActivity -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector @@ -36,9 +37,10 @@ class MinePageFragment : KotlinBaseFragment() { - private lateinit var uploadViewModel: FileUploadViewModel + private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var progressDialog: ProgressDialog override fun initData() { val userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -69,8 +71,8 @@ } } - uploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] - uploadViewModel.resultModel.observe(this) { + fileViewModel = ViewModelProvider(this)[FileViewModel::class.java] + fileViewModel.resultModel.observe(this) { if (it.code == 200) { //更新用户信息表 userViewModel.updateUserInfo( @@ -91,6 +93,29 @@ .into(userAvatarView) } } + fileViewModel.versionResult.observe(this) { +// if (BuildConfig.VERSION_NAME == it.version) { +// "已是最新版本,无需更新".show(requireContext()) +// } else { +// AlertControlDialog.Builder() +// .setContext(requireContext()) +// .setTitle("提示") +// .setMessage("有新版本,是否更新?") +// .setNegativeButton("稍后再说") +// .setPositiveButton("立即下载") +// .setOnDialogButtonClickListener(object : +// AlertControlDialog.OnDialogButtonClickListener { +// override fun onConfirmClick() { +// downloadApk(it.downloadUrl) +// } +// +// override fun onCancelClick() { +// +// } +// }).build().show() +// } + } + noticeViewModel = ViewModelProvider(this)[NoticeViewModel::class.java] noticeViewModel.noticeList.observe(this) { @@ -116,6 +141,13 @@ } } } + + //初始化下载对话框 + progressDialog = ProgressDialog(requireContext()) + progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) + progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) + progressDialog.setCanceledOnTouchOutside(false) + progressDialog.setCancelable(false) } override fun onResume() { @@ -132,7 +164,7 @@ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { - 0 -> PictureSelector.create(context) + 0 -> PictureSelector.create(requireContext()) .openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -147,14 +179,14 @@ } }) - 1 -> PictureSelector.create(context) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) .isMaxSelectEnabledMask(true) .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -176,6 +208,10 @@ noticeLayout.setOnClickListener { requireContext().navigatePageTo() } + + updateLayout.setOnClickListener { + fileViewModel.updateVersion() + } } private fun analyticalSelectResults(result: LocalMedia) { @@ -183,7 +219,7 @@ result.realPath.compressImage(requireContext(), object : OnImageCompressListener { override fun onSuccess(file: File) { //上传图片 - uploadViewModel.uploadFile(file, FileType.IMAGE) + fileViewModel.uploadFile(file, FileType.IMAGE) } override fun onError(e: Throwable) { @@ -195,7 +231,7 @@ override fun initLayoutView(): Int = R.layout.fragment_mine override fun observeRequestState() { - uploadViewModel.loadState.observe(this) { + fileViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") else -> LoadingDialogHub.dismiss() diff --git a/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java new file mode 100644 index 0000000..3758903 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java @@ -0,0 +1,5 @@ +package com.casic.xz.meterage.model; + +public class VersionResultModel { + +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt index 9feef94..0a80346 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt @@ -20,7 +20,7 @@ class GlideLoadEngine private constructor() : ImageEngine { companion object { - val instance: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { GlideLoadEngine() } } diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index 7f43a7d..b40ece8 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,5 +1,6 @@ package com.casic.xz.meterage.fragment +import android.app.ProgressDialog import android.graphics.Color import android.view.View import android.widget.LinearLayout @@ -17,7 +18,7 @@ import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.view.notice.NoticeListActivity -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector @@ -36,9 +37,10 @@ class MinePageFragment : KotlinBaseFragment() { - private lateinit var uploadViewModel: FileUploadViewModel + private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var progressDialog: ProgressDialog override fun initData() { val userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -69,8 +71,8 @@ } } - uploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] - uploadViewModel.resultModel.observe(this) { + fileViewModel = ViewModelProvider(this)[FileViewModel::class.java] + fileViewModel.resultModel.observe(this) { if (it.code == 200) { //更新用户信息表 userViewModel.updateUserInfo( @@ -91,6 +93,29 @@ .into(userAvatarView) } } + fileViewModel.versionResult.observe(this) { +// if (BuildConfig.VERSION_NAME == it.version) { +// "已是最新版本,无需更新".show(requireContext()) +// } else { +// AlertControlDialog.Builder() +// .setContext(requireContext()) +// .setTitle("提示") +// .setMessage("有新版本,是否更新?") +// .setNegativeButton("稍后再说") +// .setPositiveButton("立即下载") +// .setOnDialogButtonClickListener(object : +// AlertControlDialog.OnDialogButtonClickListener { +// override fun onConfirmClick() { +// downloadApk(it.downloadUrl) +// } +// +// override fun onCancelClick() { +// +// } +// }).build().show() +// } + } + noticeViewModel = ViewModelProvider(this)[NoticeViewModel::class.java] noticeViewModel.noticeList.observe(this) { @@ -116,6 +141,13 @@ } } } + + //初始化下载对话框 + progressDialog = ProgressDialog(requireContext()) + progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) + progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) + progressDialog.setCanceledOnTouchOutside(false) + progressDialog.setCancelable(false) } override fun onResume() { @@ -132,7 +164,7 @@ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { - 0 -> PictureSelector.create(context) + 0 -> PictureSelector.create(requireContext()) .openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -147,14 +179,14 @@ } }) - 1 -> PictureSelector.create(context) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) .isMaxSelectEnabledMask(true) .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -176,6 +208,10 @@ noticeLayout.setOnClickListener { requireContext().navigatePageTo() } + + updateLayout.setOnClickListener { + fileViewModel.updateVersion() + } } private fun analyticalSelectResults(result: LocalMedia) { @@ -183,7 +219,7 @@ result.realPath.compressImage(requireContext(), object : OnImageCompressListener { override fun onSuccess(file: File) { //上传图片 - uploadViewModel.uploadFile(file, FileType.IMAGE) + fileViewModel.uploadFile(file, FileType.IMAGE) } override fun onError(e: Throwable) { @@ -195,7 +231,7 @@ override fun initLayoutView(): Int = R.layout.fragment_mine override fun observeRequestState() { - uploadViewModel.loadState.observe(this) { + fileViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") else -> LoadingDialogHub.dismiss() diff --git a/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java new file mode 100644 index 0000000..3758903 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java @@ -0,0 +1,5 @@ +package com.casic.xz.meterage.model; + +public class VersionResultModel { + +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt index 9feef94..0a80346 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt @@ -20,7 +20,7 @@ class GlideLoadEngine private constructor() : ImageEngine { companion object { - val instance: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { GlideLoadEngine() } } diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 1a844cd..bf692eb 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -64,6 +64,12 @@ ): String /** + * 更新APK版本 + */ + @POST("/sys/app/checkVersion") + suspend fun updateVersion(@Header("token") token: String): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index 7f43a7d..b40ece8 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,5 +1,6 @@ package com.casic.xz.meterage.fragment +import android.app.ProgressDialog import android.graphics.Color import android.view.View import android.widget.LinearLayout @@ -17,7 +18,7 @@ import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.view.notice.NoticeListActivity -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector @@ -36,9 +37,10 @@ class MinePageFragment : KotlinBaseFragment() { - private lateinit var uploadViewModel: FileUploadViewModel + private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var progressDialog: ProgressDialog override fun initData() { val userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -69,8 +71,8 @@ } } - uploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] - uploadViewModel.resultModel.observe(this) { + fileViewModel = ViewModelProvider(this)[FileViewModel::class.java] + fileViewModel.resultModel.observe(this) { if (it.code == 200) { //更新用户信息表 userViewModel.updateUserInfo( @@ -91,6 +93,29 @@ .into(userAvatarView) } } + fileViewModel.versionResult.observe(this) { +// if (BuildConfig.VERSION_NAME == it.version) { +// "已是最新版本,无需更新".show(requireContext()) +// } else { +// AlertControlDialog.Builder() +// .setContext(requireContext()) +// .setTitle("提示") +// .setMessage("有新版本,是否更新?") +// .setNegativeButton("稍后再说") +// .setPositiveButton("立即下载") +// .setOnDialogButtonClickListener(object : +// AlertControlDialog.OnDialogButtonClickListener { +// override fun onConfirmClick() { +// downloadApk(it.downloadUrl) +// } +// +// override fun onCancelClick() { +// +// } +// }).build().show() +// } + } + noticeViewModel = ViewModelProvider(this)[NoticeViewModel::class.java] noticeViewModel.noticeList.observe(this) { @@ -116,6 +141,13 @@ } } } + + //初始化下载对话框 + progressDialog = ProgressDialog(requireContext()) + progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) + progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) + progressDialog.setCanceledOnTouchOutside(false) + progressDialog.setCancelable(false) } override fun onResume() { @@ -132,7 +164,7 @@ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { - 0 -> PictureSelector.create(context) + 0 -> PictureSelector.create(requireContext()) .openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -147,14 +179,14 @@ } }) - 1 -> PictureSelector.create(context) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) .isMaxSelectEnabledMask(true) .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -176,6 +208,10 @@ noticeLayout.setOnClickListener { requireContext().navigatePageTo() } + + updateLayout.setOnClickListener { + fileViewModel.updateVersion() + } } private fun analyticalSelectResults(result: LocalMedia) { @@ -183,7 +219,7 @@ result.realPath.compressImage(requireContext(), object : OnImageCompressListener { override fun onSuccess(file: File) { //上传图片 - uploadViewModel.uploadFile(file, FileType.IMAGE) + fileViewModel.uploadFile(file, FileType.IMAGE) } override fun onError(e: Throwable) { @@ -195,7 +231,7 @@ override fun initLayoutView(): Int = R.layout.fragment_mine override fun observeRequestState() { - uploadViewModel.loadState.observe(this) { + fileViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") else -> LoadingDialogHub.dismiss() diff --git a/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java new file mode 100644 index 0000000..3758903 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java @@ -0,0 +1,5 @@ +package com.casic.xz.meterage.model; + +public class VersionResultModel { + +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt index 9feef94..0a80346 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt @@ -20,7 +20,7 @@ class GlideLoadEngine private constructor() : ImageEngine { companion object { - val instance: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { GlideLoadEngine() } } diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 1a844cd..bf692eb 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -64,6 +64,12 @@ ): String /** + * 更新APK版本 + */ + @POST("/sys/app/checkVersion") + suspend fun updateVersion(@Header("token") token: String): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index afa53cf..e9b2a76 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -123,6 +123,13 @@ } /** + * 更新APK版本 + */ + suspend fun updateVersion(): String { + return api.updateVersion(AuthenticationHelper.token!!) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index 7f43a7d..b40ece8 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,5 +1,6 @@ package com.casic.xz.meterage.fragment +import android.app.ProgressDialog import android.graphics.Color import android.view.View import android.widget.LinearLayout @@ -17,7 +18,7 @@ import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.view.notice.NoticeListActivity -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector @@ -36,9 +37,10 @@ class MinePageFragment : KotlinBaseFragment() { - private lateinit var uploadViewModel: FileUploadViewModel + private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var progressDialog: ProgressDialog override fun initData() { val userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -69,8 +71,8 @@ } } - uploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] - uploadViewModel.resultModel.observe(this) { + fileViewModel = ViewModelProvider(this)[FileViewModel::class.java] + fileViewModel.resultModel.observe(this) { if (it.code == 200) { //更新用户信息表 userViewModel.updateUserInfo( @@ -91,6 +93,29 @@ .into(userAvatarView) } } + fileViewModel.versionResult.observe(this) { +// if (BuildConfig.VERSION_NAME == it.version) { +// "已是最新版本,无需更新".show(requireContext()) +// } else { +// AlertControlDialog.Builder() +// .setContext(requireContext()) +// .setTitle("提示") +// .setMessage("有新版本,是否更新?") +// .setNegativeButton("稍后再说") +// .setPositiveButton("立即下载") +// .setOnDialogButtonClickListener(object : +// AlertControlDialog.OnDialogButtonClickListener { +// override fun onConfirmClick() { +// downloadApk(it.downloadUrl) +// } +// +// override fun onCancelClick() { +// +// } +// }).build().show() +// } + } + noticeViewModel = ViewModelProvider(this)[NoticeViewModel::class.java] noticeViewModel.noticeList.observe(this) { @@ -116,6 +141,13 @@ } } } + + //初始化下载对话框 + progressDialog = ProgressDialog(requireContext()) + progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) + progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) + progressDialog.setCanceledOnTouchOutside(false) + progressDialog.setCancelable(false) } override fun onResume() { @@ -132,7 +164,7 @@ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { - 0 -> PictureSelector.create(context) + 0 -> PictureSelector.create(requireContext()) .openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -147,14 +179,14 @@ } }) - 1 -> PictureSelector.create(context) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) .isMaxSelectEnabledMask(true) .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -176,6 +208,10 @@ noticeLayout.setOnClickListener { requireContext().navigatePageTo() } + + updateLayout.setOnClickListener { + fileViewModel.updateVersion() + } } private fun analyticalSelectResults(result: LocalMedia) { @@ -183,7 +219,7 @@ result.realPath.compressImage(requireContext(), object : OnImageCompressListener { override fun onSuccess(file: File) { //上传图片 - uploadViewModel.uploadFile(file, FileType.IMAGE) + fileViewModel.uploadFile(file, FileType.IMAGE) } override fun onError(e: Throwable) { @@ -195,7 +231,7 @@ override fun initLayoutView(): Int = R.layout.fragment_mine override fun observeRequestState() { - uploadViewModel.loadState.observe(this) { + fileViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") else -> LoadingDialogHub.dismiss() diff --git a/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java new file mode 100644 index 0000000..3758903 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java @@ -0,0 +1,5 @@ +package com.casic.xz.meterage.model; + +public class VersionResultModel { + +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt index 9feef94..0a80346 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt @@ -20,7 +20,7 @@ class GlideLoadEngine private constructor() : ImageEngine { companion object { - val instance: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { GlideLoadEngine() } } diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 1a844cd..bf692eb 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -64,6 +64,12 @@ ): String /** + * 更新APK版本 + */ + @POST("/sys/app/checkVersion") + suspend fun updateVersion(@Header("token") token: String): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index afa53cf..e9b2a76 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -123,6 +123,13 @@ } /** + * 更新APK版本 + */ + suspend fun updateVersion(): String { + return api.updateVersion(AuthenticationHelper.token!!) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt index 7274870..75944ec 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt @@ -23,7 +23,7 @@ import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.vm.DictionaryViewModel import com.casic.xz.meterage.vm.EntrustViewModel -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.github.gzuliyujiang.wheelpicker.entity.DateEntity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -47,7 +47,7 @@ private val context: Context = this@EntrustAddActivity private val gson by lazy { Gson() } private lateinit var dictionaryViewModel: DictionaryViewModel - private lateinit var fileUploadViewModel: FileUploadViewModel + private lateinit var fileUploadViewModel: FileViewModel private lateinit var entrustViewModel: EntrustViewModel private lateinit var sampleAdapter: CustomerSampleAdapter private var checkedItems = ArrayList() @@ -76,7 +76,7 @@ } } - fileUploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] + fileUploadViewModel = ViewModelProvider(this)[FileViewModel::class.java] fileUploadViewModel.resultModel.observe(this) { if (it.code == 200) { val annexName = it.data[0] @@ -348,7 +348,7 @@ .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index 7f43a7d..b40ece8 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,5 +1,6 @@ package com.casic.xz.meterage.fragment +import android.app.ProgressDialog import android.graphics.Color import android.view.View import android.widget.LinearLayout @@ -17,7 +18,7 @@ import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.view.notice.NoticeListActivity -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector @@ -36,9 +37,10 @@ class MinePageFragment : KotlinBaseFragment() { - private lateinit var uploadViewModel: FileUploadViewModel + private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var progressDialog: ProgressDialog override fun initData() { val userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -69,8 +71,8 @@ } } - uploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] - uploadViewModel.resultModel.observe(this) { + fileViewModel = ViewModelProvider(this)[FileViewModel::class.java] + fileViewModel.resultModel.observe(this) { if (it.code == 200) { //更新用户信息表 userViewModel.updateUserInfo( @@ -91,6 +93,29 @@ .into(userAvatarView) } } + fileViewModel.versionResult.observe(this) { +// if (BuildConfig.VERSION_NAME == it.version) { +// "已是最新版本,无需更新".show(requireContext()) +// } else { +// AlertControlDialog.Builder() +// .setContext(requireContext()) +// .setTitle("提示") +// .setMessage("有新版本,是否更新?") +// .setNegativeButton("稍后再说") +// .setPositiveButton("立即下载") +// .setOnDialogButtonClickListener(object : +// AlertControlDialog.OnDialogButtonClickListener { +// override fun onConfirmClick() { +// downloadApk(it.downloadUrl) +// } +// +// override fun onCancelClick() { +// +// } +// }).build().show() +// } + } + noticeViewModel = ViewModelProvider(this)[NoticeViewModel::class.java] noticeViewModel.noticeList.observe(this) { @@ -116,6 +141,13 @@ } } } + + //初始化下载对话框 + progressDialog = ProgressDialog(requireContext()) + progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) + progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) + progressDialog.setCanceledOnTouchOutside(false) + progressDialog.setCancelable(false) } override fun onResume() { @@ -132,7 +164,7 @@ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { - 0 -> PictureSelector.create(context) + 0 -> PictureSelector.create(requireContext()) .openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -147,14 +179,14 @@ } }) - 1 -> PictureSelector.create(context) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) .isMaxSelectEnabledMask(true) .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -176,6 +208,10 @@ noticeLayout.setOnClickListener { requireContext().navigatePageTo() } + + updateLayout.setOnClickListener { + fileViewModel.updateVersion() + } } private fun analyticalSelectResults(result: LocalMedia) { @@ -183,7 +219,7 @@ result.realPath.compressImage(requireContext(), object : OnImageCompressListener { override fun onSuccess(file: File) { //上传图片 - uploadViewModel.uploadFile(file, FileType.IMAGE) + fileViewModel.uploadFile(file, FileType.IMAGE) } override fun onError(e: Throwable) { @@ -195,7 +231,7 @@ override fun initLayoutView(): Int = R.layout.fragment_mine override fun observeRequestState() { - uploadViewModel.loadState.observe(this) { + fileViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") else -> LoadingDialogHub.dismiss() diff --git a/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java new file mode 100644 index 0000000..3758903 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java @@ -0,0 +1,5 @@ +package com.casic.xz.meterage.model; + +public class VersionResultModel { + +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt index 9feef94..0a80346 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt @@ -20,7 +20,7 @@ class GlideLoadEngine private constructor() : ImageEngine { companion object { - val instance: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { GlideLoadEngine() } } diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 1a844cd..bf692eb 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -64,6 +64,12 @@ ): String /** + * 更新APK版本 + */ + @POST("/sys/app/checkVersion") + suspend fun updateVersion(@Header("token") token: String): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index afa53cf..e9b2a76 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -123,6 +123,13 @@ } /** + * 更新APK版本 + */ + suspend fun updateVersion(): String { + return api.updateVersion(AuthenticationHelper.token!!) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt index 7274870..75944ec 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt @@ -23,7 +23,7 @@ import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.vm.DictionaryViewModel import com.casic.xz.meterage.vm.EntrustViewModel -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.github.gzuliyujiang.wheelpicker.entity.DateEntity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -47,7 +47,7 @@ private val context: Context = this@EntrustAddActivity private val gson by lazy { Gson() } private lateinit var dictionaryViewModel: DictionaryViewModel - private lateinit var fileUploadViewModel: FileUploadViewModel + private lateinit var fileUploadViewModel: FileViewModel private lateinit var entrustViewModel: EntrustViewModel private lateinit var sampleAdapter: CustomerSampleAdapter private var checkedItems = ArrayList() @@ -76,7 +76,7 @@ } } - fileUploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] + fileUploadViewModel = ViewModelProvider(this)[FileViewModel::class.java] fileUploadViewModel.resultModel.observe(this) { if (it.code == 200) { val annexName = it.data[0] @@ -348,7 +348,7 @@ .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt index f50ad21..1ac6820 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt @@ -17,7 +17,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.utils.LocaleConstant -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.SampleViewModel import com.github.gzuliyujiang.wheelpicker.entity.DateEntity import com.gyf.immersionbar.ImmersionBar @@ -35,7 +35,7 @@ private val context: Context = this@WriteSampleActivity private val items = arrayListOf("A", "B", "C") private lateinit var sampleViewModel: SampleViewModel - private lateinit var fileUploadViewModel: FileUploadViewModel + private lateinit var fileUploadViewModel: FileViewModel override fun initData() { sampleViewModel = ViewModelProvider(this)[SampleViewModel::class.java] @@ -45,7 +45,7 @@ } } - fileUploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] + fileUploadViewModel = ViewModelProvider(this)[FileViewModel::class.java] fileUploadViewModel.resultModel.observe(this) { if (it.code == 200) { val annexName = it.data[0] diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index 7f43a7d..b40ece8 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,5 +1,6 @@ package com.casic.xz.meterage.fragment +import android.app.ProgressDialog import android.graphics.Color import android.view.View import android.widget.LinearLayout @@ -17,7 +18,7 @@ import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.view.notice.NoticeListActivity -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector @@ -36,9 +37,10 @@ class MinePageFragment : KotlinBaseFragment() { - private lateinit var uploadViewModel: FileUploadViewModel + private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var progressDialog: ProgressDialog override fun initData() { val userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -69,8 +71,8 @@ } } - uploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] - uploadViewModel.resultModel.observe(this) { + fileViewModel = ViewModelProvider(this)[FileViewModel::class.java] + fileViewModel.resultModel.observe(this) { if (it.code == 200) { //更新用户信息表 userViewModel.updateUserInfo( @@ -91,6 +93,29 @@ .into(userAvatarView) } } + fileViewModel.versionResult.observe(this) { +// if (BuildConfig.VERSION_NAME == it.version) { +// "已是最新版本,无需更新".show(requireContext()) +// } else { +// AlertControlDialog.Builder() +// .setContext(requireContext()) +// .setTitle("提示") +// .setMessage("有新版本,是否更新?") +// .setNegativeButton("稍后再说") +// .setPositiveButton("立即下载") +// .setOnDialogButtonClickListener(object : +// AlertControlDialog.OnDialogButtonClickListener { +// override fun onConfirmClick() { +// downloadApk(it.downloadUrl) +// } +// +// override fun onCancelClick() { +// +// } +// }).build().show() +// } + } + noticeViewModel = ViewModelProvider(this)[NoticeViewModel::class.java] noticeViewModel.noticeList.observe(this) { @@ -116,6 +141,13 @@ } } } + + //初始化下载对话框 + progressDialog = ProgressDialog(requireContext()) + progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) + progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) + progressDialog.setCanceledOnTouchOutside(false) + progressDialog.setCancelable(false) } override fun onResume() { @@ -132,7 +164,7 @@ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { - 0 -> PictureSelector.create(context) + 0 -> PictureSelector.create(requireContext()) .openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -147,14 +179,14 @@ } }) - 1 -> PictureSelector.create(context) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) .isMaxSelectEnabledMask(true) .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -176,6 +208,10 @@ noticeLayout.setOnClickListener { requireContext().navigatePageTo() } + + updateLayout.setOnClickListener { + fileViewModel.updateVersion() + } } private fun analyticalSelectResults(result: LocalMedia) { @@ -183,7 +219,7 @@ result.realPath.compressImage(requireContext(), object : OnImageCompressListener { override fun onSuccess(file: File) { //上传图片 - uploadViewModel.uploadFile(file, FileType.IMAGE) + fileViewModel.uploadFile(file, FileType.IMAGE) } override fun onError(e: Throwable) { @@ -195,7 +231,7 @@ override fun initLayoutView(): Int = R.layout.fragment_mine override fun observeRequestState() { - uploadViewModel.loadState.observe(this) { + fileViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") else -> LoadingDialogHub.dismiss() diff --git a/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java new file mode 100644 index 0000000..3758903 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java @@ -0,0 +1,5 @@ +package com.casic.xz.meterage.model; + +public class VersionResultModel { + +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt index 9feef94..0a80346 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt @@ -20,7 +20,7 @@ class GlideLoadEngine private constructor() : ImageEngine { companion object { - val instance: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { GlideLoadEngine() } } diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 1a844cd..bf692eb 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -64,6 +64,12 @@ ): String /** + * 更新APK版本 + */ + @POST("/sys/app/checkVersion") + suspend fun updateVersion(@Header("token") token: String): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index afa53cf..e9b2a76 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -123,6 +123,13 @@ } /** + * 更新APK版本 + */ + suspend fun updateVersion(): String { + return api.updateVersion(AuthenticationHelper.token!!) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt index 7274870..75944ec 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt @@ -23,7 +23,7 @@ import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.vm.DictionaryViewModel import com.casic.xz.meterage.vm.EntrustViewModel -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.github.gzuliyujiang.wheelpicker.entity.DateEntity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -47,7 +47,7 @@ private val context: Context = this@EntrustAddActivity private val gson by lazy { Gson() } private lateinit var dictionaryViewModel: DictionaryViewModel - private lateinit var fileUploadViewModel: FileUploadViewModel + private lateinit var fileUploadViewModel: FileViewModel private lateinit var entrustViewModel: EntrustViewModel private lateinit var sampleAdapter: CustomerSampleAdapter private var checkedItems = ArrayList() @@ -76,7 +76,7 @@ } } - fileUploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] + fileUploadViewModel = ViewModelProvider(this)[FileViewModel::class.java] fileUploadViewModel.resultModel.observe(this) { if (it.code == 200) { val annexName = it.data[0] @@ -348,7 +348,7 @@ .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt index f50ad21..1ac6820 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt @@ -17,7 +17,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.utils.LocaleConstant -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.SampleViewModel import com.github.gzuliyujiang.wheelpicker.entity.DateEntity import com.gyf.immersionbar.ImmersionBar @@ -35,7 +35,7 @@ private val context: Context = this@WriteSampleActivity private val items = arrayListOf("A", "B", "C") private lateinit var sampleViewModel: SampleViewModel - private lateinit var fileUploadViewModel: FileUploadViewModel + private lateinit var fileUploadViewModel: FileViewModel override fun initData() { sampleViewModel = ViewModelProvider(this)[SampleViewModel::class.java] @@ -45,7 +45,7 @@ } } - fileUploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] + fileUploadViewModel = ViewModelProvider(this)[FileViewModel::class.java] fileUploadViewModel.resultModel.observe(this) { if (it.code == 200) { val annexName = it.data[0] diff --git a/app/src/main/java/com/casic/xz/meterage/vm/FileUploadViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/FileUploadViewModel.kt deleted file mode 100644 index d88fa37..0000000 --- a/app/src/main/java/com/casic/xz/meterage/vm/FileUploadViewModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.xz.meterage.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.xz.meterage.base.BaseApplication -import com.casic.xz.meterage.extensions.separateResponseCode -import com.casic.xz.meterage.extensions.toErrorMessage -import com.casic.xz.meterage.model.UploadResultModel -import com.casic.xz.meterage.utils.FileType -import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState -import java.io.File - -class FileUploadViewModel : BaseViewModel() { - - private val gson by lazy { Gson() } - val resultModel = MutableLiveData() - - fun uploadFile(file: File, type: FileType) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.uploadFile(file, type) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - loadState.value = LoadState.Success - resultModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - loadState.value = LoadState.Fail - response.toErrorMessage().show(BaseApplication.get()) - } - }, { - loadState.value = LoadState.Fail - it.cause.toString().show(BaseApplication.get()) - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index 7f43a7d..b40ece8 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,5 +1,6 @@ package com.casic.xz.meterage.fragment +import android.app.ProgressDialog import android.graphics.Color import android.view.View import android.widget.LinearLayout @@ -17,7 +18,7 @@ import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.view.notice.NoticeListActivity -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector @@ -36,9 +37,10 @@ class MinePageFragment : KotlinBaseFragment() { - private lateinit var uploadViewModel: FileUploadViewModel + private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var progressDialog: ProgressDialog override fun initData() { val userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -69,8 +71,8 @@ } } - uploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] - uploadViewModel.resultModel.observe(this) { + fileViewModel = ViewModelProvider(this)[FileViewModel::class.java] + fileViewModel.resultModel.observe(this) { if (it.code == 200) { //更新用户信息表 userViewModel.updateUserInfo( @@ -91,6 +93,29 @@ .into(userAvatarView) } } + fileViewModel.versionResult.observe(this) { +// if (BuildConfig.VERSION_NAME == it.version) { +// "已是最新版本,无需更新".show(requireContext()) +// } else { +// AlertControlDialog.Builder() +// .setContext(requireContext()) +// .setTitle("提示") +// .setMessage("有新版本,是否更新?") +// .setNegativeButton("稍后再说") +// .setPositiveButton("立即下载") +// .setOnDialogButtonClickListener(object : +// AlertControlDialog.OnDialogButtonClickListener { +// override fun onConfirmClick() { +// downloadApk(it.downloadUrl) +// } +// +// override fun onCancelClick() { +// +// } +// }).build().show() +// } + } + noticeViewModel = ViewModelProvider(this)[NoticeViewModel::class.java] noticeViewModel.noticeList.observe(this) { @@ -116,6 +141,13 @@ } } } + + //初始化下载对话框 + progressDialog = ProgressDialog(requireContext()) + progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) + progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) + progressDialog.setCanceledOnTouchOutside(false) + progressDialog.setCancelable(false) } override fun onResume() { @@ -132,7 +164,7 @@ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { - 0 -> PictureSelector.create(context) + 0 -> PictureSelector.create(requireContext()) .openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -147,14 +179,14 @@ } }) - 1 -> PictureSelector.create(context) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) .isMaxSelectEnabledMask(true) .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -176,6 +208,10 @@ noticeLayout.setOnClickListener { requireContext().navigatePageTo() } + + updateLayout.setOnClickListener { + fileViewModel.updateVersion() + } } private fun analyticalSelectResults(result: LocalMedia) { @@ -183,7 +219,7 @@ result.realPath.compressImage(requireContext(), object : OnImageCompressListener { override fun onSuccess(file: File) { //上传图片 - uploadViewModel.uploadFile(file, FileType.IMAGE) + fileViewModel.uploadFile(file, FileType.IMAGE) } override fun onError(e: Throwable) { @@ -195,7 +231,7 @@ override fun initLayoutView(): Int = R.layout.fragment_mine override fun observeRequestState() { - uploadViewModel.loadState.observe(this) { + fileViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") else -> LoadingDialogHub.dismiss() diff --git a/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java new file mode 100644 index 0000000..3758903 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java @@ -0,0 +1,5 @@ +package com.casic.xz.meterage.model; + +public class VersionResultModel { + +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt index 9feef94..0a80346 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt @@ -20,7 +20,7 @@ class GlideLoadEngine private constructor() : ImageEngine { companion object { - val instance: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { GlideLoadEngine() } } diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 1a844cd..bf692eb 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -64,6 +64,12 @@ ): String /** + * 更新APK版本 + */ + @POST("/sys/app/checkVersion") + suspend fun updateVersion(@Header("token") token: String): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index afa53cf..e9b2a76 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -123,6 +123,13 @@ } /** + * 更新APK版本 + */ + suspend fun updateVersion(): String { + return api.updateVersion(AuthenticationHelper.token!!) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt index 7274870..75944ec 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt @@ -23,7 +23,7 @@ import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.vm.DictionaryViewModel import com.casic.xz.meterage.vm.EntrustViewModel -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.github.gzuliyujiang.wheelpicker.entity.DateEntity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -47,7 +47,7 @@ private val context: Context = this@EntrustAddActivity private val gson by lazy { Gson() } private lateinit var dictionaryViewModel: DictionaryViewModel - private lateinit var fileUploadViewModel: FileUploadViewModel + private lateinit var fileUploadViewModel: FileViewModel private lateinit var entrustViewModel: EntrustViewModel private lateinit var sampleAdapter: CustomerSampleAdapter private var checkedItems = ArrayList() @@ -76,7 +76,7 @@ } } - fileUploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] + fileUploadViewModel = ViewModelProvider(this)[FileViewModel::class.java] fileUploadViewModel.resultModel.observe(this) { if (it.code == 200) { val annexName = it.data[0] @@ -348,7 +348,7 @@ .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt index f50ad21..1ac6820 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt @@ -17,7 +17,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.utils.LocaleConstant -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.SampleViewModel import com.github.gzuliyujiang.wheelpicker.entity.DateEntity import com.gyf.immersionbar.ImmersionBar @@ -35,7 +35,7 @@ private val context: Context = this@WriteSampleActivity private val items = arrayListOf("A", "B", "C") private lateinit var sampleViewModel: SampleViewModel - private lateinit var fileUploadViewModel: FileUploadViewModel + private lateinit var fileUploadViewModel: FileViewModel override fun initData() { sampleViewModel = ViewModelProvider(this)[SampleViewModel::class.java] @@ -45,7 +45,7 @@ } } - fileUploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] + fileUploadViewModel = ViewModelProvider(this)[FileViewModel::class.java] fileUploadViewModel.resultModel.observe(this) { if (it.code == 200) { val annexName = it.data[0] diff --git a/app/src/main/java/com/casic/xz/meterage/vm/FileUploadViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/FileUploadViewModel.kt deleted file mode 100644 index d88fa37..0000000 --- a/app/src/main/java/com/casic/xz/meterage/vm/FileUploadViewModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.xz.meterage.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.xz.meterage.base.BaseApplication -import com.casic.xz.meterage.extensions.separateResponseCode -import com.casic.xz.meterage.extensions.toErrorMessage -import com.casic.xz.meterage.model.UploadResultModel -import com.casic.xz.meterage.utils.FileType -import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState -import java.io.File - -class FileUploadViewModel : BaseViewModel() { - - private val gson by lazy { Gson() } - val resultModel = MutableLiveData() - - fun uploadFile(file: File, type: FileType) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.uploadFile(file, type) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - loadState.value = LoadState.Success - resultModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - loadState.value = LoadState.Fail - response.toErrorMessage().show(BaseApplication.get()) - } - }, { - loadState.value = LoadState.Fail - it.cause.toString().show(BaseApplication.get()) - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/FileViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/FileViewModel.kt new file mode 100644 index 0000000..a4d78eb --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/FileViewModel.kt @@ -0,0 +1,62 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.UploadResultModel +import com.casic.xz.meterage.model.VersionResultModel +import com.casic.xz.meterage.utils.FileType +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState +import java.io.File + +class FileViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val resultModel = MutableLiveData() + val versionResult = MutableLiveData() + + fun uploadFile(file: File, type: FileType) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.uploadFile(file, type) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + resultModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun updateVersion() = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.updateVersion() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + versionResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt index 7f43a7d..b40ece8 100644 --- a/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/xz/meterage/fragment/MinePageFragment.kt @@ -1,5 +1,6 @@ package com.casic.xz.meterage.fragment +import android.app.ProgressDialog import android.graphics.Color import android.view.View import android.widget.LinearLayout @@ -17,7 +18,7 @@ import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.view.notice.NoticeListActivity -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.NoticeViewModel import com.casic.xz.meterage.vm.UserViewModel import com.luck.picture.lib.basic.PictureSelector @@ -36,9 +37,10 @@ class MinePageFragment : KotlinBaseFragment() { - private lateinit var uploadViewModel: FileUploadViewModel + private lateinit var fileViewModel: FileViewModel private lateinit var noticeViewModel: NoticeViewModel private lateinit var user: UserInfoModel.DataModel + private lateinit var progressDialog: ProgressDialog override fun initData() { val userViewModel = ViewModelProvider(this)[UserViewModel::class.java] @@ -69,8 +71,8 @@ } } - uploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] - uploadViewModel.resultModel.observe(this) { + fileViewModel = ViewModelProvider(this)[FileViewModel::class.java] + fileViewModel.resultModel.observe(this) { if (it.code == 200) { //更新用户信息表 userViewModel.updateUserInfo( @@ -91,6 +93,29 @@ .into(userAvatarView) } } + fileViewModel.versionResult.observe(this) { +// if (BuildConfig.VERSION_NAME == it.version) { +// "已是最新版本,无需更新".show(requireContext()) +// } else { +// AlertControlDialog.Builder() +// .setContext(requireContext()) +// .setTitle("提示") +// .setMessage("有新版本,是否更新?") +// .setNegativeButton("稍后再说") +// .setPositiveButton("立即下载") +// .setOnDialogButtonClickListener(object : +// AlertControlDialog.OnDialogButtonClickListener { +// override fun onConfirmClick() { +// downloadApk(it.downloadUrl) +// } +// +// override fun onCancelClick() { +// +// } +// }).build().show() +// } + } + noticeViewModel = ViewModelProvider(this)[NoticeViewModel::class.java] noticeViewModel.noticeList.observe(this) { @@ -116,6 +141,13 @@ } } } + + //初始化下载对话框 + progressDialog = ProgressDialog(requireContext()) + progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) + progressDialog.setProgressDrawable(resources.getDrawable(R.drawable.download_progress)) + progressDialog.setCanceledOnTouchOutside(false) + progressDialog.setCancelable(false) } override fun onResume() { @@ -132,7 +164,7 @@ .setOnActionSheetListener(object : BottomActionSheet.OnActionSheetListener { override fun onActionItemClick(position: Int) { when (position) { - 0 -> PictureSelector.create(context) + 0 -> PictureSelector.create(requireContext()) .openCamera(SelectMimeType.ofImage()) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { @@ -147,14 +179,14 @@ } }) - 1 -> PictureSelector.create(context) + 1 -> PictureSelector.create(requireContext()) .openGallery(SelectMimeType.ofImage()) .isGif(false) .isMaxSelectEnabledMask(true) .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { @@ -176,6 +208,10 @@ noticeLayout.setOnClickListener { requireContext().navigatePageTo() } + + updateLayout.setOnClickListener { + fileViewModel.updateVersion() + } } private fun analyticalSelectResults(result: LocalMedia) { @@ -183,7 +219,7 @@ result.realPath.compressImage(requireContext(), object : OnImageCompressListener { override fun onSuccess(file: File) { //上传图片 - uploadViewModel.uploadFile(file, FileType.IMAGE) + fileViewModel.uploadFile(file, FileType.IMAGE) } override fun onError(e: Throwable) { @@ -195,7 +231,7 @@ override fun initLayoutView(): Int = R.layout.fragment_mine override fun observeRequestState() { - uploadViewModel.loadState.observe(this) { + fileViewModel.loadState.observe(this) { when (it) { LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "头像更新中,请稍后...") else -> LoadingDialogHub.dismiss() diff --git a/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java new file mode 100644 index 0000000..3758903 --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/model/VersionResultModel.java @@ -0,0 +1,5 @@ +package com.casic.xz.meterage.model; + +public class VersionResultModel { + +} diff --git a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt index 9feef94..0a80346 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/GlideLoadEngine.kt @@ -20,7 +20,7 @@ class GlideLoadEngine private constructor() : ImageEngine { companion object { - val instance: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + val get: GlideLoadEngine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { GlideLoadEngine() } } diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt index 1a844cd..bf692eb 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitService.kt @@ -64,6 +64,12 @@ ): String /** + * 更新APK版本 + */ + @POST("/sys/app/checkVersion") + suspend fun updateVersion(@Header("token") token: String): String + + /** * 获取通知公告列表 */ @POST("/system/notice/listPage") diff --git a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt index afa53cf..e9b2a76 100644 --- a/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/xz/meterage/utils/retrofit/RetrofitServiceManager.kt @@ -123,6 +123,13 @@ } /** + * 更新APK版本 + */ + suspend fun updateVersion(): String { + return api.updateVersion(AuthenticationHelper.token!!) + } + + /** * 获取通知公告列表 */ suspend fun getNoticeList( diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt index 7274870..75944ec 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/EntrustAddActivity.kt @@ -23,7 +23,7 @@ import com.casic.xz.meterage.utils.LocaleConstant import com.casic.xz.meterage.vm.DictionaryViewModel import com.casic.xz.meterage.vm.EntrustViewModel -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.github.gzuliyujiang.wheelpicker.entity.DateEntity import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -47,7 +47,7 @@ private val context: Context = this@EntrustAddActivity private val gson by lazy { Gson() } private lateinit var dictionaryViewModel: DictionaryViewModel - private lateinit var fileUploadViewModel: FileUploadViewModel + private lateinit var fileUploadViewModel: FileViewModel private lateinit var entrustViewModel: EntrustViewModel private lateinit var sampleAdapter: CustomerSampleAdapter private var checkedItems = ArrayList() @@ -76,7 +76,7 @@ } } - fileUploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] + fileUploadViewModel = ViewModelProvider(this)[FileViewModel::class.java] fileUploadViewModel.resultModel.observe(this) { if (it.code == 200) { val annexName = it.data[0] @@ -348,7 +348,7 @@ .setFilterMinFileSize(100) .setMaxSelectNum(1) .isDisplayCamera(false) - .setImageEngine(GlideLoadEngine.instance) + .setImageEngine(GlideLoadEngine.get) .forResult(object : OnResultCallbackListener { override fun onResult(result: ArrayList?) { if (result == null) { diff --git a/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt b/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt index f50ad21..1ac6820 100644 --- a/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt +++ b/app/src/main/java/com/casic/xz/meterage/view/home/WriteSampleActivity.kt @@ -17,7 +17,7 @@ import com.casic.xz.meterage.utils.FileType import com.casic.xz.meterage.utils.LoadingDialogHub import com.casic.xz.meterage.utils.LocaleConstant -import com.casic.xz.meterage.vm.FileUploadViewModel +import com.casic.xz.meterage.vm.FileViewModel import com.casic.xz.meterage.vm.SampleViewModel import com.github.gzuliyujiang.wheelpicker.entity.DateEntity import com.gyf.immersionbar.ImmersionBar @@ -35,7 +35,7 @@ private val context: Context = this@WriteSampleActivity private val items = arrayListOf("A", "B", "C") private lateinit var sampleViewModel: SampleViewModel - private lateinit var fileUploadViewModel: FileUploadViewModel + private lateinit var fileUploadViewModel: FileViewModel override fun initData() { sampleViewModel = ViewModelProvider(this)[SampleViewModel::class.java] @@ -45,7 +45,7 @@ } } - fileUploadViewModel = ViewModelProvider(this)[FileUploadViewModel::class.java] + fileUploadViewModel = ViewModelProvider(this)[FileViewModel::class.java] fileUploadViewModel.resultModel.observe(this) { if (it.code == 200) { val annexName = it.data[0] diff --git a/app/src/main/java/com/casic/xz/meterage/vm/FileUploadViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/FileUploadViewModel.kt deleted file mode 100644 index d88fa37..0000000 --- a/app/src/main/java/com/casic/xz/meterage/vm/FileUploadViewModel.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.casic.xz.meterage.vm - -import androidx.lifecycle.MutableLiveData -import com.casic.xz.meterage.base.BaseApplication -import com.casic.xz.meterage.extensions.separateResponseCode -import com.casic.xz.meterage.extensions.toErrorMessage -import com.casic.xz.meterage.model.UploadResultModel -import com.casic.xz.meterage.utils.FileType -import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken -import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.vm.BaseViewModel -import com.pengxh.kt.lite.vm.LoadState -import java.io.File - -class FileUploadViewModel : BaseViewModel() { - - private val gson by lazy { Gson() } - val resultModel = MutableLiveData() - - fun uploadFile(file: File, type: FileType) = launch({ - loadState.value = LoadState.Loading - val response = RetrofitServiceManager.uploadFile(file, type) - val responseCode = response.separateResponseCode() - if (responseCode == 200) { - loadState.value = LoadState.Success - resultModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - } else { - loadState.value = LoadState.Fail - response.toErrorMessage().show(BaseApplication.get()) - } - }, { - loadState.value = LoadState.Fail - it.cause.toString().show(BaseApplication.get()) - it.printStackTrace() - }) -} \ No newline at end of file diff --git a/app/src/main/java/com/casic/xz/meterage/vm/FileViewModel.kt b/app/src/main/java/com/casic/xz/meterage/vm/FileViewModel.kt new file mode 100644 index 0000000..a4d78eb --- /dev/null +++ b/app/src/main/java/com/casic/xz/meterage/vm/FileViewModel.kt @@ -0,0 +1,62 @@ +package com.casic.xz.meterage.vm + +import androidx.lifecycle.MutableLiveData +import com.casic.xz.meterage.base.BaseApplication +import com.casic.xz.meterage.extensions.separateResponseCode +import com.casic.xz.meterage.extensions.toErrorMessage +import com.casic.xz.meterage.model.UploadResultModel +import com.casic.xz.meterage.model.VersionResultModel +import com.casic.xz.meterage.utils.FileType +import com.casic.xz.meterage.utils.retrofit.RetrofitServiceManager +import com.google.gson.Gson +import com.google.gson.reflect.TypeToken +import com.pengxh.kt.lite.extensions.launch +import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.vm.BaseViewModel +import com.pengxh.kt.lite.vm.LoadState +import java.io.File + +class FileViewModel : BaseViewModel() { + + private val gson by lazy { Gson() } + val resultModel = MutableLiveData() + val versionResult = MutableLiveData() + + fun uploadFile(file: File, type: FileType) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.uploadFile(file, type) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + resultModel.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) + + fun updateVersion() = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.updateVersion() + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + loadState.value = LoadState.Success + versionResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) +} \ No newline at end of file diff --git a/app/src/main/res/drawable/download_progress.xml b/app/src/main/res/drawable/download_progress.xml new file mode 100644 index 0000000..c800091 --- /dev/null +++ b/app/src/main/res/drawable/download_progress.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file