mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 13:49:12 +02:00
Allow cancelling ongoing signup or login
This commit is contained in:
parent
11d82e0ad0
commit
3d677d8e5a
5 changed files with 87 additions and 16 deletions
|
@ -8,8 +8,8 @@ import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
import io.highfidelity.hifiinterface.fragment.LoginFragment;
|
import io.highfidelity.hifiinterface.fragment.LoginFragment;
|
||||||
|
import io.highfidelity.hifiinterface.fragment.OnBackPressedListener;
|
||||||
import io.highfidelity.hifiinterface.fragment.SignupFragment;
|
import io.highfidelity.hifiinterface.fragment.SignupFragment;
|
||||||
import io.highfidelity.hifiinterface.fragment.StartMenuFragment;
|
import io.highfidelity.hifiinterface.fragment.StartMenuFragment;
|
||||||
|
|
||||||
|
@ -105,8 +105,9 @@ public class LoginMenuActivity extends AppCompatActivity
|
||||||
FragmentManager fragmentManager = getFragmentManager();
|
FragmentManager fragmentManager = getFragmentManager();
|
||||||
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
||||||
Fragment fragment = SignupFragment.newInstance();
|
Fragment fragment = SignupFragment.newInstance();
|
||||||
fragmentTransaction.replace(R.id.content_frame, fragment);
|
String tag = getString(R.string.tagFragmentSignup);
|
||||||
fragmentTransaction.addToBackStack(fragment.toString());
|
fragmentTransaction.replace(R.id.content_frame, fragment, tag);
|
||||||
|
fragmentTransaction.addToBackStack(tag);
|
||||||
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
|
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
|
||||||
fragmentTransaction.commit();
|
fragmentTransaction.commit();
|
||||||
hideStatusBar();
|
hideStatusBar();
|
||||||
|
@ -116,8 +117,9 @@ public class LoginMenuActivity extends AppCompatActivity
|
||||||
FragmentManager fragmentManager = getFragmentManager();
|
FragmentManager fragmentManager = getFragmentManager();
|
||||||
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
|
||||||
Fragment fragment = LoginFragment.newInstance();
|
Fragment fragment = LoginFragment.newInstance();
|
||||||
fragmentTransaction.replace(R.id.content_frame, fragment);
|
String tag = getString(R.string.tagFragmentLogin);
|
||||||
fragmentTransaction.addToBackStack(fragment.toString());
|
fragmentTransaction.replace(R.id.content_frame, fragment, tag);
|
||||||
|
fragmentTransaction.addToBackStack(tag);
|
||||||
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
|
fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
|
||||||
fragmentTransaction.commit();
|
fragmentTransaction.commit();
|
||||||
hideStatusBar();
|
hideStatusBar();
|
||||||
|
@ -167,7 +169,15 @@ public class LoginMenuActivity extends AppCompatActivity
|
||||||
FragmentManager fm = getFragmentManager();
|
FragmentManager fm = getFragmentManager();
|
||||||
int index = fm.getBackStackEntryCount() - 1;
|
int index = fm.getBackStackEntryCount() - 1;
|
||||||
if (index > 0) {
|
if (index > 0) {
|
||||||
super.onBackPressed();
|
FragmentManager.BackStackEntry backEntry = fm.getBackStackEntryAt(index);
|
||||||
|
String tag = backEntry.getName();
|
||||||
|
Fragment topFragment = getFragmentManager().findFragmentByTag(tag);
|
||||||
|
if (topFragment instanceof OnBackPressedListener &&
|
||||||
|
((OnBackPressedListener) topFragment).doBack()) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
super.onBackPressed();
|
||||||
|
}
|
||||||
} else if (finishOnBack){
|
} else if (finishOnBack){
|
||||||
finishAffinity();
|
finishAffinity();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -148,11 +148,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
|
||||||
startActivity(new Intent(this, LoginMenuActivity.class));
|
startActivity(new Intent(this, LoginMenuActivity.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadSignupFragment() {
|
|
||||||
Fragment fragment = SignupFragment.newInstance();
|
|
||||||
loadFragment(fragment, getString(R.string.signup), getString(R.string.tagFragmentSignup), true, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void loadPrivacyPolicyFragment() {
|
private void loadPrivacyPolicyFragment() {
|
||||||
Fragment fragment = PolicyFragment.newInstance();
|
Fragment fragment = PolicyFragment.newInstance();
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,8 @@ import io.highfidelity.hifiinterface.R;
|
||||||
import static org.qtproject.qt5.android.QtActivityDelegate.ApplicationActive;
|
import static org.qtproject.qt5.android.QtActivityDelegate.ApplicationActive;
|
||||||
import static org.qtproject.qt5.android.QtActivityDelegate.ApplicationInactive;
|
import static org.qtproject.qt5.android.QtActivityDelegate.ApplicationInactive;
|
||||||
|
|
||||||
public class LoginFragment extends Fragment {
|
public class LoginFragment extends Fragment
|
||||||
|
implements OnBackPressedListener {
|
||||||
|
|
||||||
private EditText mUsername;
|
private EditText mUsername;
|
||||||
private EditText mPassword;
|
private EditText mPassword;
|
||||||
|
@ -31,6 +32,8 @@ public class LoginFragment extends Fragment {
|
||||||
private ViewGroup mLoginForm;
|
private ViewGroup mLoginForm;
|
||||||
private ViewGroup mLoggingInFrame;
|
private ViewGroup mLoggingInFrame;
|
||||||
private ViewGroup mLoggedInFrame;
|
private ViewGroup mLoggedInFrame;
|
||||||
|
private boolean mLoginInProgress;
|
||||||
|
private boolean mLoginSuccess;
|
||||||
|
|
||||||
public native void login(String username, String password, Fragment usernameChangedListener);
|
public native void login(String username, String password, Fragment usernameChangedListener);
|
||||||
public native void cancelLogin();
|
public native void cancelLogin();
|
||||||
|
@ -142,6 +145,8 @@ public class LoginFragment extends Fragment {
|
||||||
mLoginButton.setEnabled(false);
|
mLoginButton.setEnabled(false);
|
||||||
hideError();
|
hideError();
|
||||||
showActivityIndicator();
|
showActivityIndicator();
|
||||||
|
mLoginInProgress = true;
|
||||||
|
mLoginSuccess = false;
|
||||||
login(username, password, this);
|
login(username, password, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -188,9 +193,11 @@ public class LoginFragment extends Fragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handleLoginCompleted(boolean success) {
|
public void handleLoginCompleted(boolean success) {
|
||||||
|
mLoginInProgress = false;
|
||||||
getActivity().runOnUiThread(() -> {
|
getActivity().runOnUiThread(() -> {
|
||||||
mLoginButton.setEnabled(true);
|
mLoginButton.setEnabled(true);
|
||||||
if (success) {
|
if (success) {
|
||||||
|
mLoginSuccess = true;
|
||||||
showLoggedInMessage();
|
showLoggedInMessage();
|
||||||
} else {
|
} else {
|
||||||
showLoginForm();
|
showLoginForm();
|
||||||
|
@ -199,6 +206,22 @@ public class LoginFragment extends Fragment {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean doBack() {
|
||||||
|
if (mLoginInProgress) {
|
||||||
|
cancelLogin();
|
||||||
|
showLoginForm();
|
||||||
|
mLoginInProgress = false;
|
||||||
|
mLoginButton.setEnabled(true);
|
||||||
|
return true;
|
||||||
|
} else if (mLoginSuccess) {
|
||||||
|
onGetStartedClicked();
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public interface OnLoginInteractionListener {
|
public interface OnLoginInteractionListener {
|
||||||
void onLoginCompleted();
|
void onLoginCompleted();
|
||||||
void onCancelLogin();
|
void onCancelLogin();
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
package io.highfidelity.hifiinterface.fragment;
|
||||||
|
|
||||||
|
public interface OnBackPressedListener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes the back pressed event and returns true if it was managed by this Fragment
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
boolean doBack();
|
||||||
|
|
||||||
|
}
|
|
@ -20,7 +20,8 @@ import io.highfidelity.hifiinterface.R;
|
||||||
import static org.qtproject.qt5.android.QtActivityDelegate.ApplicationActive;
|
import static org.qtproject.qt5.android.QtActivityDelegate.ApplicationActive;
|
||||||
import static org.qtproject.qt5.android.QtActivityDelegate.ApplicationInactive;
|
import static org.qtproject.qt5.android.QtActivityDelegate.ApplicationInactive;
|
||||||
|
|
||||||
public class SignupFragment extends Fragment {
|
public class SignupFragment extends Fragment
|
||||||
|
implements OnBackPressedListener {
|
||||||
|
|
||||||
private EditText mEmail;
|
private EditText mEmail;
|
||||||
private EditText mUsername;
|
private EditText mUsername;
|
||||||
|
@ -33,6 +34,10 @@ public class SignupFragment extends Fragment {
|
||||||
private ViewGroup mLoggingInFrame;
|
private ViewGroup mLoggingInFrame;
|
||||||
private ViewGroup mLoggedInFrame;
|
private ViewGroup mLoggedInFrame;
|
||||||
|
|
||||||
|
private boolean mLoginInProgress;
|
||||||
|
private boolean mSignupInProgress;
|
||||||
|
private boolean mSignupSuccess;
|
||||||
|
|
||||||
public native void signup(String email, String username, String password); // move to SignupFragment
|
public native void signup(String email, String username, String password); // move to SignupFragment
|
||||||
public native void cancelSignup();
|
public native void cancelSignup();
|
||||||
public native void login(String username, String password);
|
public native void login(String username, String password);
|
||||||
|
@ -69,7 +74,7 @@ public class SignupFragment extends Fragment {
|
||||||
|
|
||||||
mSignupButton.setOnClickListener(view -> signup());
|
mSignupButton.setOnClickListener(view -> signup());
|
||||||
|
|
||||||
rootView.findViewById(R.id.getStarted).setOnClickListener(view -> onGetStartedPressed());
|
rootView.findViewById(R.id.getStarted).setOnClickListener(view -> onGetStartedClicked());
|
||||||
|
|
||||||
mPassword.setOnEditorActionListener((textView, actionId, keyEvent) -> onPasswordEditorAction(textView, actionId, keyEvent));
|
mPassword.setOnEditorActionListener((textView, actionId, keyEvent) -> onPasswordEditorAction(textView, actionId, keyEvent));
|
||||||
|
|
||||||
|
@ -135,6 +140,8 @@ public class SignupFragment extends Fragment {
|
||||||
hideError();
|
hideError();
|
||||||
mActivityText.setText(R.string.creating_account);
|
mActivityText.setText(R.string.creating_account);
|
||||||
showActivityIndicator();
|
showActivityIndicator();
|
||||||
|
mSignupInProgress = true;
|
||||||
|
mSignupSuccess = false;
|
||||||
signup(email, username, password);
|
signup(email, username, password);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -179,7 +186,7 @@ public class SignupFragment extends Fragment {
|
||||||
void onCancelSignup();
|
void onCancelSignup();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onGetStartedPressed() {
|
private void onGetStartedClicked() {
|
||||||
if (mListener != null) {
|
if (mListener != null) {
|
||||||
mListener.onSignupCompleted();
|
mListener.onSignupCompleted();
|
||||||
}
|
}
|
||||||
|
@ -187,16 +194,18 @@ public class SignupFragment extends Fragment {
|
||||||
|
|
||||||
|
|
||||||
public void handleSignupCompleted() {
|
public void handleSignupCompleted() {
|
||||||
|
mSignupInProgress = false;
|
||||||
String username = mUsername.getText().toString().trim();
|
String username = mUsername.getText().toString().trim();
|
||||||
String password = mPassword.getText().toString();
|
String password = mPassword.getText().toString();
|
||||||
getActivity().runOnUiThread(() -> {
|
getActivity().runOnUiThread(() -> {
|
||||||
mActivityText.setText(R.string.logging_in);
|
mActivityText.setText(R.string.logging_in);
|
||||||
});
|
});
|
||||||
|
mLoginInProgress = true;
|
||||||
login(username, password);
|
login(username, password);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handleSignupFailed(String error) {
|
public void handleSignupFailed(String error) {
|
||||||
|
mSignupInProgress = false;
|
||||||
getActivity().runOnUiThread(() -> {
|
getActivity().runOnUiThread(() -> {
|
||||||
mSignupButton.setEnabled(true);
|
mSignupButton.setEnabled(true);
|
||||||
showSignupForm();
|
showSignupForm();
|
||||||
|
@ -206,9 +215,11 @@ public class SignupFragment extends Fragment {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void handleLoginCompleted(boolean success) {
|
public void handleLoginCompleted(boolean success) {
|
||||||
|
mLoginInProgress = false;
|
||||||
getActivity().runOnUiThread(() -> {
|
getActivity().runOnUiThread(() -> {
|
||||||
mSignupButton.setEnabled(true);
|
mSignupButton.setEnabled(true);
|
||||||
if (success) {
|
if (success) {
|
||||||
|
mSignupSuccess = true;
|
||||||
showLoggedInMessage();
|
showLoggedInMessage();
|
||||||
} else {
|
} else {
|
||||||
// Registration was successful but login failed.
|
// Registration was successful but login failed.
|
||||||
|
@ -219,4 +230,25 @@ public class SignupFragment extends Fragment {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean doBack() {
|
||||||
|
if (mSignupInProgress) {
|
||||||
|
cancelSignup();
|
||||||
|
} else if (mLoginInProgress) {
|
||||||
|
cancelLogin();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mSignupInProgress || mLoginInProgress) {
|
||||||
|
showSignupForm();
|
||||||
|
mLoginInProgress = false;
|
||||||
|
mSignupInProgress = false;
|
||||||
|
mSignupButton.setEnabled(true);
|
||||||
|
return true;
|
||||||
|
} else if (mSignupSuccess) {
|
||||||
|
onGetStartedClicked();
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue