From 128580a78b219bc5a7308cabf0fb5df7439f8851 Mon Sep 17 00:00:00 2001 From: Tunous Date: Tue, 11 Oct 2016 17:08:49 +0200 Subject: [PATCH 1/2] Update dependencies --- library/build.gradle | 7 ++++--- sample/build.gradle | 14 +++++++------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/library/build.gradle b/library/build.gradle index f3bbea4..9ab03fe 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -3,7 +3,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:2.1.2' + classpath 'com.android.tools.build:gradle:2.2.1' classpath 'com.novoda:bintray-release:0.3.4' } } @@ -17,12 +17,13 @@ repositories { } dependencies { - compile 'com.android.support:appcompat-v7:24.1.1' + compile 'com.android.support:appcompat-v7:24.2.1' + compile 'com.android.support:preference-v7:24.2.1' } android { compileSdkVersion 24 - buildToolsVersion "24.0.1" + buildToolsVersion "24.0.3" defaultConfig { versionName "1.3.0" diff --git a/sample/build.gradle b/sample/build.gradle index 6c49ec4..846726d 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 23 - buildToolsVersion "23.0.3" + compileSdkVersion 24 + buildToolsVersion "24.0.3" buildTypes { release { @@ -14,7 +14,7 @@ android { defaultConfig { applicationId "org.wordpress.passcodelock.sample" minSdkVersion 14 - targetSdkVersion 23 + targetSdkVersion 24 versionCode 1 versionName "1.0" } @@ -22,7 +22,7 @@ android { buildscript { dependencies { - classpath 'com.android.tools.build:gradle:2.1.2' + classpath 'com.android.tools.build:gradle:2.2.1' } repositories { @@ -31,9 +31,9 @@ buildscript { } dependencies { - compile 'com.android.support:appcompat-v7:23.4.0' - compile 'com.android.support:support-v4:23.4.0' - compile 'org.wordpress:passcodelock:1.+' + compile 'com.android.support:appcompat-v7:24.2.1' + compile 'com.android.support:support-v4:24.2.1' + compile project(path: ':library') } repositories { From 04dd9a0416f10ad0150cd9e7cb7429bfdb6428bc Mon Sep 17 00:00:00 2001 From: Tunous Date: Tue, 11 Oct 2016 17:09:38 +0200 Subject: [PATCH 2/2] Add compat version of preference fragment --- .../PasscodePreferenceFragmentCompat.java | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 library/src/org/wordpress/passcodelock/PasscodePreferenceFragmentCompat.java diff --git a/library/src/org/wordpress/passcodelock/PasscodePreferenceFragmentCompat.java b/library/src/org/wordpress/passcodelock/PasscodePreferenceFragmentCompat.java new file mode 100644 index 0000000..d92d582 --- /dev/null +++ b/library/src/org/wordpress/passcodelock/PasscodePreferenceFragmentCompat.java @@ -0,0 +1,104 @@ +package org.wordpress.passcodelock; + +import android.content.Intent; +import android.os.Bundle; +import android.support.v7.preference.Preference; +import android.support.v7.preference.PreferenceFragmentCompat; + +public class PasscodePreferenceFragmentCompat extends PreferenceFragmentCompat + implements Preference.OnPreferenceClickListener { + public static final String KEY_SHOULD_INFLATE = "should-inflate"; + public static final int ENABLE_PASSLOCK = 0; + public static final int DISABLE_PASSLOCK = 1; + public static final int CHANGE_PASSWORD = 2; + + private Preference mTogglePasscodePreference; + private Preference mChangePasscodePreference; + + @Override + public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { + Bundle args = getArguments(); + + if (args != null && args.getBoolean(KEY_SHOULD_INFLATE, true)) { + addPreferencesFromResource(R.xml.passcode_preferences); + mTogglePasscodePreference = findPreference(getString(R.string.pref_key_passcode_toggle)); + mChangePasscodePreference = findPreference(getString(R.string.pref_key_change_passcode)); + } + + refreshPreferenceState(); + } + + @Override + public boolean onPreferenceClick(Preference preference) { + String preferenceKey = preference.getKey() != null ? preference.getKey() : ""; + + if (preferenceKey.equals(getString(R.string.pref_key_passcode_toggle))) { + return handlePasscodeToggleClick(); + } else if (preferenceKey.equals(getString(R.string.pref_key_change_passcode))) { + return handleChangePasscodeClick(); + } + + return false; + } + + /** + * When the preferences are nested in a parent apps xml layout the inflated preferences will + * need to be set. + */ + public void setPreferences(Preference togglePreference, Preference changePreference) { + mTogglePasscodePreference = togglePreference; + mChangePasscodePreference = changePreference; + + refreshPreferenceState(); + } + + /** + * Called when user requests to turn the passlock on or off. + * + * @return + * always true to indicate that the request was handled + */ + private boolean handlePasscodeToggleClick() { + int type = AppLockManager.getInstance().getAppLock().isPasswordLocked() + ? DISABLE_PASSLOCK : ENABLE_PASSLOCK; + Intent i = new Intent(getActivity(), PasscodeManagePasswordActivity.class); + i.putExtra(PasscodeManagePasswordActivity.KEY_TYPE, type); + startActivityForResult(i, type); + + return true; + } + + /** + * Called when user requests to change passcode. + * + * @return + * always true to indicate that the request was handled + */ + private boolean handleChangePasscodeClick() { + Intent i = new Intent(getActivity(), PasscodeManagePasswordActivity.class); + i.putExtra(PasscodeManagePasswordActivity.KEY_TYPE, CHANGE_PASSWORD); + i.putExtra(AbstractPasscodeKeyboardActivity.KEY_MESSAGE, + getString(R.string.passcode_enter_old_passcode)); + startActivityForResult(i, CHANGE_PASSWORD); + + return true; + } + + /** + * Helper method to setup preference properties + */ + private void refreshPreferenceState() { + if (mTogglePasscodePreference != null && mChangePasscodePreference != null) { + mTogglePasscodePreference.setOnPreferenceClickListener(this); + mChangePasscodePreference.setOnPreferenceClickListener(this); + + if (AppLockManager.getInstance().getAppLock().isPasswordLocked()) { + mTogglePasscodePreference.setTitle(R.string.passcode_turn_off); + mChangePasscodePreference.setEnabled(true); + } else { + mTogglePasscodePreference.setTitle(R.string.passcode_turn_on); + mChangePasscodePreference.setEnabled(false); + } + } + } +}