diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpFragment.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpFragment.java index 3561592a54..be7f2bac04 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpFragment.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/MvpFragment.java @@ -37,8 +37,9 @@ public abstract class MvpFragment> exten mRootView = inflater.inflate( getLayoutId(), container, false ); } else { ViewGroup viewGroup = ( ViewGroup ) mRootView.getParent(); - if ( viewGroup != null ) + if ( viewGroup != null ) { viewGroup.removeView( mRootView ); + } } mRootView = inflater.inflate(getLayoutId(), container, false); return mRootView; diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/BaseDao.kt b/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/BaseDao.kt index b144237096..82b9ff529a 100644 --- a/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/BaseDao.kt +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/sqlite/BaseDao.kt @@ -243,6 +243,7 @@ open class BaseDao : IBaseDao { cursor?.close() } } + Logger.d(TAG, "查询结果:" + result.size + " 条") return result } diff --git a/modules/mogo-module-event-panel/src/main/AndroidManifest.xml b/modules/mogo-module-event-panel/src/main/AndroidManifest.xml index c865fb2efe..7e450daf84 100644 --- a/modules/mogo-module-event-panel/src/main/AndroidManifest.xml +++ b/modules/mogo-module-event-panel/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ - / \ No newline at end of file diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/EventPagerAdapter.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/EventPagerAdapter.kt index 24e8710884..f06be4acab 100644 --- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/EventPagerAdapter.kt +++ b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/EventPagerAdapter.kt @@ -4,7 +4,7 @@ import androidx.fragment.app.Fragment import androidx.viewpager2.adapter.FragmentStateAdapter import com.zhidao.mogo.module.event.panel.fragment.ShareEventsFragment import com.zhidao.mogo.module.event.panel.fragment.SurroundingEventFragment -import com.zhidao.mogo.module.event.panel.fragment.TripRecordFragment +import com.zhidao.mogo.module.event.panel.fragment.ScenarioHistoryFragment /** * 事件面板viewpager2的adapter @@ -12,7 +12,7 @@ import com.zhidao.mogo.module.event.panel.fragment.TripRecordFragment * @author tongchenfei */ class EventPagerAdapter(fragment: Fragment) : FragmentStateAdapter(fragment) { - private val fragments:Array = arrayOf(TripRecordFragment(), SurroundingEventFragment(), ShareEventsFragment()) + private val fragments: Array = arrayOf(ScenarioHistoryFragment(), SurroundingEventFragment(), ShareEventsFragment()) /** * 目前一共就三个fragment diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/ScenarioHistoryAdapter.java b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/ScenarioHistoryAdapter.java new file mode 100644 index 0000000000..c4fd5c04ea --- /dev/null +++ b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/ScenarioHistoryAdapter.java @@ -0,0 +1,55 @@ +package com.zhidao.mogo.module.event.panel.adapter; + +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.mogo.module.common.entity.V2XHistoryScenarioData; +import com.mogo.module.common.entity.V2XWindowTypeEnum; +import com.zhidao.mogo.module.event.panel.adapter.holder.ScenarioHistoryIllegalParkVH; + +import java.util.ArrayList; + +/** + * @author donghongyu + */ +public class ScenarioHistoryAdapter extends RecyclerView.Adapter { + + private ArrayList mV2XHistoryScenarioData; + + public ScenarioHistoryAdapter(ArrayList v2XHistoryScenarioData) { + if (v2XHistoryScenarioData != null) { + this.mV2XHistoryScenarioData = v2XHistoryScenarioData; + } + } + + @NonNull + @Override + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + RecyclerView.ViewHolder holder; + switch (viewType) { + // 直播 + case V2XWindowTypeEnum.LIVE_CAR_WINDOW: + holder = new ScenarioHistoryIllegalParkVH(parent); + break; + default: + holder = new ScenarioHistoryIllegalParkVH(parent); + } + return holder; + } + + @Override + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + if (holder instanceof ScenarioHistoryIllegalParkVH) { + ((ScenarioHistoryIllegalParkVH) holder).initView(mV2XHistoryScenarioData.get(position)); + } + } + + + @Override + public int getItemCount() { + return mV2XHistoryScenarioData == null ? 0 : mV2XHistoryScenarioData.size(); + } + +} diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/holder/ScenarioHistoryIllegalParkVH.java b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/holder/ScenarioHistoryIllegalParkVH.java new file mode 100644 index 0000000000..03c1028cab --- /dev/null +++ b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/holder/ScenarioHistoryIllegalParkVH.java @@ -0,0 +1,29 @@ +package com.zhidao.mogo.module.event.panel.adapter.holder; + +import android.view.LayoutInflater; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; + +import com.mogo.module.common.entity.V2XHistoryScenarioData; +import com.zhidao.mogo.module.event.panel.R; + +/** + * @author donghongyu + */ +public class ScenarioHistoryIllegalParkVH extends V2XBaseViewHolder { + public ScenarioHistoryIllegalParkVH(@NonNull ViewGroup viewGroup) { + super(LayoutInflater.from(viewGroup.getContext()) + .inflate(R.layout.module_event_panel_share_item, viewGroup, false)); + } + + @Override + public void initView(V2XHistoryScenarioData viewData) { + + } + + @Override + public void delayedCloseWindow() { + + } +} diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/holder/V2XBaseViewHolder.java b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/holder/V2XBaseViewHolder.java new file mode 100644 index 0000000000..37f5b685b7 --- /dev/null +++ b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/adapter/holder/V2XBaseViewHolder.java @@ -0,0 +1,124 @@ +package com.zhidao.mogo.module.event.panel.adapter.holder; + +import android.view.View; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.mogo.map.navi.IMogoNaviListener; +import com.mogo.map.navi.MogoNaviInfo; +import com.mogo.map.navi.MogoTraffic; +import com.mogo.module.common.entity.MarkerExploreWay; +import com.mogo.module.common.entity.V2XHistoryScenarioData; +import com.mogo.utils.TipToast; +import com.mogo.utils.logger.Logger; + +/** + * V2X展示视图公用的实现 + * + * @author donghongyu + */ +public abstract class V2XBaseViewHolder + extends RecyclerView.ViewHolder + implements IMogoNaviListener { + + public V2XBaseViewHolder(@NonNull View itemView) { + super(itemView); + } + + public abstract void initView(V2XHistoryScenarioData viewData); + + /** + * 延迟关闭窗体视图 + */ + public abstract void delayedCloseWindow(); + + /** + * 点赞 + */ + public void triggerZan(MarkerExploreWay noveltyInfo) { + + delayedCloseWindow(); + } + + /** + * 打电话 + */ + public void triggerCallChart(MarkerExploreWay noveltyInfo) { + + delayedCloseWindow(); + } + + /** + * 反馈路况错误 + */ + public void triggerReportErr(MarkerExploreWay noveltyInfo) { + + delayedCloseWindow(); + } + + /** + * 反馈路况正确 + */ + public void triggerReportTrue(MarkerExploreWay noveltyInfo) { + + delayedCloseWindow(); + } + + /** + * 导航规划路线 + */ + public void triggerStartNavi(MarkerExploreWay noveltyInfo) { + + delayedCloseWindow(); + } + + /** + * 显示自定义 Toast + * + * @param msg + */ + public void showTip(String msg) { + TipToast.tip(msg); + } + + @Override + public void onInitNaviFailure() { + + } + + @Override + public void onInitNaviSuccess() { + + } + + @Override + public void onNaviInfoUpdate(MogoNaviInfo naviinfo) { + + } + + @Override + public void onStartNavi() { + + } + + @Override + public void onStopNavi() { + + } + + @Override + public void onCalculateSuccess() { + Logger.w("V2XBaseViewHolder", "onCalculateSuccess"); + } + + @Override + public void onoCalculateFailed() { + + } + + @Override + public void onUpdateTraffic(MogoTraffic traffic) { + + } +} diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/ScenarioHistoryFragment.java b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/ScenarioHistoryFragment.java new file mode 100644 index 0000000000..750054b88e --- /dev/null +++ b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/ScenarioHistoryFragment.java @@ -0,0 +1,62 @@ +package com.zhidao.mogo.module.event.panel.fragment; + +import android.util.Log; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.PagerSnapHelper; +import androidx.recyclerview.widget.RecyclerView; + +import com.mogo.commons.mvp.MvpFragment; +import com.mogo.module.common.entity.V2XHistoryScenarioData; +import com.mogo.utils.logger.Logger; +import com.zhidao.mogo.module.event.panel.R; +import com.zhidao.mogo.module.event.panel.adapter.ScenarioHistoryAdapter; +import com.zhidao.mogo.module.event.panel.presenter.ScenarioHistoryPresenter; +import com.zhidao.mogo.module.event.panel.util.V2XSQLiteUtils; + +import java.util.ArrayList; +import java.util.List; + +/** + * 出行动态,V2X 提示过的场景历史 + * + * @author donghongyu + */ +public class ScenarioHistoryFragment + extends MvpFragment { + + private RecyclerView mRecyclerView; + private ScenarioHistoryAdapter mScenarioHistoryAdapter; + private ArrayList mV2XHistoryScenarioData = new ArrayList<>(); + + @Override + protected int getLayoutId() { + return R.layout.module_event_panel_fragment_scenario_history; + } + + @Override + protected void initViews() { + Log.d("ScenarioHistoryFragment", "initViews --------> "); + + mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView); + mScenarioHistoryAdapter = new ScenarioHistoryAdapter(mV2XHistoryScenarioData); + mRecyclerView.setAdapter(mScenarioHistoryAdapter); + // 设置切换样式 + new PagerSnapHelper().attachToRecyclerView(mRecyclerView); + // 配置列表朝向 + LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false); + mRecyclerView.setLayoutManager(layoutManager); + + List v2XHistoryScenarioData = V2XSQLiteUtils.getScenarioHistoryData(getActivity()); + Logger.d("ScenarioHistoryFragment", "查询到历史消息:" + v2XHistoryScenarioData); + mV2XHistoryScenarioData.addAll(v2XHistoryScenarioData); + mScenarioHistoryAdapter.notifyDataSetChanged(); + } + + @NonNull + @Override + protected ScenarioHistoryPresenter createPresenter() { + return new ScenarioHistoryPresenter(this); + } +} diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/TripRecordFragment.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/TripRecordFragment.kt deleted file mode 100644 index 09854c3542..0000000000 --- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/fragment/TripRecordFragment.kt +++ /dev/null @@ -1,49 +0,0 @@ -package com.zhidao.mogo.module.event.panel.fragment - -import android.util.Log -import com.mogo.commons.mvp.MvpFragment -import com.mogo.module.common.entity.V2XMessageEntity -import com.mogo.utils.logger.Logger -import com.zhidao.mogo.module.event.panel.EventPanelConstants.MODULE_NAME -import com.zhidao.mogo.module.event.panel.R -import com.zhidao.mogo.module.event.panel.bean.TripRecord -import com.zhidao.mogo.module.event.panel.presenter.TripRecordPresenter -import com.zhidao.mogo.module.event.panel.util.TripRecordDataManager -import kotlinx.android.synthetic.main.module_event_panel_fragment_trip_record.* -import kotlin.random.Random - -/** - * 出行动态fragment - */ -class TripRecordFragment : MvpFragment() { - private val tripRecordList = ArrayList() - override fun getLayoutId(): Int = R.layout.module_event_panel_fragment_trip_record - - override fun initViews() { - btnInsert.setOnClickListener { - TripRecordDataManager.insertTripRecord(TripRecord(id = 456, eventType = 456,eventId = "456")) - } - btnUpdate.setOnClickListener { - TripRecordDataManager.syncRoadEventModifyState(eventId = "456", modifyType = "2") - } - btnQuery.setOnClickListener { - Log.d(MODULE_NAME, "local list: $tripRecordList") - mPresenter.queryAllTripRecord() - } - } - - override fun createPresenter(): TripRecordPresenter = TripRecordPresenter(this) - - fun refreshTripRecordList(tripRecords: List) { - Logger.d(MODULE_NAME, "刷新出行动态列表:$tripRecords") - tripRecordList.clear() - tripRecordList.addAll(tripRecords) - } - - /** - * 刷新单个出行动态,如果无此动态,新增动态 - */ - fun refreshTripRecord(tripRecord: TripRecord) { - Logger.d(MODULE_NAME, "刷新单个出行动态: $tripRecord") - } -} \ No newline at end of file diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/ScenarioHistoryPresenter.java b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/ScenarioHistoryPresenter.java new file mode 100644 index 0000000000..4ae0d93a60 --- /dev/null +++ b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/ScenarioHistoryPresenter.java @@ -0,0 +1,15 @@ +package com.zhidao.mogo.module.event.panel.presenter; + +import com.mogo.commons.mvp.Presenter; +import com.zhidao.mogo.module.event.panel.fragment.ScenarioHistoryFragment; + +/** + * @author donghongyu + */ +public class ScenarioHistoryPresenter extends Presenter { + + public ScenarioHistoryPresenter(ScenarioHistoryFragment view) { + super(view); + } + +} diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/TripRecordPresenter.kt b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/TripRecordPresenter.kt deleted file mode 100644 index e1dd809210..0000000000 --- a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/presenter/TripRecordPresenter.kt +++ /dev/null @@ -1,33 +0,0 @@ -package com.zhidao.mogo.module.event.panel.presenter - -import androidx.lifecycle.LifecycleOwner -import com.mogo.commons.mvp.Presenter -import com.zhidao.mogo.module.event.panel.bean.TripRecord -import com.zhidao.mogo.module.event.panel.fragment.TripRecordFragment -import com.zhidao.mogo.module.event.panel.listener.ITripRecordCallback -import com.zhidao.mogo.module.event.panel.util.TripRecordDataManager - -class TripRecordPresenter(view: TripRecordFragment) : Presenter(view),ITripRecordCallback { - - init { - TripRecordDataManager.addTripRecordCallback(this) - } - - override fun onDestroy(owner: LifecycleOwner) { - super.onDestroy(owner) - TripRecordDataManager.removeTripRecordCallback(this) - } - - fun queryAllTripRecord(){ - TripRecordDataManager.queryAllTripRecord() - } - - override fun queryTripRecordListSuccess(tripRecordList: List) { - mView.refreshTripRecordList(tripRecordList) - } - - override fun insertOrUpdateTripRecordSuccess(tripRecord: TripRecord) { - mView.refreshTripRecord(tripRecord) - } - -} diff --git a/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/V2XSQLiteUtils.java b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/V2XSQLiteUtils.java new file mode 100644 index 0000000000..2483ee0521 --- /dev/null +++ b/modules/mogo-module-event-panel/src/main/java/com/zhidao/mogo/module/event/panel/util/V2XSQLiteUtils.java @@ -0,0 +1,45 @@ +package com.zhidao.mogo.module.event.panel.util; + +import android.content.Context; + +import com.mogo.module.common.entity.V2XHistoryScenarioData; +import com.mogo.utils.sqlite.BaseDaoFactory; +import com.mogo.utils.sqlite.IBaseDao; + +import java.util.List; + +/** + * 数据库操作工具类 + * + * @author donghongyu + */ +public class V2XSQLiteUtils { + /** + * 场景数据管理 + */ + private static IBaseDao mScenarioHistoryDao; + + /** + * 场景数据管理 + */ + public static IBaseDao getScenarioHistoryDao(Context context) { + if (mScenarioHistoryDao == null) { + synchronized (V2XSQLiteUtils.class) { + if (mScenarioHistoryDao == null) { + mScenarioHistoryDao = BaseDaoFactory.Companion.getInstance() + .getBaseDao(context, V2XHistoryScenarioData.class); + } + } + } + return mScenarioHistoryDao; + } + + /** + * 查询当天的V2X数据 + */ + public static List getScenarioHistoryData(Context context) { + + return getScenarioHistoryDao(context).query(new V2XHistoryScenarioData()); + } + +} diff --git a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_scenario_history.xml b/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_scenario_history.xml new file mode 100644 index 0000000000..4e449b632e --- /dev/null +++ b/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_scenario_history.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_trip_record.xml b/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_trip_record.xml deleted file mode 100644 index 734133c3be..0000000000 --- a/modules/mogo-module-event-panel/src/main/res/layout/module_event_panel_fragment_trip_record.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - -