Browse Source

Merge branch 'reset-pwd-dialog' of wayne.huang/KdanLoginRegisterUI into master

wayne.huang 6 years ago
parent
commit
1ec48b8b20

+ 1 - 0
build.gradle

@@ -38,6 +38,7 @@ dependencies {
 
     implementation 'com.android.support:appcompat-v7:27.0.0'
     implementation 'com.android.support.constraint:constraint-layout:1.1.2'
+    implementation 'com.android.support:support-v4:27.1.1'
     testImplementation 'junit:junit:4.12'
     androidTestImplementation 'com.android.support.test:runner:1.0.2'
     androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

+ 58 - 0
src/main/java/com/kdanmobile/kdanloginregisterui/ResetPwdDialogFragment.kt

@@ -0,0 +1,58 @@
+package com.kdanmobile.kdanloginregisterui
+
+import android.content.Context
+import android.os.Bundle
+import android.support.v4.app.DialogFragment
+import android.support.v4.app.FragmentManager
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import kotlinx.android.synthetic.main.dialog_reset_pwd.*
+import org.apache.commons.validator.routines.EmailValidator
+import java.lang.RuntimeException
+
+class ResetPwdDialogFragment : DialogFragment() {
+
+    private var listener: Listener? = null
+
+    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+        return inflater.inflate(R.layout.dialog_reset_pwd, container, false)
+    }
+
+    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+        super.onViewCreated(view, savedInstanceState)
+        btn_resetPwd_positive.setOnClickListener {
+            val email = et_resetPwd_email.text.toString()
+            if (email.isEmpty() || !EmailValidator.getInstance().isValid(email)) {
+                val error = it.context.getString(R.string.kdanlrui_email_login_register_dialog_email_error)
+                et_resetPwd_email.error = error
+            } else {
+                listener?.onClickSendResetPwdEmail(email)
+                dismiss()
+            }
+        }
+        btn_resetPwd_negative.setOnClickListener {
+            dismiss()
+        }
+    }
+
+    override fun onAttach(context: Context?) {
+        super.onAttach(context)
+        if (context is Listener) {
+            listener = context
+        } else {
+            if (BuildConfig.DEBUG) {
+                val msg = "${context.toString()} must implement ${ResetPwdDialogFragment.Listener::class.java.name}."
+                throw RuntimeException(msg)
+            }
+        }
+    }
+
+    fun show(fragmentManager: FragmentManager) {
+        show(fragmentManager, ResetPwdDialogFragment::class.java.simpleName)
+    }
+
+    interface Listener {
+        fun onClickSendResetPwdEmail(email: String)
+    }
+}

+ 66 - 0
src/main/res/layout/dialog_reset_pwd.xml

@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:theme="@style/KdanLoginRegisterTheme"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+    <TextView
+            android:id="@+id/tv_resetPwd_title"
+            android:fontFamily="sans-serif-medium"
+            android:textColor="#DE000000"
+            android:textSize="20sp"
+            android:text="@string/kdanlrui_reset_pwd_dialog_title"
+            app:layout_constraintTop_toTopOf="parent"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            android:layout_marginTop="24dp"
+            android:layout_marginLeft="24dp"
+            android:layout_marginRight="24dp"
+            android:gravity="left"
+            android:layout_width="240dp"
+            android:layout_height="wrap_content"/>
+    <TextView
+            android:id="@+id/tv_resetPwd_description"
+            android:textColor="#99000000"
+            android:textSize="16sp"
+            android:text="@string/kdanlrui_reset_pwd_dialog_description"
+            app:layout_constraintLeft_toLeftOf="@id/tv_resetPwd_title"
+            app:layout_constraintRight_toRightOf="@id/tv_resetPwd_title"
+            app:layout_constraintTop_toBottomOf="@id/tv_resetPwd_title"
+            android:gravity="left"
+            android:layout_marginTop="24dp"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"/>
+    <EditText
+            android:id="@+id/et_resetPwd_email"
+            android:singleLine="true"
+            android:inputType="textEmailAddress"
+            android:hint="@string/kdanlrui_reset_pwd_dialog_email_hint"
+            app:layout_constraintLeft_toLeftOf="@id/tv_resetPwd_title"
+            app:layout_constraintRight_toRightOf="@id/tv_resetPwd_title"
+            app:layout_constraintTop_toBottomOf="@id/tv_resetPwd_description"
+            android:layout_marginTop="24dp"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"/>
+    <Button
+            style="@style/Widget.AppCompat.Button.Borderless.Colored"
+            android:id="@+id/btn_resetPwd_positive"
+            android:text="@string/kdanlrui_reset_pwd_dialog_positive_btn"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toBottomOf="@id/et_resetPwd_email"
+            android:layout_marginTop="36dp"
+            android:layout_marginRight="8dp"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+    <Button
+            style="@style/Widget.AppCompat.Button.Borderless.Colored"
+            android:id="@+id/btn_resetPwd_negative"
+            android:text="@string/kdanlrui_reset_pwd_dialog_negative_btn"
+            app:layout_constraintRight_toLeftOf="@id/btn_resetPwd_positive"
+            app:layout_constraintTop_toTopOf="@id/btn_resetPwd_positive"
+            app:layout_constraintBottom_toBottomOf="@id/btn_resetPwd_positive"
+            android:layout_marginRight="8dp"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
+</android.support.constraint.ConstraintLayout>

