diff --git a/play-services-core/src/main/java/org/microg/gms/auth/login/AssistantActivity.java b/play-services-core/src/main/java/org/microg/gms/auth/login/AssistantActivity.java index f126918e..66e789a9 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/login/AssistantActivity.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/login/AssistantActivity.java @@ -19,7 +19,11 @@ package org.microg.gms.auth.login; import android.app.Activity; import android.content.res.Configuration; import android.os.Bundle; +import android.support.annotation.StringRes; import android.util.DisplayMetrics; +import android.view.View; +import android.widget.Button; +import android.widget.TextView; import com.google.android.gms.R; @@ -32,6 +36,18 @@ public abstract class AssistantActivity extends Activity { super.onCreate(savedInstanceState); setContentView(R.layout.login_assistant); formatTitle(); + findViewById(R.id.next_button).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onNextButtonClicked(); + } + }); + findViewById(R.id.back_button).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onBackButtonClicked(); + } + }); } private void formatTitle() { @@ -44,12 +60,52 @@ public abstract class AssistantActivity extends Activity { } } + public void setNextButtonText(@StringRes int res) { + setNextButtonText(getText(res)); + } + + public void setNextButtonText(CharSequence text) { + if (text == null) { + findViewById(R.id.next_button).setVisibility(View.GONE); + } else { + findViewById(R.id.next_button).setVisibility(View.VISIBLE); + ((Button) findViewById(R.id.next_button)).setText(text); + } + } + + public void setBackButtonText(@StringRes int res) { + setBackButtonText(getText(res)); + } + + public void setBackButtonText(CharSequence text) { + if (text == null) { + findViewById(R.id.back_button).setVisibility(View.GONE); + } else { + findViewById(R.id.back_button).setVisibility(View.VISIBLE); + ((Button) findViewById(R.id.back_button)).setText(text); + } + } + + protected void onNextButtonClicked() { + + } + + protected void onBackButtonClicked() { + + } + @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); formatTitle(); } + @Override + protected void onTitleChanged(CharSequence title, int color) { + super.onTitleChanged(title, color); + ((TextView) findViewById(R.id.title)).setText(title); + } + public int dpToPx(int dp) { DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT)); diff --git a/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java b/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java index dc4fa3b3..9c39f030 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java @@ -21,14 +21,19 @@ import android.accounts.AccountManager; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.content.Context; +import android.content.SharedPreferences; import android.graphics.Color; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.os.Bundle; +import android.preference.PreferenceManager; +import android.support.annotation.StringRes; +import android.support.v4.view.LayoutInflaterCompat; import android.text.TextUtils; import android.util.Log; import android.view.KeyEvent; +import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; @@ -86,6 +91,8 @@ public class LoginActivity extends AssistantActivity { private String accountType; private AccountManager accountManager; private InputMethodManager inputMethodManager; + private ViewGroup authContent; + private int state = 0; @SuppressLint("AddJavascriptInterface") @Override @@ -96,6 +103,7 @@ public class LoginActivity extends AssistantActivity { inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); webView = createWebView(this); webView.addJavascriptInterface(new JsBridge(), "mm"); + authContent = (ViewGroup) findViewById(R.id.auth_content); ((ViewGroup) findViewById(R.id.auth_root)).addView(webView); webView.setWebViewClient(new WebViewClient() { @Override @@ -124,19 +132,50 @@ public class LoginActivity extends AssistantActivity { retrieveRtToken(getIntent().getStringExtra(EXTRA_TOKEN)); } } else { - CookieManager.getInstance().setAcceptCookie(true); - if (SDK_INT >= LOLLIPOP) { - CookieManager.getInstance().removeAllCookies(new ValueCallback() { - @Override - public void onReceiveValue(Boolean value) { - start(); - } - }); - } else { - //noinspection deprecation - CookieManager.getInstance().removeAllCookie(); - start(); - } + setMessage(R.string.auth_before_connect); + setBackButtonText(android.R.string.cancel); + setNextButtonText(R.string.auth_sign_in); + } + } + + @Override + protected void onNextButtonClicked() { + super.onNextButtonClicked(); + state++; + if (state == 1) { + init(); + } + } + + @Override + protected void onBackButtonClicked() { + super.onBackButtonClicked(); + state--; + if (state == -1) { + finish(); + } + } + + private void init() { + setTitle(R.string.just_a_sec); + setBackButtonText(null); + setNextButtonText(null); + View loading = getLayoutInflater().inflate(R.layout.login_assistant_loading, authContent, false); + authContent.removeAllViews(); + authContent.addView(loading); + setMessage(R.string.auth_connecting); + CookieManager.getInstance().setAcceptCookie(true); + if (SDK_INT >= LOLLIPOP) { + CookieManager.getInstance().removeAllCookies(new ValueCallback() { + @Override + public void onReceiveValue(Boolean value) { + start(); + } + }); + } else { + //noinspection deprecation + CookieManager.getInstance().removeAllCookie(); + start(); } } @@ -200,13 +239,17 @@ public class LoginActivity extends AssistantActivity { } private void showError(int errorRes) { - ((TextView) findViewById(R.id.title)).setText(R.string.sorry); + setTitle(R.string.sorry); findViewById(R.id.progress_bar).setVisibility(View.INVISIBLE); setMessage(errorRes); } - private void setMessage(int res) { - ((TextView) findViewById(R.id.description_text)).setText(res); + private void setMessage(@StringRes int res) { + setMessage(getText(res)); + } + + private void setMessage(CharSequence text) { + ((TextView) findViewById(R.id.description_text)).setText(text); } private void loadLoginPage() { diff --git a/play-services-core/src/main/res/layout/login_assistant.xml b/play-services-core/src/main/res/layout/login_assistant.xml index 3ccda6b0..9d3e6b3c 100644 --- a/play-services-core/src/main/res/layout/login_assistant.xml +++ b/play-services-core/src/main/res/layout/login_assistant.xml @@ -15,33 +15,33 @@ --> + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="fill_parent" + android:layout_height="fill_parent"> + android:layout_height="match_parent" + android:orientation="vertical"> + android:layout_height="64dp" + android:background="?attr/colorPrimary"> + android:textColor="@color/primary_text_default_material_dark" + android:textSize="24sp"/> - + + android:layout_height="54dip" + android:background="#e4e7e9"> + +