diff --git a/app/build.gradle b/app/build.gradle index 036d6e0..a159518 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -30,7 +30,7 @@ android { targetSdkVersion 35 versionCode 2101 // versionName "2.1.1" - versionName "2.1.1-Beta8" + versionName "2.1.1-Beta9" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/NotificationsViewModel.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/NotificationsViewModel.kt index 37fe92b..4ce8b73 100644 --- a/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/NotificationsViewModel.kt +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/activity/vm/NotificationsViewModel.kt @@ -20,8 +20,8 @@ class NotificationsViewModel : ViewModel() { val mNotificationsLiveData = MutableLiveData>>() val mDeleteMessageLiveData = MutableLiveData>() - fun getMessageList(activity: BaseActivity<*>) { - activity.showLoading(true) + fun getMessageList() { +// activity.showLoading(true) viewModelScope.launch { val userId = MMKVUtil.getString(MMKVKey.UserId) val result = NetworkApi.getMessageList(userId) diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/NotificationV2Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/NotificationV2Activity.kt index d5c3267..f63ca13 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/account/NotificationV2Activity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/NotificationV2Activity.kt @@ -3,8 +3,6 @@ package com.abbidot.tracker.ui.activity.account import android.view.View import androidx.activity.viewModels import androidx.lifecycle.lifecycleScope -import com.abbidot.baselibrary.constant.EventName -import com.abbidot.baselibrary.eventbus.XEventBus import com.abbidot.baselibrary.list.BaseRecyclerAdapter import com.abbidot.baselibrary.util.LogUtil import com.abbidot.tracker.R @@ -44,7 +42,7 @@ class NotificationV2Activity : message.isRead = true lifecycleScope.launch(Dispatchers.IO) { MyDatabase.messageDao().insert(message) - XEventBus.post(EventName.RefreshMessage) +// XEventBus.post(EventName.RefreshMessage) } } notifyItemChanged(pos) @@ -56,7 +54,7 @@ class NotificationV2Activity : ) setOnClickListenerViews(mViewBinding.btnNotificationV2ReadAll) - mNotificationsViewModel.getMessageList(this) + mNotificationsViewModel.getMessageList() } override fun liveDataObserve() { @@ -87,9 +85,9 @@ class NotificationV2Activity : runOnUiThread { mMessageAdapter.setData(sortedByList.toMutableList(), true) } - for (i in sortedByList){ - LogUtil.e(i.messageId+":"+i.message) - } +// for (i in sortedByList){ +// LogUtil.e(i.messageId+":"+i.message) +// } } } } @@ -114,7 +112,7 @@ class NotificationV2Activity : } mMessageAdapter.notifyItemRangeChanged(0, list.size) } - if (isUpdate) XEventBus.post(EventName.RefreshMessage) +// if (isUpdate) XEventBus.post(EventName.RefreshMessage) } } } diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV3.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV3.kt index c2514a1..5bd8a78 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV3.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV3.kt @@ -12,6 +12,7 @@ import androidx.lifecycle.lifecycleScope import com.abbidot.baselibrary.constant.ConState import com.abbidot.baselibrary.constant.EventName import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.constant.ResultCode import com.abbidot.baselibrary.eventbus.XEventBus import com.abbidot.baselibrary.list.BaseRecyclerAdapter import com.abbidot.baselibrary.util.AppUtils @@ -114,6 +115,8 @@ class LiveActivityV3 : BaseActivity(ActivityLiveV3Binding //设备Led灯开关 private var isLedOpen = false private var mRequestModeType = ConstantInt.Type1 + private var isCloseBattery = false + private var isCloseMsg = false override fun getTopBar() = null @@ -123,6 +126,9 @@ class LiveActivityV3 : BaseActivity(ActivityLiveV3Binding mDistanceUnit = Util.getMetricUnits(mContext, ConstantInt.Type3) intent.extras?.apply { isLiveJump = getBoolean(ConstantString.JumpActivity, true) + isCloseBattery = getBoolean(ConstantString.DeviceAuthorized) + isCloseMsg = getBoolean(ConstantString.PetAuthorized) + mMapViewModel.mDeviceMsgType = getInt(ConstantString.Type, ConstantInt.SpecialType) mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java) } @@ -249,13 +255,15 @@ class LiveActivityV3 : BaseActivity(ActivityLiveV3Binding dealRequestResult(it, object : GetResultCallback { override fun onResult(any: Any) { val data = it.getOrNull() - data?.apply { - mMapDeviceBean = data - setMapData(data) + data?.let { d -> + d.isCloseBattery = isCloseBattery + d.isCloseMsg = isCloseMsg + mMapDeviceBean = d + setMapData(d) mMapViewModel.setDeviceStateAndWarningData( mContext, mPetBean, - data, + d, mViewBinding.ilLiveV3MapDeviceMsg.root, mViewBinding.ilLiveV3MapDeviceMsg.tvDeviceMsgContent, mViewBinding.ilLiveV3MapDeviceMsg.ivDeviceMsgCloseBtn, @@ -288,13 +296,13 @@ class LiveActivityV3 : BaseActivity(ActivityLiveV3Binding //直播超时 -1 -> { XEventBus.post(EventName.LiveOpenTimeOut) - finish() + finishActivity() } //直播结束 0 -> { mViewBinding.llLiveV2StateLayout.visibility = View.GONE // showToast(R.string.txt_change_successful, true) - finish() + finishActivity() } //直播开始 else -> { @@ -312,7 +320,7 @@ class LiveActivityV3 : BaseActivity(ActivityLiveV3Binding override fun onRequestError(exceptionCode: String?) { LogUtil.e("HomeV2Activity直播开启错误onRequestError,再次请求") if (exceptionCode == mNetworkRequestsFailLimit) { - finish() + finishActivity() } else { mPetBean?.apply { mMapLiveViewModel.setupDeviceLiveStatus( @@ -398,6 +406,17 @@ class LiveActivityV3 : BaseActivity(ActivityLiveV3Binding } } + private fun finishActivity() { + val intent = Intent() + mMapDeviceBean?.let { + intent.putExtra(ConstantString.DeviceAuthorized, it.isCloseBattery) + intent.putExtra(ConstantString.PetAuthorized, it.isCloseMsg) + intent.putExtra(ConstantString.Type, mMapViewModel.mDeviceMsgType) + } + setResult(ResultCode.ResultCode_1, intent) + finish() + } + /** * 跳转debug调试页面 @@ -517,7 +536,7 @@ class LiveActivityV3 : BaseActivity(ActivityLiveV3Binding //直播自动结束 if (isStartLive) { XEventBus.post(EventName.LiveAutoEnd) - finish() + finishActivity() } } @@ -756,7 +775,7 @@ class LiveActivityV3 : BaseActivity(ActivityLiveV3Binding //直播自动结束 if (isStartLive) { XEventBus.post(EventName.LiveAutoEnd) - finish() + finishActivity() } return } else if (liveFlag == ConstantInt.Type1) { @@ -1028,7 +1047,7 @@ class LiveActivityV3 : BaseActivity(ActivityLiveV3Binding showAndHideFindLayout() } else { mFindBleDeviceViewModel.stopFindDevice() - finish() + finishActivity() } } diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/account/AccountV2Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/AccountV2Fragment.kt index 18c851a..182681b 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/account/AccountV2Fragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/account/AccountV2Fragment.kt @@ -5,7 +5,6 @@ import android.content.Intent import android.view.View import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.lifecycleScope import com.abbidot.baselibrary.constant.EventName import com.abbidot.baselibrary.constant.MMKVKey import com.abbidot.baselibrary.eventbus.XEventBus @@ -17,11 +16,8 @@ import com.abbidot.tracker.base.BaseFragment import com.abbidot.tracker.bean.MenuTxtBean import com.abbidot.tracker.constant.GetResultCallback import com.abbidot.tracker.constant.MultipleEntity -import com.abbidot.tracker.database.MyDatabase import com.abbidot.tracker.databinding.FragmentAccountV2Binding -import com.abbidot.tracker.deprecated.ui.activity.vm.NotificationsViewModel import com.abbidot.tracker.ui.activity.HomeV2Activity -import com.abbidot.tracker.ui.activity.account.NotificationV2Activity import com.abbidot.tracker.ui.activity.account.UserProfileActivity import com.abbidot.tracker.ui.activity.device.MyTrackerV2Activity import com.abbidot.tracker.ui.activity.subscribe.MySubscriptionActivity @@ -29,8 +25,6 @@ import com.abbidot.tracker.util.Util import com.abbidot.tracker.util.ViewUtil import com.abbidot.tracker.vm.UserProfileViewModel import com.qmuiteam.qmui.util.QMUIDisplayHelper -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch /** @@ -41,7 +35,6 @@ class AccountV2Fragment : BaseFragment(FragmentAccountV2Binding::inflate) { private lateinit var mUserViewModel: UserProfileViewModel - private lateinit var mNotificationsViewModel: NotificationsViewModel private lateinit var mMenuAdapter: HomeAccountMenuAdapter private lateinit var mMenuList: MutableList @@ -60,7 +53,7 @@ class AccountV2Fragment : llHomeAccountLayout, WindowInsetsCompat.Type.statusBars() ) llHomeAccountTopUser.let { - it.ivTopPetBtnSmall.setImageResource(R.drawable.icon_noti_svg) + it.ivTopPetBtnSmall.visibility = View.GONE it.homeDataPetNameSmall.text = MMKVUtil.getString(MMKVKey.UserName, getString(R.string.app_name)) val imageUrl = MMKVUtil.getString(MMKVKey.HeadUrl) @@ -80,7 +73,6 @@ class AccountV2Fragment : setOnClickListenerViews( llHomeAccountMyTracker, llHomeAccountSubscription, - llHomeAccountTopUser.ivTopPetBtnSmall, llHomeAccountTopUser.homeDataPetHeadSmall.root, llHomeAccountTopUser.homeDataPetNameSmall ) @@ -88,7 +80,6 @@ class AccountV2Fragment : //切换到账户ActivityV2Fragment 页面,会导致ViewModel生命周期销毁,需要重新创建 mUserViewModel = ViewModelProvider(this)[UserProfileViewModel::class.java] - mNotificationsViewModel = ViewModelProvider(this)[NotificationsViewModel::class.java] getHomeV2Activity()?.apply { mUserViewModel.getUserInfo(this) @@ -104,13 +95,6 @@ class AccountV2Fragment : } } - override fun onResume() { - super.onResume() - getHomeV2Activity()?.apply { - mNotificationsViewModel.getMessageList(this) - } - } - private fun addListData() { mMenuList = mutableListOf() ViewUtil.instance.addMenuBean(mMenuList, getString(R.string.txt_help)) @@ -192,9 +176,6 @@ class AccountV2Fragment : mUserViewModel.getUserInfo(it) } } - XEventBus.observe(viewLifecycleOwner, EventName.RefreshMessage) { - getMessageCount() - } mUserViewModel.apply { mUserInfoLiveData.observe(viewLifecycleOwner) { dealRequestResult(it, object : GetResultCallback { @@ -228,43 +209,8 @@ class AccountV2Fragment : }) } } - mNotificationsViewModel.mNotificationsLiveData.observe(viewLifecycleOwner) { - dealRequestResult(it, object : GetResultCallback { - override fun onResult(any: Any) { - it.getOrNull()?.apply { - lifecycleScope.launch(Dispatchers.IO) { - Util.dealMessage(this@apply) - getMessageCount() - } - } - } - - override fun onRequestError(exceptionCode: String?) { - getMessageCount() - } - }, isRequestErrorTip = false, isShowNoDataTip = false) - } } - private fun getMessageCount() { - requireActivity().lifecycleScope.launch(Dispatchers.IO) { - MyDatabase.messageDao().findAll(MyDatabase.MessageTableName)?.apply { - var noReadNum = size - LogUtil.e("消息列表个数:${size}") - for (message in this) { - if (message.isRead) noReadNum-- - } - getHomeV2Activity()?.runOnUiThread { - mViewBinding.homeAccountMessageCountText.let { - if (noReadNum > 0) it.visibility = View.VISIBLE - else it.visibility = View.GONE - it.text = "$noReadNum" - } - - } - } - } - } fun setMeasureUnit(measurementUnit: Int) { mMeasurementUnit = measurementUnit @@ -291,12 +237,6 @@ class AccountV2Fragment : mContext, MySubscriptionActivity::class.java ) ) - - llHomeAccountTopUser.ivTopPetBtnSmall -> startActivity( - Intent( - mContext, NotificationV2Activity::class.java - ) - ) } } } diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV3Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV3Fragment.kt index 3e5dea7..eecb4db 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV3Fragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV3Fragment.kt @@ -6,6 +6,7 @@ import android.graphics.Typeface import android.location.LocationManager import android.provider.Settings import android.view.View +import androidx.activity.result.contract.ActivityResultContracts import androidx.core.view.WindowInsetsCompat import androidx.fragment.app.Fragment import androidx.fragment.app.commit @@ -13,6 +14,7 @@ import androidx.fragment.app.viewModels import com.abbidot.baselibrary.constant.ConState import com.abbidot.baselibrary.constant.EventName import com.abbidot.baselibrary.constant.MMKVKey +import com.abbidot.baselibrary.constant.ResultCode import com.abbidot.baselibrary.eventbus.XEventBus import com.abbidot.baselibrary.list.BaseRecyclerAdapter import com.abbidot.baselibrary.util.AppUtils @@ -539,6 +541,35 @@ class MapV3Fragment : BaseFragment(FragmentMapV3Binding::i } } + /** + * 接收添加信用卡返回结果 + */ + private val mActivityResultLauncher = + registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { + it.data?.apply { + extras?.let { intent -> + if (it.resultCode == ResultCode.ResultCode_1) { + val isCloseBattery = intent.getBoolean(ConstantString.DeviceAuthorized) + val isCloseMsg = intent.getBoolean(ConstantString.PetAuthorized) + mMapViewModel.mDeviceMsgType = + intent.getInt(ConstantString.Type, mMapViewModel.mDeviceMsgType) + mMapDeviceBean?.let { m -> + if (isCloseBattery != m.isCloseBattery) { + m.isCloseBattery = isCloseBattery + mViewBinding.llHomeMapDeviceBatteryLayout.visibility = + if (isCloseBattery) View.INVISIBLE else View.VISIBLE + } + if (isCloseMsg != m.isCloseMsg) { + m.isCloseMsg = isCloseMsg + mViewBinding.ilHomeMapDeviceMsg.root.visibility = + if (isCloseMsg) View.GONE else View.VISIBLE + } + } + } + } + } + } + /** * 检查获取定位,蓝牙权限 */ @@ -552,13 +583,7 @@ class MapV3Fragment : BaseFragment(FragmentMapV3Binding::i } else if (isRequestPetData && mPetList.size == 0) { showToast(R.string.no_bind_pet) } else { - getPet()?.apply { - mViewBinding.homeMapLiveBtn.isEnabled = false - val intent = Intent(mContext, LiveActivityV3::class.java) - intent.putExtra(ConstantString.JumpActivity, true) - intent.putExtra(ConstantString.Pet, this) - startActivity(intent) - } + goLive(true) } } else if (type == 1) { if (!SRBleUtil.instance.isBleEnable(mContext)) { @@ -566,19 +591,35 @@ class MapV3Fragment : BaseFragment(FragmentMapV3Binding::i } else if (isRequestPetData && mPetList.size == 0) { showToast(R.string.no_bind_pet) } else { - getPet()?.apply { - mViewBinding.homeMapBluetoothBtn.isEnabled = false - val intent = Intent(mContext, LiveActivityV3::class.java) - intent.putExtra(ConstantString.JumpActivity, false) - intent.putExtra(ConstantString.Pet, this) - startActivity(intent) - } + goLive(false) } } }) } } + private fun goLive(isLiveJump: Boolean) { + getHomeV2Activity()?.apply { + getPet()?.apply { + if (isLiveJump) { + mViewBinding.homeMapLiveBtn.isEnabled = false + } else { + mViewBinding.homeMapBluetoothBtn.isEnabled = false + } + val intent = Intent(mContext, LiveActivityV3::class.java) + intent.putExtra(ConstantString.JumpActivity, isLiveJump) + intent.putExtra(ConstantString.Pet, this) + mMapDeviceBean?.let { + intent.putExtra(ConstantString.DeviceAuthorized, it.isCloseBattery) + intent.putExtra(ConstantString.PetAuthorized, it.isCloseMsg) + intent.putExtra(ConstantString.Type, mMapViewModel.mDeviceMsgType) + } +// startActivity(intent) + launchActivity(mActivityResultLauncher, intent) + } + } + } + override fun onClick(v: View?) { mViewBinding.apply { when (v!!) { @@ -604,15 +645,7 @@ class MapV3Fragment : BaseFragment(FragmentMapV3Binding::i homeMapLiveBtn -> { // locationPermissionsTip() - getHomeV2Activity()?.let { - it.getPet()?.apply { - mViewBinding.homeMapLiveBtn.isEnabled = false - val intent = Intent(mContext, LiveActivityV3::class.java) - intent.putExtra(ConstantString.JumpActivity, true) - intent.putExtra(ConstantString.Pet, this) - startActivity(intent) - } - } + goLive(true) } llHomeMapTopPet.ivTopPetBtnSmall -> showMapTypeDialog() diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragmentV3.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragmentV3.kt index 9c62454..d3603ae 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragmentV3.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragmentV3.kt @@ -6,7 +6,7 @@ import android.view.View import android.view.ViewGroup import android.view.animation.LinearInterpolator import androidx.core.content.ContextCompat -import androidx.core.view.isGone +import androidx.core.view.isVisible import androidx.fragment.app.viewModels import com.abbidot.baselibrary.util.AppUtils import com.abbidot.baselibrary.util.Utils @@ -134,13 +134,14 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() { if (marker == mMarker) { mMapDeviceBean?.let { if (it.canShowBattery) { - mDeviceBatteryLayout.visibility = if (mDeviceBatteryLayout.isGone) { - it.isCloseBattery = false - View.VISIBLE - } else { - it.isCloseBattery = true - View.GONE - } + mDeviceBatteryLayout.visibility = + if (mDeviceBatteryLayout.isVisible) { + it.isCloseBattery = true + View.GONE + } else { + it.isCloseBattery = false + View.VISIBLE + } } } return true diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/PetV2Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/PetV2Fragment.kt index e1d555f..e1b97fa 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/PetV2Fragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/pet/PetV2Fragment.kt @@ -1,18 +1,29 @@ package com.abbidot.tracker.ui.fragment.pet import android.content.Context +import android.content.Intent import android.view.View import androidx.core.view.WindowInsetsCompat import androidx.fragment.app.Fragment +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope import androidx.viewpager2.widget.ViewPager2 import com.abbidot.baselibrary.util.AppUtils import com.abbidot.baselibrary.util.LogUtil +import com.abbidot.tracker.R import com.abbidot.tracker.adapter.ViewPagerAdapter import com.abbidot.tracker.base.BaseFragment +import com.abbidot.tracker.constant.GetResultCallback +import com.abbidot.tracker.database.MyDatabase import com.abbidot.tracker.databinding.FragmentPetV2Binding +import com.abbidot.tracker.deprecated.ui.activity.vm.NotificationsViewModel import com.abbidot.tracker.ui.activity.HomeV2Activity +import com.abbidot.tracker.ui.activity.account.NotificationV2Activity import com.abbidot.tracker.ui.fragment.device.HomeTrackFragment +import com.abbidot.tracker.util.Util import com.abbidot.tracker.util.ViewUtil +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch /** @@ -21,6 +32,8 @@ import com.abbidot.tracker.util.ViewUtil */ class PetV2Fragment : BaseFragment(FragmentPetV2Binding::inflate) { + private lateinit var mNotificationsViewModel: NotificationsViewModel + private lateinit var mFragments: MutableList //当前这个页面显示的宠物下标 @@ -42,7 +55,7 @@ class PetV2Fragment : BaseFragment(FragmentPetV2Binding::i getHomeV2Activity()?.edgeToEdgeAdapterBars( root, WindowInsetsCompat.Type.statusBars() ) - ilHomePetTopBar.ivTopPetBtnSmall.visibility = View.GONE + ilHomePetTopBar.ivTopPetBtnSmall.setImageResource(R.drawable.icon_noti_svg) rgSwitchPetTrack.setOnCheckedChangeListener { _, checkedId -> when (checkedId) { @@ -69,7 +82,9 @@ class PetV2Fragment : BaseFragment(FragmentPetV2Binding::i } }) setOnClickListenerViews( - ilHomePetTopBar.homeDataPetNameSmall, ilHomePetTopBar.homeDataPetHeadSmall.root + ilHomePetTopBar.homeDataPetNameSmall, + ilHomePetTopBar.homeDataPetHeadSmall.root, + ilHomePetTopBar.ivTopPetBtnSmall ) } if (AppUtils.isDebug()) { @@ -79,6 +94,30 @@ class PetV2Fragment : BaseFragment(FragmentPetV2Binding::i } } } + + mNotificationsViewModel = ViewModelProvider(this)[NotificationsViewModel::class.java] + } + + override fun liveDataObserve() { +// XEventBus.observe(viewLifecycleOwner, EventName.RefreshMessage) { +// getMessageCount() +// } + mNotificationsViewModel.mNotificationsLiveData.observe(viewLifecycleOwner) { + dealRequestResult(it, object : GetResultCallback { + override fun onResult(any: Any) { + it.getOrNull()?.apply { + lifecycleScope.launch(Dispatchers.IO) { + Util.dealMessage(this@apply) + getMessageCount() + } + } + } + + override fun onRequestError(exceptionCode: String?) { + getMessageCount() + } + }, isRequestErrorTip = false, isShowNoDataTip = false) + } } private fun getHomeV2Activity(): HomeV2Activity? { @@ -92,6 +131,7 @@ class PetV2Fragment : BaseFragment(FragmentPetV2Binding::i override fun onResume() { super.onResume() + mNotificationsViewModel.getMessageList() (mFragments[1] as HomeTrackFragment).onResume() getHomeV2Activity()?.apply { //其他页面是否选择了宠物 @@ -108,6 +148,26 @@ class PetV2Fragment : BaseFragment(FragmentPetV2Binding::i (mFragments[1] as HomeTrackFragment).onPause() } + private fun getMessageCount() { + requireActivity().lifecycleScope.launch(Dispatchers.IO) { + MyDatabase.messageDao().findAll(MyDatabase.MessageTableName)?.apply { + var noReadNum = size + LogUtil.e("消息数量:${size}") + for (message in this) { + if (message.isRead) noReadNum-- + } + getHomeV2Activity()?.runOnUiThread { + mViewBinding.homePetMessageCountText.let { + if (noReadNum > 0) it.visibility = View.VISIBLE + else it.visibility = View.GONE + it.text = "$noReadNum" + } + + } + } + } + } + /** * 设置需要更新的标识 */ @@ -144,6 +204,9 @@ class PetV2Fragment : BaseFragment(FragmentPetV2Binding::i mViewBinding.apply { when (v!!) { ilHomePetTopBar.homeDataPetNameSmall, ilHomePetTopBar.homeDataPetHeadSmall.root -> getHomeV2Activity()?.selectPetDialog() + ilHomePetTopBar.ivTopPetBtnSmall -> startActivity( + Intent(mContext, NotificationV2Activity::class.java) + ) } } } diff --git a/app/src/main/java/com/abbidot/tracker/vm/MapViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/MapViewModel.kt index f161e03..5f76f66 100644 --- a/app/src/main/java/com/abbidot/tracker/vm/MapViewModel.kt +++ b/app/src/main/java/com/abbidot/tracker/vm/MapViewModel.kt @@ -35,7 +35,7 @@ class MapViewModel : ViewModel() { private var mRefreshDataMin = 0.5f private var mDeviceId = "" - private var mDeviceMsgType = ConstantInt.SpecialType + var mDeviceMsgType = ConstantInt.SpecialType fun getMapDeviceStatus(deviceId: String, isNeedCountDown: Boolean = true) { viewModelScope.launch { diff --git a/app/src/main/res/drawable-xhdpi/icon_white_bg_gray_delete.png b/app/src/main/res/drawable-xhdpi/icon_white_bg_gray_delete.png new file mode 100644 index 0000000..e3ae76f Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/icon_white_bg_gray_delete.png differ diff --git a/app/src/main/res/drawable-xxhdpi/icon_white_bg_gray_delete.png b/app/src/main/res/drawable-xxhdpi/icon_white_bg_gray_delete.png new file mode 100644 index 0000000..f069b78 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/icon_white_bg_gray_delete.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/icon_white_bg_gray_delete.png b/app/src/main/res/drawable-xxxhdpi/icon_white_bg_gray_delete.png new file mode 100644 index 0000000..d4d615a Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/icon_white_bg_gray_delete.png differ diff --git a/app/src/main/res/layout/fragment_account_v2.xml b/app/src/main/res/layout/fragment_account_v2.xml index a4a3bfd..689796e 100644 --- a/app/src/main/res/layout/fragment_account_v2.xml +++ b/app/src/main/res/layout/fragment_account_v2.xml @@ -11,32 +11,33 @@ android:layout_height="match_parent" android:orientation="vertical"> - + android:layout_marginHorizontal="@dimen/dp_8" + android:layout_marginTop="@dimen/dp_8" /> + + + + - - - + + + + + + + + + + + + + + - + android:paddingHorizontal="@dimen/dp_8"> + + + + + + android:src="@drawable/icon_white_bg_gray_delete" /> diff --git a/app/src/main/res/layout/layout_map_device_battery.xml b/app/src/main/res/layout/layout_map_device_battery.xml index 71a45b7..81d05da 100644 --- a/app/src/main/res/layout/layout_map_device_battery.xml +++ b/app/src/main/res/layout/layout_map_device_battery.xml @@ -33,10 +33,9 @@ + android:src="@drawable/icon_white_bg_gray_delete" /> \ No newline at end of file