mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-12 18:59:06 +01:00
Dismiss dialogs when screen is rotated. Bug #52.
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user