Skip to content

Commit 9b7124f

Browse files
committed
Show logout confirm dialog
1 parent 1bc0f07 commit 9b7124f

File tree

11 files changed

+220
-10
lines changed

11 files changed

+220
-10
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package com.sun.ise.ui.common
2+
3+
import android.app.AlertDialog
4+
import android.content.Context
5+
import android.graphics.Color
6+
import android.graphics.drawable.ColorDrawable
7+
import android.os.Bundle
8+
import android.view.View.OnClickListener
9+
import android.view.WindowManager
10+
import androidx.annotation.StringRes
11+
import com.sun.ise.util.StringUtils
12+
import kotlinx.android.synthetic.main.dialog_confirmation.*
13+
14+
class MaterialDialog(context: Context) : AlertDialog(context) {
15+
16+
private lateinit var dialogMessage: String
17+
private lateinit var positiveText: String
18+
private lateinit var negativeText: String
19+
private lateinit var positiveClickListener: OnClickListener
20+
private lateinit var negativeClickListener: OnClickListener
21+
22+
private var canDismiss = true
23+
24+
override fun onCreate(savedInstanceState: Bundle?) {
25+
super.onCreate(savedInstanceState)
26+
setContentView(com.sun.ise.R.layout.dialog_confirmation)
27+
}
28+
29+
override fun onStart() {
30+
super.onStart()
31+
if (StringUtils.checkNotEmpty(positiveText) && positiveClickListener != null) {
32+
buttonConfirm.text = positiveText
33+
buttonConfirm.setOnClickListener(positiveClickListener)
34+
}
35+
if (StringUtils.checkNotEmpty(negativeText) && negativeClickListener != null) {
36+
buttonCancel.text = negativeText
37+
buttonCancel.setOnClickListener(negativeClickListener)
38+
}
39+
this.setCanceledOnTouchOutside(canDismiss)
40+
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
41+
window?.clearFlags(
42+
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or
43+
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
44+
)
45+
}
46+
47+
fun setMessage(message: String): MaterialDialog {
48+
dialogMessage = message
49+
return this
50+
}
51+
52+
fun setMessage(@StringRes messageId: Int): MaterialDialog {
53+
setMessage(context.getString(messageId))
54+
return this
55+
}
56+
57+
fun setPositiveButton(text: String, listener: OnClickListener): MaterialDialog {
58+
this.positiveText = text
59+
this.positiveClickListener = listener
60+
return this
61+
}
62+
63+
fun setPositiveButton(@StringRes textId: Int, listener: OnClickListener): MaterialDialog {
64+
this.setPositiveButton(context.getString(textId), listener)
65+
return this
66+
}
67+
68+
fun setNegativeButton(text: String, listener: OnClickListener): MaterialDialog {
69+
this.negativeText = text
70+
this.negativeClickListener = listener
71+
return this
72+
}
73+
74+
fun setNegativeButton(@StringRes textId: Int, listener: OnClickListener): MaterialDialog {
75+
this.setNegativeButton(context.getString(textId), listener)
76+
return this
77+
}
78+
79+
fun dismissOnTouchOutside(dismiss: Boolean): MaterialDialog {
80+
this.canDismiss = dismiss
81+
return this
82+
}
83+
}

app/src/main/java/com/sun/ise/ui/main/profile/ProfileFragment.kt

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.sun.ise.data.model.UserWrapper
1313
import com.sun.ise.data.remote.RemoteDataSource
1414
import com.sun.ise.data.remote.RetrofitService
1515
import com.sun.ise.data.repository.UserRepository
16+
import com.sun.ise.ui.common.MaterialDialog
1617
import com.sun.ise.ui.login.LoginActivity
1718
import com.sun.ise.util.StringUtils
1819
import com.sun.ise.util.ViewModelUtil
@@ -42,16 +43,32 @@ class ProfileFragment : Fragment() {
4243
val user = viewModel.getCurrentUser()
4344
if (user != null) bindData(user)
4445
buttonLogout.setOnClickListener {
45-
viewModel.logout()
46-
LoginActivity.getIntent(context!!).apply {
47-
flags = Intent.FLAG_ACTIVITY_NEW_TASK or
48-
Intent.FLAG_ACTIVITY_CLEAR_TOP or
49-
Intent.FLAG_ACTIVITY_CLEAR_TASK
50-
startActivity(this)
51-
}
46+
showConfirmDialog()
5247
}
5348
}
5449

