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.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;

View File

@@ -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];

View File

@@ -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();
}
}
});

View File

@@ -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();
}
}
});

View File

@@ -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() {