This commit is contained in:
wangcongtao
2020-01-14 17:44:39 +08:00
parent 147bc5dc7d
commit 6acdfa3772
12 changed files with 93 additions and 18 deletions

View File

@@ -30,6 +30,7 @@ import com.mogo.module.main.windowview.WindowViewHandler;
import com.mogo.module.map.VoiceConstants;
import com.mogo.module.service.ServiceConst;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.service.map.IMogoMapService;
import com.mogo.service.module.IMogoModuleProvider;
@@ -52,6 +53,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
private IMogoMapService mMogoMapService;
private IMogoMapUIController mMogoMapUIController;
private MogoModulesHandler mMogoModuleHandler;
private IMogoCardManager mMogoCardManager;
private OrientedViewPager mCardsContainer;
private CardModulesAdapter mCardModulesAdapter;
@@ -171,6 +173,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
mLocationClient = mMogoMapService.getSingletonLocationClient( getApplicationContext() );
mLocationClient.addLocationListener( this );
mLocationClient.start();
mMogoCardManager = ( IMogoCardManager ) ARouter.getInstance().build( MogoServicePaths.PATH_CARD_MANAGER ).navigation( this );
}
private void loadModules() {
@@ -212,6 +216,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
int position = mCardModulesAdapter.getProviderPosition( cardType );
if ( position != -1 ) {
mCardsContainer.setCurrentItem( position, Math.abs( mCurrentPosition - position ) == 1 );
mMogoCardManager.invoke( position, mMogoModuleHandler.getCurrentModuleName() );
} else {
Logger.e( TAG, "Can't find type of %s's position", cardType );
}

View File

@@ -24,14 +24,11 @@ public class MainPresenter extends Presenter< MainView > {
@Override
public void onCreate( @NonNull LifecycleOwner owner ) {
super.onCreate( owner );
CardSwitchLiveData.getInstance().observeForever( new Observer< String >() {
@Override
public void onChanged( String s ) {
if ( TextUtils.isEmpty( s ) ) {
return;
}
mView.switch2( s );
CardSwitchLiveData.getInstance().observeForever( to -> {
if ( TextUtils.isEmpty( to ) ) {
return;
}
mView.switch2( to );
} );
}
}

View File

@@ -5,8 +5,13 @@ import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.module.main.livedata.CardSwitchLiveData;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.cardmanager.IMogoCardChangedListener;
import com.mogo.service.cardmanager.IMogoCardManager;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* @author congtaowang
* @since 2020-01-06
@@ -16,11 +21,36 @@ import com.mogo.service.cardmanager.IMogoCardManager;
@Route( path = MogoServicePaths.PATH_CARD_MANAGER )
public class MogoCardManager implements IMogoCardManager {
private static final Map< String, IMogoCardChangedListener > sListeners = new HashMap<>();
@Override
public void switch2( String cardType ) {
CardSwitchLiveData.getInstance().postValue( cardType );
}
@Override
public void registerCardChangedListener( String tag, IMogoCardChangedListener listener ) {
sListeners.put( tag, listener );
}
@Override
public void unregisterCardChangedListener( String tag ) {
sListeners.remove( tag );
}
@Override
public void invoke( int position, String moduleName ) {
if ( sListeners != null && !sListeners.isEmpty() ) {
Iterator< IMogoCardChangedListener > iterator = sListeners.values().iterator();
while ( iterator.hasNext() ) {
IMogoCardChangedListener listener = iterator.next();
if ( listener != null ) {
listener.onSwitched( position, moduleName );
}
}
}
}
@Override
public void init( Context context ) {

View File

@@ -77,7 +77,15 @@ public interface MogoModulesHandler extends IMogoMapListener,
/**
* 卡片接收到Marker传入数据
*
* @param marker marker
*/
void onMarkerReceive(IMogoMarker marker);
void onMarkerReceive( IMogoMarker marker );
/**
* 当前卡片名称
*
* @return
*/
String getCurrentModuleName();
}

View File

@@ -100,6 +100,9 @@ public class MogoModulesManager implements MogoModulesHandler,
for ( MogoModule module : modules ) {
IMogoModuleProvider provider = mModuleProviders.get( module );
if ( provider.getType() == ModuleType.TYPE_CARD_FRAGMENT ) {
if ( mEnableModuleName == null ) {
mEnableModuleName = provider.getModuleName();
}
providers.add( provider );
}
}
@@ -374,4 +377,9 @@ public class MogoModulesManager implements MogoModulesHandler,
listener.onMarkerClicked( marker );
}
}
@Override
public String getCurrentModuleName() {
return mEnableModuleName;
}
}