diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java index 621b7bd291..ce10423148 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XServiceManager.java @@ -28,6 +28,7 @@ import com.mogo.service.module.IMogoActionManager; import com.mogo.service.module.IMogoMarkerService; import com.mogo.service.module.IMogoRegisterCenter; import com.mogo.service.module.IMogoSearchManager; +import com.mogo.service.share.IMogoShareManager; import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.service.strategy.IMogoRefreshStrategyController; import com.mogo.service.windowview.IMogoTopViewManager; @@ -64,6 +65,7 @@ public class V2XServiceManager { private static IMogoRegisterCenter mMogoRegisterCenter; private static IMogoRefreshStrategyController mIMogoRefreshStrategyController; private static IMogoMarkerService mIMogoMarkerService; + private static IMogoShareManager mIMogoShareManager; private static IMogoActionManager mMogoActionManager; private static ICarsChattingProvider mCarsChattingProvider; @@ -102,6 +104,7 @@ public class V2XServiceManager { mMogoTopViewManager = mMogoServiceApis.getTopViewManager(); mIMogoSearchManager = mMogoServiceApis.getSearchManagerApi(); mIMogoMarkerService = mMogoServiceApis.getMarkerService(); + mIMogoShareManager = mMogoServiceApis.getShareManager(); mMarkerManager = mMapService.getMarkerManager(context); mNavi = mMapService.getNavi(context); @@ -243,4 +246,8 @@ public class V2XServiceManager { public static V2XCalculateServer getV2XCalculateServer() { return mV2XCalculateServer; } + + public static IMogoShareManager getMogoShareManager() { + return mIMogoShareManager; + } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java index 9a823dea8d..d3c525233c 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XOtherSeekHelpVH.java @@ -118,6 +118,16 @@ public class V2XOtherSeekHelpVH extends V2XBaseViewHolder { @Override public void initView(V2XEventShowEntity v2XEventShowEntity) { mV2XPushMessageEntity = v2XEventShowEntity.getV2XPushMessageEntity(); + try { + MarkerLocation markerLocation = new MarkerLocation(); + markerLocation.setLon(mV2XPushMessageEntity.getLon()); + markerLocation.setLat(mV2XPushMessageEntity.getLat()); + mNoveltyInfo = new MarkerExploreWay(); + mNoveltyInfo.setLocation(markerLocation); + } catch (Exception e) { + e.printStackTrace(); + } + // 只有自研车机才会 有车聊聊通话 if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) { // 判断是否可以打电话 @@ -143,7 +153,7 @@ public class V2XOtherSeekHelpVH extends V2XBaseViewHolder { mUserInfo.setUserHead(mV2XPushMessageEntity.getHeadImgUrl()); mUserInfo.setUserName(mV2XPushMessageEntity.getDisplayName()); mUserInfo.setGender(mV2XPushMessageEntity.getSex()); - mUserInfo.setAge(30); + mUserInfo.setAge(mV2XPushMessageEntity.getAge()); mNoveltyInfo.setUserInfo(mUserInfo); triggerCallChart(mNoveltyInfo); } catch (Exception e) { @@ -152,16 +162,6 @@ public class V2XOtherSeekHelpVH extends V2XBaseViewHolder { } }); } - - try { - MarkerLocation markerLocation = new MarkerLocation(); - markerLocation.setLon(mV2XPushMessageEntity.getLon()); - markerLocation.setLat(mV2XPushMessageEntity.getLat()); - mNoveltyInfo = new MarkerExploreWay(); - mNoveltyInfo.setLocation(markerLocation); - } catch (Exception e) { - e.printStackTrace(); - } try { if (!TextUtils.isEmpty(mV2XPushMessageEntity.getHeadImgUrl())) { V2XServiceManager.getImageLoader() diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryIllegalParkVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryIllegalParkVH.java index ae1cb8aba7..e5c6e39974 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryIllegalParkVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryIllegalParkVH.java @@ -40,43 +40,47 @@ public class V2XScenarioHistoryIllegalParkVH extends V2XBaseViewHolder { + Logger.d(V2XConst.MODULE_NAME, "反馈有用"); + roadReportTrue(); + }); + + mLlIllegalParkingUnLike.setOnClickCallListener(v -> { + Logger.d(V2XConst.MODULE_NAME, "反馈无用"); + roadReportErr(); + }); } catch (Exception e) { e.printStackTrace(); } - - if (!viewData.isDispose()) { - hideControlButton(View.VISIBLE); - } else { - hideControlButton(View.GONE); - } - - mLlIllegalParkingLike.setOnClickCallListener(v -> { - Logger.d(V2XConst.MODULE_NAME, "反馈有用"); - roadReportTrue(); - }); - - mLlIllegalParkingUnLike.setOnClickCallListener(v -> { - Logger.d(V2XConst.MODULE_NAME, "反馈无用"); - roadReportErr(); - }); } void hideControlButton(int gone) { @@ -87,14 +91,18 @@ public class V2XScenarioHistoryIllegalParkVH extends V2XBaseViewHolder { + + private TextView mTagEventType; + private TextView mTagEventEvaluate; + private MogoImageView mIvFaultHelpHead; + private TextView mTvFaultHelpName; + private TextView mTvFaultHelpEventTime; + private TextView mTvFaultHelpDistance; + private ImageView mIvFaultHelpEventCall; + private ImageView mIvFaultHelpEventNavi; + + private MarkerExploreWay mNoveltyInfo; + // 上传事件的用户信息 + private MarkerUserInfo mUserInfo = new MarkerUserInfo(); + + private V2XHistoryScenarioData mOldScenarioData; + public V2XScenarioHistoryOtherSeekHelpVH(@NonNull ViewGroup viewGroup) { super(LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.item_v2x_scennario_history_other_help, viewGroup, false)); + mTagEventType = itemView.findViewById(R.id.tagEventType); + mTagEventEvaluate = itemView.findViewById(R.id.tagEventEvaluate); + mIvFaultHelpHead = itemView.findViewById(R.id.ivFaultHelpHead); + mTvFaultHelpName = itemView.findViewById(R.id.tvFaultHelpName); + mTvFaultHelpEventTime = itemView.findViewById(R.id.tvFaultHelpEventTime); + mTvFaultHelpDistance = itemView.findViewById(R.id.tvFaultHelpDistance); + mIvFaultHelpEventCall = itemView.findViewById(R.id.ivFaultHelpEventCall); + mIvFaultHelpEventNavi = itemView.findViewById(R.id.ivFaultHelpEventNavi); } @Override public void initView(V2XHistoryScenarioData viewData) { + try { + mOldScenarioData = viewData; + V2XPushMessageEntity xPushMessageEntity = GsonUtil.objectFromJson(viewData.getEventJsonData(), V2XPushMessageEntity.class); + if (!viewData.isDispose()) { + hideControlButton(View.VISIBLE); + } else { + hideControlButton(View.GONE); + } + + mTvFaultHelpName.setText(xPushMessageEntity.getDisplayName()); + + if (!TextUtils.isEmpty(xPushMessageEntity.getHeadImgUrl())) { + V2XServiceManager.getImageLoader() + .displayImage(xPushMessageEntity.getHeadImgUrl(), mIvFaultHelpHead); + } + + SpanUtils.with(mTvFaultHelpDistance) + .append("" + (int) xPushMessageEntity.getDistance()) + .setFontSize((int) itemView.getResources().getDimension(R.dimen.module_v2x_event_distance_text)) + .append("m") + .setFontSize((int) itemView.getResources().getDimension(R.dimen.module_v2x_event_distance_title)) + .create(); + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm", Locale.CHINA); + String eventTime = String.format("%s发布求助信息", + sdf.format(new Date(xPushMessageEntity.getCreateTime()))); + mTvFaultHelpEventTime.setText(eventTime); + + try { + MarkerLocation markerLocation = new MarkerLocation(); + markerLocation.setLon(xPushMessageEntity.getLon()); + markerLocation.setLat(xPushMessageEntity.getLat()); + mNoveltyInfo = new MarkerExploreWay(); + mNoveltyInfo.setLocation(markerLocation); + } catch (Exception e) { + e.printStackTrace(); + } + + mIvFaultHelpEventNavi.setOnClickListener(v -> { + triggerStartNavi(mNoveltyInfo); + }); + + // 只有自研车机才会 有车聊聊通话 + if (DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_SELF_INNOVATE) { + // 判断是否可以打电话 + ChartingUtil.isCanCall(b -> { + if (b) { + // 判断是否可以打电话 + ChartingUtil.isOnLine(xPushMessageEntity.getSn(), b1 -> { + if (b1) { + mIvFaultHelpEventCall.setVisibility(VISIBLE); + } else { + mIvFaultHelpEventCall.setVisibility(GONE); + } + }); + } else { + mIvFaultHelpEventCall.setVisibility(GONE); + } + }); + + mIvFaultHelpEventCall.setOnClickListener(v -> { + if (!V2XUtils.isFastClick()) { + try { + mUserInfo.setSn(xPushMessageEntity.getSn()); + mUserInfo.setUserHead(xPushMessageEntity.getHeadImgUrl()); + mUserInfo.setUserName(xPushMessageEntity.getDisplayName()); + mUserInfo.setGender(xPushMessageEntity.getSex()); + mUserInfo.setAge(xPushMessageEntity.getAge()); + mNoveltyInfo.setUserInfo(mUserInfo); + triggerCallChart(mNoveltyInfo); + } catch (Exception e) { + e.printStackTrace(); + } + } + }); + } + } catch (Exception e) { + e.printStackTrace(); + } } @Override public void delayedCloseWindow() { + try { + V2XServiceManager.getV2XRefreshModel().respondingToHelp(mUserInfo.getSn()); + hideControlButton(View.GONE); + // 进行数据库存储 + V2XHistoryScenarioData v2XHistoryScenarioData = new V2XHistoryScenarioData(); + v2XHistoryScenarioData.setScenarioType(mOldScenarioData.getScenarioType()); + v2XHistoryScenarioData.setTriggerTime(mOldScenarioData.getTriggerTime()); + v2XHistoryScenarioData.setEventJsonData(mOldScenarioData.getEventJsonData()); + v2XHistoryScenarioData.setDispose(true); + V2XSQLiteUtils.updateScenarioHistoryData(mOldScenarioData, v2XHistoryScenarioData); + + V2XEventPanelFragment.Companion.getInstance().hidePanel(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + void hideControlButton(int gone) { + mTagEventEvaluate.setVisibility(gone); } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryRoadEventVH.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryRoadEventVH.java index 15dd16e0d2..4970ba17bc 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryRoadEventVH.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/adapter/holder/V2XScenarioHistoryRoadEventVH.java @@ -42,47 +42,51 @@ public class V2XScenarioHistoryRoadEventVH extends V2XBaseViewHolder { + Logger.d(V2XConst.MODULE_NAME, "反馈有用"); + roadReportTrue(); + }); + + mLlIllegalParkingUnLike.setOnClickCallListener(v -> { + Logger.d(V2XConst.MODULE_NAME, "反馈无用"); + roadReportErr(); + }); } catch (Exception e) { e.printStackTrace(); } - - if (!viewData.isDispose()) { - hideControlButton(View.VISIBLE); - } else { - hideControlButton(View.GONE); - } - - mLlIllegalParkingLike.setOnClickCallListener(v -> { - Logger.d(V2XConst.MODULE_NAME, "反馈有用"); - roadReportTrue(); - }); - - mLlIllegalParkingUnLike.setOnClickCallListener(v -> { - Logger.d(V2XConst.MODULE_NAME, "反馈无用"); - roadReportErr(); - }); } void hideControlButton(int gone) { @@ -93,14 +97,18 @@ public class V2XScenarioHistoryRoadEventVH extends V2XBaseViewHolder? = null private var mediator: TabLayoutMediator? = null - private var selectPosition = 0 - companion object { private val fragment = V2XEventPanelFragment() fun getInstance(): V2XEventPanelFragment { @@ -73,13 +71,21 @@ class V2XEventPanelFragment : MvpFragment 0) { + tvEventCount.visibility = View.VISIBLE + tvEventCount.text = "${historyMessage.size}" + } else { + tvEventCount.visibility = View.GONE + } } override fun onDestroyView() { @@ -94,16 +100,13 @@ class V2XEventPanelFragment : MvpFragment { private String TAG = "ScenarioHistoryFragment"; + private V2XListEmptyView mEmptyView; + private CoordinatorLayout mClHistoryList; private RecyclerView mRecyclerView; private V2XScenarioHistoryAdapter mV2XScenarioHistoryAdapter; private ArrayList mV2XHistoryScenarioData = new ArrayList<>(); @@ -43,7 +48,10 @@ public class V2XScenarioHistoryFragment @Override protected void initViews() { Log.d(TAG, "initViews --------> "); - mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView); + + mEmptyView = findViewById(R.id.viewEmpty); + mClHistoryList = findViewById(R.id.clHistoryList); + mRecyclerView = findViewById(R.id.recyclerView); mV2XScenarioHistoryAdapter = new V2XScenarioHistoryAdapter(mV2XHistoryScenarioData); mRecyclerView.setAdapter(mV2XScenarioHistoryAdapter); mRecyclerView.addItemDecoration(new SpacesItemDecoration(14)); @@ -51,12 +59,28 @@ public class V2XScenarioHistoryFragment LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); mRecyclerView.setLayoutManager(layoutManager); initListener(); + + mEmptyView.setTripMessage("暂无交通事件"); + mEmptyView.setRefreshVisibility(false); } /** * 初始化页面用到得监听 */ private void initListener() { + mEmptyView.setOnControlListener(new V2XListEmptyView.OnControlListener() { + @Override + public void onShearClick() { + V2XServiceManager.getMogoShareManager().showShareDialog(); + } + + @Override + public void onRefreshClick() { + + } + }); + + V2XServiceManager.getMoGoV2XStatusManager() .registerStatusChangedListener( TAG, @@ -85,7 +109,14 @@ public class V2XScenarioHistoryFragment public void loadHistory(List v2XHistoryScenarioData) { Logger.d(TAG, "查询到历史消息:" + GsonUtil.jsonFromObject(v2XHistoryScenarioData)); mV2XHistoryScenarioData.clear(); - mV2XHistoryScenarioData.addAll(v2XHistoryScenarioData); + if (v2XHistoryScenarioData.size() > 0) { + mEmptyView.setVisibility(View.GONE); + mClHistoryList.setVisibility(View.VISIBLE); + mV2XHistoryScenarioData.addAll(v2XHistoryScenarioData); + } else { + mEmptyView.setVisibility(View.VISIBLE); + mClHistoryList.setVisibility(View.GONE); + } mV2XScenarioHistoryAdapter.notifyDataSetChanged(); } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XApiService.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XApiService.java index 053717d9f3..2345952ffa 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XApiService.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XApiService.java @@ -8,9 +8,9 @@ import com.mogo.module.v2x.entity.net.V2XLivePushVoRes; import com.mogo.module.v2x.entity.net.V2XSeekHelpRes; import com.mogo.module.v2x.entity.net.V2XStrategyPushRes; import com.mogo.module.v2x.entity.net.V2XUserInfoRes; +import com.mogo.module.v2x.entity.panel.SurroundingResponse; import com.mogo.module.v2x.entity.panel.V2XShareEventDescription; import com.mogo.module.v2x.entity.panel.V2XShareEventItem; -import com.mogo.module.v2x.entity.panel.SurroundingResponse; import java.util.Map; @@ -140,4 +140,11 @@ public interface V2XApiService { @FormUrlEncoded @POST("/deva/poiInfoFabulous/car/poi/no/addPoiInfoFabulous/v1") Observable addPoiInfoFabulous(@FieldMap Map params); + + /** + * 响应求助 + */ + @FormUrlEncoded + @POST("/deva/poiInfoFabulous/car/poi/no/RespondingToHelp/v1") + Observable respondingToHelp(@FieldMap Map params); } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java index acdc22e20b..947cdffe39 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java @@ -26,7 +26,6 @@ import com.mogo.utils.logger.Logger; import com.mogo.utils.network.RequestOptions; import com.mogo.utils.network.utils.GsonUtil; -import java.util.HashMap; import java.util.Map; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -518,4 +517,35 @@ public class V2XRefreshModel { }); } } + + /** + * 响应求助 + * "seekHelpSn":"testSn01",求助SN + * "enthusiasticSn":"testSn02",响应求助SN + */ + public void respondingToHelp(String seekHelpSn) { + if (mV2XApiService != null) { + final Map map = new ParamsProvider.Builder(mContext).build(); + String json = new StringBuilder() + .append("{") + .append("\"seekHelpSn\":").append(seekHelpSn) + .append(",") + .append("\"enthusiasticSn\":").append(Utils.getSn()) + .append("}").toString(); + map.put("data", json); + mV2XApiService.respondingToHelp(map).subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { + @Override + public void onSuccess(BaseData o) { + super.onSuccess(o); + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + } + }); + } + } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/AbsV2XScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/AbsV2XScenario.java index d73d7906e7..a65c213591 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/AbsV2XScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/AbsV2XScenario.java @@ -7,7 +7,6 @@ import androidx.annotation.Nullable; import com.mogo.commons.voice.AIAssist; import com.mogo.commons.voice.IMogoVoiceCmdCallBack; import com.mogo.commons.voice.VoicePreemptType; -import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.V2XHistoryScenarioData; import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.v2x.V2XConst; @@ -34,7 +33,7 @@ public abstract class AbsV2XScenario implements IV2XScenario { protected String TAG = "AbsV2XScenario"; private IV2XWindow mV2XWindow; private IV2XButton mV2XButton; - private IV2XMarker mV2XMarker; + private IV2XMarker mV2XMarker; private IMoGoV2XStatusManager mV2XStatusManager; private V2XMessageEntity mV2XMessageEntity; @@ -67,7 +66,7 @@ public abstract class AbsV2XScenario implements IV2XScenario { this.mV2XWindow = mV2XWindow; } - public IV2XMarker getV2XMarker() { + public IV2XMarker getV2XMarker() { return mV2XMarker; } @@ -105,7 +104,7 @@ public abstract class AbsV2XScenario implements IV2XScenario { * * @param markerExploreWay 要存储的场景 */ - public void saveLocalStory(int scenarioType ,MarkerExploreWay markerExploreWay) { + public void saveLocalStory(int scenarioType, Object markerExploreWay) { try { // 进行数据库存储 V2XHistoryScenarioData v2XHistoryScenarioData = new V2XHistoryScenarioData(); diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java index bae00b50ed..888fd9088c 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java @@ -4,7 +4,6 @@ import android.content.Intent; import androidx.localbroadcastmanager.content.LocalBroadcastManager; -import com.mogo.module.common.entity.V2XHistoryScenarioData; import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.v2x.V2XConst; import com.mogo.module.v2x.scenario.IV2XScenarioManager; @@ -16,8 +15,6 @@ import com.mogo.module.v2x.scenario.scene.park.V2XIllegalParkScenario; import com.mogo.module.v2x.scenario.scene.push.V2XPushEventScenario; import com.mogo.module.v2x.scenario.scene.road.V2XRoadEventScenario; import com.mogo.module.v2x.scenario.scene.seek.V2XSeekHelpScenario; -import com.mogo.module.v2x.utils.TimeUtils; -import com.mogo.module.v2x.utils.V2XSQLiteUtils; import com.mogo.module.v2x.utils.V2XUtils; import com.mogo.utils.TipToast; import com.mogo.utils.logger.Logger; @@ -78,7 +75,6 @@ public class V2XScenarioManager implements IV2XScenarioManager { break; case V2XMessageEntity.V2XTypeEnum.ALERT_SEEK_WARNING: mV2XScenario = V2XSeekHelpScenario.getInstance(); - saveLocalStory(v2XMessageEntity); break; case V2XMessageEntity.V2XTypeEnum.ALERT_FATIGUE_DRIVING: mV2XScenario = V2XFatigueDrivingScenario.getInstance(); @@ -114,23 +110,4 @@ public class V2XScenarioManager implements IV2XScenarioManager { }); } } - - /** - * 存储本地数据 - * - * @param v2XMessageEntity 要存储的场景 - */ - void saveLocalStory(V2XMessageEntity v2XMessageEntity) { - try { - // 进行数据库存储 - V2XHistoryScenarioData v2XHistoryScenarioData = new V2XHistoryScenarioData(); - v2XHistoryScenarioData.setScenarioType(v2XMessageEntity.getType()); - v2XHistoryScenarioData.setTriggerTime(TimeUtils.getNowMills()); - v2XHistoryScenarioData.setDispose(false); - v2XHistoryScenarioData.setEventJsonData(GsonUtil.jsonFromObject(v2XMessageEntity.getContent())); - V2XSQLiteUtils.getScenarioHistoryDao().insert(v2XHistoryScenarioData); - } catch (Exception e) { - e.printStackTrace(); - } - } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java index 2c2b004644..79bcc6420b 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpScenario.java @@ -5,9 +5,9 @@ import android.view.ViewGroup; import androidx.annotation.Nullable; -import com.mogo.commons.voice.AIAssist; import com.mogo.module.common.entity.V2XMessageEntity; import com.mogo.module.common.entity.V2XPoiTypeEnum; +import com.mogo.module.common.entity.V2XPushMessageEntity; import com.mogo.module.common.entity.V2XRoadEventEntity; import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XServiceManager; @@ -50,25 +50,45 @@ public class V2XSeekHelpScenario extends AbsV2XScenario> i } private List mMarkerEntity; + private V2XPushMessageEntity mV2XPushMessageEntity; @Override public void init(@Nullable V2XMessageEntity> v2XMessageEntity) { - setV2XMessageEntity(v2XMessageEntity); + try { + setV2XMessageEntity(v2XMessageEntity); - // 广播给ADAS和Launcher卡片 - V2XRoadEventEntity eventEntity = new V2XRoadEventEntity(); - eventEntity.setPoiType(V2XPoiTypeEnum.ALERT_CAR_TROUBLE_WARNING + ""); - eventEntity.setExpireTime(30000); - eventEntity.setTts("发现其他车主的求助信息"); - eventEntity.setAlarmContent("其他车主求助"); - ADASUtils.broadcastToADAS(V2XServiceManager.getContext(), eventEntity); + // 广播给ADAS和Launcher卡片 + V2XRoadEventEntity eventEntity = new V2XRoadEventEntity(); + eventEntity.setPoiType(V2XPoiTypeEnum.ALERT_CAR_TROUBLE_WARNING + ""); + eventEntity.setExpireTime(30000); + eventEntity.setTts("发现其他车主的求助信息"); + eventEntity.setAlarmContent("其他车主求助"); + ADASUtils.broadcastToADAS(V2XServiceManager.getContext(), eventEntity); - if (V2XServiceManager.getMoGoStatusManager().isMainPageLaunched()) { - if (getV2XMessageEntity() != null && - !V2XServiceManager.getMoGoV2XStatusManager().isOtherSeekHelpWindowShow()) { - mMarkerEntity = getV2XMessageEntity().getContent(); - show(); + mMarkerEntity = getV2XMessageEntity().getContent(); + + V2XMarkerEntity markerEntity = mMarkerEntity.get(0); + mV2XPushMessageEntity = new V2XPushMessageEntity(); + mV2XPushMessageEntity.setLon(markerEntity.getLon()); + mV2XPushMessageEntity.setLat(markerEntity.getLat()); + mV2XPushMessageEntity.setDisplayName(markerEntity.getUserInfo().getDisplayName()); + mV2XPushMessageEntity.setHeadImgUrl(markerEntity.getUserInfo().getHeadImgUrl()); + mV2XPushMessageEntity.setSex(markerEntity.getUserInfo().getSex()); + mV2XPushMessageEntity.setSn(markerEntity.getUserInfo().getSn()); + mV2XPushMessageEntity.setCreateTime(markerEntity.getCreateTime()); + mV2XPushMessageEntity.setDistance(markerEntity.getDistance()); + mV2XPushMessageEntity.setExpireTime(20000); + + saveLocalStory(V2XMessageEntity.V2XTypeEnum.ALERT_SEEK_WARNING, mV2XPushMessageEntity); + + if (V2XServiceManager.getMoGoStatusManager().isMainPageLaunched()) { + if (getV2XMessageEntity() != null && + !V2XServiceManager.getMoGoV2XStatusManager().isOtherSeekHelpWindowShow()) { + show(); + } } + } catch (Exception e) { + e.printStackTrace(); } } @@ -89,7 +109,7 @@ public class V2XSeekHelpScenario extends AbsV2XScenario> i V2XServiceManager .getMogoTopViewManager() .addView(getV2XWindow().getView(), layoutParams, this); - getV2XWindow().show(mMarkerEntity); + getV2XWindow().show(mV2XPushMessageEntity); } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpWindow.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpWindow.java index 6deb5f09ed..608fb9d29a 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpWindow.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/scene/seek/V2XSeekHelpWindow.java @@ -18,7 +18,6 @@ import com.mogo.module.common.entity.V2XPushMessageEntity; import com.mogo.module.v2x.R; import com.mogo.module.v2x.V2XServiceManager; import com.mogo.module.v2x.adapter.V2XRoadEventAdapter; -import com.mogo.module.v2x.entity.net.V2XSpecialCarRes.V2XMarkerEntity; import com.mogo.module.v2x.listener.V2XWindowStatusListener; import com.mogo.module.v2x.scenario.view.IV2XWindow; import com.mogo.utils.logger.Logger; @@ -35,7 +34,7 @@ import static com.mogo.module.v2x.V2XConst.MODULE_NAME; * desc : 他人发起的故障求助 * version: 1.0 */ -public class V2XSeekHelpWindow extends ConstraintLayout implements IV2XWindow> { +public class V2XSeekHelpWindow extends ConstraintLayout implements IV2XWindow { private static final String TAG = "V2XSeekHelpWindow"; // 展示列表 @@ -96,32 +95,18 @@ public class V2XSeekHelpWindow extends ConstraintLayout implements IV2XWindow
  • entityList) { - if (entityList != null && !entityList.isEmpty()) { - V2XMarkerEntity markerEntity = entityList.get(0); - - mV2XPushMessageEntity = new V2XPushMessageEntity(); - mV2XPushMessageEntity.setLon(markerEntity.getLon()); - mV2XPushMessageEntity.setLat(markerEntity.getLat()); - mV2XPushMessageEntity.setDisplayName(markerEntity.getUserInfo().getDisplayName()); - mV2XPushMessageEntity.setHeadImgUrl(markerEntity.getUserInfo().getHeadImgUrl()); - mV2XPushMessageEntity.setSex(markerEntity.getUserInfo().getSex()); - mV2XPushMessageEntity.setSn(markerEntity.getUserInfo().getSn()); - mV2XPushMessageEntity.setCreateTime(markerEntity.getCreateTime()); - mV2XPushMessageEntity.setDistance(markerEntity.getDistance()); - mV2XPushMessageEntity.setExpireTime(20000); - + public void show(V2XPushMessageEntity xPushMessageEntity) { + if (xPushMessageEntity != null) { + mV2XPushMessageEntity = xPushMessageEntity; // 清空数据 mItemList.clear(); - //Logger.d(MODULE_NAME, "V2X===推送消息:" + v2XRoadEventEntity); V2XEventShowEntity v2XEventShowEntity = new V2XEventShowEntity(); - v2XEventShowEntity.setV2XPushMessageEntity(mV2XPushMessageEntity); + v2XEventShowEntity.setV2XPushMessageEntity(xPushMessageEntity); v2XEventShowEntity.setViewType(V2XMessageEntity.V2XTypeEnum.ALERT_SEEK_WARNING); mItemList.add(v2XEventShowEntity); // 刷新列表 mV2XRoadEventAdapter.notifyDataSetChanged(); - countDownV2XEvent(); } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/V2XSQLiteUtils.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/V2XSQLiteUtils.java index e1eb9f6112..47e52c8be5 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/V2XSQLiteUtils.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/utils/V2XSQLiteUtils.java @@ -73,6 +73,15 @@ public class V2XSQLiteUtils { return getScenarioHistoryDao().query(new V2XHistoryScenarioData(), "triggerTime", true); } + /** + * 查询当天的未评价V2X数据 + */ + public static List getScenarioHistoryUnDisposeData() { + V2XHistoryScenarioData v2XHistoryScenarioData = new V2XHistoryScenarioData(); + v2XHistoryScenarioData.isDispose = false; + return getScenarioHistoryDao().query(v2XHistoryScenarioData, "triggerTime", true); + } + /** * 修改指定的数据 */ diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XListEmptyView.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XListEmptyView.java new file mode 100644 index 0000000000..e6c4717760 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/view/V2XListEmptyView.java @@ -0,0 +1,97 @@ +package com.mogo.module.v2x.view; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.annotation.Nullable; + +import com.mogo.module.v2x.R; + +/** + * 列表空白布局View + * + * @author donghongyu + */ +public class V2XListEmptyView extends LinearLayout { + + private ImageView mIvEmptyView; + private TextView mTvTrip; + private Button mBtnShear; + private Button mBtnRefresh; + + private OnControlListener mOnControlListener; + + public V2XListEmptyView(Context context) { + this(context, null); + } + + public V2XListEmptyView(Context context, @Nullable AttributeSet attrs) { + this(context, attrs, 0); + } + + public V2XListEmptyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + LayoutInflater.from(context).inflate(R.layout.view_history_empty, this); + initView(); + } + + private void initView() { + mIvEmptyView = findViewById(R.id.ivEmptyView); + mTvTrip = findViewById(R.id.tvTrip); + mBtnShear = findViewById(R.id.btnShear); + mBtnRefresh = findViewById(R.id.btnRefresh); + + mBtnShear.setOnClickListener(v -> { + if (mOnControlListener != null) { + mOnControlListener.onShearClick(); + } + }); + mBtnRefresh.setOnClickListener(v -> { + if (mOnControlListener != null) { + mOnControlListener.onRefreshClick(); + } + }); + } + + public void setTripMessage(String tripMsg) { + if (mTvTrip != null) { + mTvTrip.setText(tripMsg); + } + } + + public void setShearVisibility(boolean visibility) { + if (mBtnShear != null) { + if (visibility) { + mBtnShear.setVisibility(VISIBLE); + } else { + mBtnShear.setVisibility(GONE); + } + } + } + + public void setRefreshVisibility(boolean visibility) { + if (mBtnRefresh != null) { + if (visibility) { + mBtnRefresh.setVisibility(VISIBLE); + } else { + mBtnRefresh.setVisibility(GONE); + } + } + } + + public void setOnControlListener(OnControlListener onControlListener) { + this.mOnControlListener = onControlListener; + } + + public interface OnControlListener { + void onShearClick(); + + void onRefreshClick(); + } + +} diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_blank_history_event.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_blank_history_event.png new file mode 100644 index 0000000000..c77748e661 Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_blank_history_event.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_choose.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_choose.png new file mode 100644 index 0000000000..132ee06da9 Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_choose.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_second.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_second.png new file mode 100644 index 0000000000..93388e1ef0 Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_second.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_unchoose.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_unchoose.png new file mode 100644 index 0000000000..c3aaede08e Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_enthusiasm_unchoose.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_event_panel_more.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_event_panel_more.png new file mode 100644 index 0000000000..e7c778c377 Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_event_panel_more.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_share_empty.png b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_share_empty.png new file mode 100644 index 0000000000..893d02518c Binary files /dev/null and b/modules/mogo-module-v2x/src/main/res/drawable-ldpi/icon_share_empty.png differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable/icon_enthusiasm_choose.png b/modules/mogo-module-v2x/src/main/res/drawable/icon_enthusiasm_choose.png deleted file mode 100644 index 3a8c9b318b..0000000000 Binary files a/modules/mogo-module-v2x/src/main/res/drawable/icon_enthusiasm_choose.png and /dev/null differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable/icon_enthusiasm_second.png b/modules/mogo-module-v2x/src/main/res/drawable/icon_enthusiasm_second.png deleted file mode 100644 index 4894b507b2..0000000000 Binary files a/modules/mogo-module-v2x/src/main/res/drawable/icon_enthusiasm_second.png and /dev/null differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable/icon_enthusiasm_unchoose.png b/modules/mogo-module-v2x/src/main/res/drawable/icon_enthusiasm_unchoose.png deleted file mode 100644 index f64d27d31f..0000000000 Binary files a/modules/mogo-module-v2x/src/main/res/drawable/icon_enthusiasm_unchoose.png and /dev/null differ diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2x_drawable_event_message_bkg.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2x_drawable_event_message_bkg.xml new file mode 100644 index 0000000000..d4a17f0e59 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/res/drawable/v2x_drawable_event_message_bkg.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2x_drawable_event_more_bkg.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2x_drawable_event_more_bkg.xml new file mode 100644 index 0000000000..05b8d4a553 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/res/drawable/v2x_drawable_event_more_bkg.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2xt_dw_common_corner_bkg.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2xt_dw_common_corner_bkg.xml deleted file mode 100644 index e90fdc8ce3..0000000000 --- a/modules/mogo-module-v2x/src/main/res/drawable/v2xt_dw_common_corner_bkg.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2xt_dw_common_corner_bkg_dark.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2xt_dw_common_corner_bkg_dark.xml new file mode 100644 index 0000000000..b359c203e9 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/res/drawable/v2xt_dw_common_corner_bkg_dark.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/drawable/v2xt_dw_common_corner_bkg_light.xml b/modules/mogo-module-v2x/src/main/res/drawable/v2xt_dw_common_corner_bkg_light.xml new file mode 100644 index 0000000000..1c9c0b5e05 --- /dev/null +++ b/modules/mogo-module-v2x/src/main/res/drawable/v2xt_dw_common_corner_bkg_light.xml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_panel_fragment_event_panel.xml b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_panel_fragment_event_panel.xml index 3fff1894f8..ec35978846 100644 --- a/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_panel_fragment_event_panel.xml +++ b/modules/mogo-module-v2x/src/main/res/layout/module_v2x_event_panel_fragment_event_panel.xml @@ -5,6 +5,39 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + + + + -