Always show WarningScene and LoginScene if necessary

This commit is contained in:
seven332 committed 2016-03-06 20:10:25 +08:00
1 parent 1905fa526e
commit f213254e2b
6 files changed
+141 -53

No files matched your search

@@ -97,19 +97,34 @@ public final class MainActivity extends StageActivity
@Override
protected Announcer getLaunchAnnouncer() {
if (Settings.getShowWarning()) {
//setDrawerLayoutEnable(false);
return new Announcer(WarningScene.class);
} else if (!EhUtils.hasSignedIn(this)) {
//setDrawerLayoutEnable(false);
return new Announcer(LoginScene.class);
} else {
//setDrawerLayoutEnable(true);
Bundle args = new Bundle();
args.putString(GalleryListScene.KEY_ACTION, GalleryListScene.ACTION_HOMEPAGE);
return new Announcer(GalleryListScene.class).setArgs(args);
}
}
// Sometimes scene can't show directly
private Announcer processAnnouncer(Announcer announcer) {
if (0 == getSceneCount()) {
if (Settings.getShowWarning()) {
Bundle newArgs = new Bundle();
newArgs.putString(WarningScene.KEY_TARGET_SCENE, announcer.getClazz().getName());
newArgs.putBundle(WarningScene.KEY_TARGET_ARGS, announcer.getArgs());
return new Announcer(WarningScene.class).setArgs(newArgs);
} else if (!EhUtils.hasSignedIn(this)) {
Bundle newArgs = new Bundle();
newArgs.putString(LoginScene.KEY_TARGET_SCENE, announcer.getClazz().getName());
newArgs.putBundle(LoginScene.KEY_TARGET_ARGS, announcer.getArgs());
return new Announcer(LoginScene.class).setArgs(newArgs);
}
}
return announcer;
}
private boolean handleIntent(Intent intent) {
if (intent == null) {
return false;
@@ -117,7 +132,11 @@ public final class MainActivity extends StageActivity
String action = intent.getAction();
if (Intent.ACTION_VIEW.equals(action)) {
return EhUrlOpener.openUrl(this, intent.getData().toString());
Announcer announcer = EhUrlOpener.parseUrl(intent.getData().toString());
if (announcer != null) {
startScene(processAnnouncer(announcer));
return true;
}
}
return false;
@@ -138,8 +157,7 @@ public final class MainActivity extends StageActivity
@Nullable
@Override
protected Announcer onStartSceneFromIntent(@NonNull Class<?> clazz, @Nullable Bundle args) {
// TODO start login scene or warning scene
return super.onStartSceneFromIntent(clazz, args);
return processAnnouncer(new Announcer(clazz).setArgs(args));
}
@Override