Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions app/src/main/java/com/sun/ise/ui/common/MaterialDialog.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
package com.sun.ise.ui.common

import android.app.AlertDialog
import android.content.Context
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.View.OnClickListener
import android.view.WindowManager
import androidx.annotation.StringRes
import com.sun.ise.util.StringUtils
import kotlinx.android.synthetic.main.dialog_confirmation.*

class MaterialDialog(context: Context) : AlertDialog(context) {

private lateinit var dialogMessage: String
private lateinit var positiveText: String
private lateinit var negativeText: String
private lateinit var positiveClickListener: OnClickListener
private lateinit var negativeClickListener: OnClickListener

private var canDismiss = true

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(com.sun.ise.R.layout.dialog_confirmation)
}

override fun onStart() {
super.onStart()
if (StringUtils.checkNotEmpty(positiveText) && positiveClickListener != null) {
buttonConfirm.text = positiveText
buttonConfirm.setOnClickListener(positiveClickListener)
}
if (StringUtils.checkNotEmpty(negativeText) && negativeClickListener != null) {
buttonCancel.text = negativeText
buttonCancel.setOnClickListener(negativeClickListener)
}
this.setCanceledOnTouchOutside(canDismiss)
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
window?.clearFlags(
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM
)
}

fun setMessage(message: String): MaterialDialog {
dialogMessage = message
return this
}

fun setMessage(@StringRes messageId: Int): MaterialDialog {
setMessage(context.getString(messageId))
return this
}

fun setPositiveButton(text: String, listener: OnClickListener): MaterialDialog {
this.positiveText = text
this.positiveClickListener = listener
return this
}

fun setPositiveButton(@StringRes textId: Int, listener: OnClickListener): MaterialDialog {
this.setPositiveButton(context.getString(textId), listener)
return this
}

fun setNegativeButton(text: String, listener: OnClickListener): MaterialDialog {
this.negativeText = text
this.negativeClickListener = listener
return this
}

fun setNegativeButton(@StringRes textId: Int, listener: OnClickListener): MaterialDialog {
this.setNegativeButton(context.getString(textId), listener)
return this
}

fun dismissOnTouchOutside(dismiss: Boolean): MaterialDialog {
this.canDismiss = dismiss
return this
}
}
31 changes: 24 additions & 7 deletions app/src/main/java/com/sun/ise/ui/main/profile/ProfileFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import com.sun.ise.data.model.UserWrapper
import com.sun.ise.data.remote.RemoteDataSource
import com.sun.ise.data.remote.RetrofitService
import com.sun.ise.data.repository.UserRepository
import com.sun.ise.ui.common.MaterialDialog
import com.sun.ise.ui.login.LoginActivity
import com.sun.ise.util.StringUtils
import com.sun.ise.util.ViewModelUtil
Expand Down Expand Up @@ -42,16 +43,32 @@ class ProfileFragment : Fragment() {
val user = viewModel.getCurrentUser()
if (user != null) bindData(user)
buttonLogout.setOnClickListener {
viewModel.logout()
LoginActivity.getIntent(context!!).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or
Intent.FLAG_ACTIVITY_CLEAR_TOP or
Intent.FLAG_ACTIVITY_CLEAR_TASK
startActivity(this)
}
showConfirmDialog()
}
}

private fun showConfirmDialog() {
val dialog = MaterialDialog(activity!!)
dialog.apply {
setMessage(R.string.confirm_message)
setPositiveButton(R.string.confirm_positive_button, View.OnClickListener {
viewModel.logout()
LoginActivity.getIntent(activity!!).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or
Intent.FLAG_ACTIVITY_CLEAR_TOP or
Intent.FLAG_ACTIVITY_CLEAR_TASK
startActivity(this)
}
activity!!.finish()
this.dismiss()
})
setNegativeButton(R.string.confirm_negative_button, View.OnClickListener {
this.dismiss()
})
}
dialog.show()
}

