diff --git a/build.gradle b/build.gradle index 8ab0f6c..3dc4e32 100644 --- a/build.gradle +++ b/build.gradle @@ -4,12 +4,10 @@ buildscript { ext.kotlin_version = '1.1.2-3' repositories { jcenter() - maven { - url 'https://maven.google.com' - } + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.2' + classpath 'com.android.tools.build:gradle:2.3.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong @@ -20,16 +18,17 @@ buildscript { allprojects { repositories { jcenter() + google() } } ext { minSdkVersion = 23 - targetSdkVersion = 25 - compileSdkVersion = 25 - buildToolsVersion = '25.0.3' + targetSdkVersion = 26 + compileSdkVersion = 26 + buildToolsVersion = '26.0.2' - supportLibsVersion = '25.1.0' + supportLibsVersion = '26.0.2' } task clean(type: Delete) { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index aa67025..c7bfd5b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu May 18 07:41:34 CEST 2017 +#Sat Sep 02 09:56:43 CEST 2017 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-milestone-1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip diff --git a/kfingerprintmanager/build.gradle b/kfingerprintmanager/build.gradle index df9771d..4bbae14 100644 --- a/kfingerprintmanager/build.gradle +++ b/kfingerprintmanager/build.gradle @@ -37,7 +37,7 @@ dependencies { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:design:' + parent.ext.supportLibsVersion - compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.2-3" + compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.3-2" testCompile 'junit:junit:4.12' testCompile 'org.mockito:mockito-core:2.7.21' diff --git a/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/KFingerprintManager.kt b/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/KFingerprintManager.kt index 44d3847..61bcca2 100644 --- a/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/KFingerprintManager.kt +++ b/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/KFingerprintManager.kt @@ -6,6 +6,7 @@ import android.support.v4.app.FragmentManager import android.support.v4.hardware.fingerprint.FingerprintManagerCompat import com.jesusm.kfingerprintmanager.authentication.AuthenticationManager import com.jesusm.kfingerprintmanager.base.FingerprintAssetsManager +import com.jesusm.kfingerprintmanager.base.ui.Style import com.jesusm.kfingerprintmanager.base.ui.System import com.jesusm.kfingerprintmanager.base.ui.SystemImpl import com.jesusm.kfingerprintmanager.encryption.Base64Encoder @@ -21,8 +22,12 @@ class KFingerprintManager @JvmOverloads constructor(context: Context, val encryptionManager: EncryptionManager = EncryptionManager(encoder, fingerprintAssetsManager, system)) { fun setAuthenticationDialogStyle(@StyleRes styleRes: Int) { - authenticationManager.authenticationDialogStyle = styleRes - encryptionManager.authenticationDialogStyle = styleRes + setAuthenticationDialogStyle(Style(styleRes)) + } + + fun setAuthenticationDialogStyle(style: Style) { + authenticationManager.authenticationDialogStyle = style + encryptionManager.authenticationDialogStyle = style } fun encrypt(messageToEncrypt: String, callback: EncryptionCallback, diff --git a/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/authentication/ui/FingerprintAuthenticationDialogFragment.kt b/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/authentication/ui/FingerprintAuthenticationDialogFragment.kt index 74afc07..19c06b8 100644 --- a/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/authentication/ui/FingerprintAuthenticationDialogFragment.kt +++ b/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/authentication/ui/FingerprintAuthenticationDialogFragment.kt @@ -30,19 +30,19 @@ class FingerprintAuthenticationDialogFragment : FingerprintBaseDialogFragment(R.id.fingerprint_dialog_backup_content) } - val password by lazy { - dialogRootView.findViewById(R.id.password) as EditText + val password: EditText by lazy { + dialogRootView.findViewById(R.id.password) } - val textInputLayout by lazy { - dialogRootView.findViewById(R.id.input_layout_password) as TextInputLayout + val textInputLayout: TextInputLayout by lazy { + dialogRootView.findViewById(R.id.input_layout_password) } - val useFingerprintFutureCheckBox by lazy { - dialogRootView.findViewById(R.id.use_fingerprint_in_future_check) as CheckBox + private val useFingerprintFutureCheckBox by lazy { + dialogRootView.findViewById(R.id.use_fingerprint_in_future_check) } private val sharedPreferences: SharedPreferences by lazy { @@ -51,12 +51,6 @@ class FingerprintAuthenticationDialogFragment : FingerprintBaseDialogFragment { - dismiss() - true - } - else -> { - textInputLayout.error = null - false + override fun onEditorAction(v: TextView?, actionId: Int, event: KeyEvent?): Boolean = + when (actionId) { + EditorInfo.IME_ACTION_GO -> { + dismiss() + true + } + else -> { + textInputLayout.error = null + false + } } - } - } override fun onFingerprintDisplayed() { fingerprintContainer.visibility = VISIBLE @@ -177,16 +170,15 @@ class FingerprintAuthenticationDialogFragment : FingerprintBaseDialogFragment() { - internal var newFingerprintEnrolled: Boolean = false + private var newFingerprintEnrolled: Boolean = false fun newFingerprintEnrolled(newFingerprintEnrolled: Boolean): Builder { this.newFingerprintEnrolled = newFingerprintEnrolled return this } - override fun createDialogFragment(): FingerprintAuthenticationDialogFragment { - return FingerprintAuthenticationDialogFragment() - } + override fun createDialogFragment(): FingerprintAuthenticationDialogFragment = + FingerprintAuthenticationDialogFragment() override fun addProperties(dialogFragment: FingerprintAuthenticationDialogFragment) { if (newFingerprintEnrolled) { @@ -194,9 +186,8 @@ class FingerprintAuthenticationDialogFragment : FingerprintBaseDialogFragment, fragmentManager: FragmentManager, diff --git a/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/base/ui/FingerprintBaseDialogFragment.kt b/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/base/ui/FingerprintBaseDialogFragment.kt index 9cac8c3..23a32d5 100644 --- a/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/base/ui/FingerprintBaseDialogFragment.kt +++ b/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/base/ui/FingerprintBaseDialogFragment.kt @@ -12,6 +12,9 @@ import android.support.v7.app.AppCompatDialogFragment import android.support.v7.view.ContextThemeWrapper import android.view.LayoutInflater import android.view.View +import android.widget.EditText +import android.widget.ImageView +import android.widget.TextView import com.jesusm.kfingerprintmanager.KFingerprintManager import com.jesusm.kfingerprintmanager.R import com.jesusm.kfingerprintmanager.base.FingerprintAssetsManager @@ -41,6 +44,7 @@ abstract class FingerprintBaseDialogFragment dialogRootView = layoutInflater.inflate(R.layout.fingerprint_dialog_container, null, false) fingerprintContainer = dialogRootView.findViewById(R.id.fingerprint_dialog_content) inflateViews(dialogRootView) + applyStyleToView(dialogRootView) val builder = AlertDialog.Builder(context, customDialogStyle) builder.setView(dialogRootView) @@ -54,7 +58,24 @@ abstract class FingerprintBaseDialogFragment } @CallSuper - open fun inflateViews(rootView: View) { + open fun inflateViews(rootView: View) {} + + private fun applyStyleToView(rootView: View) { + if (style.style != -1) { + customDialogStyle = style.style + } + + rootView.apply { + val titleView = findViewById(R.id.fingerprint_dialog_title) + titleView.text = getString(style.titleText) + val descriptionView = findViewById(R.id.fingerprint_dialog_description) + descriptionView.text = getString(style.descriptionText) + val checkboxView = findViewById(R.id.use_fingerprint_in_future_check) + checkboxView.text = getString(style.checkText) + val passwordView = findViewById(R.id.password) + passwordView.hint = getString(style.passwordTextDescription) + findViewById(R.id.fingerprint_icon).setImageResource(style.fingerprintIcon) + } } @CallSuper @@ -110,13 +131,19 @@ abstract class FingerprintBaseDialogFragment callback?.onFingerprintNotAvailable() } + private lateinit var style: Style + + fun applyStyle(style: Style) { + this.style = style + } + abstract class Builder, P : FingerprintBaseDialogPresenter> { - private var customStyle: Int = 0 + private var customStyle: Style = Style() private var callback: KFingerprintManager.FingerprintBaseCallback? = null private lateinit var fingerPrintHardware: FingerprintHardware private lateinit var cryptoObject: FingerprintManagerCompat.CryptoObject - fun withCustomStyle(customStyle: Int): Builder<*, *> { + fun withCustomStyle(customStyle: Style): Builder<*, *> { this.customStyle = customStyle return this } @@ -145,9 +172,7 @@ abstract class FingerprintBaseDialogFragment val presenter = createPresenter(dialogFragment) dialogFragment.presenter = presenter presenter.setFingerprintHardware(fingerPrintHardware, cryptoObject) - if (customStyle != -1) { - dialogFragment.customDialogStyle = customStyle - } + dialogFragment.applyStyle(customStyle) addProperties(dialogFragment) diff --git a/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/base/ui/Style.kt b/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/base/ui/Style.kt new file mode 100644 index 0000000..6232578 --- /dev/null +++ b/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/base/ui/Style.kt @@ -0,0 +1,13 @@ +package com.jesusm.kfingerprintmanager.base.ui + +import android.support.annotation.DrawableRes +import android.support.annotation.StringRes +import android.support.annotation.StyleRes +import com.jesusm.kfingerprintmanager.R + + +data class Style(@StyleRes val style: Int = -1, @StringRes val titleText: Int = R.string.fingerprint_title, + @StringRes val descriptionText: Int = R.string.fingerprint_description, + @StringRes val checkText: Int = R.string.use_fingerprint_in_future, + @StringRes val passwordTextDescription: Int = R.string.fingerprint_description, + @DrawableRes val fingerprintIcon: Int = R.drawable.fingerprint_manager_icon_white_24dp) \ No newline at end of file diff --git a/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/encryption/ui/FingerprintEncryptionDialogFragment.kt b/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/encryption/ui/FingerprintEncryptionDialogFragment.kt index 9c75fee..76e213b 100644 --- a/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/encryption/ui/FingerprintEncryptionDialogFragment.kt +++ b/kfingerprintmanager/src/main/kotlin/com/jesusm/kfingerprintmanager/encryption/ui/FingerprintEncryptionDialogFragment.kt @@ -16,12 +16,10 @@ class FingerprintEncryptionDialogFragment : FingerprintBaseDialogFragment Activity.bind(@IdRes idRes: Int): Lazy { @Suppress("UNCHECKED_CAST") - return unsafeLazy { findViewById(idRes) as T } + return unsafeLazy { findViewById(idRes)} } private fun unsafeLazy(initializer: () -> T) = lazy(LazyThreadSafetyMode.NONE, initializer) diff --git a/kfingerprintmanager/src/main/res/layout/fingerprint_dialog_backup.xml b/kfingerprintmanager/src/main/res/layout/fingerprint_dialog_backup.xml index 58795e5..2618a68 100644 --- a/kfingerprintmanager/src/main/res/layout/fingerprint_dialog_backup.xml +++ b/kfingerprintmanager/src/main/res/layout/fingerprint_dialog_backup.xml @@ -38,7 +38,7 @@ android:layout_below="@+id/description" android:layout_marginTop="16dp" android:ems="10" - android:hint="@string/password_description" + tools:hint="@string/password_description" android:imeOptions="actionGo" android:inputType="textPassword" /> @@ -52,7 +52,7 @@ android:layout_marginStart="4dp" android:layout_marginTop="16dp" android:checked="true" - android:text="@string/use_fingerprint_in_future" + tools:text="@string/use_fingerprint_in_future" android:visibility="gone" tools:visibility="visible" /> diff --git a/kfingerprintmanager/src/main/res/layout/fingerprint_dialog_content.xml b/kfingerprintmanager/src/main/res/layout/fingerprint_dialog_content.xml index d601692..b66a632 100644 --- a/kfingerprintmanager/src/main/res/layout/fingerprint_dialog_content.xml +++ b/kfingerprintmanager/src/main/res/layout/fingerprint_dialog_content.xml @@ -15,7 +15,6 @@ --> diff --git a/kfingerprintmanager/src/main/res/values/strings.xml b/kfingerprintmanager/src/main/res/values/strings.xml index 3b9f202..da3bf4d 100644 --- a/kfingerprintmanager/src/main/res/values/strings.xml +++ b/kfingerprintmanager/src/main/res/values/strings.xml @@ -7,8 +7,8 @@ Use fingerprint in the future use_fingerprint_to_authenticate_key - Confirm fingerprint to continue - Touch sensor + Confirm fingerprint to continue + Touch sensor Security -> Fingerprint\' to set up a fingerprint\"]]> diff --git a/sample/build.gradle b/sample/build.gradle index 1c42f5d..5ce2357 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -29,7 +29,7 @@ android { dependencies { compile 'com.android.support:appcompat-v7:' + parent.ext.supportLibsVersion compile project(':kfingerprintmanager') - compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.2-4" + compile "org.jetbrains.kotlin:kotlin-stdlib:1.1.3-2" } repositories { diff --git a/sample/src/main/java/jesusm/com/fingerprintmanager/sample/MainActivity.kt b/sample/src/main/java/jesusm/com/fingerprintmanager/sample/MainActivity.kt index cd7482d..7067b51 100644 --- a/sample/src/main/java/jesusm/com/fingerprintmanager/sample/MainActivity.kt +++ b/sample/src/main/java/jesusm/com/fingerprintmanager/sample/MainActivity.kt @@ -34,7 +34,7 @@ class MainActivity : AppCompatActivity() { private fun initClickListeners() { - findViewById(R.id.buttonDialogThemeLight).setOnClickListener { v -> + findViewById