50+
private fun showConfirmDialog() {
51+
val dialog = MaterialDialog(activity!!)
52+
dialog.apply {
53+
setMessage(R.string.confirm_message)
54+
setPositiveButton(R.string.confirm_positive_button, View.OnClickListener {
55+
viewModel.logout()
56+
LoginActivity.getIntent(activity!!).apply {
57+
flags = Intent.FLAG_ACTIVITY_NEW_TASK or
58+
Intent.FLAG_ACTIVITY_CLEAR_TOP or
59+
Intent.FLAG_ACTIVITY_CLEAR_TASK
60+
startActivity(this)
61+
}
62+
activity!!.finish()
63+
this.dismiss()
64+
})
65+
setNegativeButton(R.string.confirm_negative_button, View.OnClickListener {
66+
this.dismiss()
67+
})
68+
}
69+
dialog.show()
70+
}
71+
5572
private fun bindData(userWrapper: UserWrapper) {
5673
val user = userWrapper.user
5774
textName.text = user.name
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<shape
3+
xmlns:android="http://schemas.android.com/apk/res/android">
4+
<solid android:color="@android:color/white"/>
5+
<stroke
6+
android:width="@dimen/dp_1"
7+
android:color="#e57f7f"/>
8+
<corners android:radius="@dimen/dp_10"/>
9+
</shape>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<selector xmlns:android="http://schemas.android.com/apk/res/android">
3+
<item android:state_pressed="true">
4+
<shape>
5+
<solid android:color="#d11919"/>
6+
<stroke android:width="@dimen/dp_1" android:color="#e57f7f"/>
7+
<corners android:radius="@dimen/dp_10"/>
8+
<padding android:bottom="@dimen/dp_10" android:left="@dimen/dp_10" android:right="@dimen/dp_10" android:top="@dimen/dp_10"/>
9+
</shape>
10+
</item>
11+
<item>
12+
<shape>
13+
<gradient android:angle="270" android:endColor="#db4c4c" android:startColor="#cc0000"/>
14+
<stroke android:width="@dimen/dp_1" android:color="#e57f7f"/>
15+
<corners android:radius="@dimen/dp_10"/>
16+
<padding android:bottom="@dimen/dp_10" android:left="@dimen/dp_10" android:right="@dimen/dp_10" android:top="@dimen/dp_10"/>
17+
</shape>
18+
</item>
19+
</selector>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<shape
3+
xmlns:android="http://schemas.android.com/apk/res/android">
4+
<solid android:color="@android:color/white"/>
5+
<stroke
6+
android:width="@dimen/dp_1"
7+
android:color="#e57f7f"/>
8+
<corners android:radius="@dimen/dp_10"/>
9+
<padding
10+
android:bottom="@dimen/dp_10"
11+
android:left="@dimen/dp_10"
12+
android:right="@dimen/dp_10"
13+
android:top="@dimen/dp_10"/>
14+
</shape>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<shape
3+
xmlns:android="http://schemas.android.com/apk/res/android">
4+
<solid android:color="#d11919"/>
5+
<stroke
6+
android:width="@dimen/dp_1"
7+
android:color="#e57f7f"/>
8+
<corners android:radius="@dimen/dp_10"/>
9+
</shape>

app/src/main/res/layout/activity_login.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
app:layout_constraintStart_toStartOf="parent"
3636
app:layout_constraintTop_toBottomOf="@id/imageLogo">
3737

38-
<EditText
38+
<com.google.android.material.textfield.TextInputEditText
3939
android:id="@+id/editEmail"
4040
android:layout_width="match_parent"
4141
android:layout_height="wrap_content"
@@ -56,7 +56,7 @@
5656
app:layout_constraintVertical_bias="0.1"
5757
app:layout_constraintVertical_chainStyle="packed">
5858

59-
<EditText
59+
<com.google.android.material.textfield.TextInputEditText
6060
android:id="@+id/editPassword"
6161
android:layout_width="match_parent"
6262
android:layout_height="wrap_content"
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<androidx.constraintlayout.widget.ConstraintLayout
3+
xmlns:android="http://schemas.android.com/apk/res/android"
4+
xmlns:app="http://schemas.android.com/apk/res-auto"
5+
android:layout_width="match_parent"
6+
android:layout_height="wrap_content"
7+
android:background="@drawable/bg_confirmation_dialog"
8+
android:orientation="vertical">
9+
10+
<TextView
11+
android:id="@+id/textDialogMessage"
12+
android:layout_width="@dimen/dp_0"
13+
android:layout_height="wrap_content"
14+
android:layout_margin="@dimen/dp_10"
15+
android:fontFamily="@font/montserrat"
16+
android:text="@string/confirm_message"
17+
android:textSize="@dimen/sp_25"
18+
app:layout_constraintBottom_toTopOf="@id/buttonConfirm"
19+
app:layout_constraintEnd_toEndOf="parent"
20+
app:layout_constraintStart_toStartOf="parent"
21+
app:layout_constraintTop_toTopOf="parent"/>
22+
23+
<Button
24+
android:id="@+id/buttonConfirm"
25+
android:layout_width="wrap_content"
26+
android:layout_height="wrap_content"
27+
android:layout_margin="@dimen/dp_10"
28+
android:background="@drawable/bg_positive_button"
29+
android:text="@string/confirm_positive_button"
30+
android:textColor="@android:color/white"
31+
app:layout_constraintBottom_toBottomOf="parent"
32+
app:layout_constraintEnd_toEndOf="parent"
33+
app:layout_constraintTop_toBottomOf="@id/textDialogMessage"/>
34+
35+
<Button
36+
android:id="@+id/buttonCancel"
37+
android:layout_width="wrap_content"
38+
android:layout_height="wrap_content"
39+
android:layout_margin="@dimen/dp_10"
40+
android:background="@drawable/bg_negative_button"
41+
android:text="@string/confirm_negative_button"
42+
app:layout_constraintBaseline_toBaselineOf="@id/buttonConfirm"
43+
app:layout_constraintBottom_toBottomOf="parent"
44+
app:layout_constraintEnd_toStartOf="@id/buttonConfirm"
45+
app:layout_constraintTop_toBottomOf="@id/textDialogMessage"/>
46+
47+
</androidx.constraintlayout.widget.ConstraintLayout>

app/src/main/res/layout/profile_fragment.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,8 +176,13 @@
176176

177177
<Button
178178
android:id="@+id/buttonLogout"
179-
android:layout_width="0dp"
179+
style="@style/ProfileContent"
180+
android:layout_width="@dimen/dp_0"
180181
android:layout_height="wrap_content"
182+
android:layout_marginTop="@dimen/dp_20"
183+
android:layout_marginBottom="@dimen/dp_10"
184+
android:textColor="@android:color/white"
185+
android:background="@drawable/bg_logout_button"
181186
android:text="@string/button_logout"
182187
app:layout_constraintBottom_toBottomOf="parent"
183188
app:layout_constraintEnd_toEndOf="parent"

app/src/main/res/values/colors.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,8 @@
1414
<color name="color_blue_500">#016087</color>
1515
<color name="color_dark_gray">#A9A9A9</color>
1616
<color name="color_default_background">#FAFAFA</color>
17+
18+
<color name="text_title">#CC000000</color>
19+
<color name="text_secondary">#8C000000</color>
20+
<color name="light_blue">#03a9f4</color>
1721
</resources>

0 commit comments

Comments
 (0)