From d83513c5f9f84053ac6d449548d9ee04f3a7d3bf Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Fri, 21 Mar 2014 14:30:54 +0000 Subject: [PATCH] Dismiss dialogs when screen is rotated. Bug #52. --- .../briarproject/android/BriarActivity.java | 4 +-- .../android/contact/SelectContactsDialog.java | 15 +++++----- .../groups/ConfigureGroupActivity.java | 28 +++++------------ .../android/groups/CreateGroupActivity.java | 30 ++++++------------- .../android/groups/NoContactsDialog.java | 11 ++++--- 5 files changed, 31 insertions(+), 57 deletions(-) diff --git a/briar-android/src/org/briarproject/android/BriarActivity.java b/briar-android/src/org/briarproject/android/BriarActivity.java index a80e276b1f..4579f8d6a2 100644 --- a/briar-android/src/org/briarproject/android/BriarActivity.java +++ b/briar-android/src/org/briarproject/android/BriarActivity.java @@ -14,12 +14,12 @@ import org.briarproject.api.android.DatabaseUiExecutor; import org.briarproject.api.db.DatabaseConfig; import org.briarproject.api.lifecycle.LifecycleManager; -import roboguice.activity.RoboFragmentActivity; +import roboguice.activity.RoboActivity; import android.content.Intent; import android.os.Bundle; import android.os.IBinder; -public class BriarActivity extends RoboFragmentActivity { +public class BriarActivity extends RoboActivity { public static final int REQUEST_PASSWORD = 1; diff --git a/briar-android/src/org/briarproject/android/contact/SelectContactsDialog.java b/briar-android/src/org/briarproject/android/contact/SelectContactsDialog.java index 24ed0a8a64..b26f3219cf 100644 --- a/briar-android/src/org/briarproject/android/contact/SelectContactsDialog.java +++ b/briar-android/src/org/briarproject/android/contact/SelectContactsDialog.java @@ -12,12 +12,11 @@ import org.briarproject.api.ContactId; import android.app.AlertDialog; import android.app.Dialog; +import android.content.Context; import android.content.DialogInterface; -import android.os.Bundle; -import android.support.v4.app.DialogFragment; +import android.content.DialogInterface.OnMultiChoiceClickListener; -public class SelectContactsDialog extends DialogFragment -implements DialogInterface.OnMultiChoiceClickListener { +public class SelectContactsDialog implements OnMultiChoiceClickListener { private Listener listener = null; private List<Contact> contacts = null; @@ -35,10 +34,10 @@ implements DialogInterface.OnMultiChoiceClickListener { this.selected = new HashSet<ContactId>(selected); } - @Override - public Dialog onCreateDialog(Bundle state) { - if(listener == null || contacts == null) return null; - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + public Dialog build(Context ctx) { + if(listener == null || contacts == null || selected == null) + throw new IllegalStateException(); + AlertDialog.Builder builder = new AlertDialog.Builder(ctx); int size = contacts.size(); String[] names = new String[size]; boolean[] checked = new boolean[size]; diff --git a/briar-android/src/org/briarproject/android/groups/ConfigureGroupActivity.java b/briar-android/src/org/briarproject/android/groups/ConfigureGroupActivity.java index c77fac632f..fff9bc5f96 100644 --- a/briar-android/src/org/briarproject/android/groups/ConfigureGroupActivity.java +++ b/briar-android/src/org/briarproject/android/groups/ConfigureGroupActivity.java @@ -29,8 +29,6 @@ import org.briarproject.api.messaging.GroupId; import android.content.Intent; import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; @@ -52,8 +50,6 @@ SelectContactsDialog.Listener { private RadioButton visibleToAll = null, visibleToSome = null; private Button doneButton = null; private ProgressBar progress = null; - private NoContactsDialog noContactsDialog = null; - private SelectContactsDialog selectContactsDialog = null; // Fields that are accessed from background threads must be volatile @Inject private volatile DatabaseComponent db; @@ -128,17 +124,6 @@ SelectContactsDialog.Listener { layout.addView(progress); setContentView(layout); - - FragmentManager fm = getSupportFragmentManager(); - Fragment f = fm.findFragmentByTag("NoContactsDialog"); - if(f == null) noContactsDialog = new NoContactsDialog(); - else noContactsDialog = (NoContactsDialog) f; - noContactsDialog.setListener(this); - - f = fm.findFragmentByTag("SelectContactsDialog"); - if(f == null) selectContactsDialog = new SelectContactsDialog(); - else selectContactsDialog = (SelectContactsDialog) f; - selectContactsDialog.setListener(this); } public void onClick(View view) { @@ -182,13 +167,16 @@ SelectContactsDialog.Listener { private void displayContacts() { runOnUiThread(new Runnable() { public void run() { - FragmentManager fm = getSupportFragmentManager(); if(contacts.isEmpty()) { - noContactsDialog.show(fm, "NoContactsDialog"); + NoContactsDialog builder = new NoContactsDialog(); + builder.setListener(ConfigureGroupActivity.this); + builder.build(ConfigureGroupActivity.this).show(); } else { - selectContactsDialog.setContacts(contacts); - selectContactsDialog.setSelected(selected); - selectContactsDialog.show(fm, "SelectContactsDialog"); + SelectContactsDialog builder = new SelectContactsDialog(); + builder.setListener(ConfigureGroupActivity.this); + builder.setContacts(contacts); + builder.setSelected(selected); + builder.build(ConfigureGroupActivity.this).show(); } } }); diff --git a/briar-android/src/org/briarproject/android/groups/CreateGroupActivity.java b/briar-android/src/org/briarproject/android/groups/CreateGroupActivity.java index bbe56e351c..c2b6d1d1d5 100644 --- a/briar-android/src/org/briarproject/android/groups/CreateGroupActivity.java +++ b/briar-android/src/org/briarproject/android/groups/CreateGroupActivity.java @@ -36,8 +36,6 @@ import org.briarproject.util.StringUtils; import android.content.Intent; import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; @@ -49,8 +47,8 @@ import android.widget.ProgressBar; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; -import android.widget.Toast; import android.widget.TextView.OnEditorActionListener; +import android.widget.Toast; public class CreateGroupActivity extends BriarActivity implements OnEditorActionListener, OnClickListener, NoContactsDialog.Listener, @@ -64,8 +62,6 @@ SelectContactsDialog.Listener { private RadioButton visibleToAll = null, visibleToSome = null; private Button createButton = null; private ProgressBar progress = null; - private NoContactsDialog noContactsDialog = null; - private SelectContactsDialog selectContactsDialog = null; // Fields that are accessed from background threads must be volatile @Inject private volatile GroupFactory groupFactory; @@ -131,17 +127,6 @@ SelectContactsDialog.Listener { layout.addView(progress); setContentView(layout); - - FragmentManager fm = getSupportFragmentManager(); - Fragment f = fm.findFragmentByTag("NoContactsDialog"); - if(f == null) noContactsDialog = new NoContactsDialog(); - else noContactsDialog = (NoContactsDialog) f; - noContactsDialog.setListener(this); - - f = fm.findFragmentByTag("SelectContactsDialog"); - if(f == null) selectContactsDialog = new SelectContactsDialog(); - else selectContactsDialog = (SelectContactsDialog) f; - selectContactsDialog.setListener(this); } private void enableOrDisableCreateButton() { @@ -204,13 +189,16 @@ SelectContactsDialog.Listener { private void displayContacts() { runOnUiThread(new Runnable() { public void run() { - FragmentManager fm = getSupportFragmentManager(); if(contacts.isEmpty()) { - noContactsDialog.show(fm, "NoContactsDialog"); + NoContactsDialog builder = new NoContactsDialog(); + builder.setListener(CreateGroupActivity.this); + builder.build(CreateGroupActivity.this).show(); } else { - selectContactsDialog.setContacts(contacts); - selectContactsDialog.setSelected(selected); - selectContactsDialog.show(fm, "SelectContactsDialog"); + SelectContactsDialog builder = new SelectContactsDialog(); + builder.setListener(CreateGroupActivity.this); + builder.setContacts(contacts); + builder.setSelected(selected); + builder.build(CreateGroupActivity.this).show(); } } }); diff --git a/briar-android/src/org/briarproject/android/groups/NoContactsDialog.java b/briar-android/src/org/briarproject/android/groups/NoContactsDialog.java index e21ba9d062..7da8b7789a 100644 --- a/briar-android/src/org/briarproject/android/groups/NoContactsDialog.java +++ b/briar-android/src/org/briarproject/android/groups/NoContactsDialog.java @@ -4,11 +4,10 @@ import org.briarproject.R; import android.app.AlertDialog; import android.app.Dialog; +import android.content.Context; import android.content.DialogInterface; -import android.os.Bundle; -import android.support.v4.app.DialogFragment; -public class NoContactsDialog extends DialogFragment { +public class NoContactsDialog { private Listener listener = null; @@ -16,9 +15,9 @@ public class NoContactsDialog extends DialogFragment { this.listener = listener; } - @Override - public Dialog onCreateDialog(Bundle state) { - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + public Dialog build(Context ctx) { + if(listener == null) throw new IllegalStateException(); + AlertDialog.Builder builder = new AlertDialog.Builder(ctx); builder.setMessage(R.string.no_contacts_prompt); builder.setPositiveButton(R.string.add_button, new DialogInterface.OnClickListener() { -- GitLab