diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 81ed156..ccea467 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -18,11 +18,16 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.adapter.GroupListAdapter import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.model.ProjectGroupModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.view.AddDeviceActivity @@ -41,12 +46,13 @@ import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.fragment_home.view.* + class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnInfoWindowClickListener { private val kTag = "HomePageFragment" + private val geocoderSearch by lazy { GeocodeSearch(context) } private lateinit var homeView: View - private lateinit var dialogManager: DialogManager private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var deviceViewModel: DeviceViewModel @@ -68,7 +74,7 @@ /** * 自定义Marker弹出框 * */ - private var infoWindow: View? = null + private var infoView: View? = null /** * 所有设备列表信息集合 @@ -80,7 +86,6 @@ ): View { homeView = inflater.inflate(R.layout.fragment_home, container, false) - dialogManager = DialogManager.obtainInstance(requireActivity()) weakReferenceHandler = WeakReferenceHandler(callback) val easyPopupWindow = EasyPopupWindow(requireContext()) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) @@ -202,8 +207,8 @@ }) groupViewModel.loadState.observe(this, { state -> when (state) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) return homeView @@ -349,10 +354,10 @@ } override fun getInfoWindow(marker: Marker?): View? { - if (infoWindow == null) { - infoWindow = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) + if (infoView == null) { + infoView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) } - val v = infoWindow!! + val v = infoView!! //反射得到popup里面的控件对象 val deviceCodeView = v.findViewById(R.id.deviceCodeView) val deviceModelView = v.findViewById(R.id.deviceModelView) @@ -379,8 +384,36 @@ updateTimeView.text = String.format("更新时间: 未知") } }) - locationView.text = String.format("详细位置: ${device.position}") - return infoWindow + if (device.latGaode.isBlank() || device.lngGaode.isBlank()) { + locationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(device.latGaode.toDouble(), device.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = + String.format("详细位置: ${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + //TODO 动态设置Popup宽度 +// val rootView = v.findViewById(R.id.rootView) +// val layoutParams = rootView.layoutParams +// layoutParams.width = (requireContext().obtainScreenWidth() * 0.8).toInt() +// rootView.layoutParams = layoutParams +// rootView.requestLayout() + return infoView } } "无法查看聚合点,请放大比例后再查看".show(requireContext()) diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 81ed156..ccea467 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -18,11 +18,16 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.adapter.GroupListAdapter import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.model.ProjectGroupModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.view.AddDeviceActivity @@ -41,12 +46,13 @@ import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.fragment_home.view.* + class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnInfoWindowClickListener { private val kTag = "HomePageFragment" + private val geocoderSearch by lazy { GeocodeSearch(context) } private lateinit var homeView: View - private lateinit var dialogManager: DialogManager private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var deviceViewModel: DeviceViewModel @@ -68,7 +74,7 @@ /** * 自定义Marker弹出框 * */ - private var infoWindow: View? = null + private var infoView: View? = null /** * 所有设备列表信息集合 @@ -80,7 +86,6 @@ ): View { homeView = inflater.inflate(R.layout.fragment_home, container, false) - dialogManager = DialogManager.obtainInstance(requireActivity()) weakReferenceHandler = WeakReferenceHandler(callback) val easyPopupWindow = EasyPopupWindow(requireContext()) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) @@ -202,8 +207,8 @@ }) groupViewModel.loadState.observe(this, { state -> when (state) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) return homeView @@ -349,10 +354,10 @@ } override fun getInfoWindow(marker: Marker?): View? { - if (infoWindow == null) { - infoWindow = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) + if (infoView == null) { + infoView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) } - val v = infoWindow!! + val v = infoView!! //反射得到popup里面的控件对象 val deviceCodeView = v.findViewById(R.id.deviceCodeView) val deviceModelView = v.findViewById(R.id.deviceModelView) @@ -379,8 +384,36 @@ updateTimeView.text = String.format("更新时间: 未知") } }) - locationView.text = String.format("详细位置: ${device.position}") - return infoWindow + if (device.latGaode.isBlank() || device.lngGaode.isBlank()) { + locationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(device.latGaode.toDouble(), device.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = + String.format("详细位置: ${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + //TODO 动态设置Popup宽度 +// val rootView = v.findViewById(R.id.rootView) +// val layoutParams = rootView.layoutParams +// layoutParams.width = (requireContext().obtainScreenWidth() * 0.8).toInt() +// rootView.layoutParams = layoutParams +// rootView.requestLayout() + return infoView } } "无法查看聚合点,请放大比例后再查看".show(requireContext()) diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt index d69274c..0fa5afb 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt @@ -12,7 +12,7 @@ import com.casic.smarttube.extensions.appendDownloadUrl import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.utils.AuthenticationHelper -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RSAUtils import com.casic.smarttube.view.AboutUsActivity @@ -37,7 +37,6 @@ class MinePageFragment : KotlinBaseFragment() { private val kTag = "MinePageFragment" - private lateinit var dialogManager: DialogManager private lateinit var userData: UserDetailModel.Data private lateinit var userViewModel: UserViewModel private lateinit var loginViewModel: LoginViewModel @@ -51,7 +50,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(requireActivity()) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) versionViewModel = ViewModelProvider(this).get(VersionViewModel::class.java) @@ -70,7 +68,7 @@ } updateUserButton.setOnClickListener { - dialogManager.showLoadingDialog("同步中,请稍后...") + LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.obtainUserDetail() } @@ -109,7 +107,7 @@ clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 - dialogManager.showLoadingDialog("清理中...") + LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() object : CountDownTimer(1500, 500) { override fun onTick(millisUntilFinished: Long) { @@ -117,7 +115,7 @@ } override fun onFinish() { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() @@ -149,7 +147,7 @@ private fun dataObserve() { userViewModel.userDetailModel.observe(this, { if (it.code == 200) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() "同步完成".show(requireContext()) userData = it.data updateUserInfo() @@ -158,19 +156,15 @@ userViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("修改中,请稍后") - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "修改中,请稍后") is LoadState.Success -> { "修改成功,请重新登录".show(requireContext()) - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() AuthenticationHelper.removeToken() requireContext().navigatePageTo() PageNavigationManager.finishAllActivity() } - else -> { - dialogManager.dismissLoadingDialog() - } + else -> LoadingDialogHub.dismiss() } }) @@ -199,12 +193,8 @@ versionViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("检查版本中,请稍后") - } - else -> { - dialogManager.dismissLoadingDialog() - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 81ed156..ccea467 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -18,11 +18,16 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.adapter.GroupListAdapter import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.model.ProjectGroupModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.view.AddDeviceActivity @@ -41,12 +46,13 @@ import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.fragment_home.view.* + class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnInfoWindowClickListener { private val kTag = "HomePageFragment" + private val geocoderSearch by lazy { GeocodeSearch(context) } private lateinit var homeView: View - private lateinit var dialogManager: DialogManager private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var deviceViewModel: DeviceViewModel @@ -68,7 +74,7 @@ /** * 自定义Marker弹出框 * */ - private var infoWindow: View? = null + private var infoView: View? = null /** * 所有设备列表信息集合 @@ -80,7 +86,6 @@ ): View { homeView = inflater.inflate(R.layout.fragment_home, container, false) - dialogManager = DialogManager.obtainInstance(requireActivity()) weakReferenceHandler = WeakReferenceHandler(callback) val easyPopupWindow = EasyPopupWindow(requireContext()) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) @@ -202,8 +207,8 @@ }) groupViewModel.loadState.observe(this, { state -> when (state) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) return homeView @@ -349,10 +354,10 @@ } override fun getInfoWindow(marker: Marker?): View? { - if (infoWindow == null) { - infoWindow = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) + if (infoView == null) { + infoView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) } - val v = infoWindow!! + val v = infoView!! //反射得到popup里面的控件对象 val deviceCodeView = v.findViewById(R.id.deviceCodeView) val deviceModelView = v.findViewById(R.id.deviceModelView) @@ -379,8 +384,36 @@ updateTimeView.text = String.format("更新时间: 未知") } }) - locationView.text = String.format("详细位置: ${device.position}") - return infoWindow + if (device.latGaode.isBlank() || device.lngGaode.isBlank()) { + locationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(device.latGaode.toDouble(), device.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = + String.format("详细位置: ${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + //TODO 动态设置Popup宽度 +// val rootView = v.findViewById(R.id.rootView) +// val layoutParams = rootView.layoutParams +// layoutParams.width = (requireContext().obtainScreenWidth() * 0.8).toInt() +// rootView.layoutParams = layoutParams +// rootView.requestLayout() + return infoView } } "无法查看聚合点,请放大比例后再查看".show(requireContext()) diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt index d69274c..0fa5afb 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt @@ -12,7 +12,7 @@ import com.casic.smarttube.extensions.appendDownloadUrl import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.utils.AuthenticationHelper -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RSAUtils import com.casic.smarttube.view.AboutUsActivity @@ -37,7 +37,6 @@ class MinePageFragment : KotlinBaseFragment() { private val kTag = "MinePageFragment" - private lateinit var dialogManager: DialogManager private lateinit var userData: UserDetailModel.Data private lateinit var userViewModel: UserViewModel private lateinit var loginViewModel: LoginViewModel @@ -51,7 +50,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(requireActivity()) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) versionViewModel = ViewModelProvider(this).get(VersionViewModel::class.java) @@ -70,7 +68,7 @@ } updateUserButton.setOnClickListener { - dialogManager.showLoadingDialog("同步中,请稍后...") + LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.obtainUserDetail() } @@ -109,7 +107,7 @@ clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 - dialogManager.showLoadingDialog("清理中...") + LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() object : CountDownTimer(1500, 500) { override fun onTick(millisUntilFinished: Long) { @@ -117,7 +115,7 @@ } override fun onFinish() { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() @@ -149,7 +147,7 @@ private fun dataObserve() { userViewModel.userDetailModel.observe(this, { if (it.code == 200) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() "同步完成".show(requireContext()) userData = it.data updateUserInfo() @@ -158,19 +156,15 @@ userViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("修改中,请稍后") - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "修改中,请稍后") is LoadState.Success -> { "修改成功,请重新登录".show(requireContext()) - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() AuthenticationHelper.removeToken() requireContext().navigatePageTo() PageNavigationManager.finishAllActivity() } - else -> { - dialogManager.dismissLoadingDialog() - } + else -> LoadingDialogHub.dismiss() } }) @@ -199,12 +193,8 @@ versionViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("检查版本中,请稍后") - } - else -> { - dialogManager.dismissLoadingDialog() - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 4731f17..8a50d25 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -1,6 +1,5 @@ package com.casic.smarttube.utils -import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.init import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 81ed156..ccea467 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -18,11 +18,16 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.adapter.GroupListAdapter import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.model.ProjectGroupModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.view.AddDeviceActivity @@ -41,12 +46,13 @@ import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.fragment_home.view.* + class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnInfoWindowClickListener { private val kTag = "HomePageFragment" + private val geocoderSearch by lazy { GeocodeSearch(context) } private lateinit var homeView: View - private lateinit var dialogManager: DialogManager private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var deviceViewModel: DeviceViewModel @@ -68,7 +74,7 @@ /** * 自定义Marker弹出框 * */ - private var infoWindow: View? = null + private var infoView: View? = null /** * 所有设备列表信息集合 @@ -80,7 +86,6 @@ ): View { homeView = inflater.inflate(R.layout.fragment_home, container, false) - dialogManager = DialogManager.obtainInstance(requireActivity()) weakReferenceHandler = WeakReferenceHandler(callback) val easyPopupWindow = EasyPopupWindow(requireContext()) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) @@ -202,8 +207,8 @@ }) groupViewModel.loadState.observe(this, { state -> when (state) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) return homeView @@ -349,10 +354,10 @@ } override fun getInfoWindow(marker: Marker?): View? { - if (infoWindow == null) { - infoWindow = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) + if (infoView == null) { + infoView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) } - val v = infoWindow!! + val v = infoView!! //反射得到popup里面的控件对象 val deviceCodeView = v.findViewById(R.id.deviceCodeView) val deviceModelView = v.findViewById(R.id.deviceModelView) @@ -379,8 +384,36 @@ updateTimeView.text = String.format("更新时间: 未知") } }) - locationView.text = String.format("详细位置: ${device.position}") - return infoWindow + if (device.latGaode.isBlank() || device.lngGaode.isBlank()) { + locationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(device.latGaode.toDouble(), device.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = + String.format("详细位置: ${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + //TODO 动态设置Popup宽度 +// val rootView = v.findViewById(R.id.rootView) +// val layoutParams = rootView.layoutParams +// layoutParams.width = (requireContext().obtainScreenWidth() * 0.8).toInt() +// rootView.layoutParams = layoutParams +// rootView.requestLayout() + return infoView } } "无法查看聚合点,请放大比例后再查看".show(requireContext()) diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt index d69274c..0fa5afb 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt @@ -12,7 +12,7 @@ import com.casic.smarttube.extensions.appendDownloadUrl import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.utils.AuthenticationHelper -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RSAUtils import com.casic.smarttube.view.AboutUsActivity @@ -37,7 +37,6 @@ class MinePageFragment : KotlinBaseFragment() { private val kTag = "MinePageFragment" - private lateinit var dialogManager: DialogManager private lateinit var userData: UserDetailModel.Data private lateinit var userViewModel: UserViewModel private lateinit var loginViewModel: LoginViewModel @@ -51,7 +50,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(requireActivity()) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) versionViewModel = ViewModelProvider(this).get(VersionViewModel::class.java) @@ -70,7 +68,7 @@ } updateUserButton.setOnClickListener { - dialogManager.showLoadingDialog("同步中,请稍后...") + LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.obtainUserDetail() } @@ -109,7 +107,7 @@ clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 - dialogManager.showLoadingDialog("清理中...") + LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() object : CountDownTimer(1500, 500) { override fun onTick(millisUntilFinished: Long) { @@ -117,7 +115,7 @@ } override fun onFinish() { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() @@ -149,7 +147,7 @@ private fun dataObserve() { userViewModel.userDetailModel.observe(this, { if (it.code == 200) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() "同步完成".show(requireContext()) userData = it.data updateUserInfo() @@ -158,19 +156,15 @@ userViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("修改中,请稍后") - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "修改中,请稍后") is LoadState.Success -> { "修改成功,请重新登录".show(requireContext()) - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() AuthenticationHelper.removeToken() requireContext().navigatePageTo() PageNavigationManager.finishAllActivity() } - else -> { - dialogManager.dismissLoadingDialog() - } + else -> LoadingDialogHub.dismiss() } }) @@ -199,12 +193,8 @@ versionViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("检查版本中,请稍后") - } - else -> { - dialogManager.dismissLoadingDialog() - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 4731f17..8a50d25 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -1,6 +1,5 @@ package com.casic.smarttube.utils -import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.init import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView diff --git a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt b/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt deleted file mode 100644 index d3917df..0000000 --- a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.smarttube.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 81ed156..ccea467 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -18,11 +18,16 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.adapter.GroupListAdapter import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.model.ProjectGroupModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.view.AddDeviceActivity @@ -41,12 +46,13 @@ import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.fragment_home.view.* + class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnInfoWindowClickListener { private val kTag = "HomePageFragment" + private val geocoderSearch by lazy { GeocodeSearch(context) } private lateinit var homeView: View - private lateinit var dialogManager: DialogManager private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var deviceViewModel: DeviceViewModel @@ -68,7 +74,7 @@ /** * 自定义Marker弹出框 * */ - private var infoWindow: View? = null + private var infoView: View? = null /** * 所有设备列表信息集合 @@ -80,7 +86,6 @@ ): View { homeView = inflater.inflate(R.layout.fragment_home, container, false) - dialogManager = DialogManager.obtainInstance(requireActivity()) weakReferenceHandler = WeakReferenceHandler(callback) val easyPopupWindow = EasyPopupWindow(requireContext()) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) @@ -202,8 +207,8 @@ }) groupViewModel.loadState.observe(this, { state -> when (state) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) return homeView @@ -349,10 +354,10 @@ } override fun getInfoWindow(marker: Marker?): View? { - if (infoWindow == null) { - infoWindow = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) + if (infoView == null) { + infoView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) } - val v = infoWindow!! + val v = infoView!! //反射得到popup里面的控件对象 val deviceCodeView = v.findViewById(R.id.deviceCodeView) val deviceModelView = v.findViewById(R.id.deviceModelView) @@ -379,8 +384,36 @@ updateTimeView.text = String.format("更新时间: 未知") } }) - locationView.text = String.format("详细位置: ${device.position}") - return infoWindow + if (device.latGaode.isBlank() || device.lngGaode.isBlank()) { + locationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(device.latGaode.toDouble(), device.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = + String.format("详细位置: ${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + //TODO 动态设置Popup宽度 +// val rootView = v.findViewById(R.id.rootView) +// val layoutParams = rootView.layoutParams +// layoutParams.width = (requireContext().obtainScreenWidth() * 0.8).toInt() +// rootView.layoutParams = layoutParams +// rootView.requestLayout() + return infoView } } "无法查看聚合点,请放大比例后再查看".show(requireContext()) diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt index d69274c..0fa5afb 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt @@ -12,7 +12,7 @@ import com.casic.smarttube.extensions.appendDownloadUrl import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.utils.AuthenticationHelper -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RSAUtils import com.casic.smarttube.view.AboutUsActivity @@ -37,7 +37,6 @@ class MinePageFragment : KotlinBaseFragment() { private val kTag = "MinePageFragment" - private lateinit var dialogManager: DialogManager private lateinit var userData: UserDetailModel.Data private lateinit var userViewModel: UserViewModel private lateinit var loginViewModel: LoginViewModel @@ -51,7 +50,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(requireActivity()) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) versionViewModel = ViewModelProvider(this).get(VersionViewModel::class.java) @@ -70,7 +68,7 @@ } updateUserButton.setOnClickListener { - dialogManager.showLoadingDialog("同步中,请稍后...") + LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.obtainUserDetail() } @@ -109,7 +107,7 @@ clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 - dialogManager.showLoadingDialog("清理中...") + LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() object : CountDownTimer(1500, 500) { override fun onTick(millisUntilFinished: Long) { @@ -117,7 +115,7 @@ } override fun onFinish() { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() @@ -149,7 +147,7 @@ private fun dataObserve() { userViewModel.userDetailModel.observe(this, { if (it.code == 200) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() "同步完成".show(requireContext()) userData = it.data updateUserInfo() @@ -158,19 +156,15 @@ userViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("修改中,请稍后") - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "修改中,请稍后") is LoadState.Success -> { "修改成功,请重新登录".show(requireContext()) - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() AuthenticationHelper.removeToken() requireContext().navigatePageTo() PageNavigationManager.finishAllActivity() } - else -> { - dialogManager.dismissLoadingDialog() - } + else -> LoadingDialogHub.dismiss() } }) @@ -199,12 +193,8 @@ versionViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("检查版本中,请稍后") - } - else -> { - dialogManager.dismissLoadingDialog() - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 4731f17..8a50d25 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -1,6 +1,5 @@ package com.casic.smarttube.utils -import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.init import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView diff --git a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt b/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt deleted file mode 100644 index d3917df..0000000 --- a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.smarttube.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..989a5d3 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.smarttube.utils + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 81ed156..ccea467 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -18,11 +18,16 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.adapter.GroupListAdapter import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.model.ProjectGroupModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.view.AddDeviceActivity @@ -41,12 +46,13 @@ import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.fragment_home.view.* + class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnInfoWindowClickListener { private val kTag = "HomePageFragment" + private val geocoderSearch by lazy { GeocodeSearch(context) } private lateinit var homeView: View - private lateinit var dialogManager: DialogManager private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var deviceViewModel: DeviceViewModel @@ -68,7 +74,7 @@ /** * 自定义Marker弹出框 * */ - private var infoWindow: View? = null + private var infoView: View? = null /** * 所有设备列表信息集合 @@ -80,7 +86,6 @@ ): View { homeView = inflater.inflate(R.layout.fragment_home, container, false) - dialogManager = DialogManager.obtainInstance(requireActivity()) weakReferenceHandler = WeakReferenceHandler(callback) val easyPopupWindow = EasyPopupWindow(requireContext()) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) @@ -202,8 +207,8 @@ }) groupViewModel.loadState.observe(this, { state -> when (state) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) return homeView @@ -349,10 +354,10 @@ } override fun getInfoWindow(marker: Marker?): View? { - if (infoWindow == null) { - infoWindow = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) + if (infoView == null) { + infoView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) } - val v = infoWindow!! + val v = infoView!! //反射得到popup里面的控件对象 val deviceCodeView = v.findViewById(R.id.deviceCodeView) val deviceModelView = v.findViewById(R.id.deviceModelView) @@ -379,8 +384,36 @@ updateTimeView.text = String.format("更新时间: 未知") } }) - locationView.text = String.format("详细位置: ${device.position}") - return infoWindow + if (device.latGaode.isBlank() || device.lngGaode.isBlank()) { + locationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(device.latGaode.toDouble(), device.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = + String.format("详细位置: ${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + //TODO 动态设置Popup宽度 +// val rootView = v.findViewById(R.id.rootView) +// val layoutParams = rootView.layoutParams +// layoutParams.width = (requireContext().obtainScreenWidth() * 0.8).toInt() +// rootView.layoutParams = layoutParams +// rootView.requestLayout() + return infoView } } "无法查看聚合点,请放大比例后再查看".show(requireContext()) diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt index d69274c..0fa5afb 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt @@ -12,7 +12,7 @@ import com.casic.smarttube.extensions.appendDownloadUrl import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.utils.AuthenticationHelper -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RSAUtils import com.casic.smarttube.view.AboutUsActivity @@ -37,7 +37,6 @@ class MinePageFragment : KotlinBaseFragment() { private val kTag = "MinePageFragment" - private lateinit var dialogManager: DialogManager private lateinit var userData: UserDetailModel.Data private lateinit var userViewModel: UserViewModel private lateinit var loginViewModel: LoginViewModel @@ -51,7 +50,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(requireActivity()) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) versionViewModel = ViewModelProvider(this).get(VersionViewModel::class.java) @@ -70,7 +68,7 @@ } updateUserButton.setOnClickListener { - dialogManager.showLoadingDialog("同步中,请稍后...") + LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.obtainUserDetail() } @@ -109,7 +107,7 @@ clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 - dialogManager.showLoadingDialog("清理中...") + LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() object : CountDownTimer(1500, 500) { override fun onTick(millisUntilFinished: Long) { @@ -117,7 +115,7 @@ } override fun onFinish() { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() @@ -149,7 +147,7 @@ private fun dataObserve() { userViewModel.userDetailModel.observe(this, { if (it.code == 200) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() "同步完成".show(requireContext()) userData = it.data updateUserInfo() @@ -158,19 +156,15 @@ userViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("修改中,请稍后") - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "修改中,请稍后") is LoadState.Success -> { "修改成功,请重新登录".show(requireContext()) - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() AuthenticationHelper.removeToken() requireContext().navigatePageTo() PageNavigationManager.finishAllActivity() } - else -> { - dialogManager.dismissLoadingDialog() - } + else -> LoadingDialogHub.dismiss() } }) @@ -199,12 +193,8 @@ versionViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("检查版本中,请稍后") - } - else -> { - dialogManager.dismissLoadingDialog() - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 4731f17..8a50d25 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -1,6 +1,5 @@ package com.casic.smarttube.utils -import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.init import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView diff --git a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt b/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt deleted file mode 100644 index d3917df..0000000 --- a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.smarttube.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..989a5d3 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.smarttube.utils + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt index 573cc61..b6b7d69 100644 --- a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt @@ -47,7 +47,6 @@ class AddDeviceActivity : KotlinBaseActivity() { private val kTag = "AddDeviceActivity" - private lateinit var dialogManager: DialogManager private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var uploadImageViewModel: UploadImageViewModel @@ -58,7 +57,6 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private val frequency = listOf("1min", "2min", "5min", "10min", "15min", "30min", "60min") private var selectedImages = ArrayList() - private var ownerShip = "" override fun initLayoutView(): Int = R.layout.activity_add_device @@ -70,11 +68,22 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) + + deviceViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + LoadState.Success -> { + "添加设备成功".show(this) + LoadingDialogHub.dismiss() + this.finish() + } + LoadState.Fail -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -154,11 +163,11 @@ } locationImageView.setOnClickListener { - dialogManager.showLoadingDialog("定位中,请稍后...") + LoadingDialogHub.show(this, "定位中,请稍后...") LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() if (aMapLocation == null) { longitudeView.text = "定位失败" latitudeView.text = "定位失败" @@ -200,7 +209,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { if (imageAdapter.itemCount == selectedImages.size) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() } if (imageAdapter.itemCount <= 3) { val url = it.data.toString() @@ -276,18 +285,6 @@ ) } } - - deviceViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("处理中,请稍后") - LoadState.Success -> { - Log.d(kTag, "initEvent: 成功") - dialogManager.dismissLoadingDialog() - this.finish() - } - LoadState.Fail -> dialogManager.dismissLoadingDialog() - } - }) } private fun selectPicture() { @@ -307,7 +304,10 @@ "拍照保存失败,请重试".show(context) return } - dialogManager.showLoadingDialog("图片上传中,请稍后...") + LoadingDialogHub.show( + this@AddDeviceActivity, + "图片上传中,请稍后..." + ) selectedImages = result analyticalSelectResults(result[0]) } @@ -332,7 +332,10 @@ "选择照片失败,请重试".show(context) return } - dialogManager.showLoadingDialog("图片上传中,请稍后...") + LoadingDialogHub.show( + this@AddDeviceActivity, + "图片上传中,请稍后..." + ) selectedImages = result // 线程控制图片压缩上传过程,防止速度过快导致压缩失败 val sum = (result.size * 500).toLong() diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 81ed156..ccea467 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -18,11 +18,16 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.adapter.GroupListAdapter import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.model.ProjectGroupModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.view.AddDeviceActivity @@ -41,12 +46,13 @@ import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.fragment_home.view.* + class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnInfoWindowClickListener { private val kTag = "HomePageFragment" + private val geocoderSearch by lazy { GeocodeSearch(context) } private lateinit var homeView: View - private lateinit var dialogManager: DialogManager private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var deviceViewModel: DeviceViewModel @@ -68,7 +74,7 @@ /** * 自定义Marker弹出框 * */ - private var infoWindow: View? = null + private var infoView: View? = null /** * 所有设备列表信息集合 @@ -80,7 +86,6 @@ ): View { homeView = inflater.inflate(R.layout.fragment_home, container, false) - dialogManager = DialogManager.obtainInstance(requireActivity()) weakReferenceHandler = WeakReferenceHandler(callback) val easyPopupWindow = EasyPopupWindow(requireContext()) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) @@ -202,8 +207,8 @@ }) groupViewModel.loadState.observe(this, { state -> when (state) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) return homeView @@ -349,10 +354,10 @@ } override fun getInfoWindow(marker: Marker?): View? { - if (infoWindow == null) { - infoWindow = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) + if (infoView == null) { + infoView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) } - val v = infoWindow!! + val v = infoView!! //反射得到popup里面的控件对象 val deviceCodeView = v.findViewById(R.id.deviceCodeView) val deviceModelView = v.findViewById(R.id.deviceModelView) @@ -379,8 +384,36 @@ updateTimeView.text = String.format("更新时间: 未知") } }) - locationView.text = String.format("详细位置: ${device.position}") - return infoWindow + if (device.latGaode.isBlank() || device.lngGaode.isBlank()) { + locationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(device.latGaode.toDouble(), device.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = + String.format("详细位置: ${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + //TODO 动态设置Popup宽度 +// val rootView = v.findViewById(R.id.rootView) +// val layoutParams = rootView.layoutParams +// layoutParams.width = (requireContext().obtainScreenWidth() * 0.8).toInt() +// rootView.layoutParams = layoutParams +// rootView.requestLayout() + return infoView } } "无法查看聚合点,请放大比例后再查看".show(requireContext()) diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt index d69274c..0fa5afb 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt @@ -12,7 +12,7 @@ import com.casic.smarttube.extensions.appendDownloadUrl import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.utils.AuthenticationHelper -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RSAUtils import com.casic.smarttube.view.AboutUsActivity @@ -37,7 +37,6 @@ class MinePageFragment : KotlinBaseFragment() { private val kTag = "MinePageFragment" - private lateinit var dialogManager: DialogManager private lateinit var userData: UserDetailModel.Data private lateinit var userViewModel: UserViewModel private lateinit var loginViewModel: LoginViewModel @@ -51,7 +50,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(requireActivity()) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) versionViewModel = ViewModelProvider(this).get(VersionViewModel::class.java) @@ -70,7 +68,7 @@ } updateUserButton.setOnClickListener { - dialogManager.showLoadingDialog("同步中,请稍后...") + LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.obtainUserDetail() } @@ -109,7 +107,7 @@ clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 - dialogManager.showLoadingDialog("清理中...") + LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() object : CountDownTimer(1500, 500) { override fun onTick(millisUntilFinished: Long) { @@ -117,7 +115,7 @@ } override fun onFinish() { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() @@ -149,7 +147,7 @@ private fun dataObserve() { userViewModel.userDetailModel.observe(this, { if (it.code == 200) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() "同步完成".show(requireContext()) userData = it.data updateUserInfo() @@ -158,19 +156,15 @@ userViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("修改中,请稍后") - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "修改中,请稍后") is LoadState.Success -> { "修改成功,请重新登录".show(requireContext()) - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() AuthenticationHelper.removeToken() requireContext().navigatePageTo() PageNavigationManager.finishAllActivity() } - else -> { - dialogManager.dismissLoadingDialog() - } + else -> LoadingDialogHub.dismiss() } }) @@ -199,12 +193,8 @@ versionViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("检查版本中,请稍后") - } - else -> { - dialogManager.dismissLoadingDialog() - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 4731f17..8a50d25 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -1,6 +1,5 @@ package com.casic.smarttube.utils -import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.init import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView diff --git a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt b/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt deleted file mode 100644 index d3917df..0000000 --- a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.smarttube.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..989a5d3 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.smarttube.utils + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt index 573cc61..b6b7d69 100644 --- a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt @@ -47,7 +47,6 @@ class AddDeviceActivity : KotlinBaseActivity() { private val kTag = "AddDeviceActivity" - private lateinit var dialogManager: DialogManager private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var uploadImageViewModel: UploadImageViewModel @@ -58,7 +57,6 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private val frequency = listOf("1min", "2min", "5min", "10min", "15min", "30min", "60min") private var selectedImages = ArrayList() - private var ownerShip = "" override fun initLayoutView(): Int = R.layout.activity_add_device @@ -70,11 +68,22 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) + + deviceViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + LoadState.Success -> { + "添加设备成功".show(this) + LoadingDialogHub.dismiss() + this.finish() + } + LoadState.Fail -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -154,11 +163,11 @@ } locationImageView.setOnClickListener { - dialogManager.showLoadingDialog("定位中,请稍后...") + LoadingDialogHub.show(this, "定位中,请稍后...") LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() if (aMapLocation == null) { longitudeView.text = "定位失败" latitudeView.text = "定位失败" @@ -200,7 +209,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { if (imageAdapter.itemCount == selectedImages.size) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() } if (imageAdapter.itemCount <= 3) { val url = it.data.toString() @@ -276,18 +285,6 @@ ) } } - - deviceViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("处理中,请稍后") - LoadState.Success -> { - Log.d(kTag, "initEvent: 成功") - dialogManager.dismissLoadingDialog() - this.finish() - } - LoadState.Fail -> dialogManager.dismissLoadingDialog() - } - }) } private fun selectPicture() { @@ -307,7 +304,10 @@ "拍照保存失败,请重试".show(context) return } - dialogManager.showLoadingDialog("图片上传中,请稍后...") + LoadingDialogHub.show( + this@AddDeviceActivity, + "图片上传中,请稍后..." + ) selectedImages = result analyticalSelectResults(result[0]) } @@ -332,7 +332,10 @@ "选择照片失败,请重试".show(context) return } - dialogManager.showLoadingDialog("图片上传中,请稍后...") + LoadingDialogHub.show( + this@AddDeviceActivity, + "图片上传中,请稍后..." + ) selectedImages = result // 线程控制图片压缩上传过程,防止速度过快导致压缩失败 val sum = (result.size * 500).toLong() diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 781965e..9065615 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -11,7 +11,7 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.extensions.combineImagePath -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -28,7 +28,6 @@ class DeviceDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDetailActivity" - private lateinit var dialogManager: DialogManager private lateinit var deviceViewModel: DeviceViewModel private val geocoderSearch by lazy { GeocodeSearch(this) } @@ -45,7 +44,6 @@ val params = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) - dialogManager = DialogManager.obtainInstance(this) deviceViewModel.obtainDeviceDetail(params[0], params[1]) deviceViewModel.deviceDetailModel.observe(this, { if (it.code == 200) { @@ -120,8 +118,8 @@ deviceViewModel.loadState.observe(this, { when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) } diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 81ed156..ccea467 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -18,11 +18,16 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.adapter.GroupListAdapter import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.model.ProjectGroupModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.view.AddDeviceActivity @@ -41,12 +46,13 @@ import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.fragment_home.view.* + class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnInfoWindowClickListener { private val kTag = "HomePageFragment" + private val geocoderSearch by lazy { GeocodeSearch(context) } private lateinit var homeView: View - private lateinit var dialogManager: DialogManager private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var deviceViewModel: DeviceViewModel @@ -68,7 +74,7 @@ /** * 自定义Marker弹出框 * */ - private var infoWindow: View? = null + private var infoView: View? = null /** * 所有设备列表信息集合 @@ -80,7 +86,6 @@ ): View { homeView = inflater.inflate(R.layout.fragment_home, container, false) - dialogManager = DialogManager.obtainInstance(requireActivity()) weakReferenceHandler = WeakReferenceHandler(callback) val easyPopupWindow = EasyPopupWindow(requireContext()) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) @@ -202,8 +207,8 @@ }) groupViewModel.loadState.observe(this, { state -> when (state) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) return homeView @@ -349,10 +354,10 @@ } override fun getInfoWindow(marker: Marker?): View? { - if (infoWindow == null) { - infoWindow = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) + if (infoView == null) { + infoView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) } - val v = infoWindow!! + val v = infoView!! //反射得到popup里面的控件对象 val deviceCodeView = v.findViewById(R.id.deviceCodeView) val deviceModelView = v.findViewById(R.id.deviceModelView) @@ -379,8 +384,36 @@ updateTimeView.text = String.format("更新时间: 未知") } }) - locationView.text = String.format("详细位置: ${device.position}") - return infoWindow + if (device.latGaode.isBlank() || device.lngGaode.isBlank()) { + locationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(device.latGaode.toDouble(), device.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = + String.format("详细位置: ${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + //TODO 动态设置Popup宽度 +// val rootView = v.findViewById(R.id.rootView) +// val layoutParams = rootView.layoutParams +// layoutParams.width = (requireContext().obtainScreenWidth() * 0.8).toInt() +// rootView.layoutParams = layoutParams +// rootView.requestLayout() + return infoView } } "无法查看聚合点,请放大比例后再查看".show(requireContext()) diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt index d69274c..0fa5afb 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt @@ -12,7 +12,7 @@ import com.casic.smarttube.extensions.appendDownloadUrl import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.utils.AuthenticationHelper -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RSAUtils import com.casic.smarttube.view.AboutUsActivity @@ -37,7 +37,6 @@ class MinePageFragment : KotlinBaseFragment() { private val kTag = "MinePageFragment" - private lateinit var dialogManager: DialogManager private lateinit var userData: UserDetailModel.Data private lateinit var userViewModel: UserViewModel private lateinit var loginViewModel: LoginViewModel @@ -51,7 +50,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(requireActivity()) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) versionViewModel = ViewModelProvider(this).get(VersionViewModel::class.java) @@ -70,7 +68,7 @@ } updateUserButton.setOnClickListener { - dialogManager.showLoadingDialog("同步中,请稍后...") + LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.obtainUserDetail() } @@ -109,7 +107,7 @@ clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 - dialogManager.showLoadingDialog("清理中...") + LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() object : CountDownTimer(1500, 500) { override fun onTick(millisUntilFinished: Long) { @@ -117,7 +115,7 @@ } override fun onFinish() { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() @@ -149,7 +147,7 @@ private fun dataObserve() { userViewModel.userDetailModel.observe(this, { if (it.code == 200) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() "同步完成".show(requireContext()) userData = it.data updateUserInfo() @@ -158,19 +156,15 @@ userViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("修改中,请稍后") - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "修改中,请稍后") is LoadState.Success -> { "修改成功,请重新登录".show(requireContext()) - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() AuthenticationHelper.removeToken() requireContext().navigatePageTo() PageNavigationManager.finishAllActivity() } - else -> { - dialogManager.dismissLoadingDialog() - } + else -> LoadingDialogHub.dismiss() } }) @@ -199,12 +193,8 @@ versionViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("检查版本中,请稍后") - } - else -> { - dialogManager.dismissLoadingDialog() - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 4731f17..8a50d25 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -1,6 +1,5 @@ package com.casic.smarttube.utils -import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.init import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView diff --git a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt b/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt deleted file mode 100644 index d3917df..0000000 --- a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.smarttube.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..989a5d3 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.smarttube.utils + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt index 573cc61..b6b7d69 100644 --- a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt @@ -47,7 +47,6 @@ class AddDeviceActivity : KotlinBaseActivity() { private val kTag = "AddDeviceActivity" - private lateinit var dialogManager: DialogManager private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var uploadImageViewModel: UploadImageViewModel @@ -58,7 +57,6 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private val frequency = listOf("1min", "2min", "5min", "10min", "15min", "30min", "60min") private var selectedImages = ArrayList() - private var ownerShip = "" override fun initLayoutView(): Int = R.layout.activity_add_device @@ -70,11 +68,22 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) + + deviceViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + LoadState.Success -> { + "添加设备成功".show(this) + LoadingDialogHub.dismiss() + this.finish() + } + LoadState.Fail -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -154,11 +163,11 @@ } locationImageView.setOnClickListener { - dialogManager.showLoadingDialog("定位中,请稍后...") + LoadingDialogHub.show(this, "定位中,请稍后...") LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() if (aMapLocation == null) { longitudeView.text = "定位失败" latitudeView.text = "定位失败" @@ -200,7 +209,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { if (imageAdapter.itemCount == selectedImages.size) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() } if (imageAdapter.itemCount <= 3) { val url = it.data.toString() @@ -276,18 +285,6 @@ ) } } - - deviceViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("处理中,请稍后") - LoadState.Success -> { - Log.d(kTag, "initEvent: 成功") - dialogManager.dismissLoadingDialog() - this.finish() - } - LoadState.Fail -> dialogManager.dismissLoadingDialog() - } - }) } private fun selectPicture() { @@ -307,7 +304,10 @@ "拍照保存失败,请重试".show(context) return } - dialogManager.showLoadingDialog("图片上传中,请稍后...") + LoadingDialogHub.show( + this@AddDeviceActivity, + "图片上传中,请稍后..." + ) selectedImages = result analyticalSelectResults(result[0]) } @@ -332,7 +332,10 @@ "选择照片失败,请重试".show(context) return } - dialogManager.showLoadingDialog("图片上传中,请稍后...") + LoadingDialogHub.show( + this@AddDeviceActivity, + "图片上传中,请稍后..." + ) selectedImages = result // 线程控制图片压缩上传过程,防止速度过快导致压缩失败 val sum = (result.size * 500).toLong() diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 781965e..9065615 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -11,7 +11,7 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.extensions.combineImagePath -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -28,7 +28,6 @@ class DeviceDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDetailActivity" - private lateinit var dialogManager: DialogManager private lateinit var deviceViewModel: DeviceViewModel private val geocoderSearch by lazy { GeocodeSearch(this) } @@ -45,7 +44,6 @@ val params = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) - dialogManager = DialogManager.obtainInstance(this) deviceViewModel.obtainDeviceDetail(params[0], params[1]) deviceViewModel.deviceDetailModel.observe(this, { if (it.code == 200) { @@ -120,8 +118,8 @@ deviceViewModel.loadState.observe(this, { when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) } diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index ce3649a..5a55f17 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -9,7 +9,7 @@ import com.casic.smarttube.adapter.DeviceListAdapter import com.casic.smarttube.extensions.showEmptyPage import com.casic.smarttube.model.DeviceListModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.vm.DeviceViewModel import com.casic.smarttube.vm.ProjectGroupViewModel @@ -32,7 +32,6 @@ class GroupDeviceActivity : KotlinBaseActivity() { - private lateinit var dialogManager: DialogManager private lateinit var groupId: String private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var groupViewModel: ProjectGroupViewModel @@ -108,7 +107,6 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! titleView.text = String.format(groupId + "项目设备列表") - dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) @@ -156,8 +154,8 @@ groupViewModel.loadState.observe(this, { when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 81ed156..ccea467 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -18,11 +18,16 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.adapter.GroupListAdapter import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.model.ProjectGroupModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.view.AddDeviceActivity @@ -41,12 +46,13 @@ import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.fragment_home.view.* + class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnInfoWindowClickListener { private val kTag = "HomePageFragment" + private val geocoderSearch by lazy { GeocodeSearch(context) } private lateinit var homeView: View - private lateinit var dialogManager: DialogManager private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var deviceViewModel: DeviceViewModel @@ -68,7 +74,7 @@ /** * 自定义Marker弹出框 * */ - private var infoWindow: View? = null + private var infoView: View? = null /** * 所有设备列表信息集合 @@ -80,7 +86,6 @@ ): View { homeView = inflater.inflate(R.layout.fragment_home, container, false) - dialogManager = DialogManager.obtainInstance(requireActivity()) weakReferenceHandler = WeakReferenceHandler(callback) val easyPopupWindow = EasyPopupWindow(requireContext()) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) @@ -202,8 +207,8 @@ }) groupViewModel.loadState.observe(this, { state -> when (state) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) return homeView @@ -349,10 +354,10 @@ } override fun getInfoWindow(marker: Marker?): View? { - if (infoWindow == null) { - infoWindow = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) + if (infoView == null) { + infoView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) } - val v = infoWindow!! + val v = infoView!! //反射得到popup里面的控件对象 val deviceCodeView = v.findViewById(R.id.deviceCodeView) val deviceModelView = v.findViewById(R.id.deviceModelView) @@ -379,8 +384,36 @@ updateTimeView.text = String.format("更新时间: 未知") } }) - locationView.text = String.format("详细位置: ${device.position}") - return infoWindow + if (device.latGaode.isBlank() || device.lngGaode.isBlank()) { + locationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(device.latGaode.toDouble(), device.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = + String.format("详细位置: ${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + //TODO 动态设置Popup宽度 +// val rootView = v.findViewById(R.id.rootView) +// val layoutParams = rootView.layoutParams +// layoutParams.width = (requireContext().obtainScreenWidth() * 0.8).toInt() +// rootView.layoutParams = layoutParams +// rootView.requestLayout() + return infoView } } "无法查看聚合点,请放大比例后再查看".show(requireContext()) diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt index d69274c..0fa5afb 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt @@ -12,7 +12,7 @@ import com.casic.smarttube.extensions.appendDownloadUrl import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.utils.AuthenticationHelper -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RSAUtils import com.casic.smarttube.view.AboutUsActivity @@ -37,7 +37,6 @@ class MinePageFragment : KotlinBaseFragment() { private val kTag = "MinePageFragment" - private lateinit var dialogManager: DialogManager private lateinit var userData: UserDetailModel.Data private lateinit var userViewModel: UserViewModel private lateinit var loginViewModel: LoginViewModel @@ -51,7 +50,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(requireActivity()) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) versionViewModel = ViewModelProvider(this).get(VersionViewModel::class.java) @@ -70,7 +68,7 @@ } updateUserButton.setOnClickListener { - dialogManager.showLoadingDialog("同步中,请稍后...") + LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.obtainUserDetail() } @@ -109,7 +107,7 @@ clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 - dialogManager.showLoadingDialog("清理中...") + LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() object : CountDownTimer(1500, 500) { override fun onTick(millisUntilFinished: Long) { @@ -117,7 +115,7 @@ } override fun onFinish() { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() @@ -149,7 +147,7 @@ private fun dataObserve() { userViewModel.userDetailModel.observe(this, { if (it.code == 200) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() "同步完成".show(requireContext()) userData = it.data updateUserInfo() @@ -158,19 +156,15 @@ userViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("修改中,请稍后") - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "修改中,请稍后") is LoadState.Success -> { "修改成功,请重新登录".show(requireContext()) - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() AuthenticationHelper.removeToken() requireContext().navigatePageTo() PageNavigationManager.finishAllActivity() } - else -> { - dialogManager.dismissLoadingDialog() - } + else -> LoadingDialogHub.dismiss() } }) @@ -199,12 +193,8 @@ versionViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("检查版本中,请稍后") - } - else -> { - dialogManager.dismissLoadingDialog() - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 4731f17..8a50d25 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -1,6 +1,5 @@ package com.casic.smarttube.utils -import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.init import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView diff --git a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt b/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt deleted file mode 100644 index d3917df..0000000 --- a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.smarttube.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..989a5d3 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.smarttube.utils + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt index 573cc61..b6b7d69 100644 --- a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt @@ -47,7 +47,6 @@ class AddDeviceActivity : KotlinBaseActivity() { private val kTag = "AddDeviceActivity" - private lateinit var dialogManager: DialogManager private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var uploadImageViewModel: UploadImageViewModel @@ -58,7 +57,6 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private val frequency = listOf("1min", "2min", "5min", "10min", "15min", "30min", "60min") private var selectedImages = ArrayList() - private var ownerShip = "" override fun initLayoutView(): Int = R.layout.activity_add_device @@ -70,11 +68,22 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) + + deviceViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + LoadState.Success -> { + "添加设备成功".show(this) + LoadingDialogHub.dismiss() + this.finish() + } + LoadState.Fail -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -154,11 +163,11 @@ } locationImageView.setOnClickListener { - dialogManager.showLoadingDialog("定位中,请稍后...") + LoadingDialogHub.show(this, "定位中,请稍后...") LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() if (aMapLocation == null) { longitudeView.text = "定位失败" latitudeView.text = "定位失败" @@ -200,7 +209,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { if (imageAdapter.itemCount == selectedImages.size) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() } if (imageAdapter.itemCount <= 3) { val url = it.data.toString() @@ -276,18 +285,6 @@ ) } } - - deviceViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("处理中,请稍后") - LoadState.Success -> { - Log.d(kTag, "initEvent: 成功") - dialogManager.dismissLoadingDialog() - this.finish() - } - LoadState.Fail -> dialogManager.dismissLoadingDialog() - } - }) } private fun selectPicture() { @@ -307,7 +304,10 @@ "拍照保存失败,请重试".show(context) return } - dialogManager.showLoadingDialog("图片上传中,请稍后...") + LoadingDialogHub.show( + this@AddDeviceActivity, + "图片上传中,请稍后..." + ) selectedImages = result analyticalSelectResults(result[0]) } @@ -332,7 +332,10 @@ "选择照片失败,请重试".show(context) return } - dialogManager.showLoadingDialog("图片上传中,请稍后...") + LoadingDialogHub.show( + this@AddDeviceActivity, + "图片上传中,请稍后..." + ) selectedImages = result // 线程控制图片压缩上传过程,防止速度过快导致压缩失败 val sum = (result.size * 500).toLong() diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 781965e..9065615 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -11,7 +11,7 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.extensions.combineImagePath -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -28,7 +28,6 @@ class DeviceDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDetailActivity" - private lateinit var dialogManager: DialogManager private lateinit var deviceViewModel: DeviceViewModel private val geocoderSearch by lazy { GeocodeSearch(this) } @@ -45,7 +44,6 @@ val params = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) - dialogManager = DialogManager.obtainInstance(this) deviceViewModel.obtainDeviceDetail(params[0], params[1]) deviceViewModel.deviceDetailModel.observe(this, { if (it.code == 200) { @@ -120,8 +118,8 @@ deviceViewModel.loadState.observe(this, { when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) } diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index ce3649a..5a55f17 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -9,7 +9,7 @@ import com.casic.smarttube.adapter.DeviceListAdapter import com.casic.smarttube.extensions.showEmptyPage import com.casic.smarttube.model.DeviceListModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.vm.DeviceViewModel import com.casic.smarttube.vm.ProjectGroupViewModel @@ -32,7 +32,6 @@ class GroupDeviceActivity : KotlinBaseActivity() { - private lateinit var dialogManager: DialogManager private lateinit var groupId: String private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var groupViewModel: ProjectGroupViewModel @@ -108,7 +107,6 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! titleView.text = String.format(groupId + "项目设备列表") - dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) @@ -156,8 +154,8 @@ groupViewModel.loadState.observe(this, { when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt index 1b1d8b9..c73bdee 100644 --- a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt @@ -15,7 +15,6 @@ class LoginActivity : KotlinBaseActivity() { - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -27,7 +26,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(this) // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) @@ -80,12 +78,12 @@ } }) loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() }) } }) authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") + LoadingDialogHub.show(this, "登录中,请稍后") }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 81ed156..ccea467 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -18,11 +18,16 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.adapter.GroupListAdapter import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.model.ProjectGroupModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.view.AddDeviceActivity @@ -41,12 +46,13 @@ import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.fragment_home.view.* + class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnInfoWindowClickListener { private val kTag = "HomePageFragment" + private val geocoderSearch by lazy { GeocodeSearch(context) } private lateinit var homeView: View - private lateinit var dialogManager: DialogManager private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var deviceViewModel: DeviceViewModel @@ -68,7 +74,7 @@ /** * 自定义Marker弹出框 * */ - private var infoWindow: View? = null + private var infoView: View? = null /** * 所有设备列表信息集合 @@ -80,7 +86,6 @@ ): View { homeView = inflater.inflate(R.layout.fragment_home, container, false) - dialogManager = DialogManager.obtainInstance(requireActivity()) weakReferenceHandler = WeakReferenceHandler(callback) val easyPopupWindow = EasyPopupWindow(requireContext()) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) @@ -202,8 +207,8 @@ }) groupViewModel.loadState.observe(this, { state -> when (state) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) return homeView @@ -349,10 +354,10 @@ } override fun getInfoWindow(marker: Marker?): View? { - if (infoWindow == null) { - infoWindow = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) + if (infoView == null) { + infoView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) } - val v = infoWindow!! + val v = infoView!! //反射得到popup里面的控件对象 val deviceCodeView = v.findViewById(R.id.deviceCodeView) val deviceModelView = v.findViewById(R.id.deviceModelView) @@ -379,8 +384,36 @@ updateTimeView.text = String.format("更新时间: 未知") } }) - locationView.text = String.format("详细位置: ${device.position}") - return infoWindow + if (device.latGaode.isBlank() || device.lngGaode.isBlank()) { + locationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(device.latGaode.toDouble(), device.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = + String.format("详细位置: ${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + //TODO 动态设置Popup宽度 +// val rootView = v.findViewById(R.id.rootView) +// val layoutParams = rootView.layoutParams +// layoutParams.width = (requireContext().obtainScreenWidth() * 0.8).toInt() +// rootView.layoutParams = layoutParams +// rootView.requestLayout() + return infoView } } "无法查看聚合点,请放大比例后再查看".show(requireContext()) diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt index d69274c..0fa5afb 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt @@ -12,7 +12,7 @@ import com.casic.smarttube.extensions.appendDownloadUrl import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.utils.AuthenticationHelper -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RSAUtils import com.casic.smarttube.view.AboutUsActivity @@ -37,7 +37,6 @@ class MinePageFragment : KotlinBaseFragment() { private val kTag = "MinePageFragment" - private lateinit var dialogManager: DialogManager private lateinit var userData: UserDetailModel.Data private lateinit var userViewModel: UserViewModel private lateinit var loginViewModel: LoginViewModel @@ -51,7 +50,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(requireActivity()) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) versionViewModel = ViewModelProvider(this).get(VersionViewModel::class.java) @@ -70,7 +68,7 @@ } updateUserButton.setOnClickListener { - dialogManager.showLoadingDialog("同步中,请稍后...") + LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.obtainUserDetail() } @@ -109,7 +107,7 @@ clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 - dialogManager.showLoadingDialog("清理中...") + LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() object : CountDownTimer(1500, 500) { override fun onTick(millisUntilFinished: Long) { @@ -117,7 +115,7 @@ } override fun onFinish() { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() @@ -149,7 +147,7 @@ private fun dataObserve() { userViewModel.userDetailModel.observe(this, { if (it.code == 200) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() "同步完成".show(requireContext()) userData = it.data updateUserInfo() @@ -158,19 +156,15 @@ userViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("修改中,请稍后") - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "修改中,请稍后") is LoadState.Success -> { "修改成功,请重新登录".show(requireContext()) - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() AuthenticationHelper.removeToken() requireContext().navigatePageTo() PageNavigationManager.finishAllActivity() } - else -> { - dialogManager.dismissLoadingDialog() - } + else -> LoadingDialogHub.dismiss() } }) @@ -199,12 +193,8 @@ versionViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("检查版本中,请稍后") - } - else -> { - dialogManager.dismissLoadingDialog() - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 4731f17..8a50d25 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -1,6 +1,5 @@ package com.casic.smarttube.utils -import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.init import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView diff --git a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt b/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt deleted file mode 100644 index d3917df..0000000 --- a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.smarttube.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..989a5d3 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.smarttube.utils + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt index 573cc61..b6b7d69 100644 --- a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt @@ -47,7 +47,6 @@ class AddDeviceActivity : KotlinBaseActivity() { private val kTag = "AddDeviceActivity" - private lateinit var dialogManager: DialogManager private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var uploadImageViewModel: UploadImageViewModel @@ -58,7 +57,6 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private val frequency = listOf("1min", "2min", "5min", "10min", "15min", "30min", "60min") private var selectedImages = ArrayList() - private var ownerShip = "" override fun initLayoutView(): Int = R.layout.activity_add_device @@ -70,11 +68,22 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) + + deviceViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + LoadState.Success -> { + "添加设备成功".show(this) + LoadingDialogHub.dismiss() + this.finish() + } + LoadState.Fail -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -154,11 +163,11 @@ } locationImageView.setOnClickListener { - dialogManager.showLoadingDialog("定位中,请稍后...") + LoadingDialogHub.show(this, "定位中,请稍后...") LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() if (aMapLocation == null) { longitudeView.text = "定位失败" latitudeView.text = "定位失败" @@ -200,7 +209,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { if (imageAdapter.itemCount == selectedImages.size) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() } if (imageAdapter.itemCount <= 3) { val url = it.data.toString() @@ -276,18 +285,6 @@ ) } } - - deviceViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("处理中,请稍后") - LoadState.Success -> { - Log.d(kTag, "initEvent: 成功") - dialogManager.dismissLoadingDialog() - this.finish() - } - LoadState.Fail -> dialogManager.dismissLoadingDialog() - } - }) } private fun selectPicture() { @@ -307,7 +304,10 @@ "拍照保存失败,请重试".show(context) return } - dialogManager.showLoadingDialog("图片上传中,请稍后...") + LoadingDialogHub.show( + this@AddDeviceActivity, + "图片上传中,请稍后..." + ) selectedImages = result analyticalSelectResults(result[0]) } @@ -332,7 +332,10 @@ "选择照片失败,请重试".show(context) return } - dialogManager.showLoadingDialog("图片上传中,请稍后...") + LoadingDialogHub.show( + this@AddDeviceActivity, + "图片上传中,请稍后..." + ) selectedImages = result // 线程控制图片压缩上传过程,防止速度过快导致压缩失败 val sum = (result.size * 500).toLong() diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 781965e..9065615 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -11,7 +11,7 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.extensions.combineImagePath -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -28,7 +28,6 @@ class DeviceDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDetailActivity" - private lateinit var dialogManager: DialogManager private lateinit var deviceViewModel: DeviceViewModel private val geocoderSearch by lazy { GeocodeSearch(this) } @@ -45,7 +44,6 @@ val params = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) - dialogManager = DialogManager.obtainInstance(this) deviceViewModel.obtainDeviceDetail(params[0], params[1]) deviceViewModel.deviceDetailModel.observe(this, { if (it.code == 200) { @@ -120,8 +118,8 @@ deviceViewModel.loadState.observe(this, { when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) } diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index ce3649a..5a55f17 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -9,7 +9,7 @@ import com.casic.smarttube.adapter.DeviceListAdapter import com.casic.smarttube.extensions.showEmptyPage import com.casic.smarttube.model.DeviceListModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.vm.DeviceViewModel import com.casic.smarttube.vm.ProjectGroupViewModel @@ -32,7 +32,6 @@ class GroupDeviceActivity : KotlinBaseActivity() { - private lateinit var dialogManager: DialogManager private lateinit var groupId: String private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var groupViewModel: ProjectGroupViewModel @@ -108,7 +107,6 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! titleView.text = String.format(groupId + "项目设备列表") - dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) @@ -156,8 +154,8 @@ groupViewModel.loadState.observe(this, { when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt index 1b1d8b9..c73bdee 100644 --- a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt @@ -15,7 +15,6 @@ class LoginActivity : KotlinBaseActivity() { - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -27,7 +26,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(this) // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) @@ -80,12 +78,12 @@ } }) loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() }) } }) authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") + LoadingDialogHub.show(this, "登录中,请稍后") }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/WellDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/WellDetailActivity.kt index 1dad93e..e43839b 100644 --- a/app/src/main/java/com/casic/smarttube/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/WellDetailActivity.kt @@ -7,7 +7,7 @@ import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.model.* import com.casic.smarttube.R -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.vm.AuthenticateViewModel import com.casic.smarttube.vm.WellViewModel @@ -25,7 +25,6 @@ class WellDetailActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener { - private lateinit var dialogManager: DialogManager private lateinit var wellViewModel: WellViewModel private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var aMap: AMap @@ -43,7 +42,6 @@ val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) - dialogManager = DialogManager.obtainInstance(this) wellViewModel.obtainWellDetail(wellId) aMap = wellMapView.map @@ -156,12 +154,8 @@ }) wellViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("数据加载中,请稍后") - } - else -> { - dialogManager.dismissLoadingDialog() - } + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) } diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 81ed156..ccea467 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -18,11 +18,16 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.adapter.GroupListAdapter import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.model.ProjectGroupModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.view.AddDeviceActivity @@ -41,12 +46,13 @@ import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.fragment_home.view.* + class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnInfoWindowClickListener { private val kTag = "HomePageFragment" + private val geocoderSearch by lazy { GeocodeSearch(context) } private lateinit var homeView: View - private lateinit var dialogManager: DialogManager private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var deviceViewModel: DeviceViewModel @@ -68,7 +74,7 @@ /** * 自定义Marker弹出框 * */ - private var infoWindow: View? = null + private var infoView: View? = null /** * 所有设备列表信息集合 @@ -80,7 +86,6 @@ ): View { homeView = inflater.inflate(R.layout.fragment_home, container, false) - dialogManager = DialogManager.obtainInstance(requireActivity()) weakReferenceHandler = WeakReferenceHandler(callback) val easyPopupWindow = EasyPopupWindow(requireContext()) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) @@ -202,8 +207,8 @@ }) groupViewModel.loadState.observe(this, { state -> when (state) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) return homeView @@ -349,10 +354,10 @@ } override fun getInfoWindow(marker: Marker?): View? { - if (infoWindow == null) { - infoWindow = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) + if (infoView == null) { + infoView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) } - val v = infoWindow!! + val v = infoView!! //反射得到popup里面的控件对象 val deviceCodeView = v.findViewById(R.id.deviceCodeView) val deviceModelView = v.findViewById(R.id.deviceModelView) @@ -379,8 +384,36 @@ updateTimeView.text = String.format("更新时间: 未知") } }) - locationView.text = String.format("详细位置: ${device.position}") - return infoWindow + if (device.latGaode.isBlank() || device.lngGaode.isBlank()) { + locationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(device.latGaode.toDouble(), device.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = + String.format("详细位置: ${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + //TODO 动态设置Popup宽度 +// val rootView = v.findViewById(R.id.rootView) +// val layoutParams = rootView.layoutParams +// layoutParams.width = (requireContext().obtainScreenWidth() * 0.8).toInt() +// rootView.layoutParams = layoutParams +// rootView.requestLayout() + return infoView } } "无法查看聚合点,请放大比例后再查看".show(requireContext()) diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt index d69274c..0fa5afb 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt @@ -12,7 +12,7 @@ import com.casic.smarttube.extensions.appendDownloadUrl import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.utils.AuthenticationHelper -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RSAUtils import com.casic.smarttube.view.AboutUsActivity @@ -37,7 +37,6 @@ class MinePageFragment : KotlinBaseFragment() { private val kTag = "MinePageFragment" - private lateinit var dialogManager: DialogManager private lateinit var userData: UserDetailModel.Data private lateinit var userViewModel: UserViewModel private lateinit var loginViewModel: LoginViewModel @@ -51,7 +50,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(requireActivity()) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) versionViewModel = ViewModelProvider(this).get(VersionViewModel::class.java) @@ -70,7 +68,7 @@ } updateUserButton.setOnClickListener { - dialogManager.showLoadingDialog("同步中,请稍后...") + LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.obtainUserDetail() } @@ -109,7 +107,7 @@ clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 - dialogManager.showLoadingDialog("清理中...") + LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() object : CountDownTimer(1500, 500) { override fun onTick(millisUntilFinished: Long) { @@ -117,7 +115,7 @@ } override fun onFinish() { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() @@ -149,7 +147,7 @@ private fun dataObserve() { userViewModel.userDetailModel.observe(this, { if (it.code == 200) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() "同步完成".show(requireContext()) userData = it.data updateUserInfo() @@ -158,19 +156,15 @@ userViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("修改中,请稍后") - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "修改中,请稍后") is LoadState.Success -> { "修改成功,请重新登录".show(requireContext()) - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() AuthenticationHelper.removeToken() requireContext().navigatePageTo() PageNavigationManager.finishAllActivity() } - else -> { - dialogManager.dismissLoadingDialog() - } + else -> LoadingDialogHub.dismiss() } }) @@ -199,12 +193,8 @@ versionViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("检查版本中,请稍后") - } - else -> { - dialogManager.dismissLoadingDialog() - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 4731f17..8a50d25 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -1,6 +1,5 @@ package com.casic.smarttube.utils -import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.init import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView diff --git a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt b/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt deleted file mode 100644 index d3917df..0000000 --- a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.smarttube.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..989a5d3 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.smarttube.utils + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt index 573cc61..b6b7d69 100644 --- a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt @@ -47,7 +47,6 @@ class AddDeviceActivity : KotlinBaseActivity() { private val kTag = "AddDeviceActivity" - private lateinit var dialogManager: DialogManager private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var uploadImageViewModel: UploadImageViewModel @@ -58,7 +57,6 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private val frequency = listOf("1min", "2min", "5min", "10min", "15min", "30min", "60min") private var selectedImages = ArrayList() - private var ownerShip = "" override fun initLayoutView(): Int = R.layout.activity_add_device @@ -70,11 +68,22 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) + + deviceViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + LoadState.Success -> { + "添加设备成功".show(this) + LoadingDialogHub.dismiss() + this.finish() + } + LoadState.Fail -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -154,11 +163,11 @@ } locationImageView.setOnClickListener { - dialogManager.showLoadingDialog("定位中,请稍后...") + LoadingDialogHub.show(this, "定位中,请稍后...") LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() if (aMapLocation == null) { longitudeView.text = "定位失败" latitudeView.text = "定位失败" @@ -200,7 +209,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { if (imageAdapter.itemCount == selectedImages.size) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() } if (imageAdapter.itemCount <= 3) { val url = it.data.toString() @@ -276,18 +285,6 @@ ) } } - - deviceViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("处理中,请稍后") - LoadState.Success -> { - Log.d(kTag, "initEvent: 成功") - dialogManager.dismissLoadingDialog() - this.finish() - } - LoadState.Fail -> dialogManager.dismissLoadingDialog() - } - }) } private fun selectPicture() { @@ -307,7 +304,10 @@ "拍照保存失败,请重试".show(context) return } - dialogManager.showLoadingDialog("图片上传中,请稍后...") + LoadingDialogHub.show( + this@AddDeviceActivity, + "图片上传中,请稍后..." + ) selectedImages = result analyticalSelectResults(result[0]) } @@ -332,7 +332,10 @@ "选择照片失败,请重试".show(context) return } - dialogManager.showLoadingDialog("图片上传中,请稍后...") + LoadingDialogHub.show( + this@AddDeviceActivity, + "图片上传中,请稍后..." + ) selectedImages = result // 线程控制图片压缩上传过程,防止速度过快导致压缩失败 val sum = (result.size * 500).toLong() diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 781965e..9065615 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -11,7 +11,7 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.extensions.combineImagePath -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -28,7 +28,6 @@ class DeviceDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDetailActivity" - private lateinit var dialogManager: DialogManager private lateinit var deviceViewModel: DeviceViewModel private val geocoderSearch by lazy { GeocodeSearch(this) } @@ -45,7 +44,6 @@ val params = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) - dialogManager = DialogManager.obtainInstance(this) deviceViewModel.obtainDeviceDetail(params[0], params[1]) deviceViewModel.deviceDetailModel.observe(this, { if (it.code == 200) { @@ -120,8 +118,8 @@ deviceViewModel.loadState.observe(this, { when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) } diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index ce3649a..5a55f17 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -9,7 +9,7 @@ import com.casic.smarttube.adapter.DeviceListAdapter import com.casic.smarttube.extensions.showEmptyPage import com.casic.smarttube.model.DeviceListModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.vm.DeviceViewModel import com.casic.smarttube.vm.ProjectGroupViewModel @@ -32,7 +32,6 @@ class GroupDeviceActivity : KotlinBaseActivity() { - private lateinit var dialogManager: DialogManager private lateinit var groupId: String private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var groupViewModel: ProjectGroupViewModel @@ -108,7 +107,6 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! titleView.text = String.format(groupId + "项目设备列表") - dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) @@ -156,8 +154,8 @@ groupViewModel.loadState.observe(this, { when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt index 1b1d8b9..c73bdee 100644 --- a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt @@ -15,7 +15,6 @@ class LoginActivity : KotlinBaseActivity() { - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -27,7 +26,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(this) // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) @@ -80,12 +78,12 @@ } }) loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() }) } }) authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") + LoadingDialogHub.show(this, "登录中,请稍后") }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/WellDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/WellDetailActivity.kt index 1dad93e..e43839b 100644 --- a/app/src/main/java/com/casic/smarttube/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/WellDetailActivity.kt @@ -7,7 +7,7 @@ import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.model.* import com.casic.smarttube.R -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.vm.AuthenticateViewModel import com.casic.smarttube.vm.WellViewModel @@ -25,7 +25,6 @@ class WellDetailActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener { - private lateinit var dialogManager: DialogManager private lateinit var wellViewModel: WellViewModel private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var aMap: AMap @@ -43,7 +42,6 @@ val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) - dialogManager = DialogManager.obtainInstance(this) wellViewModel.obtainWellDetail(wellId) aMap = wellMapView.map @@ -156,12 +154,8 @@ }) wellViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("数据加载中,请稍后") - } - else -> { - dialogManager.dismissLoadingDialog() - } + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) } diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml index 3429043..3b2aa30 100644 --- a/app/src/main/res/layout/activity_add_device.xml +++ b/app/src/main/res/layout/activity_add_device.xml @@ -35,6 +35,7 @@ android:layout_toStartOf="@id/scannerView" android:background="@null" android:hint="请输入设备编号或者扫描添加" + android:inputType="number" android:maxLength="20" android:paddingVertical="@dimen/dp_5" android:singleLine="true" diff --git a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt index 81ed156..ccea467 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/HomePageFragment.kt @@ -18,11 +18,16 @@ import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.Marker import com.amap.api.maps.model.MarkerOptions +import com.amap.api.services.core.LatLonPoint +import com.amap.api.services.geocoder.GeocodeResult +import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.services.geocoder.RegeocodeQuery +import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.adapter.GroupListAdapter import com.casic.smarttube.model.MapDeviceModel import com.casic.smarttube.model.ProjectGroupModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.view.AddDeviceActivity @@ -41,12 +46,13 @@ import kotlinx.android.synthetic.main.activity_group_device.* import kotlinx.android.synthetic.main.fragment_home.view.* + class HomePageFragment : Fragment(), AMap.OnMapLoadedListener, AMap.OnCameraChangeListener, AMap.OnMarkerClickListener, AMap.InfoWindowAdapter, AMap.OnInfoWindowClickListener { private val kTag = "HomePageFragment" + private val geocoderSearch by lazy { GeocodeSearch(context) } private lateinit var homeView: View - private lateinit var dialogManager: DialogManager private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var aMap: AMap private lateinit var deviceViewModel: DeviceViewModel @@ -68,7 +74,7 @@ /** * 自定义Marker弹出框 * */ - private var infoWindow: View? = null + private var infoView: View? = null /** * 所有设备列表信息集合 @@ -80,7 +86,6 @@ ): View { homeView = inflater.inflate(R.layout.fragment_home, container, false) - dialogManager = DialogManager.obtainInstance(requireActivity()) weakReferenceHandler = WeakReferenceHandler(callback) val easyPopupWindow = EasyPopupWindow(requireContext()) easyPopupWindow.setPopupMenuItem(LocaleConstant.POPUP_IMAGES, LocaleConstant.POPUP_TITLES) @@ -202,8 +207,8 @@ }) groupViewModel.loadState.observe(this, { state -> when (state) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) return homeView @@ -349,10 +354,10 @@ } override fun getInfoWindow(marker: Marker?): View? { - if (infoWindow == null) { - infoWindow = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) + if (infoView == null) { + infoView = LayoutInflater.from(requireContext()).inflate(R.layout.popu_map_info, null) } - val v = infoWindow!! + val v = infoView!! //反射得到popup里面的控件对象 val deviceCodeView = v.findViewById(R.id.deviceCodeView) val deviceModelView = v.findViewById(R.id.deviceModelView) @@ -379,8 +384,36 @@ updateTimeView.text = String.format("更新时间: 未知") } }) - locationView.text = String.format("详细位置: ${device.position}") - return infoWindow + if (device.latGaode.isBlank() || device.lngGaode.isBlank()) { + locationView.text = "经纬度异常,无法查看具体位置" + } else { + val queryParam = RegeocodeQuery( + LatLonPoint(device.latGaode.toDouble(), device.lngGaode.toDouble()), + 200f, + GeocodeSearch.AMAP + ) + geocoderSearch.getFromLocationAsyn(queryParam) + geocoderSearch.setOnGeocodeSearchListener(object : + GeocodeSearch.OnGeocodeSearchListener { + override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { + if (rCode == 1000) { + locationView.text = + String.format("详细位置: ${result?.regeocodeAddress?.formatAddress}") + } + } + + override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { + + } + }) + } + //TODO 动态设置Popup宽度 +// val rootView = v.findViewById(R.id.rootView) +// val layoutParams = rootView.layoutParams +// layoutParams.width = (requireContext().obtainScreenWidth() * 0.8).toInt() +// rootView.layoutParams = layoutParams +// rootView.requestLayout() + return infoView } } "无法查看聚合点,请放大比例后再查看".show(requireContext()) diff --git a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt index d69274c..0fa5afb 100644 --- a/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt +++ b/app/src/main/java/com/casic/smarttube/fragment/MinePageFragment.kt @@ -12,7 +12,7 @@ import com.casic.smarttube.extensions.appendDownloadUrl import com.casic.smarttube.model.UserDetailModel import com.casic.smarttube.utils.AuthenticationHelper -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.utils.RSAUtils import com.casic.smarttube.view.AboutUsActivity @@ -37,7 +37,6 @@ class MinePageFragment : KotlinBaseFragment() { private val kTag = "MinePageFragment" - private lateinit var dialogManager: DialogManager private lateinit var userData: UserDetailModel.Data private lateinit var userViewModel: UserViewModel private lateinit var loginViewModel: LoginViewModel @@ -51,7 +50,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(requireActivity()) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) versionViewModel = ViewModelProvider(this).get(VersionViewModel::class.java) @@ -70,7 +68,7 @@ } updateUserButton.setOnClickListener { - dialogManager.showLoadingDialog("同步中,请稍后...") + LoadingDialogHub.show(requireActivity(), "同步中,请稍后...") userViewModel.obtainUserDetail() } @@ -109,7 +107,7 @@ clearCacheLayout.setOnClickListener { //删除缓存之后在设置缓存大小 - dialogManager.showLoadingDialog("清理中...") + LoadingDialogHub.show(requireActivity(), "清理中,请稍后") File(requireContext().cacheDir.path).deleteFile() object : CountDownTimer(1500, 500) { override fun onTick(millisUntilFinished: Long) { @@ -117,7 +115,7 @@ } override fun onFinish() { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() cacheSizeView.text = collectApplicationCache().formatFileSize() } }.start() @@ -149,7 +147,7 @@ private fun dataObserve() { userViewModel.userDetailModel.observe(this, { if (it.code == 200) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() "同步完成".show(requireContext()) userData = it.data updateUserInfo() @@ -158,19 +156,15 @@ userViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("修改中,请稍后") - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "修改中,请稍后") is LoadState.Success -> { "修改成功,请重新登录".show(requireContext()) - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() AuthenticationHelper.removeToken() requireContext().navigatePageTo() PageNavigationManager.finishAllActivity() } - else -> { - dialogManager.dismissLoadingDialog() - } + else -> LoadingDialogHub.dismiss() } }) @@ -199,12 +193,8 @@ versionViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("检查版本中,请稍后") - } - else -> { - dialogManager.dismissLoadingDialog() - } + is LoadState.Loading -> LoadingDialogHub.show(requireActivity(), "检查版本中,请稍后") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt index 4731f17..8a50d25 100644 --- a/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt +++ b/app/src/main/java/com/casic/smarttube/utils/ChartViewHelper.kt @@ -1,6 +1,5 @@ package com.casic.smarttube.utils -import com.casic.smarttube.base.BaseApplication import com.casic.smarttube.extensions.init import com.casic.smarttube.model.LineChartEntryModel import com.casic.smarttube.widgets.LineChartMarkerView diff --git a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt b/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt deleted file mode 100644 index d3917df..0000000 --- a/app/src/main/java/com/casic/smarttube/utils/DialogManager.kt +++ /dev/null @@ -1,37 +0,0 @@ -package com.casic.smarttube.utils; - -import android.app.Activity -import android.view.WindowManager -import com.pengxh.kt.lite.base.BaseSingleton -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog - -class DialogManager private constructor(private val activity: Activity) { - - private lateinit var loadingDialog: QMUITipDialog - - companion object : BaseSingleton() { - override val creator: (Activity) -> DialogManager - get() = ::DialogManager - } - - fun showLoadingDialog(message: String) { - loadingDialog = QMUITipDialog - .Builder(activity) - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) - .setTipWord(message) - .create() - if (!activity.isDestroyed) { - try { - loadingDialog.show() - } catch (e: WindowManager.BadTokenException) { - e.printStackTrace() - } - } - } - - fun dismissLoadingDialog() { - if (loadingDialog.isShowing) { - loadingDialog.dismiss() - } - } -} diff --git a/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt new file mode 100644 index 0000000..989a5d3 --- /dev/null +++ b/app/src/main/java/com/casic/smarttube/utils/LoadingDialogHub.kt @@ -0,0 +1,31 @@ +package com.casic.smarttube.utils + +import android.app.Activity +import android.view.WindowManager +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog + +object LoadingDialogHub { + + private lateinit var loadingDialog: QMUITipDialog + + fun show(activity: Activity, message: String) { + loadingDialog = QMUITipDialog + .Builder(activity) + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING) + .setTipWord(message) + .create() + if (!activity.isDestroyed) { + try { + loadingDialog.show() + } catch (e: WindowManager.BadTokenException) { + e.printStackTrace() + } + } + } + + fun dismiss() { + if (loadingDialog.isShowing) { + loadingDialog.dismiss() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt index 573cc61..b6b7d69 100644 --- a/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/AddDeviceActivity.kt @@ -47,7 +47,6 @@ class AddDeviceActivity : KotlinBaseActivity() { private val kTag = "AddDeviceActivity" - private lateinit var dialogManager: DialogManager private lateinit var imageAdapter: EditableImageAdapter private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var uploadImageViewModel: UploadImageViewModel @@ -58,7 +57,6 @@ private val realPaths: ArrayList = ArrayList() //真实图片路径 private val frequency = listOf("1min", "2min", "5min", "10min", "15min", "30min", "60min") private var selectedImages = ArrayList() - private var ownerShip = "" override fun initLayoutView(): Int = R.layout.activity_add_device @@ -70,11 +68,22 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) uploadImageViewModel = ViewModelProvider(this).get(UploadImageViewModel::class.java) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) + + deviceViewModel.loadState.observe(this, { + when (it) { + LoadState.Loading -> LoadingDialogHub.show(this, "处理中,请稍后") + LoadState.Success -> { + "添加设备成功".show(this) + LoadingDialogHub.dismiss() + this.finish() + } + LoadState.Fail -> LoadingDialogHub.dismiss() + } + }) } override fun initEvent() { @@ -154,11 +163,11 @@ } locationImageView.setOnClickListener { - dialogManager.showLoadingDialog("定位中,请稍后...") + LoadingDialogHub.show(this, "定位中,请稍后...") LocationHelper.obtainCurrentLocation(this, object : LocationHelper.ILocationListener { override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() if (aMapLocation == null) { longitudeView.text = "定位失败" latitudeView.text = "定位失败" @@ -200,7 +209,7 @@ uploadImageViewModel.resultModel.observe(this, { if (it.code == 200) { if (imageAdapter.itemCount == selectedImages.size) { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() } if (imageAdapter.itemCount <= 3) { val url = it.data.toString() @@ -276,18 +285,6 @@ ) } } - - deviceViewModel.loadState.observe(this, { - when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("处理中,请稍后") - LoadState.Success -> { - Log.d(kTag, "initEvent: 成功") - dialogManager.dismissLoadingDialog() - this.finish() - } - LoadState.Fail -> dialogManager.dismissLoadingDialog() - } - }) } private fun selectPicture() { @@ -307,7 +304,10 @@ "拍照保存失败,请重试".show(context) return } - dialogManager.showLoadingDialog("图片上传中,请稍后...") + LoadingDialogHub.show( + this@AddDeviceActivity, + "图片上传中,请稍后..." + ) selectedImages = result analyticalSelectResults(result[0]) } @@ -332,7 +332,10 @@ "选择照片失败,请重试".show(context) return } - dialogManager.showLoadingDialog("图片上传中,请稍后...") + LoadingDialogHub.show( + this@AddDeviceActivity, + "图片上传中,请稍后..." + ) selectedImages = result // 线程控制图片压缩上传过程,防止速度过快导致压缩失败 val sum = (result.size * 500).toLong() diff --git a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt index 781965e..9065615 100644 --- a/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/DeviceDetailActivity.kt @@ -11,7 +11,7 @@ import com.amap.api.services.geocoder.RegeocodeResult import com.casic.smarttube.R import com.casic.smarttube.extensions.combineImagePath -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.vm.DeviceViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -28,7 +28,6 @@ class DeviceDetailActivity : KotlinBaseActivity() { private val kTag = "DeviceDetailActivity" - private lateinit var dialogManager: DialogManager private lateinit var deviceViewModel: DeviceViewModel private val geocoderSearch by lazy { GeocodeSearch(this) } @@ -45,7 +44,6 @@ val params = intent.getStringArrayListExtra(Constant.INTENT_PARAM)!! deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) - dialogManager = DialogManager.obtainInstance(this) deviceViewModel.obtainDeviceDetail(params[0], params[1]) deviceViewModel.deviceDetailModel.observe(this, { if (it.code == 200) { @@ -120,8 +118,8 @@ deviceViewModel.loadState.observe(this, { when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) } diff --git a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt index ce3649a..5a55f17 100644 --- a/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/GroupDeviceActivity.kt @@ -9,7 +9,7 @@ import com.casic.smarttube.adapter.DeviceListAdapter import com.casic.smarttube.extensions.showEmptyPage import com.casic.smarttube.model.DeviceListModel -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.LocaleConstant import com.casic.smarttube.vm.DeviceViewModel import com.casic.smarttube.vm.ProjectGroupViewModel @@ -32,7 +32,6 @@ class GroupDeviceActivity : KotlinBaseActivity() { - private lateinit var dialogManager: DialogManager private lateinit var groupId: String private lateinit var weakReferenceHandler: WeakReferenceHandler private lateinit var groupViewModel: ProjectGroupViewModel @@ -108,7 +107,6 @@ override fun initData() { groupId = intent.getStringExtra(Constant.INTENT_PARAM)!! titleView.text = String.format(groupId + "项目设备列表") - dialogManager = DialogManager.obtainInstance(this) weakReferenceHandler = WeakReferenceHandler(callback) groupViewModel = ViewModelProvider(this).get(ProjectGroupViewModel::class.java) deviceViewModel = ViewModelProvider(this).get(DeviceViewModel::class.java) @@ -156,8 +154,8 @@ groupViewModel.loadState.observe(this, { when (it) { - LoadState.Loading -> dialogManager.showLoadingDialog("数据加载中...") - else -> dialogManager.dismissLoadingDialog() + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) diff --git a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt index 1b1d8b9..c73bdee 100644 --- a/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/LoginActivity.kt @@ -15,7 +15,6 @@ class LoginActivity : KotlinBaseActivity() { - private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -27,7 +26,6 @@ } override fun initData() { - dialogManager = DialogManager.obtainInstance(this) // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) @@ -80,12 +78,12 @@ } }) loginViewModel.loadState.observe(this, { - dialogManager.dismissLoadingDialog() + LoadingDialogHub.dismiss() }) } }) authenticateViewModel.loadState.observe(this, { - dialogManager.showLoadingDialog("登录中,请稍后") + LoadingDialogHub.show(this, "登录中,请稍后") }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/smarttube/view/WellDetailActivity.kt b/app/src/main/java/com/casic/smarttube/view/WellDetailActivity.kt index 1dad93e..e43839b 100644 --- a/app/src/main/java/com/casic/smarttube/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/smarttube/view/WellDetailActivity.kt @@ -7,7 +7,7 @@ import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.model.* import com.casic.smarttube.R -import com.casic.smarttube.utils.DialogManager +import com.casic.smarttube.utils.LoadingDialogHub import com.casic.smarttube.utils.RouteOnMap import com.casic.smarttube.vm.AuthenticateViewModel import com.casic.smarttube.vm.WellViewModel @@ -25,7 +25,6 @@ class WellDetailActivity : KotlinBaseActivity(), AMap.OnMarkerClickListener { - private lateinit var dialogManager: DialogManager private lateinit var wellViewModel: WellViewModel private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var aMap: AMap @@ -43,7 +42,6 @@ val wellId = intent.getStringExtra(Constant.INTENT_PARAM)!! wellViewModel = ViewModelProvider(this).get(WellViewModel::class.java) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) - dialogManager = DialogManager.obtainInstance(this) wellViewModel.obtainWellDetail(wellId) aMap = wellMapView.map @@ -156,12 +154,8 @@ }) wellViewModel.loadState.observe(this, { when (it) { - is LoadState.Loading -> { - dialogManager.showLoadingDialog("数据加载中,请稍后") - } - else -> { - dialogManager.dismissLoadingDialog() - } + LoadState.Loading -> LoadingDialogHub.show(this, "数据加载中...") + else -> LoadingDialogHub.dismiss() } }) } diff --git a/app/src/main/res/layout/activity_add_device.xml b/app/src/main/res/layout/activity_add_device.xml index 3429043..3b2aa30 100644 --- a/app/src/main/res/layout/activity_add_device.xml +++ b/app/src/main/res/layout/activity_add_device.xml @@ -35,6 +35,7 @@ android:layout_toStartOf="@id/scannerView" android:background="@null" android:hint="请输入设备编号或者扫描添加" + android:inputType="number" android:maxLength="20" android:paddingVertical="@dimen/dp_5" android:singleLine="true" diff --git a/app/src/main/res/layout/popu_map_info.xml b/app/src/main/res/layout/popu_map_info.xml index 92c3206..c52d088 100644 --- a/app/src/main/res/layout/popu_map_info.xml +++ b/app/src/main/res/layout/popu_map_info.xml @@ -1,6 +1,7 @@ + android:text="最新浓度: 数据加载中..." /> + android:text="设备模型: 数据加载中..." /> + android:text="详细位置: 数据加载中..." /> \ No newline at end of file