+ 2 - 0
src/main/res/values-de/strings.xml

@@ -27,4 +27,6 @@
 	<string name="kdanlrui_bind_account_bind_text">Haben Sie bereits ein Konto? Link zu meinem %1$s Konto.\"</string>
 	<string name="kdanlrui_bind_account_bind_btn">Verbinden</string>
 	<string name="kdanlrui_bind_account_bind_explanation">Kdan Cloud erhält und zeigt nur den Namen und die E-Mail-Adresse aus Ihrem %1$s-Account. Wir werden keine weiteren privaten Informationen nutzen oder in Ihrem Namen posten.</string>
+    <string name="kdanlrui_reset_pwd_dialog_email_hint">E-Mail Adresse</string>
+    <string name="kdanlrui_reset_pwd_dialog_title">Passwort zurücksetzen</string>
 </resources>

+ 2 - 0
src/main/res/values-es/strings.xml

@@ -28,4 +28,6 @@
     <string name="kdanlrui_bind_account_bind_text">Ya tienes una cuenta? Enlace a mi cuenta de %1$s.</string>
     <string name="kdanlrui_bind_account_bind_btn">Conectar</string>
     <string name="kdanlrui_bind_account_bind_explanation">Kdan Cloud solo recibirá tu nombre de usuario y tu dirección de correo de tu cuenta de %1$s. No usaremos otros datos privados ni publicaremos en tu nombre.</string>
+    <string name="kdanlrui_reset_pwd_dialog_email_hint">Dirección de correo electrónico</string>
+    <string name="kdanlrui_reset_pwd_dialog_title">Restablecer contraseña</string>
 </resources>

+ 2 - 0
src/main/res/values-it/strings.xml

@@ -27,4 +27,6 @@
     <string name="kdanlrui_bind_account_bind_text">Hai già un account? Link al mio account di %1$s</string>
     <string name="kdanlrui_bind_account_bind_btn">Connetti</string>
     <string name="kdanlrui_bind_account_bind_explanation">Kdan Cloud riceverà solo il nome visualizzato e indirizzo email dal tuo %1$s account. Non useremo altra informazione o messaggio privato a vostro nome.</string>
+    <string name="kdanlrui_reset_pwd_dialog_email_hint">Indirizzo email</string>
+    <string name="kdanlrui_reset_pwd_dialog_title">Reset Password</string>
 </resources>

+ 2 - 0
src/main/res/values-ja/strings.xml

@@ -28,4 +28,6 @@
     <string name="kdanlrui_bind_account_bind_text">既にアカウントをお持ちですか?%1$sアカウントにリンクします。</string>
     <string name="kdanlrui_bind_account_bind_btn">接続</string>
     <string name="kdanlrui_bind_account_bind_explanation">Kdan Cloudはお客様の%1$sのアカウントより表示名とメールアドレスだけを受け取るため、その他の個人情報を利用したり、ご本人の代わりにメッセージを投稿したりすることがございません。</string>
+    <string name="kdanlrui_reset_pwd_dialog_email_hint">メールアドレス</string>
+    <string name="kdanlrui_reset_pwd_dialog_title">パスワードのリセット</string>
 </resources>

+ 2 - 0
src/main/res/values-ko/strings.xml

@@ -27,4 +27,6 @@
     <string name="kdanlrui_bind_account_bind_text">이미 계정이 있으신가요? %1$s 계정으로 연결</string>
     <string name="kdanlrui_bind_account_bind_btn">연결하기</string>
     <string name="kdanlrui_bind_account_bind_explanation">Kdan Cloud 는 %1$s계정에서 표기 이름과 이메일 주소만을 받고 있습니다. 저희는 사용자를 대신해서 다른 개인정보나 게시물을 이용하지 않습니다.</string>
+    <string name="kdanlrui_reset_pwd_dialog_email_hint">이메일 주소</string>
+    <string name="kdanlrui_reset_pwd_dialog_title">비밀번호 재설정</string>
 </resources>

+ 2 - 0
src/main/res/values-pt/strings.xml

