From b993d77be125be37306c807bb641efe0d882eebd Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Thu, 24 Sep 2020 15:10:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=AE=E7=9A=84=E5=9C=B0=E8=BD=A6=E5=8F=8B?= =?UTF-8?q?=E7=99=BD=E5=A4=A9=E6=A8=A1=E5=BC=8F=E5=8F=8A=E5=85=B6=E4=BB=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 23 ++++++ .../com/mogo/launcher/MogoApplication.java | 2 + config.gradle | 2 +- .../com/mogo/commons/debug/DebugConfig.java | 26 ++++++ modules/mogo-module-common/build.gradle | 1 + .../mogo/module/common/api/CallChatApi.java | 78 ++++++++++++++++++ .../res/layout/module_ext_layout_entrance.xml | 1 - .../res/values-xhdpi-1920x1000/dimens.xml | 2 +- .../src/main/res/values-xhdpi/dimens.xml | 2 +- .../src/main/res/values/dimens.xml | 2 +- .../com/mogo/module/service/MogoServices.java | 27 ++++-- .../intent/OnlineCarPanelIntentHandler.java | 9 ++ .../launchercard/LauncherCardRefresher.java | 18 +++- .../service/marker/MapMarkerManager.java | 17 ++-- .../module/service/network/RefreshModel.java | 8 ++ .../panel/OnlineCarPanelAdapter.java | 9 ++ .../panel/OnlineCarPanelFragment.java | 1 + ...services_online_car_panel_background.9.png | Bin 1131 -> 1154 bytes ...services_online_car_panel_background.9.png | Bin 583 -> 587 bytes .../module_services_panel_item_detail_bkg.xml | 2 +- ...ule_services_fragment_online_car_panel.xml | 8 +- .../src/main/res/values/colors.xml | 1 + .../mogo/module/widgets/MogoWidgetManger.java | 1 - .../module_common_default_user_head_light.png | Bin 0 -> 9030 bytes .../module_common_default_user_head_light.png | Bin 0 -> 3292 bytes .../module_services_close_light.png | Bin 0 -> 444 bytes ...es_online_car_panel_background_light.9.png | Bin 0 -> 2778 bytes .../module_services_close_light.png | Bin 0 -> 1586 bytes ...es_online_car_panel_background_light.9.png | Bin 0 -> 4686 bytes .../drawable/module_services_close_light.png | Bin 0 -> 444 bytes ...es_online_car_panel_background_light.9.png | Bin 0 -> 2805 bytes .../module_services_panel_item_bkg_light.xml | 9 ++ ...e_services_panel_item_detail_bkg_light.xml | 9 ++ ...rvices_panel_strategy_button_bkg_light.xml | 9 ++ .../module-services-res/values/colors.xml | 8 ++ 35 files changed, 249 insertions(+), 26 deletions(-) create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/api/CallChatApi.java create mode 100644 skin/mogo-skin-light/src/main/module-commons-res/drawable-xhdpi/module_common_default_user_head_light.png create mode 100644 skin/mogo-skin-light/src/main/module-commons-res/drawable/module_common_default_user_head_light.png create mode 100755 skin/mogo-skin-light/src/main/module-services-res/drawable-mdpi/module_services_close_light.png create mode 100644 skin/mogo-skin-light/src/main/module-services-res/drawable-mdpi/module_services_online_car_panel_background_light.9.png create mode 100755 skin/mogo-skin-light/src/main/module-services-res/drawable-xhdpi/module_services_close_light.png create mode 100644 skin/mogo-skin-light/src/main/module-services-res/drawable-xhdpi/module_services_online_car_panel_background_light.9.png create mode 100755 skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_close_light.png create mode 100644 skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_online_car_panel_background_light.9.png create mode 100644 skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_panel_item_bkg_light.xml create mode 100644 skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_panel_item_detail_bkg_light.xml create mode 100644 skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_panel_strategy_button_bkg_light.xml diff --git a/app/build.gradle b/app/build.gradle index 536d5ac6c6..48cda21e4a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -86,6 +86,9 @@ android { // 是否作为 launcher 运行 buildConfigField 'boolean', 'IS_LAUNCHER', 'false' buildConfigField 'String', 'SOCKET_APP_ID', '\"com.mogo.launcher\"' + // 是否支持目的地导航策略 + buildConfigField 'boolean', 'IS_SUPPORT_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH', 'true' + } // launcher app launcher { @@ -95,6 +98,8 @@ android { // 是否作为 launcher 运行 buildConfigField 'boolean', 'IS_LAUNCHER', 'true' buildConfigField 'String', 'SOCKET_APP_ID', '\"com.mogo.launcher\"' + // 是否支持目的地导航策略 + buildConfigField 'boolean', 'IS_SUPPORT_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH', 'false' } // f系列-分体机全系列,未细分 f8xx { @@ -115,6 +120,8 @@ android { buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' + // 是否支持桌面卡片刷新 + buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false' } // f系列-分体机 f80x { @@ -135,6 +142,8 @@ android { buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' + // 是否支持桌面卡片刷新 + buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false' } // e系列,采用Launcher方案 e8xx { @@ -155,6 +164,8 @@ android { buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' + // 是否支持桌面卡片刷新 + buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false' } // 同上 em4 { @@ -175,6 +186,8 @@ android { buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' + // 是否支持桌面卡片刷新 + buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false' } // e系列-2+32,对标D系列2+32,采用独立app的形式 em3 { @@ -195,6 +208,8 @@ android { buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' + // 是否支持桌面卡片刷新 + buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'true' } // e系列-1+16,对标D系列1+16,采用独立app形式 em1 { @@ -215,6 +230,8 @@ android { buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' + // 是否支持桌面卡片刷新 + buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'true' } // d系列 d8xx { @@ -255,6 +272,8 @@ android { buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'true' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' + // 是否支持桌面卡片刷新 + buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'true' } // d系列 1+16 版本 d82x { @@ -275,6 +294,8 @@ android { buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'true' + // 是否支持桌面卡片刷新 + buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'true' } // 比亚迪 bydauto { @@ -295,6 +316,8 @@ android { buildConfigField 'boolean', 'IS_SKIN_SUPPORTED', 'false' // 是否支持查询导航目的地车友 buildConfigField 'boolean', 'IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST', 'false' + // 是否支持桌面卡片刷新 + buildConfigField 'boolean', 'IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY', 'false' } qa { dimension "env" diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index 7abefd176e..c5c04bd683 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -132,6 +132,8 @@ public class MogoApplication extends AbsMogoApplication { DebugConfig.setLoadGuideModule( BuildConfig.LOAD_GUIDE_MODULE ); DebugConfig.setSkinSupported( BuildConfig.IS_SKIN_SUPPORTED ); DebugConfig.setSupportedSearchDestinationOnlineCarList( BuildConfig.IS_SUPPORTED_SEARCH_DESTINATION_ONLINE_CAR_LIST ); + DebugConfig.setScheduleCalculateNotHomeCompanyDistanceForPush( BuildConfig.IS_SUPPORT_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH ); + DebugConfig.setSupportLauncherCardRefreshStrategy( BuildConfig.IS_SUPPORT_LAUNCHER_CARD_REFRESH_STRATEGY ); } @Override diff --git a/config.gradle b/config.gradle index fd07584843..ce651c5fef 100644 --- a/config.gradle +++ b/config.gradle @@ -133,7 +133,7 @@ targetSdkVersion : 22, jetbrainsannotationsjava5 : "org.jetbrains:annotations-java5:15.0", // 统一登录 - accountsdk : "com.zhidao.accountservice:account-sdk:1.0.11", + accountsdk : "com.zhidao.accountservice:account-sdk:1.0.14", // crash crashSdk : "com.zhidaoauto.crash.log:library:1.0.5", kotlinstdlibjdk7 : "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${kotlin_version}", diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java index 91bcb237ec..2b37445066 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/debug/DebugConfig.java @@ -290,4 +290,30 @@ public class DebugConfig { public static boolean isSupportedSearchDestinationOnlineCarList() { return isSupportedSearchDestinationOnlineCarList; } + + /** + * 是否支持目的地导航推送策略 + */ + private static boolean isScheduleCalculateNotHomeCompanyDistanceForPush = false; + + public static void setScheduleCalculateNotHomeCompanyDistanceForPush( boolean isScheduleCalculateNotHomeCompanyDistanceForPush ) { + DebugConfig.isScheduleCalculateNotHomeCompanyDistanceForPush = isScheduleCalculateNotHomeCompanyDistanceForPush; + } + + public static boolean isIsScheduleCalculateNotHomeCompanyDistanceForPush() { + return isScheduleCalculateNotHomeCompanyDistanceForPush; + } + + /** + * 是否支持刷新桌面卡片 + */ + private static boolean isSupportLauncherCardRefreshStrategy = false; + + public static void setSupportLauncherCardRefreshStrategy( boolean isSupportLauncherCardRefreshStrategy ) { + DebugConfig.isSupportLauncherCardRefreshStrategy = isSupportLauncherCardRefreshStrategy; + } + + public static boolean isIsSupportLauncherCardRefreshStrategy() { + return isSupportLauncherCardRefreshStrategy; + } } diff --git a/modules/mogo-module-common/build.gradle b/modules/mogo-module-common/build.gradle index 3a8b6d5986..bf000cacf7 100644 --- a/modules/mogo-module-common/build.gradle +++ b/modules/mogo-module-common/build.gradle @@ -33,6 +33,7 @@ dependencies { implementation rootProject.ext.dependencies.androidxrecyclerview implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.arouter + implementation rootProject.ext.dependencies.carcallprovider if (Boolean.valueOf(RELEASE)) { api rootProject.ext.dependencies.mogomap api rootProject.ext.dependencies.mogomapapi diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/api/CallChatApi.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/api/CallChatApi.java new file mode 100644 index 0000000000..ffea53dfd0 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/api/CallChatApi.java @@ -0,0 +1,78 @@ +package com.mogo.module.common.api; + +import android.content.Context; + +import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.module.carchattingprovider.ICarsChattingProvider; +import com.mogo.module.common.entity.MarkerOnlineCar; +import com.mogo.utils.logger.Logger; +import com.zhidao.carchattingprovider.MogoDriverInfo; + +public +/** + * @author congtaowang + * @since 2020/9/24 + * + * 车聊聊接口 + */ +class CallChatApi { + + private static final String TAG = "CallChatApi"; + + private static volatile CallChatApi sInstance; + + private CallChatApi() { + mApiProvider = ARouter.getInstance().navigation( ICarsChattingProvider.class ); + } + + public static CallChatApi getInstance() { + if ( sInstance == null ) { + synchronized ( CallChatApi.class ) { + if ( sInstance == null ) { + sInstance = new CallChatApi(); + } + } + } + return sInstance; + } + + public synchronized void release() { + mApiProvider = null; + sInstance = null; + } + + private Object readResolve() { + // 阻止反序列化,必须实现 Serializable 接口 + return sInstance; + } + + private ICarsChattingProvider mApiProvider; + + public void showUserWindow( Context context, MarkerOnlineCar onlineCar ) throws Exception { + if ( mApiProvider == null ) { + Logger.e( TAG, "no call chat api instance." ); + return; + } + MogoDriverInfo driverInfo = new MogoDriverInfo(); + driverInfo.setAge( onlineCar.getUserInfo().getAgeNumber() ); + driverInfo.setCarTypeName( onlineCar.getCarInfo().getCarTypeName() ); + driverInfo.setGender( onlineCar.getUserInfo().getGender() ); + driverInfo.setLat( onlineCar.getLocation().getLat() ); + driverInfo.setLon( onlineCar.getLocation().getLon() ); + driverInfo.setLocationInfo( onlineCar.getLocation().getAddress() ); + driverInfo.setSn( onlineCar.getUserInfo().getSn() ); + driverInfo.setUserHead( onlineCar.getUserInfo().getUserHead() ); + driverInfo.setUserName( onlineCar.getUserInfo().getUserName() ); + mApiProvider.showUserWindow( TAG, driverInfo, context ); + } + + public void hideUserWindow( Context context ) { + if ( mApiProvider != null ) { + if ( mApiProvider == null ) { + Logger.e( TAG, "no call chat api instance." ); + return; + } + } + mApiProvider.hideUserWindow( TAG, context, null ); + } +} diff --git a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml index b5da488ae6..77074d07cd 100644 --- a/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml +++ b/modules/mogo-module-extensions/src/main/res/layout/module_ext_layout_entrance.xml @@ -48,7 +48,6 @@ android:gravity="center_vertical" android:text="@string/module_ext_destination_online_car_text" android:visibility="gone" - android:layout_marginLeft="@dimen/module_common_shadow_width_pos" android:textColor="@color/module_ext_color_voice_text" android:textSize="@dimen/module_ext_north_textSize" android:textStyle="bold" diff --git a/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml index a30623fe52..75f2f2b1fa 100644 --- a/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values-xhdpi-1920x1000/dimens.xml @@ -131,7 +131,7 @@ 30px 120px 120px - 30px + 10px 22px 28px 28px diff --git a/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml index 33ef63c151..125e839721 100644 --- a/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values-xhdpi/dimens.xml @@ -131,7 +131,7 @@ 30px 120px 120px - 30px + 10px 22px 28px 28px diff --git a/modules/mogo-module-extensions/src/main/res/values/dimens.xml b/modules/mogo-module-extensions/src/main/res/values/dimens.xml index f92b46b195..e0ccc1e24d 100644 --- a/modules/mogo-module-extensions/src/main/res/values/dimens.xml +++ b/modules/mogo-module-extensions/src/main/res/values/dimens.xml @@ -137,7 +137,7 @@ 142px 66px 66px - 16px + 10px 12px 14px 14px diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java index aacf70217f..7463f84d34 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MogoServices.java @@ -201,7 +201,7 @@ public class MogoServices implements IMogoMapListener, } break; case ServiceConst.MSG_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH: - handleCalculationNotHomeCompanyDistanceForPush(); + handleCalculationNotHomeCompanyDistanceForPush( msg.arg1 ); break; } } @@ -944,8 +944,12 @@ public class MogoServices implements IMogoMapListener, @Override public void onStartNavi() { - Logger.d( TAG, "onStartNavi: scheduleCalculationNotHomeCompanyDistanceForPush" ); - scheduleCalculationNotHomeCompanyDistanceForPush(); + if ( DebugConfig.isIsScheduleCalculateNotHomeCompanyDistanceForPush() ) { + Logger.d( TAG, "onStartNavi: scheduleCalculationNotHomeCompanyDistanceForPush" ); + scheduleCalculationNotHomeCompanyDistanceForPush( 1, ServiceConst.INTERVAL_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH ); + } else { + Logger.d( TAG, "onStartNavi: scheduleCalculationNotHomeCompanyDistanceForPush un support" ); + } } @Override @@ -957,14 +961,22 @@ public class MogoServices implements IMogoMapListener, /** * 延时一分钟发起计算导航目的地推送策略 */ - private void scheduleCalculationNotHomeCompanyDistanceForPush() { - mHandler.sendEmptyMessageDelayed( ServiceConst.MSG_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH, ServiceConst.INTERVAL_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH ); + private void scheduleCalculationNotHomeCompanyDistanceForPush( int time, long delay ) { + Message msg = Message.obtain(); + msg.what = ServiceConst.MSG_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH; + msg.arg1 = time; + mHandler.sendMessageDelayed( msg, delay ); } /** * 发起计算导航目的地推送策略 + * + * @param time 第x次重试 */ - private void handleCalculationNotHomeCompanyDistanceForPush() { + private void handleCalculationNotHomeCompanyDistanceForPush( final int time ) { + if ( time > 3 ) { + return; + } String json = SpStorage.getNavigationTarget(); if ( !TextUtils.isEmpty( json ) ) { try { @@ -993,6 +1005,9 @@ public class MogoServices implements IMogoMapListener, @Override public void onError( Throwable e ) { super.onError( e ); + Logger.d( TAG, "re scheduleCalculationNotHomeCompanyDistanceForPush after 30s" ); + // 延时30s重试 + scheduleCalculationNotHomeCompanyDistanceForPush( time + 1, 30_000L ); } @Override diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/OnlineCarPanelIntentHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/OnlineCarPanelIntentHandler.java index e48297bf71..0fc9085e6d 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/OnlineCarPanelIntentHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/intent/OnlineCarPanelIntentHandler.java @@ -3,7 +3,10 @@ package com.mogo.module.service.intent; import android.content.Context; import android.content.Intent; import android.net.Uri; +import android.text.TextUtils; +import com.mogo.commons.storage.SpStorage; +import com.mogo.commons.voice.AIAssist; import com.mogo.module.service.MarkerServiceHandler; public @@ -17,6 +20,12 @@ class OnlineCarPanelIntentHandler implements IntentHandler { @Override public void handle( Context context, Intent intent ) { + String json = SpStorage.getNavigationTarget(); + if ( TextUtils.isEmpty( json ) ) { + AIAssist.getInstance( context ).speakTTSVoice( "没有导航目的地" ); + return; + } + AIAssist.getInstance( context ).speakTTSVoice( "正在查询" ); if ( MarkerServiceHandler.getMogoStatusManager().isMainPageOnResume() ) { MarkerServiceHandler.getApis().getOnlineCarPanelApi().showPanel(); } else { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java index ceee0204a2..42614860ee 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/launchercard/LauncherCardRefresher.java @@ -76,6 +76,11 @@ class LauncherCardRefresher { */ private int mDefaultConfigCounter = 0; + /** + * 事件/车友播报次数 + */ + private int mMsgExplorerWayOrOnlineCarDataCounter = 0; + /** * 因为缓存ticket失效导致失败的情况,需要重新请求ticket然后再次获取数据,这里重试3次 */ @@ -151,18 +156,18 @@ class LauncherCardRefresher { private ZhidaoRefreshModel mZhidaoRefreshModel; private LauncherCardRefreshStrategy mExplorerWayOrOnlineCarDataStrategy = new LauncherCardRefreshStrategy( - 40 * ONE_MINUTE,null, MSG_EXPLORER_WAY_OR_ONLINE_CAR_DATA + 40 * ONE_MINUTE, null, MSG_EXPLORER_WAY_OR_ONLINE_CAR_DATA ); private LauncherCardRefreshStrategy mInduceStrategy = new LauncherCardRefreshStrategy( - 3 * ONE_MINUTE,mExplorerWayOrOnlineCarDataStrategy, MSG_INDUCE + 3 * ONE_MINUTE, mExplorerWayOrOnlineCarDataStrategy, MSG_INDUCE ); private LauncherCardRefreshStrategy mLauncherCardConfigStrategy = new LauncherCardRefreshStrategy( - 2 * ONE_MINUTE,mInduceStrategy, MSG_REFRESH_DEFAULT_CARD + 2 * ONE_MINUTE, mInduceStrategy, MSG_REFRESH_DEFAULT_CARD ); private LauncherCardRefreshStrategy mRefreshStrategy = mLauncherCardConfigStrategy; public void start() { - if ( DebugConfig.isLauncher() || DebugConfig.getCarMachineType() == DebugConfig.CAR_MACHINE_TYPE_BYD ) { + if ( !DebugConfig.isIsSupportLauncherCardRefreshStrategy() ) { return; } if ( mStart ) { @@ -172,6 +177,7 @@ class LauncherCardRefresher { mLaunchTTSText = mContext.getString( R.string.module_service_open_app_tip ); mDefaultConfigCounter = 0; mRefreshTicketCounter = 0; + mMsgExplorerWayOrOnlineCarDataCounter = 0; mRefreshStrategy = mLauncherCardConfigStrategy; // 延时加载数据,已保证accOn之后网络恢复正常 long delay = ONE_MINUTE; @@ -238,6 +244,10 @@ class LauncherCardRefresher { restart(); return; } + mMsgExplorerWayOrOnlineCarDataCounter++; + if ( mMsgExplorerWayOrOnlineCarDataCounter > 2 ) { + return; + } MogoLatLng latLng = new MogoLatLng( location.getLatitude(), location.getLongitude() ); handleRefreshExplorerWayOrOnlineCarData( latLng, mRefreshStrategy.getType() ); } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index eccbd1b862..591a3e5695 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -3,6 +3,7 @@ package com.mogo.module.service.marker; import android.content.Context; import android.graphics.Rect; import android.text.TextUtils; +import android.util.Log; import android.view.animation.AccelerateInterpolator; import android.view.animation.LinearInterpolator; @@ -16,6 +17,7 @@ import com.mogo.map.marker.MogoMarkerOptions; import com.mogo.map.marker.anim.OnMarkerAnimationListener; import com.mogo.map.uicontroller.EnumMapUI; import com.mogo.module.common.ModuleNames; +import com.mogo.module.common.api.CallChatApi; import com.mogo.module.common.entity.MarkerCarPois; import com.mogo.module.common.entity.MarkerCardResult; import com.mogo.module.common.entity.MarkerExploreWay; @@ -187,9 +189,12 @@ public class MapMarkerManager implements IMogoMarkerClickListener, // 在线车辆点击使用infoWindow if ( TextUtils.equals( mogoMarker.getOwner(), ModuleNames.CARD_TYPE_USER_DATA ) ) { if ( !mogoMarker.isDestroyed() ) { - mogoMarker.setInfoWindowAdapter( UserDataMarkerInfoWindowAdapter.getInstance( mContext ) ); - mogoMarker.showInfoWindow(); - Logger.d( TAG, "打开info window" ); + try { + MarkerOnlineCar onlineCar = ( MarkerOnlineCar ) ( ( MarkerShowEntity ) mogoMarker.getObject() ).getBindObj(); + CallChatApi.getInstance().showUserWindow( mContext, onlineCar ); + } catch ( Exception e ) { + Logger.e( TAG, e, "openMarker" ); + } } } else { Object object = mogoMarker.getObject(); @@ -220,7 +225,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } // 在线车辆点击使用infoWindow if ( TextUtils.equals( mogoMarker.getOwner(), ModuleNames.CARD_TYPE_USER_DATA ) ) { - mogoMarker.hideInfoWindow(); +// mogoMarker.hideInfoWindow(); Logger.d( TAG, "关闭info window" ); } else { Object object = mogoMarker.getObject(); @@ -792,7 +797,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, } Logger.d( TAG, "内部 - 请求开始" ); - mRefreshModel.queryOnLineCarWithRoute( latLng, onlyFocus, onlySameCity, radius, limit,false, new RefreshCallback() { + mRefreshModel.queryOnLineCarWithRoute( latLng, onlyFocus, onlySameCity, radius, limit, false, new RefreshCallback() { @Override public void onSuccess( Object o ) { MarkerResponse data = ( MarkerResponse ) o; @@ -977,7 +982,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, return; } if ( mLastDataResult != null ) { - runOnTargetThread( ()->{ + runOnTargetThread( () -> { MarkerServiceHandler.getMarkerManager().removeMarkers( ModuleNames.CARD_TYPE_ROAD_CONDITION ); drawMarkerByCurrentType( mLastDataResult ); mLastCheckMarker = null; diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java index 356ec9bfac..fa93ca300a 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/network/RefreshModel.java @@ -198,6 +198,14 @@ public class RefreshModel { } } + @Override + public void onError( Throwable e ) { + super.onError( e ); + if ( callback != null ) { + callback.onFail(); + } + } + @Override public void onError( String message, int code ) { super.onError( message, code ); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelAdapter.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelAdapter.java index 9a6c35a81f..55da33b57a 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelAdapter.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelAdapter.java @@ -12,6 +12,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.bumptech.glide.request.RequestOptions; import com.mogo.map.location.MogoLocation; import com.mogo.module.common.MogoApisHandler; +import com.mogo.module.common.api.CallChatApi; import com.mogo.module.common.entity.MarkerLocation; import com.mogo.module.common.entity.MarkerOnlineCar; import com.mogo.module.common.glide.SkinAbleBitmapTarget; @@ -21,6 +22,7 @@ import com.mogo.module.service.Utils; import com.mogo.utils.ResourcesHelper; import com.mogo.utils.WindowUtils; import com.mogo.utils.glide.GlideApp; +import com.mogo.utils.logger.Logger; import java.util.List; @@ -32,6 +34,8 @@ import java.util.List; */ class OnlineCarPanelAdapter extends RecyclerView.Adapter< OnlineCarPanelAdapter.VH > { + private static final String TAG = "OnlineCarPanelAdapter"; + private List< MarkerOnlineCar > mDatums; private double mToLon; private double mToLat; @@ -89,6 +93,11 @@ class OnlineCarPanelAdapter extends RecyclerView.Adapter< OnlineCarPanelAdapter. distance.setText( content ); detail.setOnClickListener( view -> { MogoApisHandler.getInstance().getApis().getAnalyticsApi().track( "Mogoer_List_click", null ); + try { + CallChatApi.getInstance().showUserWindow( itemView.getContext(), car ); + } catch ( Exception e ) { + Logger.e( TAG, e, "detail.OnClick" ); + } } ); } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelFragment.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelFragment.java index 9a35ffedcd..0975324f90 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelFragment.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarPanelFragment.java @@ -113,6 +113,7 @@ public class OnlineCarPanelFragment extends MvpFragment< IOnlineCarPanelView, On mRefreshPanel.setVisibility( View.VISIBLE ); mLoading.setVisibility( View.GONE ); + AIAssist.getInstance( getContext() ).speakTTSVoice( "未找到车友" ); if ( strategy == null ) { m20KMStrategy.setVisibility( View.GONE ); m40KMStrategy.setVisibility( View.GONE ); diff --git a/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_services_online_car_panel_background.9.png b/modules/mogo-module-service/src/main/res/drawable-xhdpi/module_services_online_car_panel_background.9.png index d4a88036840921c27ec60a53b6d3e62f32a3aa22..b3149721b16da7e44776ada7bf88cb0baa4d2531 100644 GIT binary patch literal 1154 zcmeAS@N?(olHy`uVBq!ia0vp^eIU%i1|*;VHQ-=iVDa>HaSW-r^>((c-)jev)<_1Y zlsWUyO=fX%bUrFH!Mr)b;hTV_^@FP~gO{J;yOhd&LA`3}{g~q({8~BZZ_Jzh-eY;& zoZp%6{=~$`es#87m(n8O#Gwc$YOiN}smMKJBCS%E==00Ypv>Ik(&4om<(VhT&HW#@ zqTiKGkNf136U$Cy%<@c=oxXNi10vjf)yp&$MGJdUh)}`!%9?x)*RqI##?|P+b z@zl$CVpUGRw*R|af9LA1r$?Tqo}XN8X}eLdFZ=MDhg+ta$7H_Cw6}WOytj3Je}Fz*z#w90ool z8S*$V8xjsMLhVX8pcsS1VU)qf`QX}6tdg+Rj*a>GwHy3Q*D_b;?hsY?%T5@ zvQ+Nq(rpJ1Xx_d$ZNb&8D|20WvKl{o-FS7Nl9%sXN|E`p*q2$sL6;vqnBvc$%@qE) zl$YgI<7Ac3=}gxXSEgn^n6mwZbW{JoZ56?r|9m|t*`MzJu75sWjmrftR_bqk%_DOWlmx%j1@&Zv&GKIvd3cjK`|~}Y&cxk# ze`MqOiBXjrJLL<`xqtc6d+5vG7jySjYHhbKI8`}Ul=aoyJ!elPul(Ee`Ti;A+phwv zKkc~G!u&k@{Nc8p^3sX^)w9YD{Itp~40-?U#M_5ouGm?`f46z6sw7a(@+^5ccdJy*iyAZ eW_79RUuL)DeNG%PYt8}776wmOKbLh*2~7ZT;}u%~ literal 1131 zcmeAS@N?(olHy`uVBq!ia0vp^eIU%i1|*;VHQ-=iU@`J^aSW-r^>((c-)jev)<_1Y zlsWVBj&XK0wRNc~2q^%wWxp64A2spur3;w)p{nw8ziPSF)PJUB;en+YP#@o@4?W&Kx+q+-y z%5NLy`K>9F(kG`+Nt<-j^^lR&UEW%b_4ihDw=XsdsVuW|J{e?d;AvF(&Ay6J$JF_W z@zk8FjK(s3^Zyj>UUFjL+i8%?S@qJeO=)vn|$_ zd7Z_#<_TBNz24IvUHBx~(&<`N_Z~g&b06QY_1dSUk}`Mgsl4XK;F@XPC%AOC@@{`r zAQE1y!q3UasBQKj;lRO$W=3{qJ_L&qne%`FNro&A+y*uom|bi#hggv~2Nxqr`kk?8~g+pvw;)i1_n!Glf5PWo22_I9X+KI@9&Um8r=OM7E#sZtDNHts-*c zpQ{HY`HuVl>zC)SkCI=~*4tdXOQ6J`$49TvRv zHS_Wr*JlPVICt*$nQWcXy$}9u|8!xS)s=Z!F`0)NKkt2>c=%3lZ-H<1th56^?Q#o4 z^1q*mJ^XTIWx>Apm0jLWQQ?c#)y=Ix&s!E-P-o}=VcXRsw=YYc=eW!K{QBx&O_lSi zo@c6D?plARu;FvEgpV4hfAR{45LU61=h7n*Ike*n>i7>lkM~!}%j)@i!v2@{n{7Yt z{Ft=x)^o`x@#lAy&hwoYIBTkmjyo(PgR}IMmmSi@1%H{NEhgm!X=Y6W79tFuu6{1- HoD!MLag<&ggO&CV2AWFsPGT4@Tz~$Jn23l93 zQd`D6COQruk+$H z%ZqvC&&pp%>hRm=p_Wins4di(FtRk4wSNEZHp>PtS#R)u#D8HobEvVZHPqZWfYE4l zRXrKc)el>oeDLdDgxW&}od8%q^?5Nn!{Apv`^Vd`AAs!U{weDfZ^HjMmZ~hWhsT2e zSU&l}-w0ukH=&F^^Bp_ekE6(*5C@=cxPso|kWniD>ZZF8^6q~}5l2yT0L%aR!foa% ztE2$J?e8ouSv(0ZYYlJAWy7<7I1y}YFBnb|0w|_Jjc&%%rT}(Qs6VU;Ho_sZWB}@~ znu3ks&0SbSC0ssI5000930CxbuxSDu>7}#_w1DlL2 z>v&|Dp?&QR?K8Hr6#xmxRvO$I>C}T;jV_LK>e0o9cSpIM;oWsJHoks$^KEB*eUJqX zJKgRAhu@>f3X=_u_W&zQejBnSK5OA0Y>CfGQ+6D6vBv6ePq4_XqeX6OZ-Z5a-2o@~ pdt(l@M delta 494 zcmVbb@=VGu$Hiwh_{v0Q6dbLYX2Mx(Rx z$+$0n*!f3r>{&3JBm_`Qg&KVrPwN8MNTK?$CfEpv%#s19zG@0K&a;#N z-UJ%|DLW+qfi^IcVF5&c000021pojB000I60PX;Qx|(>uDr`EG!X}kv9aokq?Q6HR zPif%<_#gR^3U97x2%I%bQSBJ6s`pt)LJN5NJ1~_bVy8|4)w<04< zRvf&IMwm1k6m5vla`+90_%xr?ZH(2=wzI|Xp6y1Z8|1e2Ah$Fvv+9j9>=?lB8?#}a kL_|bHL`1vO;>estA9}^)kbYJx;s5{u07*qoM6N<$f=yubLjV8( diff --git a/modules/mogo-module-service/src/main/res/drawable/module_services_panel_item_detail_bkg.xml b/modules/mogo-module-service/src/main/res/drawable/module_services_panel_item_detail_bkg.xml index 536a7a8e09..9a503568e3 100644 --- a/modules/mogo-module-service/src/main/res/drawable/module_services_panel_item_detail_bkg.xml +++ b/modules/mogo-module-service/src/main/res/drawable/module_services_panel_item_detail_bkg.xml @@ -2,7 +2,7 @@ - + diff --git a/modules/mogo-module-service/src/main/res/layout/module_services_fragment_online_car_panel.xml b/modules/mogo-module-service/src/main/res/layout/module_services_fragment_online_car_panel.xml index 9fa4b9aafb..5fd663bd11 100644 --- a/modules/mogo-module-service/src/main/res/layout/module_services_fragment_online_car_panel.xml +++ b/modules/mogo-module-service/src/main/res/layout/module_services_fragment_online_car_panel.xml @@ -35,10 +35,10 @@ android:layout_height="43dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" - android:indeterminateTint="#256BFF" - app:layout_constraintEnd_toEndOf="parent" android:layout_gravity="center" + android:indeterminateTint="#256BFF" android:visibility="gone" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -57,6 +57,7 @@ android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" + tools:visibility="visible" android:visibility="gone"> + android:textColor="@color/module_services_error_textColor" + android:textSize="@dimen/module_services_empty_tip_textSize" /> \ No newline at end of file diff --git a/modules/mogo-module-service/src/main/res/values/colors.xml b/modules/mogo-module-service/src/main/res/values/colors.xml index f770bfe69f..aa88d40e7f 100644 --- a/modules/mogo-module-service/src/main/res/values/colors.xml +++ b/modules/mogo-module-service/src/main/res/values/colors.xml @@ -8,4 +8,5 @@ #FFFFFF #3081A4DC #B2FFFFFF + #FFFFFF \ No newline at end of file diff --git a/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/MogoWidgetManger.java b/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/MogoWidgetManger.java index ab99a79fd5..0032be1ef0 100644 --- a/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/MogoWidgetManger.java +++ b/modules/mogo-module-widgets/src/main/java/com/mogo/module/widgets/MogoWidgetManger.java @@ -83,7 +83,6 @@ class MogoWidgetManger implements IMogoNaviListener2, IMogoIntentListener, IMogo @Override public void onStopNavi() { - SpStorage.setNavigationTarget( "" ); AutoNaviIntentHandler.getInstance().closeEntrance(); } diff --git a/skin/mogo-skin-light/src/main/module-commons-res/drawable-xhdpi/module_common_default_user_head_light.png b/skin/mogo-skin-light/src/main/module-commons-res/drawable-xhdpi/module_common_default_user_head_light.png new file mode 100644 index 0000000000000000000000000000000000000000..eb26174ed693e048f65085adb2e31c33f48076c0 GIT binary patch literal 9030 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 literal 0 HcmV?d00001 diff --git a/skin/mogo-skin-light/src/main/module-commons-res/drawable/module_common_default_user_head_light.png b/skin/mogo-skin-light/src/main/module-commons-res/drawable/module_common_default_user_head_light.png new file mode 100644 index 0000000000000000000000000000000000000000..21805b2ff7e18f6f112a95bf051f620809f0aada GIT binary patch literal 3292 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 literal 0 HcmV?d00001 diff --git a/skin/mogo-skin-light/src/main/module-services-res/drawable-xhdpi/module_services_close_light.png b/skin/mogo-skin-light/src/main/module-services-res/drawable-xhdpi/module_services_close_light.png new file mode 100755 index 0000000000000000000000000000000000000000..cbf14c556646e009b3c83522c9f93ef7580e0857 GIT binary patch literal 1586 zcmaJ=3ow*x7~Un9C~|k)@3|~uTXHWEOV*OI(b-n!xFo7|4doKerZx^G>NqKvM1>^e zva2Pv9BYkBYgy}FIfyo^)^ffxJG0ZwnK|#w|NhVOKF|BiKl9Fi9gXtXEu|&}fk1X6 zJ>C4l8~yJiDGGWEP2>Rt0_CBP2Dk&dy}g~5mIiutbv21Z>g($p8X96UnE=q~bO0tN zCkF=y84Sk!{JelpPfr6dJ3Bi*KF(sXrlzI<1;dGniP6zfHk%D5Kmrt~Kmrqh1ys<1 zDyaXVKmvrlFy!t*5VVXk=mr zGqOi8_(ef=hpSa7HC-o5)JrDavs zHP377>R&arbdWo{-uArfqYVs?FvghU6I0VO3rou@Usl(?a=v|A=W;i`^ENm6{H?8M zxz8{NL^K5Hb|?TtdBzA2RPfs)&Q`xC2Njbp<)9VwSSd;YLFFD#Y;@u(+%v^7Iq95A zJjG5m@WzGzqZwS7f*2s)afcE*J;(nSf8VRwCeqk z=gjAyh14ut!|1bCiyxy_4GkdXf101X5q5q{+urE+yd9~^8kRvhwk)V~c~+iYslpS- z2%~cGs;qKZDd$$^x3&Owv%b=kW3WVXkFT4`myCW(wJUbDk~KEKFi zTpeXh$MXr7I`;L^LQ(sQQY*L-T|I7pQ9_rT*70}azN{YTUa=^@MZLe>?rFF#zm`dL zz%40aSn~Nt7N8{<6hXus`#gxYpuVc8S#XHJR6Q{sUMt(sOw7~`3{RIbi(x#qEojcX zQe$^I;}RymCxNfljW|c}Px~wuGF%|W(}US*X((Y_7m8Xhue{| zqD7XBiOTgKF*9&OCDqV2nu+0>vx9mk;g?7gdBHcCC7AU8`na) zlv^6%s}lJwy3kY&7Jiv%L*O{KG#s>SH1<^pW9kkNzJwk7nIQwdMLaQpH!L|Kt zG2hucY-A@@>19>TudCSO`Gwm&<3hX7mF}xctO)-DKQ23)UioTwvqAsUZ8(Z_ zrFSASxpIs6lILv@9c=r$Ak4)l@!^U??{rX0e=f|9Hj=cl7!q**De z$+*BNYdfvew!XZjcRw?Y(~(jvH+|I2WB!whs@mqP*0A@6EMoT91HCgdAHm-bLAs;d Jp1a~Q{{g0lkD>qo literal 0 HcmV?d00001 diff --git a/skin/mogo-skin-light/src/main/module-services-res/drawable-xhdpi/module_services_online_car_panel_background_light.9.png b/skin/mogo-skin-light/src/main/module-services-res/drawable-xhdpi/module_services_online_car_panel_background_light.9.png new file mode 100644 index 0000000000000000000000000000000000000000..51a1e27744ce5ce46856fbbceb73b108dbe132b4 GIT binary patch literal 4686 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 K(`UwH`u_nnm%88p literal 0 HcmV?d00001 diff --git a/skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_close_light.png b/skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_close_light.png new file mode 100755 index 0000000000000000000000000000000000000000..d25aa13032a3b8caa2dfdc9e22b3fd07ebe0633d GIT binary patch literal 444 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 Hu0mjfL6>Rh literal 0 HcmV?d00001 diff --git a/skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_panel_item_bkg_light.xml b/skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_panel_item_bkg_light.xml new file mode 100644 index 0000000000..d126dfc22a --- /dev/null +++ b/skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_panel_item_bkg_light.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_panel_item_detail_bkg_light.xml b/skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_panel_item_detail_bkg_light.xml new file mode 100644 index 0000000000..9a503568e3 --- /dev/null +++ b/skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_panel_item_detail_bkg_light.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_panel_strategy_button_bkg_light.xml b/skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_panel_strategy_button_bkg_light.xml new file mode 100644 index 0000000000..743e40ec7f --- /dev/null +++ b/skin/mogo-skin-light/src/main/module-services-res/drawable/module_services_panel_strategy_button_bkg_light.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/skin/mogo-skin-light/src/main/module-services-res/values/colors.xml b/skin/mogo-skin-light/src/main/module-services-res/values/colors.xml index 823423c2f2..4d908261d8 100644 --- a/skin/mogo-skin-light/src/main/module-services-res/values/colors.xml +++ b/skin/mogo-skin-light/src/main/module-services-res/values/colors.xml @@ -1,4 +1,12 @@ #333333 + #FF333333 + #FF333333 + #FF333333 + #000000 + + #333333 + #333333 + #666666