Dismiss dialogs when screen is rotated. Bug #52.

This commit is contained in:
akwizgran
2014-03-21 14:30:54 +00:00
parent 007ddac880
commit d83513c5f9
5 changed files with 31 additions and 57 deletions

View File

@@ -14,12 +14,12 @@ import org.briarproject.api.android.DatabaseUiExecutor;
import org.briarproject.api.db.DatabaseConfig; import org.briarproject.api.db.DatabaseConfig;
import org.briarproject.api.lifecycle.LifecycleManager; import org.briarproject.api.lifecycle.LifecycleManager;
import roboguice.activity.RoboFragmentActivity; import roboguice.activity.RoboActivity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.IBinder; import android.os.IBinder;
public class BriarActivity extends RoboFragmentActivity { public class BriarActivity extends RoboActivity {
public static final int REQUEST_PASSWORD = 1; public static final int REQUEST_PASSWORD = 1;

View File

@@ -12,12 +12,11 @@ import org.briarproject.api.ContactId;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.support.v4.app.DialogFragment;
public class SelectContactsDialog extends DialogFragment public class SelectContactsDialog implements OnMultiChoiceClickListener {
implements DialogInterface.OnMultiChoiceClickListener {
private Listener listener = null; private Listener listener = null;
private List<Contact> contacts = null; private List<Contact> contacts = null;
@@ -35,10 +34,10 @@ implements DialogInterface.OnMultiChoiceClickListener {
this.selected = new HashSet<ContactId>(selected); this.selected = new HashSet<ContactId>(selected);
} }
@Override public Dialog build(Context ctx) {
public Dialog onCreateDialog(Bundle state) { if(listener == null || contacts == null || selected == null)
if(listener == null || contacts == null) return null; throw new IllegalStateException();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
int size = contacts.size(); int size = contacts.size();
String[] names = new String[size]; String[] names = new String[size];
boolean[] checked = new boolean[size]; boolean[] checked = new boolean[size];

View File

@@ -29,8 +29,6 @@ import org.briarproject.api.messaging.GroupId;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import android.widget.Button; import android.widget.Button;
@@ -52,8 +50,6 @@ SelectContactsDialog.Listener {
private RadioButton visibleToAll = null, visibleToSome = null; private RadioButton visibleToAll = null, visibleToSome = null;
private Button doneButton = null; private Button doneButton = null;
private ProgressBar progress = null; private ProgressBar progress = null;
private NoContactsDialog noContactsDialog = null;
private SelectContactsDialog selectContactsDialog = null;
// Fields that are accessed from background threads must be volatile // Fields that are accessed from background threads must be volatile
@Inject private volatile DatabaseComponent db; @Inject private volatile DatabaseComponent db;
@@ -128,17 +124,6 @@ SelectContactsDialog.Listener {
layout.addView(progress); layout.addView(progress);
setContentView(layout); 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) { public void onClick(View view) {
@@ -182,13 +167,16 @@ SelectContactsDialog.Listener {
private void displayContacts() { private void displayContacts() {
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
public void run() { public void run() {
FragmentManager fm = getSupportFragmentManager();
if(contacts.isEmpty()) { if(contacts.isEmpty()) {
noContactsDialog.show(fm, "NoContactsDialog"); NoContactsDialog builder = new NoContactsDialog();
builder.setListener(ConfigureGroupActivity.this);
builder.build(ConfigureGroupActivity.this).show();
} else { } else {
selectContactsDialog.setContacts(contacts); SelectContactsDialog builder = new SelectContactsDialog();
selectContactsDialog.setSelected(selected); builder.setListener(ConfigureGroupActivity.this);
selectContactsDialog.show(fm, "SelectContactsDialog"); builder.setContacts(contacts);
builder.setSelected(selected);
builder.build(ConfigureGroupActivity.this).show();
} }
} }
}); });

View File

@@ -36,8 +36,6 @@ import org.briarproject.util.StringUtils;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
@@ -49,8 +47,8 @@ import android.widget.ProgressBar;
import android.widget.RadioButton; import android.widget.RadioButton;
import android.widget.RadioGroup; import android.widget.RadioGroup;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import android.widget.TextView.OnEditorActionListener; import android.widget.TextView.OnEditorActionListener;
import android.widget.Toast;
public class CreateGroupActivity extends BriarActivity public class CreateGroupActivity extends BriarActivity
implements OnEditorActionListener, OnClickListener, NoContactsDialog.Listener, implements OnEditorActionListener, OnClickListener, NoContactsDialog.Listener,
@@ -64,8 +62,6 @@ SelectContactsDialog.Listener {
private RadioButton visibleToAll = null, visibleToSome = null; private RadioButton visibleToAll = null, visibleToSome = null;
private Button createButton = null; private Button createButton = null;
private ProgressBar progress = null; private ProgressBar progress = null;
private NoContactsDialog noContactsDialog = null;
private SelectContactsDialog selectContactsDialog = null;
// Fields that are accessed from background threads must be volatile // Fields that are accessed from background threads must be volatile
@Inject private volatile GroupFactory groupFactory; @Inject private volatile GroupFactory groupFactory;
@@ -131,17 +127,6 @@ SelectContactsDialog.Listener {
layout.addView(progress); layout.addView(progress);
setContentView(layout); 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() { private void enableOrDisableCreateButton() {
@@ -204,13 +189,16 @@ SelectContactsDialog.Listener {
private void displayContacts() { private void displayContacts() {
runOnUiThread(new Runnable() { runOnUiThread(new Runnable() {
public void run() { public void run() {
FragmentManager fm = getSupportFragmentManager();
if(contacts.isEmpty()) { if(contacts.isEmpty()) {
noContactsDialog.show(fm, "NoContactsDialog"); NoContactsDialog builder = new NoContactsDialog();
builder.setListener(CreateGroupActivity.this);
builder.build(CreateGroupActivity.this).show();
} else { } else {
selectContactsDialog.setContacts(contacts); SelectContactsDialog builder = new SelectContactsDialog();
selectContactsDialog.setSelected(selected); builder.setListener(CreateGroupActivity.this);
selectContactsDialog.show(fm, "SelectContactsDialog"); builder.setContacts(contacts);
builder.setSelected(selected);
builder.build(CreateGroupActivity.this).show();
} }
} }
}); });

View File

@@ -4,11 +4,10 @@ import org.briarproject.R;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface; 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; private Listener listener = null;
@@ -16,9 +15,9 @@ public class NoContactsDialog extends DialogFragment {
this.listener = listener; this.listener = listener;
} }
@Override public Dialog build(Context ctx) {
public Dialog onCreateDialog(Bundle state) { if(listener == null) throw new IllegalStateException();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setMessage(R.string.no_contacts_prompt); builder.setMessage(R.string.no_contacts_prompt);
builder.setPositiveButton(R.string.add_button, builder.setPositiveButton(R.string.add_button,
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {