mirror of
https://github.com/lubosz/overte.git
synced 2025-04-07 04:42:49 +02:00
Fix NullPointerException and bug in login menu navigation
This commit is contained in:
parent
ccd0d8299f
commit
1d059d9650
3 changed files with 70 additions and 52 deletions
|
@ -76,7 +76,7 @@ public class InterfaceActivity extends QtActivity implements WebViewFragment.OnW
|
|||
private static boolean inVrMode;
|
||||
|
||||
private boolean nativeEnterBackgroundCallEnqueued = false;
|
||||
private SlidingDrawer webSlidingDrawer;
|
||||
private SlidingDrawer mWebSlidingDrawer;
|
||||
// private GvrApi gvrApi;
|
||||
// Opaque native pointer to the Application C++ object.
|
||||
// This object is owned by the InterfaceActivity instance and passed to the native methods.
|
||||
|
@ -116,17 +116,6 @@ public class InterfaceActivity extends QtActivity implements WebViewFragment.OnW
|
|||
//nativeGvrApi =
|
||||
nativeOnCreate(this, assetManager /*, gvrApi.getNativeGvrContext()*/);
|
||||
|
||||
Point size = new Point();
|
||||
getWindowManager().getDefaultDisplay().getRealSize(size);
|
||||
|
||||
try {
|
||||
PackageInfo pInfo = this.getPackageManager().getPackageInfo(getPackageName(), 0);
|
||||
String version = pInfo.versionName;
|
||||
// setAppVersion(version);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
Log.e("GVR", "Error getting application version", e);
|
||||
}
|
||||
|
||||
final View rootView = getWindow().getDecorView().findViewById(android.R.id.content);
|
||||
|
||||
// This is a workaround to hide the menu bar when the virtual keyboard is shown from Qt
|
||||
|
@ -137,32 +126,6 @@ public class InterfaceActivity extends QtActivity implements WebViewFragment.OnW
|
|||
});
|
||||
startActivity(new Intent(this, SplashActivity.class));
|
||||
mVibrator = (Vibrator) this.getSystemService(VIBRATOR_SERVICE);
|
||||
|
||||
FrameLayout mainLayout = findViewById(android.R.id.content);
|
||||
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
webSlidingDrawer = (SlidingDrawer) inflater.inflate(R.layout.web_drawer, mainLayout, false);
|
||||
QtLayout qtLayout = (QtLayout) mainLayout.getChildAt(0);
|
||||
if (qtLayout == null) {
|
||||
Log.d("[QTLAYOUT-NULL]" , "Mainlayout children: " + mainLayout.getChildCount());
|
||||
for (int i=0; i< mainLayout.getChildCount(); i++) {
|
||||
Log.d("[QTLAYOUT-NULL]" , "Child " + i + ": " + mainLayout.getChildAt(i));
|
||||
}
|
||||
}
|
||||
QtLayout.LayoutParams layoutParams = new QtLayout.LayoutParams(webSlidingDrawer.getLayoutParams());
|
||||
webSlidingDrawer.setOnDrawerCloseListener(() -> {
|
||||
WebViewFragment webViewFragment = (WebViewFragment) getFragmentManager().findFragmentByTag("webViewFragment");
|
||||
webViewFragment.close();
|
||||
});
|
||||
int widthPx = Math.max(size.x, size.y);
|
||||
int heightPx = Math.min(size.x, size.y);
|
||||
|
||||
layoutParams.x = (int) (widthPx - WEB_DRAWER_RIGHT_MARGIN * getResources().getDisplayMetrics().xdpi / NORMAL_DPI);
|
||||
layoutParams.y = (int) (heightPx - WEB_DRAWER_BOTTOM_MARGIN * getResources().getDisplayMetrics().ydpi / NORMAL_DPI);
|
||||
|
||||
layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_RTL);
|
||||
qtLayout.addView(webSlidingDrawer, layoutParams);
|
||||
webSlidingDrawer.setVisibility(View.GONE);
|
||||
|
||||
headsetStateReceiver = new HeadsetStateReceiver();
|
||||
}
|
||||
|
||||
|
@ -295,14 +258,47 @@ public class InterfaceActivity extends QtActivity implements WebViewFragment.OnW
|
|||
protected void onNewIntent(Intent intent) {
|
||||
super.onNewIntent(intent);
|
||||
if (intent.hasExtra(DOMAIN_URL)) {
|
||||
webSlidingDrawer.setVisibility(View.GONE);
|
||||
hideWebDrawer();
|
||||
nativeGotoUrl(intent.getStringExtra(DOMAIN_URL));
|
||||
} else if (intent.hasExtra(EXTRA_GOTO_USERNAME)) {
|
||||
webSlidingDrawer.setVisibility(View.GONE);
|
||||
hideWebDrawer();
|
||||
nativeGoToUser(intent.getStringExtra(EXTRA_GOTO_USERNAME));
|
||||
}
|
||||
}
|
||||
|
||||
private void hideWebDrawer() {
|
||||
if (mWebSlidingDrawer != null) {
|
||||
mWebSlidingDrawer.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
public void showWebDrawer() {
|
||||
if (mWebSlidingDrawer == null) {
|
||||
FrameLayout mainLayout = findViewById(android.R.id.content);
|
||||
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
QtLayout qtLayout = (QtLayout) mainLayout.getChildAt(0);
|
||||
mWebSlidingDrawer = (SlidingDrawer) inflater.inflate(R.layout.web_drawer, mainLayout, false);
|
||||
|
||||
QtLayout.LayoutParams layoutParams = new QtLayout.LayoutParams(mWebSlidingDrawer.getLayoutParams());
|
||||
mWebSlidingDrawer.setOnDrawerCloseListener(() -> {
|
||||
WebViewFragment webViewFragment = (WebViewFragment) getFragmentManager().findFragmentByTag("webViewFragment");
|
||||
webViewFragment.close();
|
||||
});
|
||||
|
||||
Point size = new Point();
|
||||
getWindowManager().getDefaultDisplay().getRealSize(size);
|
||||
int widthPx = Math.max(size.x, size.y);
|
||||
int heightPx = Math.min(size.x, size.y);
|
||||
|
||||
layoutParams.x = (int) (widthPx - WEB_DRAWER_RIGHT_MARGIN * getResources().getDisplayMetrics().xdpi / NORMAL_DPI);
|
||||
layoutParams.y = (int) (heightPx - WEB_DRAWER_BOTTOM_MARGIN * getResources().getDisplayMetrics().ydpi / NORMAL_DPI);
|
||||
|
||||
layoutParams.resolveLayoutDirection(View.LAYOUT_DIRECTION_RTL);
|
||||
qtLayout.addView(mWebSlidingDrawer, layoutParams);
|
||||
mWebSlidingDrawer.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
public void openAndroidActivity(String activityName, boolean backToScene) {
|
||||
openAndroidActivity(activityName, backToScene, null);
|
||||
}
|
||||
|
@ -321,6 +317,7 @@ public class InterfaceActivity extends QtActivity implements WebViewFragment.OnW
|
|||
nativeBeforeEnterBackground();
|
||||
Intent loginIntent = new Intent(this, LoginMenuActivity.class);
|
||||
loginIntent.putExtra(LoginMenuActivity.EXTRA_BACK_TO_SCENE, backToScene);
|
||||
loginIntent.putExtra(LoginMenuActivity.EXTRA_BACK_ON_SKIP, true);
|
||||
if (args != null && args.containsKey(DOMAIN_URL)) {
|
||||
loginIntent.putExtra(LoginMenuActivity.EXTRA_DOMAIN_URL, (String) args.get(DOMAIN_URL));
|
||||
}
|
||||
|
@ -328,19 +325,19 @@ public class InterfaceActivity extends QtActivity implements WebViewFragment.OnW
|
|||
break;
|
||||
case "WebView":
|
||||
runOnUiThread(() -> {
|
||||
webSlidingDrawer.setVisibility(View.VISIBLE);
|
||||
if (!webSlidingDrawer.isOpened()) {
|
||||
webSlidingDrawer.animateOpen();
|
||||
showWebDrawer();
|
||||
if (!mWebSlidingDrawer.isOpened()) {
|
||||
mWebSlidingDrawer.animateOpen();
|
||||
}
|
||||
if (args != null && args.containsKey(WebViewActivity.WEB_VIEW_ACTIVITY_EXTRA_URL)) {
|
||||
WebViewFragment webViewFragment = (WebViewFragment) getFragmentManager().findFragmentByTag("webViewFragment");
|
||||
webViewFragment.loadUrl((String) args.get(WebViewActivity.WEB_VIEW_ACTIVITY_EXTRA_URL), true);
|
||||
webViewFragment.setToolbarVisible(true);
|
||||
webViewFragment.setCloseAction(() -> {
|
||||
if (webSlidingDrawer.isOpened()) {
|
||||
webSlidingDrawer.animateClose();
|
||||
if (mWebSlidingDrawer.isOpened()) {
|
||||
mWebSlidingDrawer.animateClose();
|
||||
}
|
||||
webSlidingDrawer.setVisibility(View.GONE);
|
||||
hideWebDrawer();
|
||||
});
|
||||
}
|
||||
});
|
||||
|
|
|
@ -18,12 +18,26 @@ public class LoginMenuActivity extends AppCompatActivity
|
|||
LoginFragment.OnLoginInteractionListener,
|
||||
SignupFragment.OnSignupInteractionListener {
|
||||
|
||||
/**
|
||||
* Set EXTRA_FINISH_ON_BACK to finish the app when back button is pressed
|
||||
*/
|
||||
public static final String EXTRA_FINISH_ON_BACK = "finishOnBack";
|
||||
|
||||
/**
|
||||
* Set EXTRA_BACK_TO_SCENE to back to the scene
|
||||
*/
|
||||
public static final String EXTRA_BACK_TO_SCENE = "backToScene";
|
||||
|
||||
/**
|
||||
* Set EXTRA_BACK_ON_SKIP to finish this activity when skip button is pressed
|
||||
*/
|
||||
public static final String EXTRA_BACK_ON_SKIP = "backOnSkip";
|
||||
|
||||
public static final String EXTRA_DOMAIN_URL = "url";
|
||||
|
||||
private boolean finishOnBack;
|
||||
private boolean backToScene;
|
||||
private boolean backOnSkip;
|
||||
private String domainUrlToBack;
|
||||
|
||||
|
||||
|
@ -35,10 +49,12 @@ public class LoginMenuActivity extends AppCompatActivity
|
|||
finishOnBack = getIntent().getBooleanExtra(EXTRA_FINISH_ON_BACK, false);
|
||||
backToScene = getIntent().getBooleanExtra(EXTRA_BACK_TO_SCENE, false);
|
||||
domainUrlToBack = getIntent().getStringExtra(EXTRA_DOMAIN_URL);
|
||||
backOnSkip = getIntent().getBooleanExtra(EXTRA_BACK_ON_SKIP, false);
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
finishOnBack = savedInstanceState.getBoolean(EXTRA_FINISH_ON_BACK, false);
|
||||
backToScene = savedInstanceState.getBoolean(EXTRA_BACK_TO_SCENE, false);
|
||||
backOnSkip = savedInstanceState.getBoolean(EXTRA_BACK_ON_SKIP, false);
|
||||
domainUrlToBack = savedInstanceState.getString(EXTRA_DOMAIN_URL);
|
||||
}
|
||||
|
||||
|
@ -58,6 +74,7 @@ public class LoginMenuActivity extends AppCompatActivity
|
|||
super.onRestoreInstanceState(savedInstanceState);
|
||||
finishOnBack = savedInstanceState.getBoolean(EXTRA_FINISH_ON_BACK, false);
|
||||
backToScene = savedInstanceState.getBoolean(EXTRA_BACK_TO_SCENE, false);
|
||||
backOnSkip = savedInstanceState.getBoolean(EXTRA_BACK_ON_SKIP, false);
|
||||
domainUrlToBack = savedInstanceState.getString(EXTRA_DOMAIN_URL);
|
||||
}
|
||||
|
||||
|
@ -97,7 +114,11 @@ public class LoginMenuActivity extends AppCompatActivity
|
|||
|
||||
@Override
|
||||
public void onSkipLoginClicked() {
|
||||
loadMainActivity();
|
||||
if (backOnSkip) {
|
||||
onBackPressed();
|
||||
} else {
|
||||
loadMainActivity();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -176,10 +197,8 @@ public class LoginMenuActivity extends AppCompatActivity
|
|||
FragmentManager.BackStackEntry backEntry = fm.getBackStackEntryAt(index);
|
||||
String tag = backEntry.getName();
|
||||
Fragment topFragment = getFragmentManager().findFragmentByTag(tag);
|
||||
if (topFragment instanceof OnBackPressedListener &&
|
||||
((OnBackPressedListener) topFragment).doBack()) {
|
||||
|
||||
} else {
|
||||
if (!(topFragment instanceof OnBackPressedListener) ||
|
||||
!((OnBackPressedListener) topFragment).doBack()) {
|
||||
super.onBackPressed();
|
||||
}
|
||||
} else if (finishOnBack){
|
||||
|
|
|
@ -145,7 +145,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
|
|||
}
|
||||
|
||||
private void startLoginMenuActivity() {
|
||||
startActivity(new Intent(this, LoginMenuActivity.class));
|
||||
Intent intent = new Intent(this, LoginMenuActivity.class);
|
||||
intent.putExtra(LoginMenuActivity.EXTRA_BACK_ON_SKIP, true);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
private void loadPrivacyPolicyFragment() {
|
||||
|
|
Loading…
Reference in a new issue