opt
This commit is contained in:
@@ -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 );
|
||||
}
|
||||
|
||||
@@ -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 );
|
||||
} );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 ) {
|
||||
|
||||
|
||||
@@ -77,7 +77,15 @@ public interface MogoModulesHandler extends IMogoMapListener,
|
||||
|
||||
/**
|
||||
* 卡片接收到Marker传入数据
|
||||
*
|
||||
* @param marker marker
|
||||
*/
|
||||
void onMarkerReceive(IMogoMarker marker);
|
||||
void onMarkerReceive( IMogoMarker marker );
|
||||
|
||||
/**
|
||||
* 当前卡片名称
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
String getCurrentModuleName();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user