New: Feedback screen in profile.
This commit is contained in:
parent
6e44614207
commit
8371f9c53a
|
@ -43,6 +43,12 @@ object Report {
|
||||||
object ImportCompleted : Restore("importcompleted", 50)
|
object ImportCompleted : Restore("importcompleted", 50)
|
||||||
object Success : Restore("success", 100)
|
object Success : Restore("success", 100)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sealed class UserFeedback(stepName: String, step: Int, vararg properties: Pair<String, Any>) : Feedback.Funnel("feedback", stepName, step, *properties) {
|
||||||
|
object Started : UserFeedback("started", 0)
|
||||||
|
object Cancelled : UserFeedback("cancelled", 1)
|
||||||
|
class Submitted(rating: Int, question1: String, question2: String, question3: String) : UserFeedback("submitted", 100, "rating" to rating, "question1" to question1, "question2" to question2, "question3" to question3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object Error {
|
object Error {
|
||||||
|
@ -84,6 +90,7 @@ object Report {
|
||||||
DETAIL("wallet.detail"),
|
DETAIL("wallet.detail"),
|
||||||
LANDING,
|
LANDING,
|
||||||
PROFILE,
|
PROFILE,
|
||||||
|
FEEDBACK,
|
||||||
RECEIVE,
|
RECEIVE,
|
||||||
RESTORE,
|
RESTORE,
|
||||||
SCAN,
|
SCAN,
|
||||||
|
@ -120,6 +127,8 @@ object Report {
|
||||||
PROFILE_VIEW_USER_LOGS("profile.view.user.logs"),
|
PROFILE_VIEW_USER_LOGS("profile.view.user.logs"),
|
||||||
PROFILE_VIEW_DEV_LOGS("profile.view.dev.logs"),
|
PROFILE_VIEW_DEV_LOGS("profile.view.dev.logs"),
|
||||||
PROFILE_SEND_FEEDBACK("profile.send.feedback"),
|
PROFILE_SEND_FEEDBACK("profile.send.feedback"),
|
||||||
|
FEEDBACK_CANCEL("feedback.cancel"),
|
||||||
|
FEEDBACK_SUBMIT("feedback.submit"),
|
||||||
RECEIVE_SCAN("receive.scan"),
|
RECEIVE_SCAN("receive.scan"),
|
||||||
RECEIVE_BACK("receive.back"),
|
RECEIVE_BACK("receive.back"),
|
||||||
RESTORE_DONE("restore.done"),
|
RESTORE_DONE("restore.done"),
|
||||||
|
|
|
@ -0,0 +1,92 @@
|
||||||
|
package cash.z.ecc.android.ui.profile
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewTreeObserver
|
||||||
|
import android.view.WindowManager
|
||||||
|
import android.widget.Toast
|
||||||
|
import androidx.core.view.doOnLayout
|
||||||
|
import cash.z.ecc.android.databinding.FragmentFeedbackBinding
|
||||||
|
import cash.z.ecc.android.di.viewmodel.viewModel
|
||||||
|
import cash.z.ecc.android.feedback.Report
|
||||||
|
import cash.z.ecc.android.feedback.Report.Funnel.UserFeedback
|
||||||
|
import cash.z.ecc.android.feedback.Report.Tap.FEEDBACK_CANCEL
|
||||||
|
import cash.z.ecc.android.feedback.Report.Tap.FEEDBACK_SUBMIT
|
||||||
|
import cash.z.ecc.android.ui.base.BaseFragment
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fragment representing the home screen of the app. This is the screen most often seen by the user when launching the
|
||||||
|
* application.
|
||||||
|
*/
|
||||||
|
class FeedbackFragment : BaseFragment<FragmentFeedbackBinding>() {
|
||||||
|
override val screen = Report.Screen.FEEDBACK
|
||||||
|
|
||||||
|
override fun inflate(inflater: LayoutInflater): FragmentFeedbackBinding =
|
||||||
|
FragmentFeedbackBinding.inflate(inflater)
|
||||||
|
|
||||||
|
private lateinit var ratings: Array<View>
|
||||||
|
|
||||||
|
// private val padder = ViewTreeObserver.OnGlobalLayoutListener {
|
||||||
|
// Toast.makeText(mainActivity, "LAYOUT", Toast.LENGTH_SHORT).show()
|
||||||
|
// }
|
||||||
|
|
||||||
|
//
|
||||||
|
// LifeCycle
|
||||||
|
//
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
// mainActivity!!.window.decorView.viewTreeObserver.addOnGlobalLayoutListener(padder)
|
||||||
|
// mainActivity!!.findViewById<View>(android.R.id.content).viewTreeObserver.addOnGlobalLayoutListener(padder)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
super.onPause()
|
||||||
|
// mainActivity!!.window.decorView.viewTreeObserver.removeOnGlobalLayoutListener(padder)
|
||||||
|
// mainActivity!!.findViewById<View>(android.R.id.content).viewTreeObserver.removeOnGlobalLayoutListener(padder)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
with(binding) {
|
||||||
|
backButtonHitArea.setOnClickListener(::onFeedbackCancel)
|
||||||
|
buttonSubmit.setOnClickListener(::onFeedbackSubmit)
|
||||||
|
|
||||||
|
ratings = arrayOf(feedbackExp1, feedbackExp2, feedbackExp3, feedbackExp4, feedbackExp5)
|
||||||
|
ratings.forEach {
|
||||||
|
it.setOnClickListener(::onRatingClicked)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Private API
|
||||||
|
//
|
||||||
|
|
||||||
|
private fun onFeedbackSubmit(view: View) {
|
||||||
|
Toast.makeText(mainActivity, "Thanks for the feedback!", Toast.LENGTH_LONG).show()
|
||||||
|
tapped(FEEDBACK_SUBMIT)
|
||||||
|
|
||||||
|
val q1 = binding.inputQuestion1.editText?.text.toString()
|
||||||
|
val q2 = binding.inputQuestion2.editText?.text.toString()
|
||||||
|
val q3 = binding.inputQuestion3.editText?.text.toString()
|
||||||
|
val rating = ratings.indexOfFirst { it.isActivated } + 1
|
||||||
|
|
||||||
|
mainActivity?.reportFunnel(UserFeedback.Submitted(rating, q1, q2, q3))
|
||||||
|
|
||||||
|
mainActivity?.navController?.navigateUp()
|
||||||
|
}
|
||||||
|
private fun onFeedbackCancel(view: View) {
|
||||||
|
tapped(FEEDBACK_CANCEL)
|
||||||
|
mainActivity?.reportFunnel(UserFeedback.Cancelled)
|
||||||
|
mainActivity?.navController?.navigateUp()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun onRatingClicked(view: View) {
|
||||||
|
ratings.forEach { it.isActivated = false }
|
||||||
|
view.isActivated = !view.isActivated
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,5 @@
|
||||||
package cash.z.ecc.android.ui.profile
|
package cash.z.ecc.android.ui.profile
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
@ -17,6 +16,7 @@ import cash.z.ecc.android.ext.onClickNavBack
|
||||||
import cash.z.ecc.android.ext.onClickNavTo
|
import cash.z.ecc.android.ext.onClickNavTo
|
||||||
import cash.z.ecc.android.feedback.FeedbackFile
|
import cash.z.ecc.android.feedback.FeedbackFile
|
||||||
import cash.z.ecc.android.feedback.Report
|
import cash.z.ecc.android.feedback.Report
|
||||||
|
import cash.z.ecc.android.feedback.Report.Funnel.UserFeedback
|
||||||
import cash.z.ecc.android.feedback.Report.Tap.*
|
import cash.z.ecc.android.feedback.Report.Tap.*
|
||||||
import cash.z.ecc.android.ui.base.BaseFragment
|
import cash.z.ecc.android.ui.base.BaseFragment
|
||||||
import cash.z.wallet.sdk.ext.toAbbreviatedAddress
|
import cash.z.wallet.sdk.ext.toAbbreviatedAddress
|
||||||
|
@ -39,6 +39,11 @@ class ProfileFragment : BaseFragment<FragmentProfileBinding>() {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
binding.hitAreaClose.onClickNavBack() { tapped(PROFILE_CLOSE) }
|
binding.hitAreaClose.onClickNavBack() { tapped(PROFILE_CLOSE) }
|
||||||
binding.buttonBackup.onClickNavTo(R.id.action_nav_profile_to_nav_backup) { tapped(PROFILE_BACKUP) }
|
binding.buttonBackup.onClickNavTo(R.id.action_nav_profile_to_nav_backup) { tapped(PROFILE_BACKUP) }
|
||||||
|
binding.buttonFeedback.onClickNavTo(R.id.action_nav_profile_to_nav_feedback) {
|
||||||
|
tapped(PROFILE_SEND_FEEDBACK)
|
||||||
|
mainActivity?.reportFunnel(UserFeedback.Started)
|
||||||
|
Unit
|
||||||
|
}
|
||||||
binding.textVersion.text = BuildConfig.VERSION_NAME
|
binding.textVersion.text = BuildConfig.VERSION_NAME
|
||||||
onClick(binding.buttonLogs) {
|
onClick(binding.buttonLogs) {
|
||||||
tapped(PROFILE_VIEW_USER_LOGS)
|
tapped(PROFILE_VIEW_USER_LOGS)
|
||||||
|
@ -49,10 +54,6 @@ class ProfileFragment : BaseFragment<FragmentProfileBinding>() {
|
||||||
onViewDevLogs()
|
onViewDevLogs()
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
onClick(binding.buttonFeedback) {
|
|
||||||
tapped(PROFILE_SEND_FEEDBACK)
|
|
||||||
onSendFeedback()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
|
@ -95,10 +96,6 @@ class ProfileFragment : BaseFragment<FragmentProfileBinding>() {
|
||||||
startActivity(Intent.createChooser(intent, "Share Log File"))
|
startActivity(Intent.createChooser(intent, "Share Log File"))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun onSendFeedback() {
|
|
||||||
mainActivity?.showSnackbar("Feedback feature coming soon!")
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun userLogFile(): File? {
|
private fun userLogFile(): File? {
|
||||||
return mainActivity?.feedbackCoordinator?.findObserver<FeedbackFile>()?.file
|
return mainActivity?.feedbackCoordinator?.findObserver<FeedbackFile>()?.file
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<item android:state_activated="false" android:color="@color/text_light"/>
|
||||||
|
<item android:state_activated="true" android:color="@color/colorPrimary" />
|
||||||
|
</selector>
|
|
@ -0,0 +1,271 @@
|
||||||
|
<?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">
|
||||||
|
<!-- Back Button -->
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/back_button"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:tint="@color/text_light"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintHorizontal_bias="0.05"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintVertical_bias="0.065"
|
||||||
|
app:srcCompat="@drawable/ic_arrow_back_black_24dp" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:id="@+id/back_button_hit_area"
|
||||||
|
android:layout_width="56dp"
|
||||||
|
android:layout_height="56dp"
|
||||||
|
android:clickable="true"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintHorizontal_bias="0.01"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintVertical_bias="0.045" />
|
||||||
|
<ScrollView
|
||||||
|
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/back_button"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
android:fillViewport="true">
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:id="@+id/content_feedback"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.Guideline
|
||||||
|
android:id="@+id/guideline_content_start"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintGuide_percent="0.1" />
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.Guideline
|
||||||
|
android:id="@+id/guideline_content_end"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintGuide_percent="0.9" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/text_feedback_title"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Please rank your experience"
|
||||||
|
android:textColor="@color/text_light"
|
||||||
|
android:textSize="22sp"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/guideline_content_start"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/text_feedback_subtitle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="We improve and iterate with YOUR feedback"
|
||||||
|
android:textColor="@color/text_light"
|
||||||
|
android:textSize="12sp"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/guideline_content_start"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/text_feedback_title" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:id="@+id/background_buttons"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="80dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:background="@color/zcashBlack_54"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/text_feedback_subtitle" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/feedback_exp_1"
|
||||||
|
android:layout_width="50dp"
|
||||||
|
android:layout_height="50dp"
|
||||||
|
android:background="@drawable/background_circle"
|
||||||
|
android:backgroundTint="@color/selector_feedback_button"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="1"
|
||||||
|
android:textColor="@color/text_dark"
|
||||||
|
android:textSize="30dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/background_buttons"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/feedback_exp_2"
|
||||||
|
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
||||||
|
app:layout_constraintStart_toStartOf="@id/guideline_content_start"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/background_buttons" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/feedback_exp_2"
|
||||||
|
android:layout_width="50dp"
|
||||||
|
android:layout_height="50dp"
|
||||||
|
android:background="@drawable/background_circle"
|
||||||
|
android:backgroundTint="@color/selector_feedback_button"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="2"
|
||||||
|
android:textColor="@color/text_dark"
|
||||||
|
android:textSize="30dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/background_buttons"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/feedback_exp_3"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/feedback_exp_1"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/background_buttons" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/feedback_exp_3"
|
||||||
|
android:layout_width="50dp"
|
||||||
|
android:layout_height="50dp"
|
||||||
|
android:background="@drawable/background_circle"
|
||||||
|
android:backgroundTint="@color/selector_feedback_button"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="3"
|
||||||
|
android:textColor="@color/text_dark"
|
||||||
|
android:textSize="30dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/background_buttons"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/feedback_exp_4"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/feedback_exp_2"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/background_buttons" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/feedback_exp_4"
|
||||||
|
android:layout_width="50dp"
|
||||||
|
android:layout_height="50dp"
|
||||||
|
android:background="@drawable/background_circle"
|
||||||
|
android:backgroundTint="@color/selector_feedback_button"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="4"
|
||||||
|
android:textColor="@color/text_dark"
|
||||||
|
android:textSize="30dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/background_buttons"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/feedback_exp_5"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/feedback_exp_3"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/background_buttons" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/feedback_exp_5"
|
||||||
|
android:layout_width="50dp"
|
||||||
|
android:layout_height="50dp"
|
||||||
|
android:background="@drawable/background_circle"
|
||||||
|
android:backgroundTint="@color/selector_feedback_button"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="5"
|
||||||
|
android:textColor="@color/text_dark"
|
||||||
|
android:textSize="30dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/background_buttons"
|
||||||
|
app:layout_constraintEnd_toEndOf="@id/guideline_content_end"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/feedback_exp_4"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/background_buttons" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/text_question_1"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:text="@string/feedback_question_1"
|
||||||
|
android:textColor="@color/text_light"
|
||||||
|
android:textSize="16sp"
|
||||||
|
app:layout_constraintStart_toStartOf="@id/guideline_content_start"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/background_buttons" />
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_question_1"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||||
|
android:hint="@string/feedback_hint_1"
|
||||||
|
app:layout_constraintEnd_toEndOf="@id/guideline_content_end"
|
||||||
|
app:layout_constraintStart_toStartOf="@id/guideline_content_start"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/text_question_1">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="top"
|
||||||
|
android:lines="3" />
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/text_question_2"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:text="@string/feedback_question_2"
|
||||||
|
android:textColor="@color/text_light"
|
||||||
|
android:textSize="16sp"
|
||||||
|
app:layout_constraintStart_toStartOf="@id/guideline_content_start"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/input_question_1" />
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_question_2"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||||
|
android:hint="@string/feedback_hint_2"
|
||||||
|
app:layout_constraintEnd_toEndOf="@id/guideline_content_end"
|
||||||
|
app:layout_constraintStart_toStartOf="@id/guideline_content_start"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/text_question_2">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="top"
|
||||||
|
android:lines="3" />
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/text_question_3"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:text="@string/feedback_question_3"
|
||||||
|
android:textColor="@color/text_light"
|
||||||
|
android:textSize="16sp"
|
||||||
|
app:layout_constraintStart_toStartOf="@id/guideline_content_start"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/input_question_2" />
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputLayout
|
||||||
|
android:id="@+id/input_question_3"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
|
||||||
|
android:hint="@string/feedback_hint_3"
|
||||||
|
app:layout_constraintEnd_toEndOf="@id/guideline_content_end"
|
||||||
|
app:layout_constraintStart_toStartOf="@id/guideline_content_start"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/text_question_3">
|
||||||
|
|
||||||
|
<com.google.android.material.textfield.TextInputEditText
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="top"
|
||||||
|
android:lines="3" />
|
||||||
|
</com.google.android.material.textfield.TextInputLayout>
|
||||||
|
|
||||||
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:id="@+id/button_submit"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="32dp"
|
||||||
|
style="@style/Zcash.Button"
|
||||||
|
android:gravity="center"
|
||||||
|
android:padding="12dp"
|
||||||
|
android:text="Send Feedback"
|
||||||
|
android:textAppearance="@style/TextAppearance.MaterialComponents.Body1"
|
||||||
|
android:textColor="#000000"
|
||||||
|
app:layout_constraintEnd_toEndOf="@id/guideline_content_end"
|
||||||
|
app:layout_constraintStart_toStartOf="@id/guideline_content_start"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/input_question_3" />
|
||||||
|
|
||||||
|
<Space
|
||||||
|
android:id="@+id/extra_padding_for_scrolling"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="400dp"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/button_submit" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -65,7 +65,6 @@
|
||||||
android:id="@+id/nav_detail"
|
android:id="@+id/nav_detail"
|
||||||
android:name="cash.z.ecc.android.ui.detail.WalletDetailFragment"
|
android:name="cash.z.ecc.android.ui.detail.WalletDetailFragment"
|
||||||
tools:layout="@layout/fragment_detail" />
|
tools:layout="@layout/fragment_detail" />
|
||||||
|
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/nav_profile"
|
android:id="@+id/nav_profile"
|
||||||
android:name="cash.z.ecc.android.ui.profile.ProfileFragment"
|
android:name="cash.z.ecc.android.ui.profile.ProfileFragment"
|
||||||
|
@ -73,7 +72,14 @@
|
||||||
<action
|
<action
|
||||||
android:id="@+id/action_nav_profile_to_nav_backup"
|
android:id="@+id/action_nav_profile_to_nav_backup"
|
||||||
app:destination="@id/nav_backup" />
|
app:destination="@id/nav_backup" />
|
||||||
|
<action
|
||||||
|
android:id="@+id/action_nav_profile_to_nav_feedback"
|
||||||
|
app:destination="@id/nav_feedback" />
|
||||||
</fragment>
|
</fragment>
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/nav_feedback"
|
||||||
|
android:name="cash.z.ecc.android.ui.profile.FeedbackFragment"
|
||||||
|
tools:layout="@layout/fragment_feedback" />
|
||||||
|
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<!-- Send Navigation -->
|
<!-- Send Navigation -->
|
||||||
|
|
|
@ -8,7 +8,15 @@
|
||||||
<!-- Send Flow -->
|
<!-- Send Flow -->
|
||||||
<string name="send_hint_input_zcash_address">Enter a shielded Zcash address</string>
|
<string name="send_hint_input_zcash_address">Enter a shielded Zcash address</string>
|
||||||
<string name="send_hint_input_zcash_amount">Enter an amount to send</string>
|
<string name="send_hint_input_zcash_amount">Enter an amount to send</string>
|
||||||
|
|
||||||
<string name="send_memo_excluded_message">Your transaction is shielded and your address is not available to the recipient</string>
|
<string name="send_memo_excluded_message">Your transaction is shielded and your address is not available to the recipient</string>
|
||||||
<string name="send_memo_included_message">Your transaction is shielded but your address will be sent to the recipient via the memo</string>
|
<string name="send_memo_included_message">Your transaction is shielded but your address will be sent to the recipient via the memo</string>
|
||||||
|
|
||||||
|
<!-- Feedback -->
|
||||||
|
<string name="feedback_question_1">Any details you\'d like to share?</string>
|
||||||
|
<string name="feedback_question_2">Was your balance clear?</string>
|
||||||
|
<string name="feedback_question_3">What feature would you like to see next?</string>
|
||||||
|
<string name="feedback_hint_1">My experience was . . .</string>
|
||||||
|
<string name="feedback_hint_2">My balance was . . .</string>
|
||||||
|
<string name="feedback_hint_3">I\'d like . . .</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Reference in New Issue