summaryrefslogtreecommitdiff
path: root/org.fox.ttcomics
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2015-06-08 16:09:03 +0300
committerAndrew Dolgov <[email protected]>2015-06-08 16:09:03 +0300
commita065dbd86abd3239ef5ce3f07153169c1f392848 (patch)
tree9be54057d45372da9df71da76b9dbfc0cc4feb7d /org.fox.ttcomics
parentb643a64be39257642d4dfd085ff53cf13d1f8728 (diff)
rework preferences to use preferencefragment, draw selector on top of comics list
Diffstat (limited to 'org.fox.ttcomics')
-rwxr-xr-xorg.fox.ttcomics/src/main/AndroidManifest.xml6
-rw-r--r--org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java165
-rw-r--r--org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java151
-rw-r--r--org.fox.ttcomics/src/main/res/layout/fragment_comics_list.xml1
4 files changed, 180 insertions, 143 deletions
diff --git a/org.fox.ttcomics/src/main/AndroidManifest.xml b/org.fox.ttcomics/src/main/AndroidManifest.xml
index 91c3e43..026a860 100755
--- a/org.fox.ttcomics/src/main/AndroidManifest.xml
+++ b/org.fox.ttcomics/src/main/AndroidManifest.xml
@@ -1,7 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.fox.ttcomics2"
- android:versionCode="59"
- android:versionName="1.19" >
+ android:versionCode="60"
+ android:versionName="1.20" >
<uses-sdk
android:minSdkVersion="16"
@@ -30,6 +30,7 @@
</activity>
<activity
+ android:theme="@style/AppTheme"
android:name=".PreferencesActivity"
android:label="@string/title_activity_preferences">
</activity>
@@ -45,6 +46,7 @@
</activity>
<activity
+ android:theme="@style/AppTheme"
android:name=".DirectoryPicker"
android:label="@string/title_activity_main">
</activity>
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 f6db9cc..fe4bed6 100644
--- a/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java
+++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesActivity.java
@@ -1,156 +1,39 @@
package org.fox.ttcomics2;
-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.content.pm.ApplicationInfo;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.os.Build;
import android.os.Bundle;
-import android.os.Environment;
-import android.preference.Preference;
-import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
-import android.widget.Toast;
-
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Locale;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-
-public class PreferencesActivity extends PreferenceActivity {
+import android.support.v7.widget.Toolbar;
+import android.view.MenuItem;
+public class PreferencesActivity extends CommonActivity {
@Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- final SharedPreferences prefs = PreferenceManager
- .getDefaultSharedPreferences(getApplicationContext());
-
- addPreferencesFromResource(R.xml.preferences);
-
- Preference dirPref = findPreference("comics_directory");
- dirPref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
- @Override
- public boolean onPreferenceClick(Preference preference) {
- Intent intent = new Intent(PreferencesActivity.this, DirectoryPicker.class);
-
- intent.putExtra(DirectoryPicker.START_DIR, prefs.getString("comics_directory",
- Environment.getExternalStorageDirectory().getAbsolutePath()));
-
- startActivityForResult(intent, DirectoryPicker.PICK_DIRECTORY);
- 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.HARDWARE.equals("goldfish")) {
- m_syncClient.setOwner("TEST-ACCOUNT");
- } else {
- m_syncClient.setOwner(null);
+ public void onCreate(Bundle savedInstanceState) {
+ // we use that before parent onCreate so let's init locally
+ m_prefs = PreferenceManager
+ .getDefaultSharedPreferences(getApplicationContext());
- 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;
- }
- });
+ super.onCreate(savedInstanceState);
- String version = "?";
- int versionCode = -1;
- String buildTimestamp = "N/A";
+ setContentView(R.layout.preferences);
- try {
- PackageInfo packageInfo = getPackageManager().
- getPackageInfo(getPackageName(), 0);
+ getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ getSupportActionBar().setHomeButtonEnabled(true);
- version = packageInfo.versionName;
- versionCode = packageInfo.versionCode;
+ android.app.FragmentTransaction ft = getFragmentManager().beginTransaction();
- ApplicationInfo appInfo = getPackageManager().
- getApplicationInfo(getPackageName(), 0);
+ ft.replace(R.id.preferences_container, new PreferencesFragment());
+ ft.commit();
+ }
- 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);
-
- } catch (PackageManager.NameNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ onBackPressed();
+ return true;
+ default:
+ return super.onOptionsItemSelected(item);
}
+ }
- findPreference("version").setSummary(getString(R.string.prefs_version, version, versionCode));
- findPreference("build_timestamp").setSummary(getString(R.string.prefs_build_timestamp, buildTimestamp));
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if(requestCode == DirectoryPicker.PICK_DIRECTORY && resultCode == RESULT_OK) {
- Bundle extras = data.getExtras();
- String path = (String) extras.get(DirectoryPicker.CHOSEN_DIRECTORY);
-
- SharedPreferences prefs = PreferenceManager
- .getDefaultSharedPreferences(getApplicationContext());
-
- SharedPreferences.Editor editor = prefs.edit();
- editor.putString("comics_directory", path);
- editor.commit();
-
- }
- }
-
- 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/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java
new file mode 100644
index 0000000..adc55c0
--- /dev/null
+++ b/org.fox.ttcomics/src/main/java/org/fox/ttcomics2/PreferencesFragment.java
@@ -0,0 +1,151 @@
+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.os.Build;
+import android.os.Bundle;
+import android.os.Environment;
+import android.preference.Preference;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceManager;
+import android.widget.Toast;
+
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.Locale;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+public class PreferencesFragment extends PreferenceFragment {
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // Load the preferences from an XML resource
+ addPreferencesFromResource(R.xml.preferences);
+
+ }
+
+ public void onResume() {
+ super.onResume();
+
+ String version = "?";
+ int versionCode = -1;
+ String buildTimestamp = "N/A";
+
+ try {
+ Activity activity = getActivity();
+
+ PackageInfo packageInfo = activity.getPackageManager().
+ getPackageInfo(activity.getPackageName(), 0);
+
+ 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));
+ findPreference("build_timestamp").setSummary(getString(R.string.prefs_build_timestamp, buildTimestamp));
+
+ } 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() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ Intent intent = new Intent(getActivity(), DirectoryPicker.class);
+
+ intent.putExtra(DirectoryPicker.START_DIR, prefs.getString("comics_directory",
+ Environment.getExternalStorageDirectory().getAbsolutePath()));
+
+ startActivityForResult(intent, DirectoryPicker.PICK_DIRECTORY);
+ 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(getActivity());
+ 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.HARDWARE.equals("goldfish")) {
+ 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(getActivity(), 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;
+ }
+ });
+ }
+
+ 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/res/layout/fragment_comics_list.xml b/org.fox.ttcomics/src/main/res/layout/fragment_comics_list.xml
index cbbc414..4fb0cf4 100644
--- a/org.fox.ttcomics/src/main/res/layout/fragment_comics_list.xml
+++ b/org.fox.ttcomics/src/main/res/layout/fragment_comics_list.xml
@@ -10,6 +10,7 @@
android:layout_height="match_parent" >
<GridView
android:id="@+id/comics_grid"
+ android:drawSelectorOnTop="true"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="160dp"