/**
* galaxy inc.
* meetup client for android
*/
package com.galaxy.meetup.client.android.oob;
import java.util.ArrayList;
import java.util.Iterator;
import android.app.Dialog;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import com.galaxy.meetup.client.android.Intents;
import com.galaxy.meetup.client.android.R;
import com.galaxy.meetup.server.client.domain.OutOfBoxAction;
import com.galaxy.meetup.server.client.domain.OutOfBoxDialog;
import com.galaxy.meetup.server.client.domain.OutOfBoxField;
import com.galaxy.meetup.server.client.domain.OutOfBoxView;
import com.galaxy.meetup.server.client.domain.request.MobileOutOfBoxRequest;
/**
*
* @author sihai
*
*/
public class OutOfBoxDialogInflater implements OnClickListener {
private final ActionCallback mActionCallback;
private final FragmentActivity mActivity;
private final OutOfBoxView mOutOfBoxView;
private final ViewGroup mParent;
public OutOfBoxDialogInflater(FragmentActivity fragmentactivity, ViewGroup viewgroup, OutOfBoxView outofboxview, ActionCallback actioncallback)
{
mActivity = fragmentactivity;
mParent = viewgroup;
mOutOfBoxView = outofboxview;
mActionCallback = actioncallback;
}
public final void inflate()
{
mParent.removeAllViews();
ViewGroup viewgroup = mParent;
OutOfBoxDialog outofboxdialog = mOutOfBoxView.dialog;
android.content.Context context = (new android.app.AlertDialog.Builder(mActivity)).create().getContext();
Dialog dialog = new Dialog(context);
ViewGroup viewgroup1;
if(outofboxdialog.header != null)
{
dialog.setTitle(outofboxdialog.header);
TextView textview = (TextView)dialog.findViewById(0x1020016);
if(textview != null)
textview.setSingleLine(false);
} else
{
dialog.requestWindowFeature(1);
}
dialog.setContentView(R.layout.oob_dialog);
if(outofboxdialog.text != null)
((TextView)dialog.findViewById(R.id.message)).setText(outofboxdialog.text);
viewgroup1 = (ViewGroup)dialog.findViewById(R.id.buttonPanel);
if(outofboxdialog.action != null)
{
Button button;
for(Iterator iterator = outofboxdialog.action.iterator(); iterator.hasNext(); viewgroup1.addView(button))
{
OutOfBoxAction outofboxaction = (OutOfBoxAction)iterator.next();
button = (Button)LayoutInflater.from(context).inflate(R.layout.oob_dialog_button, viewgroup1, false);
button.setText(outofboxaction.text);
button.setTag(outofboxaction);
button.setOnClickListener(this);
}
}
viewgroup.addView(dialog.getWindow().getDecorView());
}
public final void onClick(View view)
{
OutOfBoxAction outofboxaction = (OutOfBoxAction)view.getTag();
if("BACK".equals(outofboxaction.type))
{
if(!mActivity.getSupportFragmentManager().popBackStackImmediate())
{
mActivity.setResult(0);
mActivity.finish();
}
} else
if("CLOSE".equals(outofboxaction.type))
{
mActivity.setResult(0);
mActivity.finish();
} else
if("URL".equals(outofboxaction.type))
{
Intents.viewUrl(mActivity, null, outofboxaction.url);
} else
{
ActionCallback actioncallback = mActionCallback;
MobileOutOfBoxRequest mobileoutofboxrequest = new MobileOutOfBoxRequest();
mobileoutofboxrequest.input = new ArrayList();
Iterator iterator = mOutOfBoxView.field.iterator();
do
{
if(!iterator.hasNext())
break;
OutOfBoxField outofboxfield = (OutOfBoxField)iterator.next();
if(outofboxfield.input != null)
mobileoutofboxrequest.input.add(outofboxfield.input);
} while(true);
mobileoutofboxrequest.action = new OutOfBoxAction();
mobileoutofboxrequest.action.type = outofboxaction.type;
actioncallback.sendOutOfBoxRequest(mobileoutofboxrequest);
}
}
}