Commit 52d0e56d authored by Alexander Ivanov's avatar Alexander Ivanov

Implement group add using DialogFragment.

parent de3f566b
...@@ -205,7 +205,6 @@ public class ContactAdd extends GroupListActivity implements ...@@ -205,7 +205,6 @@ public class ContactAdd extends GroupListActivity implements
@Override @Override
public void onAccept(DialogBuilder dialogBuilder) { public void onAccept(DialogBuilder dialogBuilder) {
super.onAccept(dialogBuilder);
switch (dialogBuilder.getDialogId()) { switch (dialogBuilder.getDialogId()) {
case DIALOG_SUBSCRIPTION_REQUEST_ID: case DIALOG_SUBSCRIPTION_REQUEST_ID:
try { try {
...@@ -222,7 +221,6 @@ public class ContactAdd extends GroupListActivity implements ...@@ -222,7 +221,6 @@ public class ContactAdd extends GroupListActivity implements
@Override @Override
public void onDecline(DialogBuilder dialogBuilder) { public void onDecline(DialogBuilder dialogBuilder) {
super.onDecline(dialogBuilder);
switch (dialogBuilder.getDialogId()) { switch (dialogBuilder.getDialogId()) {
case DIALOG_SUBSCRIPTION_REQUEST_ID: case DIALOG_SUBSCRIPTION_REQUEST_ID:
try { try {
...@@ -239,7 +237,6 @@ public class ContactAdd extends GroupListActivity implements ...@@ -239,7 +237,6 @@ public class ContactAdd extends GroupListActivity implements
@Override @Override
public void onCancel(DialogBuilder dialogBuilder) { public void onCancel(DialogBuilder dialogBuilder) {
super.onCancel(dialogBuilder);
switch (dialogBuilder.getDialogId()) { switch (dialogBuilder.getDialogId()) {
case DIALOG_SUBSCRIPTION_REQUEST_ID: case DIALOG_SUBSCRIPTION_REQUEST_ID:
finish(); finish();
......
...@@ -18,7 +18,6 @@ import java.util.ArrayList; ...@@ -18,7 +18,6 @@ import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import android.app.Dialog;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
...@@ -30,9 +29,8 @@ import android.widget.ArrayAdapter; ...@@ -30,9 +29,8 @@ import android.widget.ArrayAdapter;
import android.widget.ListView; import android.widget.ListView;
import android.widget.TextView; import android.widget.TextView;
import com.xabber.android.ui.dialog.ConfirmDialogListener; import com.xabber.android.ui.dialog.GroupAddDialogFragment;
import com.xabber.android.ui.dialog.DialogBuilder; import com.xabber.android.ui.dialog.GroupAddDialogFragment.OnGroupAddConfirmed;
import com.xabber.android.ui.dialog.GroupAddDialogBuilder;
import com.xabber.android.ui.helper.ManagedListActivity; import com.xabber.android.ui.helper.ManagedListActivity;
import com.xabber.androiddev.R; import com.xabber.androiddev.R;
...@@ -43,15 +41,13 @@ import com.xabber.androiddev.R; ...@@ -43,15 +41,13 @@ import com.xabber.androiddev.R;
* *
*/ */
public abstract class GroupListActivity extends ManagedListActivity implements public abstract class GroupListActivity extends ManagedListActivity implements
ConfirmDialogListener, OnItemClickListener { OnItemClickListener, OnGroupAddConfirmed {
private static final String SAVED_GROUPS = "com.xabber.android.ui.ContactList.SAVED_GROUPS"; private static final String SAVED_GROUPS = "com.xabber.android.ui.ContactList.SAVED_GROUPS";
private static final String SAVED_SELECTED = "com.xabber.android.ui.ContactList.SAVED_SELECTED"; private static final String SAVED_SELECTED = "com.xabber.android.ui.ContactList.SAVED_SELECTED";
static final int OPTION_MENU_ADD_GROUP_ID = 1; static final int OPTION_MENU_ADD_GROUP_ID = 1;
static final int DIALOG_ADD_GROUP_ID = 0x10;
private ArrayAdapter<String> arrayAdapter; private ArrayAdapter<String> arrayAdapter;
private ListView listView; private ListView listView;
...@@ -148,29 +144,22 @@ public abstract class GroupListActivity extends ManagedListActivity implements ...@@ -148,29 +144,22 @@ public abstract class GroupListActivity extends ManagedListActivity implements
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case OPTION_MENU_ADD_GROUP_ID: case OPTION_MENU_ADD_GROUP_ID:
showDialog(DIALOG_ADD_GROUP_ID); showGroupAddDialog();
return true; return true;
} }
return false; return false;
} }
@Override private void showGroupAddDialog() {
protected Dialog onCreateDialog(int id) { GroupAddDialogFragment.newInstance(getGroups()).show(
super.onCreateDialog(id); getSupportFragmentManager(), "GROUP-ADD");
switch (id) {
case DIALOG_ADD_GROUP_ID:
return new GroupAddDialogBuilder(this, DIALOG_ADD_GROUP_ID, this,
getGroups()).create();
default:
return null;
}
} }
@Override @Override
public void onItemClick(AdapterView<?> parent, View view, int position, public void onItemClick(AdapterView<?> parent, View view, int position,
long id) { long id) {
if (listView.getItemAtPosition(position) == null) // Footer if (listView.getItemAtPosition(position) == null) // Footer
showDialog(DIALOG_ADD_GROUP_ID); showGroupAddDialog();
} }
/** /**
...@@ -192,24 +181,12 @@ public abstract class GroupListActivity extends ManagedListActivity implements ...@@ -192,24 +181,12 @@ public abstract class GroupListActivity extends ManagedListActivity implements
} }
@Override @Override
public void onAccept(DialogBuilder dialog) { public void onGroupAddConfirmed(String group) {
switch (dialog.getDialogId()) { ArrayList<String> groups = getGroups();
case DIALOG_ADD_GROUP_ID: groups.add(group);
String group = ((GroupAddDialogBuilder) dialog).getName(); ArrayList<String> selected = getSelected();
ArrayList<String> groups = getGroups(); selected.add(group);
groups.add(group); setGroups(groups, selected);
ArrayList<String> selected = getSelected();
selected.add(group);
setGroups(groups, selected);
}
}
@Override
public void onDecline(DialogBuilder dialog) {
}
@Override
public void onCancel(DialogBuilder dialog) {
} }
} }
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
*/ */
package com.xabber.android.ui.dialog; package com.xabber.android.ui.dialog;
import java.util.ArrayList;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.AlertDialog.Builder; import android.app.AlertDialog.Builder;
import android.app.Dialog; import android.app.Dialog;
...@@ -45,6 +47,12 @@ public abstract class AbstractDialogFragment extends DialogFragment { ...@@ -45,6 +47,12 @@ public abstract class AbstractDialogFragment extends DialogFragment {
return this; return this;
} }
protected AbstractDialogFragment putAgrument(String key,
ArrayList<String> value) {
initArguments().putStringArrayList(key, value);
return this;
}
protected AbstractDialogFragment putAgrument(String key, boolean value) { protected AbstractDialogFragment putAgrument(String key, boolean value) {
initArguments().putBoolean(key, value); initArguments().putBoolean(key, value);
return this; return this;
......
...@@ -14,51 +14,68 @@ ...@@ -14,51 +14,68 @@
*/ */
package com.xabber.android.ui.dialog; package com.xabber.android.ui.dialog;
import java.util.Collection; import java.util.ArrayList;
import android.app.Activity; import android.app.AlertDialog;
import android.content.DialogInterface; import android.app.AlertDialog.Builder;
import android.support.v4.app.DialogFragment;
import android.view.View; import android.view.View;
import android.widget.EditText; import android.widget.EditText;
import android.widget.Toast; import android.widget.Toast;
import com.xabber.androiddev.R; import com.xabber.androiddev.R;
public class GroupAddDialogBuilder extends ConfirmDialogBuilder { public class GroupAddDialogFragment extends ConfirmDialogFragment {
private final Collection<String> groups; private static final String GROUPS = "GROUPS";
private final EditText nameView;
public GroupAddDialogBuilder(Activity activity, int dialogId, /**
ConfirmDialogListener listener, Collection<String> groups) { * @param account
super(activity, dialogId, listener); * can be <code>null</code> to be used for all accounts.
setTitle(R.string.group_add); * @param group
this.groups = groups; * can be <code>null</code> to be used for "no group".
View layout = activity.getLayoutInflater().inflate(R.layout.group_name, * @return
null); */
public static DialogFragment newInstance(ArrayList<String> groups) {
return new GroupAddDialogFragment().putAgrument(GROUPS, groups);
}
private ArrayList<String> groups;
private EditText nameView;
@Override
protected Builder getBuilder() {
groups = getArguments().getStringArrayList(GROUPS);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.group_add);
View layout = getActivity().getLayoutInflater().inflate(
R.layout.group_name, null);
nameView = (EditText) layout.findViewById(R.id.group_name); nameView = (EditText) layout.findViewById(R.id.group_name);
setView(layout); builder.setView(layout);
return builder;
} }
@Override @Override
public void onAccept(DialogInterface dialog) { protected boolean onPositiveClick() {
String name = nameView.getText().toString(); String group = nameView.getText().toString();
if ("".equals(name)) { if ("".equals(group)) {
Toast.makeText(activity, Toast.makeText(getActivity(), getString(R.string.group_is_empty),
activity.getString(R.string.group_is_empty),
Toast.LENGTH_LONG).show(); Toast.LENGTH_LONG).show();
return; return false;
} }
if (groups.contains(name)) { if (groups.contains(group)) {
Toast.makeText(activity, activity.getString(R.string.group_exists), Toast.makeText(getActivity(), getString(R.string.group_exists),
Toast.LENGTH_LONG).show(); Toast.LENGTH_LONG).show();
return; return false;
} }
super.onAccept(dialog); ((OnGroupAddConfirmed) getActivity()).onGroupAddConfirmed(group);
return true;
} }
public String getName() { public interface OnGroupAddConfirmed {
return nameView.getText().toString();
void onGroupAddConfirmed(String group);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment