src/com/beem/project/beem/ui/AddContact.java
author darisk@kaaliyah
Mon, 10 Aug 2009 07:17:15 +0200
changeset 349 84d45a88699f
parent 340 5dee5c1e4a29
child 351 718557c6c309
permissions -rw-r--r--
Checkstyle rules
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
132
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
     1
/**
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
     2
 * 
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
     3
 */
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
     4
package com.beem.project.beem.ui;
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
     5
136
4cba5e27fcb3 debug et fin de l'ajout de contacte, il faut encore gerer la
nikita@nikita-rack
parents: 132
diff changeset
     6
import java.util.ArrayList;
4cba5e27fcb3 debug et fin de l'ajout de contacte, il faut encore gerer la
nikita@nikita-rack
parents: 132
diff changeset
     7
import java.util.List;
289
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 287
diff changeset
     8
import java.util.regex.Pattern;
136
4cba5e27fcb3 debug et fin de l'ajout de contacte, il faut encore gerer la
nikita@nikita-rack
parents: 132
diff changeset
     9
132
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
    10
import android.app.Activity;
244
7c67ea0a501c Suppression beemapplication dans addcontact.
marseille@marseille-desktop
parents: 213
diff changeset
    11
import android.content.ComponentName;
7c67ea0a501c Suppression beemapplication dans addcontact.
marseille@marseille-desktop
parents: 213
diff changeset
    12
import android.content.Intent;
7c67ea0a501c Suppression beemapplication dans addcontact.
marseille@marseille-desktop
parents: 213
diff changeset
    13
import android.content.ServiceConnection;
132
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
    14
import android.os.Bundle;
244
7c67ea0a501c Suppression beemapplication dans addcontact.
marseille@marseille-desktop
parents: 213
diff changeset
    15
import android.os.IBinder;
132
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
    16
import android.os.RemoteException;
336
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
    17
import android.util.Log;
132
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
    18
import android.view.View;
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
    19
import android.view.View.OnClickListener;
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
    20
import android.widget.Button;
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
    21
import android.widget.EditText;
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
    22
import android.widget.Toast;
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
    23
244
7c67ea0a501c Suppression beemapplication dans addcontact.
marseille@marseille-desktop
parents: 213
diff changeset
    24
import com.beem.project.beem.BeemService;
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
    25
import com.beem.project.beem.R;
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
    26
import com.beem.project.beem.service.aidl.IXmppFacade;
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
    27
132
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
    28
/**
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
    29
 * @author nikita
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
    30
 */
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
    31
