summaryrefslogtreecommitdiff
path: root/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java')
-rw-r--r--org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java61
1 files changed, 58 insertions, 3 deletions
diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java
index e16871f..e8697a7 100644
--- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java
+++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java
@@ -2,6 +2,7 @@ package org.fox.ttcomics2;
import android.app.Activity;
import android.app.AlertDialog;
+import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -12,9 +13,15 @@ import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
+import android.text.InputType;
+import android.text.TextUtils;
+import android.util.Patterns;
+import android.widget.EditText;
import com.google.android.gms.auth.GoogleAuthUtil;
import com.google.android.gms.common.AccountPicker;
+import com.google.android.gms.common.ConnectionResult;
+import com.google.android.gms.common.GoogleApiAvailability;
import org.fox.ttcomics2.sync.SyncClient;
@@ -22,6 +29,7 @@ import java.text.SimpleDateFormat;
import java.util.Date;
public class PreferencesFragment extends PreferenceFragment {
+ private final String TAG = this.getClass().getSimpleName();
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -31,6 +39,16 @@ public class PreferencesFragment extends PreferenceFragment {
}
+ public boolean isGMSAvailable(Context context){
+ GoogleApiAvailability googleApiAvailability = GoogleApiAvailability.getInstance();
+ int resultCode = googleApiAvailability.isGooglePlayServicesAvailable(context);
+ return resultCode == ConnectionResult.SUCCESS;
+ }
+
+ public static boolean isValidEmail(CharSequence target) {
+ return (!TextUtils.isEmpty(target) && Patterns.EMAIL_ADDRESS.matcher(target).matches());
+ }
+
public void onResume() {
super.onResume();
@@ -91,10 +109,47 @@ public class PreferencesFragment extends PreferenceFragment {
findPreference("choose_sync_account").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
- Intent googlePicker = AccountPicker.newChooseAccountIntent(null, null,
- new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE}, true, null, null, null, null);
+ if (!isGMSAvailable(getActivity())) {
+ Intent googlePicker = AccountPicker.newChooseAccountIntent(null, null,
+ new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE}, true, null, null, null, null);
+
+ getActivity().startActivityForResult(googlePicker, CommonActivity.REQUEST_SYNC_ACCOUNT);
+ } else {
+ final EditText input = new EditText(getActivity());
+ input.setText(prefs.getString("sync_account", ""));
+ input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+ builder.setMessage(getString(R.string.dialog_set_sync_account_manually))
+ .setView(input)
+ .setCancelable(true)
+ .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ String account = input.getText().toString().trim();
+
+ if (isValidEmail(account)) {
+ dialog.dismiss();
+
+ SharedPreferences.Editor editor = prefs.edit();
+ editor.putString("sync_account", account);
+ editor.apply();
+
+ findPreference("choose_sync_account").setSummary(account);
+
+ } else {
+ ((PreferencesActivity)getActivity()).toast(R.string.dialog_invalid_sync_account_syntax);
+ }
+ }
+ })
+ .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ dialog.cancel();
+ }
+ });
+ AlertDialog alert = builder.create();
+ alert.show();
+ }
- getActivity().startActivityForResult(googlePicker, CommonActivity.REQUEST_SYNC_ACCOUNT);
return true;
}