From 8ef21637a90b3e020c19cd5dafc3af0cea731609 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= Date: Sat, 29 May 2021 07:26:28 +0200 Subject: [PATCH] Outline specific error fragment for hotspot --- .../android/hotspot/HotspotActivity.java | 10 +- .../android/hotspot/HotspotErrorFragment.java | 61 ++++++++++ .../res/layout/fragment_hotspot_error.xml | 113 ++++++++++++++++++ briar-android/src/main/res/values/strings.xml | 1 + 4 files changed, 182 insertions(+), 3 deletions(-) create mode 100644 briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java create mode 100644 briar-android/src/main/res/layout/fragment_hotspot_error.xml diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotActivity.java index f78b029b6..78d10ef14 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotActivity.java @@ -10,7 +10,6 @@ import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.activity.BriarActivity; import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener; -import org.briarproject.briar.android.fragment.ErrorFragment; import org.briarproject.briar.android.hotspot.HotspotState.HotspotError; import org.briarproject.briar.android.hotspot.HotspotState.HotspotStarted; @@ -62,9 +61,14 @@ public class HotspotActivity extends BriarActivity showFragment(fm, new HotspotFragment(), tag); } } else if (hotspotState instanceof HotspotError) { + // TODO: handle rotation gracefully. If we just use + // fm.findFragmentByTag(HotspotErrorFragment.TAG) == null) + // we might hide multiple errors. Maybe we could update the + // error message of the existing fragment in that case String error = ((HotspotError) hotspotState).getError(); - Fragment f = ErrorFragment.newInstance(error); - showFragment(getSupportFragmentManager(), f, ErrorFragment.TAG); + Fragment f = HotspotErrorFragment.newInstance(error); + showFragment(getSupportFragmentManager(), f, + HotspotErrorFragment.TAG); } }); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java new file mode 100644 index 000000000..a2ff36f58 --- /dev/null +++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java @@ -0,0 +1,61 @@ +package org.briarproject.briar.android.hotspot; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; +import org.briarproject.briar.R; +import org.briarproject.briar.android.fragment.BaseFragment; + +import androidx.annotation.Nullable; + + +@MethodsNotNullByDefault +@ParametersNotNullByDefault +public class HotspotErrorFragment extends BaseFragment { + + public static final String TAG = HotspotErrorFragment.class.getName(); + + private static final String ERROR_MSG = "errorMessage"; + + public static HotspotErrorFragment newInstance(String message) { + HotspotErrorFragment f = new HotspotErrorFragment(); + Bundle args = new Bundle(); + args.putString(ERROR_MSG, message); + f.setArguments(args); + return f; + } + + private String errorMessage; + + @Override + public String getUniqueTag() { + return TAG; + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + Bundle args = getArguments(); + if (args == null) throw new AssertionError(); + errorMessage = args.getString(ERROR_MSG); + } + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, + @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + View v = inflater + .inflate(R.layout.fragment_hotspot_error, container, false); + TextView msg = v.findViewById(R.id.errorMessageDetail); + msg.setText(errorMessage); + return v; + } + +} diff --git a/briar-android/src/main/res/layout/fragment_hotspot_error.xml b/briar-android/src/main/res/layout/fragment_hotspot_error.xml new file mode 100644 index 000000000..d47d74c48 --- /dev/null +++ b/briar-android/src/main/res/layout/fragment_hotspot_error.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + +