diff --git a/src/main/java/eu/siacs/conversations/ui/BlocklistActivity.java b/src/main/java/eu/siacs/conversations/ui/BlocklistActivity.java index 7b4bc1943..76405c5f6 100644 --- a/src/main/java/eu/siacs/conversations/ui/BlocklistActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/BlocklistActivity.java @@ -1,6 +1,8 @@ package eu.siacs.conversations.ui; import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentTransaction; import android.text.Editable; import android.view.Menu; import android.view.MenuItem; @@ -62,6 +64,12 @@ public class BlocklistActivity extends AbstractSearchableListItemActivity implem } protected void showEnterJidDialog() { + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog"); + if (prev != null) { + ft.remove(prev); + } + ft.addToBackStack(null); EnterJidDialog dialog = EnterJidDialog.newInstance( mKnownHosts, null, getString(R.string.block_jabber_id), getString(R.string.block), @@ -76,7 +84,7 @@ public class BlocklistActivity extends AbstractSearchableListItemActivity implem return true; }); - dialog.show(getSupportFragmentManager(), "block_contact_dialog"); + dialog.show(ft, "dialog"); } protected void refreshUiReal() { diff --git a/src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java b/src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java index 42a1f1d75..354aaadf3 100644 --- a/src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java @@ -6,6 +6,8 @@ import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.StringRes; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentTransaction; import android.support.v7.app.ActionBar; import android.view.ActionMode; import android.view.Menu; @@ -230,6 +232,12 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { } protected void showEnterJidDialog(XmppUri uri) { + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog"); + if (prev != null) { + ft.remove(prev); + } + ft.addToBackStack(null); Jid jid = uri == null ? null : uri.getJid(); EnterJidDialog dialog = EnterJidDialog.newInstance( mKnownHosts, @@ -256,7 +264,7 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity { return true; }); - dialog.show(getSupportFragmentManager(), "enter_contact_dialog"); + dialog.show(ft, "dialog"); } @Override diff --git a/src/main/java/eu/siacs/conversations/ui/CreateConferenceDialog.java b/src/main/java/eu/siacs/conversations/ui/CreateConferenceDialog.java index 558478805..7de13b39c 100644 --- a/src/main/java/eu/siacs/conversations/ui/CreateConferenceDialog.java +++ b/src/main/java/eu/siacs/conversations/ui/CreateConferenceDialog.java @@ -1,6 +1,7 @@ package eu.siacs.conversations.ui; import android.app.Dialog; +import android.databinding.DataBindingUtil; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.content.Context; @@ -15,6 +16,7 @@ import java.util.ArrayList; import java.util.List; import eu.siacs.conversations.R; +import eu.siacs.conversations.databinding.CreateConferenceDialogBinding; public class CreateConferenceDialog extends DialogFragment { @@ -40,16 +42,14 @@ public class CreateConferenceDialog extends DialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.dialog_title_create_conference); - final View dialogView = getActivity().getLayoutInflater().inflate(R.layout.create_conference_dialog, null); - final Spinner spinner = dialogView.findViewById(R.id.account); - final EditText subject = dialogView.findViewById(R.id.subject); + CreateConferenceDialogBinding binding = DataBindingUtil.inflate(getActivity().getLayoutInflater(), R.layout.create_conference_dialog, null, false); ArrayList mActivatedAccounts = getArguments().getStringArrayList(ACCOUNTS_LIST_KEY); - StartConversationActivity.populateAccountSpinner(getActivity(), mActivatedAccounts, spinner); - builder.setView(dialogView); + StartConversationActivity.populateAccountSpinner(getActivity(), mActivatedAccounts, binding.account); + builder.setView(binding.getRoot()); builder.setPositiveButton(R.string.choose_participants, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - mListener.onCreateDialogPositiveClick(spinner, subject.getText().toString()); + mListener.onCreateDialogPositiveClick(binding.account, binding.subject.getText().toString()); } }); builder.setNegativeButton(R.string.cancel, null); diff --git a/src/main/java/eu/siacs/conversations/ui/EnterJidDialog.java b/src/main/java/eu/siacs/conversations/ui/EnterJidDialog.java index 1a95d2988..1eb196244 100644 --- a/src/main/java/eu/siacs/conversations/ui/EnterJidDialog.java +++ b/src/main/java/eu/siacs/conversations/ui/EnterJidDialog.java @@ -1,5 +1,6 @@ package eu.siacs.conversations.ui; +import android.databinding.DataBindingUtil; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.os.Bundle; @@ -17,6 +18,7 @@ import java.util.List; import eu.siacs.conversations.Config; import eu.siacs.conversations.R; +import eu.siacs.conversations.databinding.EnterJidDialogBinding; import eu.siacs.conversations.ui.adapter.KnownHostsAdapter; import eu.siacs.conversations.ui.util.DelayedHintHelper; import rocks.xmpp.addr.Jid; @@ -61,59 +63,57 @@ public class EnterJidDialog extends DialogFragment{ public Dialog onCreateDialog(Bundle savedInstanceState) { final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(getArguments().getString(TITLE_KEY)); - View dialogView = getActivity().getLayoutInflater().inflate(R.layout.enter_jid_dialog, null); - final Spinner spinner = dialogView.findViewById(R.id.account); - final AutoCompleteTextView jid = dialogView.findViewById(R.id.jid); - jid.setAdapter(new KnownHostsAdapter(getActivity(), R.layout.simple_list_item, (Collection) getArguments().getSerializable(CONFERENCE_HOSTS_KEY))); + EnterJidDialogBinding binding = DataBindingUtil.inflate(getActivity().getLayoutInflater(), R.layout.enter_jid_dialog, null, false); + binding.jid.setAdapter(new KnownHostsAdapter(getActivity(), R.layout.simple_list_item, (Collection) getArguments().getSerializable(CONFERENCE_HOSTS_KEY))); String prefilledJid = getArguments().getString(PREFILLED_JID_KEY); if (prefilledJid != null) { - jid.append(prefilledJid); + binding.jid.append(prefilledJid); if (!getArguments().getBoolean(ALLOW_EDIT_JID_KEY)) { - jid.setFocusable(false); - jid.setFocusableInTouchMode(false); - jid.setClickable(false); - jid.setCursorVisible(false); + binding.jid.setFocusable(false); + binding.jid.setFocusableInTouchMode(false); + binding.jid.setClickable(false); + binding.jid.setCursorVisible(false); } } - DelayedHintHelper.setHint(R.string.account_settings_example_jabber_id,jid); + DelayedHintHelper.setHint(R.string.account_settings_example_jabber_id, binding.jid); String account = getArguments().getString(ACCOUNT_KEY); if (account == null) { - StartConversationActivity.populateAccountSpinner(getActivity(), getArguments().getStringArrayList(ACCOUNTS_LIST_KEY), spinner); + StartConversationActivity.populateAccountSpinner(getActivity(), getArguments().getStringArrayList(ACCOUNTS_LIST_KEY), binding.account); } else { ArrayAdapter adapter = new ArrayAdapter<>(getActivity(), R.layout.simple_list_item, new String[] { account }); - spinner.setEnabled(false); + binding.account.setEnabled(false); adapter.setDropDownViewResource(R.layout.simple_list_item); - spinner.setAdapter(adapter); + binding.account.setAdapter(adapter); } - builder.setView(dialogView); + builder.setView(binding.getRoot()); builder.setNegativeButton(R.string.cancel, null); builder.setPositiveButton(getArguments().getString(POSITIVE_BUTTON_KEY), null); AlertDialog dialog = builder.create(); View.OnClickListener dialogOnClick = v -> { final Jid accountJid; - if (!spinner.isEnabled() && account == null) { + if (!binding.account.isEnabled() && account == null) { return; } try { if (Config.DOMAIN_LOCK != null) { - accountJid = Jid.of((String) spinner.getSelectedItem(), Config.DOMAIN_LOCK, null); + accountJid = Jid.of((String) binding.account.getSelectedItem(), Config.DOMAIN_LOCK, null); } else { - accountJid = Jid.of((String) spinner.getSelectedItem()); + accountJid = Jid.of((String) binding.account.getSelectedItem()); } } catch (final IllegalArgumentException e) { return; } final Jid contactJid; try { - contactJid = Jid.of(jid.getText().toString()); + contactJid = Jid.of(binding.jid.getText().toString()); } catch (final IllegalArgumentException e) { - jid.setError(getActivity().getString(R.string.invalid_jid)); + binding.jid.setError(getActivity().getString(R.string.invalid_jid)); return; } @@ -123,7 +123,7 @@ public class EnterJidDialog extends DialogFragment{ dialog.dismiss(); } } catch(JidError error) { - jid.setError(error.toString()); + binding.jid.setError(error.toString()); } } }; diff --git a/src/main/java/eu/siacs/conversations/ui/JoinConferenceDialog.java b/src/main/java/eu/siacs/conversations/ui/JoinConferenceDialog.java index d8de5e8bb..e38c4f3b8 100644 --- a/src/main/java/eu/siacs/conversations/ui/JoinConferenceDialog.java +++ b/src/main/java/eu/siacs/conversations/ui/JoinConferenceDialog.java @@ -1,6 +1,7 @@ package eu.siacs.conversations.ui; import android.app.Dialog; +import android.databinding.DataBindingUtil; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.content.Context; @@ -19,6 +20,7 @@ import java.util.HashSet; import java.util.List; import eu.siacs.conversations.R; +import eu.siacs.conversations.databinding.JoinConferenceDialogBinding; import eu.siacs.conversations.ui.adapter.KnownHostsAdapter; import eu.siacs.conversations.ui.util.DelayedHintHelper; @@ -50,19 +52,15 @@ public class JoinConferenceDialog extends DialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(R.string.dialog_title_join_conference); - final View dialogView = getActivity().getLayoutInflater().inflate(R.layout.join_conference_dialog, null); - final Spinner spinner = dialogView.findViewById(R.id.account); - final AutoCompleteTextView jid = dialogView.findViewById(R.id.jid); - DelayedHintHelper.setHint(R.string.conference_address_example, jid); - jid.setAdapter(new KnownHostsAdapter(getActivity(), R.layout.simple_list_item, (Collection) getArguments().getSerializable(CONFERENCE_HOSTS_KEY))); + JoinConferenceDialogBinding binding = DataBindingUtil.inflate(getActivity().getLayoutInflater(), R.layout.join_conference_dialog, null, false); + DelayedHintHelper.setHint(R.string.conference_address_example, binding.jid); + binding.jid.setAdapter(new KnownHostsAdapter(getActivity(), R.layout.simple_list_item, (Collection) getArguments().getSerializable(CONFERENCE_HOSTS_KEY))); String prefilledJid = getArguments().getString(PREFILLED_JID_KEY); if (prefilledJid != null) { - jid.append(prefilledJid); + binding.jid.append(prefilledJid); } - final Checkable bookmarkCheckBox = (CheckBox) dialogView - .findViewById(R.id.bookmark); - StartConversationActivity.populateAccountSpinner(getActivity(), getArguments().getStringArrayList(ACCOUNTS_LIST_KEY), spinner); - builder.setView(dialogView); + StartConversationActivity.populateAccountSpinner(getActivity(), getArguments().getStringArrayList(ACCOUNTS_LIST_KEY), binding.account); + builder.setView(binding.getRoot()); builder.setPositiveButton(R.string.join, null); builder.setNegativeButton(R.string.cancel, null); AlertDialog dialog = builder.create(); @@ -70,7 +68,7 @@ public class JoinConferenceDialog extends DialogFragment { dialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - mListener.onJoinDialogPositiveClick(dialog, spinner, jid, bookmarkCheckBox.isChecked()); + mListener.onJoinDialogPositiveClick(dialog, binding.account, binding.jid, binding.bookmark.isChecked()); } }); return dialog; diff --git a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java index 7c403e591..6dbb8a1cd 100644 --- a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java @@ -440,6 +440,12 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU @SuppressLint("InflateParams") protected void showCreateContactDialog(final String prefilledJid, final Invite invite) { + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog"); + if (prev != null) { + ft.remove(prev); + } + ft.addToBackStack(null); EnterJidDialog dialog = EnterJidDialog.newInstance( mKnownHosts, mActivatedAccounts, getString(R.string.dialog_title_create_contact), getString(R.string.create), @@ -474,18 +480,30 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU return true; } }); - dialog.show(getSupportFragmentManager(), "create_contact_dialog"); + dialog.show(ft, "dialog"); } @SuppressLint("InflateParams") protected void showJoinConferenceDialog(final String prefilledJid) { - JoinConferenceDialog dialog = JoinConferenceDialog.newInstance(prefilledJid, mActivatedAccounts, mKnownConferenceHosts); - dialog.show(getSupportFragmentManager(),"join_conference_dialog"); + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog"); + if (prev != null) { + ft.remove(prev); + } + ft.addToBackStack(null); + JoinConferenceDialog joinConferenceFragment = JoinConferenceDialog.newInstance(prefilledJid, mActivatedAccounts, mKnownConferenceHosts); + joinConferenceFragment.show(ft, "dialog"); } private void showCreateConferenceDialog() { - CreateConferenceDialog dialog = CreateConferenceDialog.newInstance(mActivatedAccounts); - dialog.show(getSupportFragmentManager(),"create_conference_dialog"); + FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); + Fragment prev = getSupportFragmentManager().findFragmentByTag("dialog"); + if (prev != null) { + ft.remove(prev); + } + ft.addToBackStack(null); + CreateConferenceDialog createConferenceFragment = CreateConferenceDialog.newInstance(mActivatedAccounts); + createConferenceFragment.show(ft, "dialog"); } private Account getSelectedAccount(Spinner spinner) { diff --git a/src/main/res/layout/create_conference_dialog.xml b/src/main/res/layout/create_conference_dialog.xml index 0fc3ec258..f17250f32 100644 --- a/src/main/res/layout/create_conference_dialog.xml +++ b/src/main/res/layout/create_conference_dialog.xml @@ -1,40 +1,42 @@ - - + - + android:layout_height="match_parent" + android:orientation="vertical" + android:paddingBottom="?attr/dialog_vertical_padding" + android:paddingLeft="?attr/dialog_horizontal_padding" + android:paddingRight="?attr/dialog_horizontal_padding" + android:paddingTop="?attr/dialog_vertical_padding"> - - - - - + android:text="@string/your_account" + style="@style/InputLabel" /> - + - + + + + + + + + diff --git a/src/main/res/layout/enter_jid_dialog.xml b/src/main/res/layout/enter_jid_dialog.xml index de178726c..9137b054e 100644 --- a/src/main/res/layout/enter_jid_dialog.xml +++ b/src/main/res/layout/enter_jid_dialog.xml @@ -1,35 +1,36 @@ - - - - - - - + + android:layout_height="match_parent" + android:orientation="vertical" + android:paddingBottom="?attr/dialog_vertical_padding" + android:paddingLeft="?attr/dialog_horizontal_padding" + android:paddingRight="?attr/dialog_horizontal_padding" + android:paddingTop="?attr/dialog_vertical_padding"> - - + android:text="@string/your_account"/> - \ No newline at end of file + + + + + + + + diff --git a/src/main/res/layout/join_conference_dialog.xml b/src/main/res/layout/join_conference_dialog.xml index d89b95c39..dfe8d30f9 100644 --- a/src/main/res/layout/join_conference_dialog.xml +++ b/src/main/res/layout/join_conference_dialog.xml @@ -1,43 +1,44 @@ - - - - - - + + android:layout_height="match_parent" + android:orientation="vertical" + android:paddingBottom="8dp" + android:paddingLeft="24dp" + android:paddingRight="24dp" + android:paddingTop="16dp"> - - + android:text="@string/your_account"/> + - + - \ No newline at end of file + + + + + +