public class AddContact extends Activity {
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
    32
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    33
    protected static final String TAG = "AddContact";
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    34
    private final List<String> mGroup = new ArrayList<String>();
340
5dee5c1e4a29 Some checkstyle rules
darisk@kaaliyah
parents: 336
diff changeset
    35
    private IXmppFacade mXmppFacade;
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    36
    private final ServiceConnection mServConn = new BeemServiceConnection();
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    37
349
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    38
    /**
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    39
     * Constructor.
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    40
     */
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    41
    public AddContact() { }
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    42
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    43
    @Override
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    44
    protected void onCreate(Bundle savedInstanceState) {
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    45
	super.onCreate(savedInstanceState);
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    46
	setContentView(R.layout.addcontact);
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    47
	Button ok = (Button) findViewById(R.id.addc_ok);
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    48
	ok.setOnClickListener(mOkListener);
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    49
	bindService(new Intent(this, BeemService.class), mServConn, BIND_AUTO_CREATE);
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    50
    }
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    51
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    52
    @Override
287
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
    53
    protected void onStop() {
d951927691e1 EntriesDeleted
Marseille
parents: 286
diff changeset
    54
	super.onStop();
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    55
	unbindService(mServConn);
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    56
    }
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    57
349
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    58
    /**
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    59
     * The ServiceConnection used to connect to the Beem service.
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    60
     */
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    61
    private class BeemServiceConnection implements ServiceConnection {
212
bbc0b169cdf0 Issues #124, #67, #88
dasilvj
parents: 207
diff changeset
    62
349
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    63
	/**
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    64
	 * Constructor.
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    65
	 */
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    66
	public BeemServiceConnection() { }
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    67
256
35f81983d351 Feature #143
nikita@localhost
parents: 255
diff changeset
    68
	@Override
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    69
	public void onServiceConnected(ComponentName name, IBinder service) {
340
5dee5c1e4a29 Some checkstyle rules
darisk@kaaliyah
parents: 336
diff changeset
    70
	    mXmppFacade = IXmppFacade.Stub.asInterface(service);
244
7c67ea0a501c Suppression beemapplication dans addcontact.
marseille@marseille-desktop
parents: 213
diff changeset
    71
	}
7c67ea0a501c Suppression beemapplication dans addcontact.
marseille@marseille-desktop
parents: 213
diff changeset
    72
7c67ea0a501c Suppression beemapplication dans addcontact.
marseille@marseille-desktop
parents: 213
diff changeset
    73
	@Override
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    74
	public void onServiceDisconnected(ComponentName name) {
340
5dee5c1e4a29 Some checkstyle rules
darisk@kaaliyah
parents: 336
diff changeset
    75
	    mXmppFacade = null;
265
3ee7b8fdbddd L'ajout de contact ne necessite plus de remplir tous les champs
Da Risk <darisk972@gmail.com>
parents: 256
diff changeset
    76
	}
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    77
    }
265
3ee7b8fdbddd L'ajout de contact ne necessite plus de remplir tous les champs
Da Risk <darisk972@gmail.com>
parents: 256
diff changeset
    78
349
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    79
    /**
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    80
     * Get the text of a widget.
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    81
     * @param id the id of the widget.
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
    82
     */
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    83
    private String getWidgetText(int id) {
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    84
	EditText widget = (EditText) this.findViewById(id);
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    85
	return widget.getText().toString();
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    86
    }
265
3ee7b8fdbddd L'ajout de contact ne necessite plus de remplir tous les champs
Da Risk <darisk972@gmail.com>
parents: 256
diff changeset
    87
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    88
    private final OnClickListener mOkListener = new OnClickListener() {
265
3ee7b8fdbddd L'ajout de contact ne necessite plus de remplir tous les champs
Da Risk <darisk972@gmail.com>
parents: 256
diff changeset
    89
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    90
	@Override
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
    91
	public void onClick(View v) {
336
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
    92
	    String login;
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
    93
	    login = getWidgetText(R.id.addc_login);
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
    94
	    if (login.length() == 0) {
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
    95
		Toast.makeText(AddContact.this, getString(R.string.AddCBadForm), Toast.LENGTH_SHORT).show();
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
    96
		return;
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
    97
	    }
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
    98
	    boolean isEmail = Pattern.matches("[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9-]+.)+[a-zA-Z]{2,4}", login);
289
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 287
diff changeset
    99
	    if (!isEmail) {
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 287
diff changeset
   100
		Toast.makeText(AddContact.this, getString(R.string.AddCContactAddedLoginError), Toast.LENGTH_SHORT)
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 287
diff changeset
   101
		    .show();
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 287
diff changeset
   102
		return;
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 287
diff changeset
   103
	    }
336
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
   104
	    String alias;
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
   105
	    alias = getWidgetText(R.id.addc_alias);
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
   106
	    if (getWidgetText(R.id.addc_group).length() != 0)
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
   107
		mGroup.add(getWidgetText(R.id.addc_group));
336
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
   108
	    try {
340
5dee5c1e4a29 Some checkstyle rules
darisk@kaaliyah
parents: 336
diff changeset
   109
		if (mXmppFacade != null) {
5dee5c1e4a29 Some checkstyle rules
darisk@kaaliyah
parents: 336
diff changeset
   110
		    if (mXmppFacade.getRoster().getContact(login) != null)
5dee5c1e4a29 Some checkstyle rules
darisk@kaaliyah
parents: 336
diff changeset
   111
			mGroup.addAll(mXmppFacade.getRoster().getContact(login).getGroups());
349
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
   112
		    if (mXmppFacade.getRoster().addContact(login, alias,
84d45a88699f Checkstyle rules
darisk@kaaliyah
parents: 340
diff changeset
   113
				mGroup.toArray(new String[mGroup.size()])) == null) {
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
   114
			Toast.makeText(AddContact.this, getString(R.string.AddCContactAddedError), Toast.LENGTH_SHORT)
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
   115
			    .show();
289
a841ea9fba02 BeemLike suppression d'entry !!
Marseille
parents: 287
diff changeset
   116
			return;
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
   117
		    } else {
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
   118
			Toast.makeText(AddContact.this, getString(R.string.AddCContactAdded), Toast.LENGTH_SHORT)
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
   119
			    .show();
336
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
   120
			finish();
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
   121
		    }
265
3ee7b8fdbddd L'ajout de contact ne necessite plus de remplir tous les champs
Da Risk <darisk972@gmail.com>
parents: 256
diff changeset
   122
		}
336
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
   123
	    } catch (RemoteException e) {
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
   124
		Toast.makeText(AddContact.this, e.getMessage(), Toast.LENGTH_SHORT).show();
4dbd2caf2a6e GRos bug de la mort qui tue dans smack ...
Marseille
parents: 333
diff changeset
   125
		Log.e(TAG, "Problem adding contact", e);
286
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
   126
	    }
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
   127
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
   128
	}
8979375c19f0 Suppression de contact.
Marseille
parents: 265
diff changeset
   129
    };
132
728adc0feb4e debut du addcontact
nikita@nikita-rack
parents:
diff changeset
   130
}