From accef2e51b45395d1e4a95e0b575199ee2aab6e6 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Thu, 8 Mar 2018 11:31:42 +0000 Subject: [PATCH 1/3] Close NavDrawerActivity immediately when signing out. --- .../android/navdrawer/NavDrawerActivity.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java index dcc42f6c3..31840b8e2 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java @@ -22,6 +22,7 @@ import android.widget.ImageView; import android.widget.TextView; import org.briarproject.bramble.api.db.DbException; +import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.plugin.BluetoothConstants; import org.briarproject.bramble.api.plugin.LanTcpConstants; import org.briarproject.bramble.api.plugin.TorConstants; @@ -51,6 +52,7 @@ import static android.support.v4.view.GravityCompat.START; import static android.support.v4.widget.DrawerLayout.LOCK_MODE_LOCKED_CLOSED; import static android.view.View.GONE; import static android.view.View.VISIBLE; +import static org.briarproject.bramble.api.lifecycle.LifecycleManager.LifecycleState.RUNNING; import static org.briarproject.briar.android.BriarService.EXTRA_STARTUP_FAILED; import static org.briarproject.briar.android.activity.RequestCodes.REQUEST_PASSWORD; import static org.briarproject.briar.android.navdrawer.NavDrawerController.ExpiryWarning.NO; @@ -73,6 +75,8 @@ public class NavDrawerActivity extends BriarActivity implements @Inject NavDrawerController controller; + @Inject + LifecycleManager lifecycleManager; private DrawerLayout drawerLayout; private NavigationView navigation; @@ -128,7 +132,9 @@ public class NavDrawerActivity extends BriarActivity implements initializeTransports(getLayoutInflater()); transportsView.setAdapter(transportsAdapter); - if (state == null) { + if (lifecycleManager.getLifecycleState().isAfter(RUNNING)) { + showSignOutFragment(); + } else if (state == null) { startFragment(ContactListFragment.newInstance(), R.id.nav_btn_contacts); } @@ -240,10 +246,15 @@ public class NavDrawerActivity extends BriarActivity implements drawerToggle.onConfigurationChanged(newConfig); } - private void signOut() { + private void showSignOutFragment() { drawerLayout.setDrawerLockMode(LOCK_MODE_LOCKED_CLOSED); startFragment(new SignOutFragment()); + } + + private void signOut() { + drawerLayout.setDrawerLockMode(LOCK_MODE_LOCKED_CLOSED); signOut(false); + finish(); } private void startFragment(BaseFragment fragment, int itemId) { From f4c798a2da2ffc2a7a60c278a71fbf344dfc6343 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Thu, 8 Mar 2018 11:32:08 +0000 Subject: [PATCH 2/3] Use database icon for SignOutFragment. --- .../src/main/res/layout/fragment_sign_out.xml | 43 ++++++++++++++----- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/briar-android/src/main/res/layout/fragment_sign_out.xml b/briar-android/src/main/res/layout/fragment_sign_out.xml index aafc7be54..73fd8f4e5 100644 --- a/briar-android/src/main/res/layout/fragment_sign_out.xml +++ b/briar-android/src/main/res/layout/fragment_sign_out.xml @@ -1,23 +1,46 @@ - + + + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="@+id/imageView" + app:layout_constraintEnd_toEndOf="@+id/imageView" + app:layout_constraintStart_toStartOf="@+id/imageView" + app:layout_constraintTop_toTopOf="@+id/imageView"/> + android:layout_margin="8dp" + android:text="@string/progress_title_logout" + android:textSize="@dimen/text_size_large" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/imageView"/> - \ No newline at end of file + \ No newline at end of file From fce8d9fa9f09f0bd73593fdc78de7ae555e641f2 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Fri, 9 Mar 2018 15:38:32 +0000 Subject: [PATCH 3/3] Finish if back button is pressed in SignOutFragment. --- .../android/fragment/SignOutFragment.java | 3 +-- .../android/navdrawer/NavDrawerActivity.java | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/fragment/SignOutFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/fragment/SignOutFragment.java index 8c014237a..6d122c6df 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/fragment/SignOutFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/fragment/SignOutFragment.java @@ -12,7 +12,7 @@ import javax.annotation.Nullable; public class SignOutFragment extends BaseFragment { - private static final String TAG = SignOutFragment.class.getName(); + public static final String TAG = SignOutFragment.class.getName(); @Override public View onCreateView(LayoutInflater inflater, @@ -30,5 +30,4 @@ public class SignOutFragment extends BaseFragment { public void injectFragment(ActivityComponent component) { // no need to inject } - } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java index 31840b8e2..a42a1071c 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java @@ -7,6 +7,7 @@ import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.NavigationView; import android.support.design.widget.NavigationView.OnNavigationItemSelectedListener; +import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.content.ContextCompat; import android.support.v4.widget.DrawerLayout; @@ -218,19 +219,23 @@ public class NavDrawerActivity extends BriarActivity implements public void onBackPressed() { if (drawerLayout.isDrawerOpen(START)) { drawerLayout.closeDrawer(START); - } else if (getSupportFragmentManager().getBackStackEntryCount() == 0 && - getSupportFragmentManager() - .findFragmentByTag(ContactListFragment.TAG) == null) { + } else { + FragmentManager fm = getSupportFragmentManager(); + if (fm.findFragmentByTag(SignOutFragment.TAG) != null) { + finish(); + } else if (fm.getBackStackEntryCount() == 0 + && fm.findFragmentByTag(ContactListFragment.TAG) == null) { /* * This makes sure that the first fragment (ContactListFragment) the * user sees is the same as the last fragment the user sees before * exiting. This models the typical Google navigation behaviour such * as in Gmail/Inbox. */ - startFragment(ContactListFragment.newInstance(), - R.id.nav_btn_contacts); - } else { - super.onBackPressed(); + startFragment(ContactListFragment.newInstance(), + R.id.nav_btn_contacts); + } else { + super.onBackPressed(); + } } }