private fun bindData(userWrapper: UserWrapper) {
val user = userWrapper.user
textName.text = user.name
Expand Down
9 changes: 9 additions & 0 deletions app/src/main/res/drawable/bg_confirmation_dialog.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/white"/>
<stroke
android:width="@dimen/dp_1"
android:color="#e57f7f"/>
<corners android:radius="@dimen/dp_10"/>
</shape>
19 changes: 19 additions & 0 deletions app/src/main/res/drawable/bg_logout_button.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<solid android:color="#d11919"/>
<stroke android:width="@dimen/dp_1" android:color="#e57f7f"/>
<corners android:radius="@dimen/dp_10"/>
<padding android:bottom="@dimen/dp_10" android:left="@dimen/dp_10" android:right="@dimen/dp_10" android:top="@dimen/dp_10"/>
</shape>
</item>
<item>
<shape>
<gradient android:angle="270" android:endColor="#db4c4c" android:startColor="#cc0000"/>
<stroke android:width="@dimen/dp_1" android:color="#e57f7f"/>
<corners android:radius="@dimen/dp_10"/>
<padding android:bottom="@dimen/dp_10" android:left="@dimen/dp_10" android:right="@dimen/dp_10" android:top="@dimen/dp_10"/>
</shape>
</item>
</selector>
14 changes: 14 additions & 0 deletions app/src/main/res/drawable/bg_negative_button.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@android:color/white"/>
<stroke
android:width="@dimen/dp_1"
android:color="#e57f7f"/>
<corners android:radius="@dimen/dp_10"/>
<padding
android:bottom="@dimen/dp_10"
android:left="@dimen/dp_10"
android:right="@dimen/dp_10"
android:top="@dimen/dp_10"/>
</shape>
9 changes: 9 additions & 0 deletions app/src/main/res/drawable/bg_positive_button.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#d11919"/>
<stroke
android:width="@dimen/dp_1"
android:color="#e57f7f"/>
<corners android:radius="@dimen/dp_10"/>
</shape>
4 changes: 2 additions & 2 deletions app/src/main/res/layout/activity_login.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/imageLogo">

<EditText
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editEmail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
Expand All @@ -56,7 +56,7 @@
app:layout_constraintVertical_bias="0.1"
app:layout_constraintVertical_chainStyle="packed">

<EditText
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
Expand Down
47 changes: 47 additions & 0 deletions app/src/main/res/layout/dialog_confirmation.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_confirmation_dialog"
android:orientation="vertical">

<TextView
android:id="@+id/textDialogMessage"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_10"
android:fontFamily="@font/montserrat"
android:text="@string/confirm_message"
android:textSize="@dimen/sp_25"
app:layout_constraintBottom_toTopOf="@id/buttonConfirm"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>

<Button
android:id="@+id/buttonConfirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_10"
android:background="@drawable/bg_positive_button"
android:text="@string/confirm_positive_button"
android:textColor="@android:color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/textDialogMessage"/>

<Button
android:id="@+id/buttonCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/dp_10"
android:background="@drawable/bg_negative_button"
android:text="@string/confirm_negative_button"
app:layout_constraintBaseline_toBaselineOf="@id/buttonConfirm"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/buttonConfirm"
app:layout_constraintTop_toBottomOf="@id/textDialogMessage"/>

</androidx.constraintlayout.widget.ConstraintLayout>
7 changes: 6 additions & 1 deletion app/src/main/res/layout/profile_fragment.xml
Original file line number Diff line number Diff line change
Expand Up @@ -176,8 +176,13 @@

<Button
android:id="@+id/buttonLogout"
android:layout_width="0dp"
style="@style/ProfileContent"
android:layout_width="@dimen/dp_0"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginBottom="@dimen/dp_10"
android:textColor="@android:color/white"
android:background="@drawable/bg_logout_button"
android:text="@string/button_logout"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/res/values/colors.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,8 @@
<color name="color_blue_500">#016087</color>
<color name="color_dark_gray">#A9A9A9</color>
<color name="color_default_background">#FAFAFA</color>

<color name="text_title">#CC000000</color>
<color name="text_secondary">#8C000000</color>
<color name="light_blue">#03a9f4</color>
</resources>
3 changes: 3 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,7 @@
<string name="toast_login_failed">Wrong email or password!</string>
<string name="toast_empty_email">Please enter email!</string>
<string name="toast_empty_password">Please enter password!</string>
<string name="confirm_message">Are you sure to logout?</string>
<string name="confirm_positive_button">Confirm</string>
<string name="confirm_negative_button">Cancel</string>
</resources>