diff options
author | Andrew Dolgov <[email protected]> | 2015-06-08 16:09:03 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2015-06-08 16:09:03 +0300 |
commit | a065dbd86abd3239ef5ce3f07153169c1f392848 (patch) | |
tree | 9be54057d45372da9df71da76b9dbfc0cc4feb7d /org.fox.ttcomics | |
parent | b643a64be39257642d4dfd085ff53cf13d1f8728 (diff) |
rework preferences to use preferencefragment, draw selector on top of comics list
Diffstat (limited to 'org.fox.ttcomics')
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" |