package com.beem.project.beem.jingle.demo;

import org.jivesoftware.smack.ConnectionConfiguration;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.ConnectionConfiguration.SecurityMode;
import org.jivesoftware.smack.util.StringUtils;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.beem.project.beem.R;
import com.beem.project.beem.jingle.JingleService;

/**
 * Activity used to test Jingle call.
 * @author darisk
 */
public class JingleCallActivity extends Activity {

    private static final int SLP_DURATION = 3000;
    private static final int DEFAULT_XMPP_PORT = 5222;

    private XMPPConnection mConnection;
    private ConnectionConfiguration mConf;
    private JingleService mJingle;

    private Button mBtconnect;
    private Button mBtcall;
    private EditText mEdJID;
    private EditText mEdPassword;
    private EditText mEdReceiver;

    /**
     * Constructor.
     */
    public JingleCallActivity() {
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
	java.security.Security.addProvider(new com.sun.security.sasl.Provider());
	super.onCreate(savedInstanceState);
	setContentView(R.layout.jingle_call_activity);
	mConf = new ConnectionConfiguration("10.0.2.2", DEFAULT_XMPP_PORT);
	// mConf = new ConnectionConfiguration("elyzion.net",
	// DEFAULT_XMPP_PORT);
	mConf.setSecurityMode(SecurityMode.required);
	mEdJID = (EditText) findViewById(R.id.jingledemocalljid);
	mEdPassword = (EditText) findViewById(R.id.jingledemocallpassword);
	mEdReceiver = (EditText) findViewById(R.id.jingledemocallreceiver);
	mBtconnect = (Button) findViewById(R.id.jingledemocallconnectbutton);
	mBtconnect.setOnClickListener(new OnClickListener() {

	    @Override
	    public void onClick(View arg0) {
		String jid = mEdJID.getText().toString();
		String login = StringUtils.parseName(jid);
		mConnection = new XMPPConnection(mConf);
		String password = mEdPassword.getText().toString();
		try {
		    mConnection.connect();
		    Thread.sleep(SLP_DURATION);
		    mConnection.login(login, password);
		    mJingle = new JingleService(mConnection);
		    mJingle.initWhenConntected(mConnection);
		    mBtcall.setEnabled(true);
		    Toast.makeText(JingleCallActivity.this, "Connected", Toast.LENGTH_SHORT);
		} catch (XMPPException e) {
		    // TODO Auto-generated catch block
		    e.printStackTrace();
		} catch (InterruptedException e) {
		    // TODO Auto-generated catch block
		    e.printStackTrace();
		}
	    }

	});
	mBtcall = (Button) findViewById(R.id.jingledemocallbutton);
	mBtcall.setOnClickListener(new OnClickListener() {
	    @Override
	    public void onClick(View arg0) {
		String jid = mEdReceiver.getText().toString();
		if (!"".equals(jid)) {
		    mJingle.call(jid);
		    Toast.makeText(JingleCallActivity.this, "Appel en cours", Toast.LENGTH_SHORT);
		} else
		    Toast.makeText(JingleCallActivity.this, "Remplir le champ (JID complet en  toto@tutu.com/truc)",
			Toast.LENGTH_SHORT);
	    }
	});

    }

}