@@ -28,4 +28,6 @@
     <string name="kdanlrui_bind_account_bind_text">Você já tem uma conta? Link para minha conta do %1$s</string>
     <string name="kdanlrui_bind_account_bind_btn">Conectar</string>
     <string name="kdanlrui_bind_account_bind_explanation">Kdan Cloud apenas receberá o nome de exibição e endereço de e-mail da sua conta do %1$s. Nós não usaremos outras informações privadas e não faremos publicações em seu nome.</string>
+    <string name="kdanlrui_reset_pwd_dialog_email_hint">Endereço de e-mail</string>
+    <string name="kdanlrui_reset_pwd_dialog_title">Restaurar senha</string>
 </resources>

+ 2 - 0
src/main/res/values-ru/strings.xml

@@ -27,4 +27,6 @@
     <string name="kdanlrui_bind_account_bind_text">Уже есть аккаунт? Ссылка на мой аккаунт %1$s.</string>
     <string name="kdanlrui_bind_account_bind_btn">Подсоединиться</string>
     <string name="kdanlrui_bind_account_bind_explanation">Kdan Cloud будет иметь доступ только к вашему отображаемому имени и электронной почте из вашего аккаунта %1$s. Мы не будем использовать другие персональные данные или отправлять посты от вашего имени.</string>
+    <string name="kdanlrui_reset_pwd_dialog_email_hint">Адрес электронной почты</string>
+    <string name="kdanlrui_reset_pwd_dialog_title">Сброс Пароля</string>
 </resources>

+ 7 - 0
src/main/res/values-v21/styles.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <style name="KdanLoginRegisterTheme" parent="@style/KdanLoginRegisterThemeBase">
+        <item name="android:colorAccent">@color/kdanlrui_colorAccent</item>
+        <item name="android:colorControlActivated">@color/kdanlrui_colorAccent</item>
+    </style>
+</resources>

+ 4 - 0
src/main/res/values-zh-rTW/strings.xml

@@ -28,4 +28,8 @@
     <string name="kdanlrui_bind_account_bind_text">已是註冊會員? 連結我的%1$s帳號</string>
     <string name="kdanlrui_bind_account_bind_btn">連結</string>
     <string name="kdanlrui_bind_account_bind_explanation">Kdan Cloud只透過%1$s來取得您的Email和姓名,將不會使用其他私人資訊或張貼文章.</string>
+    <string name="kdanlrui_reset_pwd_dialog_title">重設密碼</string>
+    <string name="kdanlrui_reset_pwd_dialog_description">輸入您的Email並取得密碼指示信件</string>
+    <string name="kdanlrui_reset_pwd_dialog_email_hint">Email信箱</string>
+    <string name="kdanlrui_reset_pwd_dialog_positive_btn">送出</string>
 </resources>

+ 4 - 0
src/main/res/values-zh/strings.xml

@@ -28,4 +28,8 @@
     <string name="kdanlrui_bind_account_bind_text">已经是注册会员?绑定%1$s账号。</string>
     <string name="kdanlrui_bind_account_bind_btn">绑定</string>
     <string name="kdanlrui_bind_account_bind_explanation">凯钿软件通过%1$s获取您的用户名和邮箱,我们不会以此泄露您的个人信息也不会以用户名义发布任何信息</string>
+    <string name="kdanlrui_reset_pwd_dialog_title">重设密码</string>
+    <string name="kdanlrui_reset_pwd_dialog_description">输入您的Email并取得密码指示信件</string>
+    <string name="kdanlrui_reset_pwd_dialog_email_hint">Email邮箱</string>
+    <string name="kdanlrui_reset_pwd_dialog_positive_btn">送出</string>
 </resources>

+ 6 - 0
src/main/res/values/strings.xml

@@ -40,4 +40,10 @@
     <string name="kdanlrui_email_login_register_dialog_name_error">Invalid name</string>
     <string name="kdanlrui_email_login_register_dialog_email_error">Invalid email</string>
     <string name="kdanlrui_email_login_register_dialog_pwd_error">Invalid password</string>
+
+    <string name="kdanlrui_reset_pwd_dialog_title">Reset Password</string>
+    <string name="kdanlrui_reset_pwd_dialog_description">Enter your email to receive the password instructions.</string>
+    <string name="kdanlrui_reset_pwd_dialog_email_hint">Email Address</string>
+    <string name="kdanlrui_reset_pwd_dialog_positive_btn">Send</string>
+    <string name="kdanlrui_reset_pwd_dialog_negative_btn" translatable="false">@android:string/cancel</string>
 </resources>

+ 3 - 0
src/main/res/values/styles.xml

@@ -14,4 +14,7 @@
         <item name="android:paddingLeft">10dp</item>
         <item name="android:paddingRight">10dp</item>
     </style>
+
+    <style name="KdanLoginRegisterThemeBase" parent="Theme.AppCompat.Light.DarkActionBar" />
+    <style name="KdanLoginRegisterTheme" parent="KdanLoginRegisterThemeBase" />
 </resources>