summaryrefslogtreecommitdiff
path: root/org.fox.ttcomics/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'org.fox.ttcomics/src/main/java')
-rwxr-xr-xorg.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java75
-rwxr-xr-xorg.fox.ttcomics/src/main/java/org/fox/ttcomics2/MainActivity.java22
-rwxr-xr-xorg.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java7
-rwxr-xr-x[-rw-r--r--]org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java78
-rwxr-xr-x[-rw-r--r--]org.fox.ttcomics/src/main/java/org/fox/ttcomics2/sync/SyncFolderService.java5
5 files changed, 75 insertions, 112 deletions
diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java
index 2a867ae..7db1753 100755
--- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java
+++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/CommonActivity.java
@@ -1,18 +1,17 @@
package org.fox.ttcomics2;
-import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
-import android.widget.Toast;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
@@ -35,6 +34,7 @@ public class CommonActivity extends AppCompatActivity {
protected final static int REQUEST_SHARE = 1;
protected static final int REQUEST_VIEWCOMIC = 2;
protected static final int REQUEST_PERMISSIONS_RESULT = 3;
+ protected static final int REQUEST_SYNC_ACCOUNT = 4;
public static final String PRIVACY_POLICY_URL = "https://tt-rss.org/gitlab/fox/tt-comics/wikis/PrivacyPolicy";
@@ -81,27 +81,24 @@ public class CommonActivity extends AppCompatActivity {
}
protected void initSyncClient() {
- Log.d(TAG, "initSynClient");
+ Log.d(TAG, "initSyncClient");
if (isSyncEnabled()) {
- String googleAccount = getGoogleAccount(this);
+ String syncAccount = getSyncAccount(this);
- if (googleAccount != null) {
- m_syncClient.setOwner(googleAccount);
+ Log.d(TAG, "sync account=" + syncAccount);
+
+ if (syncAccount != null) {
+ m_syncClient.setOwner(syncAccount);
} else {
if (BuildConfig.DEBUG) {
m_syncClient.setOwner("TEST-ACCOUNT");
-
- //toast(R.string.sync_running_in_test_mode);
} else {
m_syncClient.setOwner(null);
- toast(R.string.error_sync_no_account);
-
- SharedPreferences.Editor editor = m_prefs.edit();
- editor.putBoolean("use_position_sync", false);
- editor.apply();
}
+
+ toast(R.string.error_sync_no_account);
}
} else {
@@ -109,6 +106,21 @@ public class CommonActivity extends AppCompatActivity {
}
}
+ @Override
+ protected void onActivityResult(final int requestCode, final int resultCode,
+ final Intent data) {
+
+ Log.d(TAG, "RQ=" + requestCode);
+
+ if (requestCode == REQUEST_SYNC_ACCOUNT && resultCode == RESULT_OK) {
+ String accountName = data.getStringExtra(AccountManager.KEY_ACCOUNT_NAME);
+
+ SharedPreferences.Editor editor = m_prefs.edit();
+ editor.putString("sync_account", accountName);
+ editor.apply();
+ }
+ }
+
public void onComicArchiveSelected(String fileName) {
//
}
@@ -117,7 +129,8 @@ public class CommonActivity extends AppCompatActivity {
public void onComicSelected(String fileName, int position) {
m_databaseHelper.setLastPosition(fileName, position);
}
-
+
+ @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_settings:
@@ -182,34 +195,24 @@ public class CommonActivity extends AppCompatActivity {
return file.getAbsolutePath();
}
- public static String getGoogleAccount(Context ctx) {
- AccountManager manager = (AccountManager) ctx.getSystemService(ACCOUNT_SERVICE);
- Account[] list = manager.getAccounts();
-
- for (Account account: list) {
- if (account.type.equalsIgnoreCase("com.google")) {
- return account.name;
- }
- }
- return null;
+ public static String getSyncAccount(Context ctx) {
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ctx);
+ return prefs.getString("sync_account", null);
}
public void toast(int msgId) {
- try {
- Toast toast = Toast.makeText(CommonActivity.this, msgId, Toast.LENGTH_SHORT);
- toast.show();
- } catch (RuntimeException e) {
- // might happen if UI lags
- }
+ toast(getString(msgId));
}
public void toast(String msg) {
- try {
- Toast toast = Toast.makeText(CommonActivity.this, msg, Toast.LENGTH_SHORT);
- toast.show();
- } catch (RuntimeException e) {
- // might happen if UI lags
- }
+ Snackbar.make(findViewById(android.R.id.content), msg, Snackbar.LENGTH_LONG)
+ .setAction(R.string.dialog_close, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ }
+ })
+ .show();
}
public void cleanupCache() {
diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/MainActivity.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/MainActivity.java
index cc1f3c2..6a19b63 100755
--- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/MainActivity.java
+++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/MainActivity.java
@@ -144,15 +144,7 @@ public class MainActivity extends CommonActivity implements SharedPreferences.On
}
}
- String[] permissions;
-
- if (isSyncEnabled()) {
- permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.GET_ACCOUNTS};
- } else {
- permissions = new String[]{Manifest.permission.READ_EXTERNAL_STORAGE};
- }
-
- String[] needPermissions = checkPermissions(permissions);
+ String[] needPermissions = checkPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE});
if (needPermissions.length > 0) {
ActivityCompat.requestPermissions(this,
@@ -201,18 +193,6 @@ public class MainActivity extends CommonActivity implements SharedPreferences.On
toast(R.string.permission_denied_storage);
}
}
-
- if (Manifest.permission.GET_ACCOUNTS.equals(permission)) {
- if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
- needRestart = true;
- } else {
- toast(R.string.permission_denied_accounts);
-
- SharedPreferences.Editor editor = m_prefs.edit();
- editor.putBoolean("use_position_sync", false);
- editor.apply();
- }
- }
}
if (needRestart) {
diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java
index 376e639..245ad2c 100755
--- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java
+++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java
@@ -19,7 +19,7 @@ public class PreferencesActivity extends CommonActivity {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_preferences);
- setSupportActionBar((Toolbar) findViewById(R.id.toolbar));;
+ setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
@@ -43,6 +43,8 @@ public class PreferencesActivity extends CommonActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ Log.d("123", "RQ2=" + requestCode);
+
if(requestCode == DirectoryPicker.PICK_DIRECTORY && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
String path = (String) extras.get(DirectoryPicker.CHOSEN_DIRECTORY);
@@ -53,8 +55,9 @@ public class PreferencesActivity extends CommonActivity {
SharedPreferences.Editor editor = prefs.edit();
editor.putString("comics_directory", path);
editor.apply();
-
}
+
+ super.onActivityResult(requestCode, resultCode, data);
}
public void startPicker() {
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 9ae89c7..457e503 100644..100755
--- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java
+++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java
@@ -1,14 +1,10 @@
package org.fox.ttcomics2;
-import android.accounts.Account;
-import android.accounts.AccountManager;
import android.app.Activity;
import android.app.AlertDialog;
-import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
@@ -16,15 +12,14 @@ import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
-import android.widget.Toast;
+
+import com.google.android.gms.auth.GoogleAuthUtil;
+import com.google.android.gms.common.AccountPicker;
import org.fox.ttcomics2.sync.SyncClient;
-import java.io.IOException;
import java.text.SimpleDateFormat;
-import java.util.Locale;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
+import java.util.Date;
public class PreferencesFragment extends PreferenceFragment {
@@ -52,19 +47,11 @@ public class PreferencesFragment extends PreferenceFragment {
version = packageInfo.versionName;
versionCode = packageInfo.versionCode;
- ApplicationInfo appInfo = activity.getPackageManager().
- getApplicationInfo(activity.getPackageName(), 0);
-
- ZipFile zf = new ZipFile(appInfo.sourceDir);
- ZipEntry ze = zf.getEntry("classes.dex");
- long time = ze.getTime();
-
- buildTimestamp = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss",
- Locale.getDefault()).format(time);
-
-
findPreference("version").setSummary(getString(R.string.prefs_version, version, versionCode));
+
+ buildTimestamp = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss").format(new Date(BuildConfig.TIMESTAMP));
findPreference("build_timestamp").setSummary(getString(R.string.prefs_build_timestamp, buildTimestamp));
+
findPreference("privacy_policy").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
@@ -77,15 +64,12 @@ public class PreferencesFragment extends PreferenceFragment {
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
}
final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(getActivity().getApplicationContext());
- Preference dirPref = findPreference("comics_directory");
- dirPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
+ findPreference("comics_directory").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
((PreferencesActivity)getActivity()).startPicker();
@@ -93,8 +77,21 @@ public class PreferencesFragment extends PreferenceFragment {
}
});
- Preference clearPref = findPreference("clear_sync_data");
- clearPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
+ 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);
+
+ getActivity().startActivityForResult(googlePicker, CommonActivity.REQUEST_SYNC_ACCOUNT);
+
+ return true;
+ }
+ });
+
+ findPreference("choose_sync_account").setSummary(prefs.getString("sync_account", getString(R.string.sync_account_not_set)));
+
+ findPreference("clear_sync_data").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
@@ -103,26 +100,16 @@ public class PreferencesFragment extends PreferenceFragment {
.setPositiveButton(R.string.dialog_clear_data, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
- String googleAccount = getGoogleAccount();
+ String syncAccount = CommonActivity.getSyncAccount(getActivity().getApplicationContext());
SyncClient m_syncClient = new SyncClient();
- if (googleAccount != null) {
- m_syncClient.setOwner(googleAccount);
+ if (syncAccount != null) {
+ m_syncClient.setOwner(syncAccount);
} else {
if (BuildConfig.DEBUG) {
m_syncClient.setOwner("TEST-ACCOUNT");
-
- //Toast toast = Toast.makeText(getActivity(), R.string.sync_running_in_test_mode, Toast.LENGTH_SHORT);
- //toast.show();
} else {
- m_syncClient.setOwner(null);
-
- SharedPreferences.Editor editor = prefs.edit();
- editor.putBoolean("use_position_sync", false);
- editor.apply();
-
- Toast toast = Toast.makeText(getActivity(), R.string.error_sync_no_account, Toast.LENGTH_SHORT);
- toast.show();
+ ((CommonActivity)getActivity()).toast(R.string.error_sync_no_account);
}
}
@@ -144,15 +131,4 @@ public class PreferencesFragment extends PreferenceFragment {
});
}
- public String getGoogleAccount() {
- AccountManager manager = (AccountManager) getActivity().getSystemService(Context.ACCOUNT_SERVICE);
- Account[] list = manager.getAccounts();
-
- for (Account account: list) {
- if (account.type.equalsIgnoreCase("com.google")) {
- return account.name;
- }
- }
- return null;
- }
} \ No newline at end of file
diff --git a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/sync/SyncFolderService.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/sync/SyncFolderService.java
index a048342..75120d3 100644..100755
--- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/sync/SyncFolderService.java
+++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/sync/SyncFolderService.java
@@ -1,5 +1,6 @@
package org.fox.ttcomics2.sync;
+import android.annotation.SuppressLint;
import android.app.Service;
import android.content.Intent;
import android.os.AsyncTask;
@@ -46,7 +47,7 @@ public class SyncFolderService extends Service {
public void onStart(Intent intent, int startId) {
String baseDir = intent.getExtras().getString("baseDir");
- AsyncTask<String, Integer, Integer> task = new AsyncTask<String, Integer, Integer>() {
+ @SuppressLint("StaticFieldLeak") AsyncTask<String, Integer, Integer> task = new AsyncTask<String, Integer, Integer>() {
@Override
protected Integer doInBackground(String... params) {
File rootDir = new File(params[0]);
@@ -63,7 +64,7 @@ public class SyncFolderService extends Service {
SyncClient m_syncClient = new SyncClient();
- String googleAccount = CommonActivity.getGoogleAccount(getApplicationContext());
+ String googleAccount = CommonActivity.getSyncAccount(getApplicationContext());
if (googleAccount != null) {
m_syncClient.setOwner(googleAccount);