From f82f4ac6d961ec54b8c3936a37cb1689647c7289 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 16 Oct 2012 14:05:15 +0400 Subject: allow clearing remote sync data --- src/org/fox/ttcomics/CommonActivity.java | 25 ++++++---- src/org/fox/ttcomics/PreferencesActivity.java | 67 ++++++++++++++++++++++++++- src/org/fox/ttcomics/SyncClient.java | 24 +++++++++- 3 files changed, 105 insertions(+), 11 deletions(-) (limited to 'src') 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; -- cgit v1.2.3