package com.vt.vthacks; import java.io.Serializable; import com.vt.vthacks.model.IContactMethod; import com.vt.vthacks.model.IGroup; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; public class GroupDialogFragment extends DialogFragment { private static final String GROUP_DIALOG_LISTENER = "groupDialogListener"; private static final String GROUP = "group"; private GroupDialogListener listener; private IGroup group; public interface GroupDialogListener extends Serializable { public void onPasswordEntered(String groupID, String password); public void onCancelClicked(); } public static GroupDialogFragment newInstance(GroupDialogListener listener, IGroup group) { GroupDialogFragment fragment = new GroupDialogFragment(); Bundle bundle = new Bundle(); bundle.putSerializable(GROUP_DIALOG_LISTENER, listener); bundle.putSerializable(GROUP, group); fragment.setArguments(bundle); return fragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getArguments() != null) { listener = (GroupDialogListener)getArguments().getSerializable(GROUP_DIALOG_LISTENER); group = (IGroup)getArguments().getSerializable(GROUP); } } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { LayoutInflater inflater = getActivity().getLayoutInflater(); final View dialogView = inflater.inflate(R.layout.group_dialog, null); TextView membersTextView = (TextView) dialogView.findViewById(R.id.membersTextView); membersTextView.setText(group.getMembers()); TextView ideasTextView = (TextView) dialogView.findViewById(R.id.ideasTextView); ideasTextView.setText(group.getIdeas()); LinearLayout contactMethodsLayout = (LinearLayout) dialogView.findViewById(R.id.contact_linear_layout); for(final IContactMethod method : group.getContactMethods()) { ImageView button = new ImageView(getActivity()); switch(method.getType()) { case EMAIL: button.setImageResource(R.drawable.email_res); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND); emailIntent.setType("plain/text"); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{method.getName()}); emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Looking For Group"); emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Hello,\n\n\t"); getActivity().startActivity(emailIntent); } }); break; case PHONE: button.setImageResource(R.drawable.message_res); if (Build.VERSION.SDK_INT < 19) { button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent smsIntent = new Intent(Intent.ACTION_VIEW); smsIntent.setType("vnd.android-dir/mms-sms"); smsIntent.putExtra("address", method.getName()); getActivity().startActivity(smsIntent); } }); } else { button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_SENDTO); intent.setData(Uri.parse("smsto:" + Uri.encode(method.getName()))); getActivity().startActivity(intent); } }); } break; case TWITTER: button.setImageResource(R.drawable.tweet_res); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent tweetIntent = new Intent(Intent.ACTION_VIEW); tweetIntent.setData(Uri.parse("https://twitter.com/intent/tweet?source=webclient&text=" + Uri.encode(method.getName()))); getActivity().startActivity(tweetIntent); } }); break; default: break; } contactMethodsLayout.addView(button); } AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setView(dialogView) .setPositiveButton(R.string.delete_group, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { String password = ((EditText) dialogView.findViewById(R.id.passwordEditText)).getText().toString(); if (listener != null) { listener.onPasswordEntered(group.getID(), password); } GroupDialogFragment.this.getDialog().cancel(); } }) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { if (listener != null) { listener.onCancelClicked(); } GroupDialogFragment.this.getDialog().cancel(); } }); return builder.create(); } @Override public void onPause() { super.onPause(); if (GroupDialogFragment.this.getDialog() != null) { GroupDialogFragment.this.getDialog().cancel(); } } }