summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2012-10-16 14:05:15 +0400
committerAndrew Dolgov <[email protected]>2012-10-16 14:05:15 +0400
commitf82f4ac6d961ec54b8c3936a37cb1689647c7289 (patch)
tree61ec6d1b81661143058bbb3b870ea699cb595756 /src
parentbd19f3a5b5ba9c3cf82d46c4554db9907162d786 (diff)
allow clearing remote sync data
Diffstat (limited to 'src')
-rw-r--r--src/org/fox/ttcomics/CommonActivity.java25
-rw-r--r--src/org/fox/ttcomics/PreferencesActivity.java67
-rw-r--r--src/org/fox/ttcomics/SyncClient.java24
3 files changed, 105 insertions, 11 deletions
diff --git a/src/org/fox/ttcomics/CommonActivity.java b/src/org/fox/ttcomics/CommonActivity.java
index d2890e6..6d65ea1 100644
--- a/src/org/fox/ttcomics/CommonActivity.java
+++ b/src/org/fox/ttcomics/CommonActivity.java
@@ -11,6 +11,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.BitmapFactory;
+import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.preference.PreferenceManager;
@@ -40,20 +41,28 @@ public class CommonActivity extends FragmentActivity {
super.onCreate(savedInstanceState);
m_prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
-
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+
if (m_prefs.getBoolean("use_position_sync", false)) {
String googleAccount = getGoogleAccount();
if (googleAccount != null) {
m_syncClient.setOwner(googleAccount);
} else {
- toast(R.string.error_sync_no_account);
-
- SharedPreferences.Editor editor = m_prefs.edit();
- editor.putBoolean("use_position_sync", false);
- editor.commit();
-
- //m_syncClient.setOwner("TEST-ACCOUNT");
+ if (Build.FINGERPRINT.startsWith("generic")) {
+ m_syncClient.setOwner("TEST-ACCOUNT");
+ } 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.commit();
+ }
}
}
}
diff --git a/src/org/fox/ttcomics/PreferencesActivity.java b/src/org/fox/ttcomics/PreferencesActivity.java
index b49e6fe..e6d4cbf 100644
--- a/src/org/fox/ttcomics/PreferencesActivity.java
+++ b/src/org/fox/ttcomics/PreferencesActivity.java
@@ -1,13 +1,19 @@
package org.fox.ttcomics;
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.app.AlertDialog;
+import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
+import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceManager;
+import android.widget.Toast;
public class PreferencesActivity extends PreferenceActivity {
@@ -26,7 +32,7 @@ public class PreferencesActivity extends PreferenceActivity {
readingCat.removePreference(dimPref);
}
- Preference dirPref = (Preference) findPreference("comics_directory");
+ Preference dirPref = findPreference("comics_directory");
dirPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
@@ -39,6 +45,53 @@ public class PreferencesActivity extends PreferenceActivity {
return true;
}
});
+
+ Preference clearPref = findPreference("clear_sync_data");
+ clearPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(PreferencesActivity.this);
+ builder.setMessage(R.string.dialog_clear_data_title)
+ .setCancelable(false)
+ .setPositiveButton(R.string.dialog_clear_data, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+
+ String googleAccount = getGoogleAccount();
+ SyncClient m_syncClient = new SyncClient();
+
+ if (googleAccount != null) {
+ m_syncClient.setOwner(googleAccount);
+ } else {
+ if (Build.FINGERPRINT.startsWith("generic")) {
+ m_syncClient.setOwner("TEST-ACCOUNT");
+ } else {
+ m_syncClient.setOwner(null);
+
+ SharedPreferences.Editor editor = prefs.edit();
+ editor.putBoolean("use_position_sync", false);
+ editor.commit();
+
+ Toast toast = Toast.makeText(PreferencesActivity.this, R.string.error_sync_no_account, Toast.LENGTH_SHORT);
+ toast.show();
+ }
+ }
+
+ if (m_syncClient.hasOwner()) {
+ m_syncClient.clearData();
+ }
+ }
+ })
+ .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ dialog.cancel();
+ }
+ });
+ AlertDialog alert = builder.create();
+ alert.show();
+
+ return false;
+ }
+ });
}
@Override
@@ -56,4 +109,16 @@ public class PreferencesActivity extends PreferenceActivity {
}
}
+
+ public String getGoogleAccount() {
+ AccountManager manager = (AccountManager) getSystemService(ACCOUNT_SERVICE);
+ Account[] list = manager.getAccounts();
+
+ for (Account account: list) {
+ if (account.type.equalsIgnoreCase("com.google")) {
+ return account.name;
+ }
+ }
+ return null;
+ }
}
diff --git a/src/org/fox/ttcomics/SyncClient.java b/src/org/fox/ttcomics/SyncClient.java
index 377a3fc..ce69abb 100644
--- a/src/org/fox/ttcomics/SyncClient.java
+++ b/src/org/fox/ttcomics/SyncClient.java
@@ -20,8 +20,18 @@ public class SyncClient {
@Override
protected Boolean doInBackground(String... params) {
- String requestStr = "set".equals(params[0]) ? String.format("op=set&owner=%1$s&hash=%2$s&position=%3$s", m_owner, params[1], params[2]) :
- String.format("op=get&owner=%1$s&hash=%2$s", m_owner, params[1]);
+ String requestStr = null;
+ String op = params[0];
+
+ if (op.equals("set")) {
+ requestStr = String.format("op=set&owner=%1$s&hash=%2$s&position=%3$s", m_owner, params[1], params[2]);
+ } else if (op.equals("get")) {
+ requestStr = String.format("op=get&owner=%1$s&hash=%2$s", m_owner, params[1]);
+ } else if (op.equals("clear")) {
+ requestStr = String.format("op=clear&owner=%1$s", m_owner);
+ }
+
+ if (requestStr == null) return false;
try {
byte[] postData = requestStr.getBytes("UTF-8");
@@ -115,6 +125,16 @@ public class SyncClient {
task.execute("set", hash, String.valueOf(position));
}
}
+
+ public void clearData() {
+ if (m_owner != null) {
+ Log.d(TAG, "Clearing sync data...");
+
+ HttpTask task = new HttpTask();
+
+ task.execute("clear");
+ }
+ }
public boolean hasOwner() {
return m_owner != null;