diff --git a/mailbox-android/src/main/java/org/briarproject/mailbox/android/ui/StatusFragment.kt b/mailbox-android/src/main/java/org/briarproject/mailbox/android/ui/StatusFragment.kt index b044f205cce6e01410c5b29805389227e5d503f5..de4fef1c0fc8e21ecd4d1a7d8af78565e74935e3 100644 --- a/mailbox-android/src/main/java/org/briarproject/mailbox/android/ui/StatusFragment.kt +++ b/mailbox-android/src/main/java/org/briarproject/mailbox/android/ui/StatusFragment.kt @@ -24,26 +24,24 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button +import android.widget.ImageView import android.widget.TextView import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels -import androidx.navigation.NavController -import androidx.navigation.fragment.NavHostFragment import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.flow.collect import org.briarproject.mailbox.R +import org.briarproject.mailbox.android.StatusManager import org.briarproject.mailbox.android.UiUtils.formatDate @AndroidEntryPoint class StatusFragment : Fragment() { private val viewModel: MailboxViewModel by activityViewModels() - private val nav: NavController by lazy { - val navHostFragment = requireActivity().supportFragmentManager - .findFragmentById(R.id.fragmentContainer) as NavHostFragment - navHostFragment.navController - } + private lateinit var illustration: ImageView + private lateinit var headline: TextView private lateinit var buttonStop: Button private lateinit var buttonUnlink: Button private lateinit var textViewDescription: TextView @@ -57,6 +55,8 @@ class StatusFragment : Fragment() { } override fun onViewCreated(v: View, savedInstanceState: Bundle?) { + illustration = v.findViewById(R.id.illustration) + headline = v.findViewById(R.id.headline) buttonStop = v.findViewById(R.id.buttonStop) buttonUnlink = v.findViewById(R.id.buttonUnlink) textViewDescription = v.findViewById(R.id.description) @@ -75,9 +75,26 @@ class StatusFragment : Fragment() { .create().show() } - viewModel.lastAccess.observe(viewLifecycleOwner) { lastAccess -> - textViewDescription.text = - getString(R.string.last_connection, formatDate(requireContext(), lastAccess)) + viewModel.lastAccess.observe(viewLifecycleOwner) { onLastAccessChanged(it) } + launchAndRepeatWhileStarted { + viewModel.setupState.collect { onSetupStateChanged(it) } + } + } + + private fun onLastAccessChanged(lastAccess: Long) { + textViewDescription.text = + getString(R.string.last_connection, formatDate(requireContext(), lastAccess)) + } + + private fun onSetupStateChanged(state: StatusManager.MailboxStartupProgress) { + if (state is StatusManager.ErrorNoNetwork) { + illustration.setImageResource(R.drawable.ic_error) + headline.setText(R.string.status_offline) + textViewDescription.setText(R.string.status_offline_description) + } else { + illustration.setImageResource(R.drawable.ic_success) + headline.setText(R.string.status_running) + onLastAccessChanged(viewModel.lastAccess.value ?: 0) } } diff --git a/mailbox-android/src/main/res/drawable/ic_error.xml b/mailbox-android/src/main/res/drawable/ic_error.xml index 0dc3e30e44197bcce0eac55dbae9944429261b2b..7013bed7b37d8311fd173d16e7dbf3be0eb2b182 100644 --- a/mailbox-android/src/main/res/drawable/ic_error.xml +++ b/mailbox-android/src/main/res/drawable/ic_error.xml @@ -1,6 +1,7 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="96dp" android:height="96dp" + android:tint="@color/red" android:viewportWidth="96" android:viewportHeight="96"> <path diff --git a/mailbox-android/src/main/res/drawable/ic_success.xml b/mailbox-android/src/main/res/drawable/ic_success.xml index 9b0b9c41f21e583b560327a6a83bcc3bd443e2f0..1cd16496fe251385eaee0e0e6fd4bda722413005 100644 --- a/mailbox-android/src/main/res/drawable/ic_success.xml +++ b/mailbox-android/src/main/res/drawable/ic_success.xml @@ -1,6 +1,7 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="96dp" android:height="96dp" + android:tint="@color/briar_green" android:viewportWidth="96" android:viewportHeight="96"> <path diff --git a/mailbox-android/src/main/res/layout/fragment_no_network.xml b/mailbox-android/src/main/res/layout/fragment_no_network.xml index 9c876d916de79dd41ebe37d65365caeb7d7261ef..609c2de9ad2e0c67440fdbec458fd541f0c77f1b 100644 --- a/mailbox-android/src/main/res/layout/fragment_no_network.xml +++ b/mailbox-android/src/main/res/layout/fragment_no_network.xml @@ -18,7 +18,6 @@ app:layout_constraintVertical_chainStyle="packed" app:layout_constraintWidth_percent="0.33" app:srcCompat="@drawable/ic_error" - app:tint="@color/red" tools:ignore="ContentDescription" /> <TextView diff --git a/mailbox-android/src/main/res/layout/fragment_setup_complete.xml b/mailbox-android/src/main/res/layout/fragment_setup_complete.xml index 9a7b65c41be9730d32531c14592072816553eefc..2a0a337ca5da6929771d2889e5c765e620f78a3c 100644 --- a/mailbox-android/src/main/res/layout/fragment_setup_complete.xml +++ b/mailbox-android/src/main/res/layout/fragment_setup_complete.xml @@ -18,8 +18,7 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_chainStyle="packed" app:layout_constraintWidth_percent="0.33" - app:srcCompat="@drawable/ic_success" - app:tint="@color/briar_green" /> + app:srcCompat="@drawable/ic_success" /> <TextView android:id="@+id/headline" diff --git a/mailbox-android/src/main/res/layout/fragment_startup.xml b/mailbox-android/src/main/res/layout/fragment_startup.xml index d7ca5a847a5b2a14ee9e3281f4f6f91219d42720..2b40b78c3d67057a82e748fa645e6f7d9e47b335 100644 --- a/mailbox-android/src/main/res/layout/fragment_startup.xml +++ b/mailbox-android/src/main/res/layout/fragment_startup.xml @@ -19,14 +19,15 @@ <TextView android:id="@+id/statusTextView" - android:layout_width="wrap_content" + android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="16dp" + android:gravity="center" android:textSize="24sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/progress" - tools:text="STOPPED" /> + tools:text="@string/startup_bootstrapping_tor" /> </androidx.constraintlayout.widget.ConstraintLayout> diff --git a/mailbox-android/src/main/res/layout/fragment_status.xml b/mailbox-android/src/main/res/layout/fragment_status.xml index 3981dc5aec34bc4fda3f17afa6f036049764340b..c7e113a9338ed3b36858241a8ba03c088331ede8 100644 --- a/mailbox-android/src/main/res/layout/fragment_status.xml +++ b/mailbox-android/src/main/res/layout/fragment_status.xml @@ -21,7 +21,6 @@ app:layout_constraintVertical_chainStyle="packed" app:layout_constraintWidth_percent="0.2" app:srcCompat="@drawable/ic_success" - app:tint="@color/briar_green" tools:ignore="ContentDescription" /> <com.google.android.material.button.MaterialButton @@ -51,10 +50,11 @@ <TextView android:id="@+id/description" - android:layout_width="wrap_content" + android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginHorizontal="16dp" android:layout_marginTop="8dp" + android:gravity="center" android:text="@string/last_connection" android:textSize="16sp" app:layout_constraintBottom_toTopOf="@+id/buttonUnlink" diff --git a/mailbox-android/src/main/res/layout/fragment_wipe_complete.xml b/mailbox-android/src/main/res/layout/fragment_wipe_complete.xml index 6278bbc8bc382c4ec7ab91d7a11830c467340bd7..1a3292a59c851c0a4f3c4a7a571098b6531e2b41 100644 --- a/mailbox-android/src/main/res/layout/fragment_wipe_complete.xml +++ b/mailbox-android/src/main/res/layout/fragment_wipe_complete.xml @@ -18,7 +18,6 @@ app:layout_constraintVertical_chainStyle="packed" app:layout_constraintWidth_percent="0.33" app:srcCompat="@drawable/ic_success" - app:tint="@color/briar_green" tools:ignore="ContentDescription" /> <TextView diff --git a/mailbox-android/src/main/res/layout/fragment_wiping.xml b/mailbox-android/src/main/res/layout/fragment_wiping.xml index ee29d19fc7fece7d0a4a3795c4ae3edcd761ea72..fdc2d3cdeb72920c6cd7768f1257152abd8ae0b3 100644 --- a/mailbox-android/src/main/res/layout/fragment_wiping.xml +++ b/mailbox-android/src/main/res/layout/fragment_wiping.xml @@ -19,14 +19,15 @@ <TextView android:id="@+id/statusTextView" - android:layout_width="wrap_content" + android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="16dp" + android:gravity="center" + android:text="@string/wipe_wiping" android:textSize="24sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/progress" - android:text="@string/wipe_wiping" /> + app:layout_constraintTop_toBottomOf="@id/progress" /> </androidx.constraintlayout.widget.ConstraintLayout> diff --git a/mailbox-android/src/main/res/values/strings.xml b/mailbox-android/src/main/res/values/strings.xml index 9a49e1978b9566d3019787114cf844df2ff37048..281dbd424427c2f5c903c745842ef0a8373f1b2e 100644 --- a/mailbox-android/src/main/res/values/strings.xml +++ b/mailbox-android/src/main/res/values/strings.xml @@ -31,7 +31,7 @@ <string name="link_description">Scan this QR code with Briar</string> <string name="link_cancel">Cancel Setup</string> - <string name="startup_starting_services">Starting services</string> + <string name="startup_starting_services">Starting mailbox</string> <string name="startup_starting_tor">Starting Tor</string> <!-- The number placeholder will be replaced with a percentage, e.g. 50 -> (50%) --> <string name="startup_bootstrapping_tor">Bootstrapping Tor (%d%%)</string> @@ -41,6 +41,8 @@ <string name="no_network_description">Please ensure this device is online and connected to the Internet. Once you\'re online, setup should pick up automatically here.</string> <string name="status_running">Mailbox is running</string> + <string name="status_offline">Device offline</string> + <string name="status_offline_description">Ensure this device is online and connected to the (uncensored) Internet.</string> <string name="last_connection">Last connection: %s</string> <string name="now">now</string> <string name="never">never</string>