summaryrefslogtreecommitdiff
path: root/org.fox.ttcomics
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2020-04-19 17:41:58 +0300
committerAndrew Dolgov <[email protected]>2020-04-19 17:41:58 +0300
commit06132e6709132d1471ed8f9d2a64cfbe864e83c9 (patch)
treee34d2288f7c1a4cd712599ad3143c9462a38314e /org.fox.ttcomics
parentf0a476861727aa11be32bd9f59a9748668937dcc (diff)
make GMS account picking optional (if available)
Diffstat (limited to 'org.fox.ttcomics')
-rw-r--r--org.fox.ttcomics/org.fox.ttcomics.iml41
-rw-r--r--org.fox.ttcomics/src/main/AndroidManifest.xml4
-rw-r--r--org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java61
-rw-r--r--org.fox.ttcomics/src/main/res/values/strings.xml2
4 files changed, 84 insertions, 24 deletions
diff --git a/org.fox.ttcomics/org.fox.ttcomics.iml b/org.fox.ttcomics/org.fox.ttcomics.iml
index 5475ceb..e7a0aca 100644
--- a/org.fox.ttcomics/org.fox.ttcomics.iml
+++ b/org.fox.ttcomics/org.fox.ttcomics.iml
@@ -91,10 +91,10 @@
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Gradle: __local_aars__:C.\Users\fox\Projects\tt-comics\org.fox.ttcomics\libs\nineoldandroids-2.4.0.jar:unspecified@jar" level="project" />
<orderEntry type="library" name="Gradle: frankiesardo:icepick-processor:3.2.0@jar" level="project" />
- <orderEntry type="library" name="Gradle: androidx.collection:collection:1.0.0@jar" level="project" />
- <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-common:2.0.0@jar" level="project" />
- <orderEntry type="library" name="Gradle: androidx.arch.core:core-common:2.0.0@jar" level="project" />
- <orderEntry type="library" name="Gradle: androidx.annotation:annotation:1.0.0@jar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.collection:collection:1.1.0@jar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.arch.core:core-common:2.1.0@jar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-common:2.1.0@jar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.annotation:annotation:1.1.0@jar" level="project" />
<orderEntry type="library" name="Gradle: com.github.bumptech.glide:glide:3.8.0@jar" level="project" />
<orderEntry type="library" name="Gradle: frankiesardo:icepick:3.2.0@jar" level="project" />
<orderEntry type="library" name="Gradle: com.gu:option:1.3@jar" level="project" />
@@ -108,44 +108,47 @@
<orderEntry type="library" name="Gradle: com.google.auto.service:auto-service:1.0-rc2@jar" level="project" />
<orderEntry type="library" name="Gradle: com.google.auto:auto-common:0.3@jar" level="project" />
<orderEntry type="library" name="Gradle: com.google.guava:guava:18.0@jar" level="project" />
- <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-auth:16.0.1@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-auth-api-phone:16.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-auth-base:16.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-base:16.1.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-tasks:16.0.1@aar" level="project" />
- <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-basement:16.2.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.legacy:legacy-support-v4:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: com.google.android.material:material:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: com.github.livefront:bridge:v1.1.2@aar" level="project" />
<orderEntry type="library" name="Gradle: com.github.joielechong:zip4jandroid:1.0.1@aar" level="project" />
- <orderEntry type="library" name="Gradle: androidx.appcompat:appcompat:1.0.2@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.appcompat:appcompat:1.1.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-auth:17.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-auth-api-phone:17.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-auth-base:17.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-base:17.1.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.media:media:1.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: androidx.fragment:fragment:1.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable-animated:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.recyclerview:recyclerview:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.legacy:legacy-support-core-ui:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.legacy:legacy-support-core-utils:1.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable:1.0.1@aar" level="project" />
+ <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-tasks:17.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: com.google.android.gms:play-services-basement:17.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.fragment:fragment:1.1.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.appcompat:appcompat-resources:1.1.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.drawerlayout:drawerlayout:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.transition:transition:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.loader:loader:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.viewpager:viewpager:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.coordinatorlayout:coordinatorlayout:1.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: androidx.drawerlayout:drawerlayout:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.slidingpanelayout:slidingpanelayout:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.customview:customview:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.swiperefreshlayout:swiperefreshlayout:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.asynclayoutinflater:asynclayoutinflater:1.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: androidx.core:core:1.0.1@aar" level="project" />
- <orderEntry type="library" name="Gradle: androidx.versionedparcelable:versionedparcelable:1.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.activity:activity:1.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable-animated:1.1.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.vectordrawable:vectordrawable:1.1.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.core:core:1.1.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.cursoradapter:cursoradapter:1.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.versionedparcelable:versionedparcelable:1.1.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.cardview:cardview:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.documentfile:documentfile:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.localbroadcastmanager:localbroadcastmanager:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.print:print:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.interpolator:interpolator:1.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-viewmodel:2.0.0@aar" level="project" />
- <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-runtime:2.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-viewmodel:2.1.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-livedata:2.0.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-runtime:2.1.0@aar" level="project" />
+ <orderEntry type="library" name="Gradle: androidx.savedstate:savedstate:1.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.lifecycle:lifecycle-livedata-core:2.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: androidx.arch.core:core-runtime:2.0.0@aar" level="project" />
<orderEntry type="library" name="Gradle: com.shamanland:fab:0.0.8@aar" level="project" />
diff --git a/org.fox.ttcomics/src/main/AndroidManifest.xml b/org.fox.ttcomics/src/main/AndroidManifest.xml
index c0af6ff..6e638ef 100644
--- a/org.fox.ttcomics/src/main/AndroidManifest.xml
+++ b/org.fox.ttcomics/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.fox.ttcomics2"
- android:versionCode="93"
- android:versionName="1.51" >
+ android:versionCode="94"
+ android:versionName="1.52" >
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
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;
}
diff --git a/org.fox.ttcomics/src/main/res/values/strings.xml b/org.fox.ttcomics/src/main/res/values/strings.xml
index 51f6d04..3ef6d79 100644
--- a/org.fox.ttcomics/src/main/res/values/strings.xml
+++ b/org.fox.ttcomics/src/main/res/values/strings.xml
@@ -83,4 +83,6 @@
<string name="prefs_enable_fab">Enable FAB</string>
<string name="prefs_enable_fab_summary">Show floating action button</string>
<string name="prefs_choose_sync_account">Choose sync account</string>
+ <string name="dialog_set_sync_account_manually">Set sync account</string>
+ <string name="dialog_invalid_sync_account_syntax">Invalid account (email expected)</string>
</resources> \ No newline at end of file