author | Vincent Veronis <veroni_v@epitech.net> |
Fri, 09 Oct 2009 15:09:16 +0200 | |
changeset 453 | ca4fa180e533 |
parent 452 | eb1ce472a1a5 |
child 472 | 4acc4947d6bc |
permissions | -rw-r--r-- |
430 | 1 |
package com.beem.project.beem.ui; |
2 |
||
443
97c8c32b61d0
maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents:
439
diff
changeset
|
3 |
import java.util.ArrayList; |
97c8c32b61d0
maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents:
439
diff
changeset
|
4 |
|
430 | 5 |
import android.app.ListActivity; |
6 |
import android.content.ComponentName; |
|
7 |
import android.content.Intent; |
|
8 |
import android.content.IntentFilter; |
|
9 |
import android.content.ServiceConnection; |
|
10 |
import android.os.Bundle; |
|
11 |
import android.os.IBinder; |
|
12 |
import android.os.RemoteException; |
|
439
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
13 |
import android.view.KeyEvent; |
436
13468f4c8f45
petit debug sur le call et maj group
Nikita Kozlov <nikita@beem-project.com>
parents:
430
diff
changeset
|
14 |
import android.view.View; |
439
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
15 |
import android.view.View.OnKeyListener; |
447
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
16 |
import android.widget.AdapterView; |
430 | 17 |
import android.widget.ArrayAdapter; |
443
97c8c32b61d0
maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents:
439
diff
changeset
|
18 |
import android.widget.CheckedTextView; |
430 | 19 |
import android.widget.ListView; |
436
13468f4c8f45
petit debug sur le call et maj group
Nikita Kozlov <nikita@beem-project.com>
parents:
430
diff
changeset
|
20 |
import android.widget.TextView; |
447
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
21 |
import android.widget.AdapterView.OnItemClickListener; |
430 | 22 |
|
23 |
import com.beem.project.beem.BeemService; |
|
24 |
import com.beem.project.beem.R; |
|
25 |
import com.beem.project.beem.service.Contact; |
|
26 |
import com.beem.project.beem.service.aidl.IRoster; |
|
27 |
import com.beem.project.beem.service.aidl.IXmppFacade; |
|
28 |
import com.beem.project.beem.utils.BeemBroadcastReceiver; |
|
29 |
||
30 |
/** |
|
437
fbac93bba310
un petit peu de doc en plus
Nikita Kozlov <nikita@beem-project.com>
parents:
436
diff
changeset
|
31 |
* That activity permit to manage user groups. |
430 | 32 |
* @author nikita |
33 |
*/ |
|
34 |
public class GroupList extends ListActivity { |
|
35 |
||
36 |
private static final Intent SERVICE_INTENT = new Intent(); |
|
37 |
||
38 |
private final ServiceConnection mServConn = new BeemServiceConnection(); |
|
39 |
private BeemBroadcastReceiver mReceiver; |
|
40 |
private IXmppFacade mXmppFacade; |
|
41 |
private IRoster mRoster; |
|
42 |
private String mJID; |
|
43 |
private ArrayAdapter<String> mGroups; |
|
44 |
private Contact mContact; |
|
436
13468f4c8f45
petit debug sur le call et maj group
Nikita Kozlov <nikita@beem-project.com>
parents:
430
diff
changeset
|
45 |
private TextView mText; |
450
fe0ba62ee3ff
Correction de l'ensemble des erreurs de CheckStyle.
dasilvj
parents:
443
diff
changeset
|
46 |
private final ArrayList<String> mStrings = new ArrayList<String>(); |
436
13468f4c8f45
petit debug sur le call et maj group
Nikita Kozlov <nikita@beem-project.com>
parents:
430
diff
changeset
|
47 |
|
430 | 48 |
static { |
49 |
SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService")); |
|
50 |
} |
|
51 |
||
437
fbac93bba310
un petit peu de doc en plus
Nikita Kozlov <nikita@beem-project.com>
parents:
436
diff
changeset
|
52 |
/** |
fbac93bba310
un petit peu de doc en plus
Nikita Kozlov <nikita@beem-project.com>
parents:
436
diff
changeset
|
53 |
* Constructor. |
fbac93bba310
un petit peu de doc en plus
Nikita Kozlov <nikita@beem-project.com>
parents:
436
diff
changeset
|
54 |
*/ |
fbac93bba310
un petit peu de doc en plus
Nikita Kozlov <nikita@beem-project.com>
parents:
436
diff
changeset
|
55 |
public GroupList() { |
fbac93bba310
un petit peu de doc en plus
Nikita Kozlov <nikita@beem-project.com>
parents:
436
diff
changeset
|
56 |
} |
430 | 57 |
|
58 |
@Override |
|
59 |
public void onCreate(Bundle savedInstanceState) { |
|
60 |
super.onCreate(savedInstanceState); |
|
61 |
setContentView(R.layout.group_list); |
|
62 |
mReceiver = new BeemBroadcastReceiver(mServConn); |
|
439
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
63 |
mContact = getIntent().getParcelableExtra("contact"); |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
64 |
mJID = mContact.getJID(); |
430 | 65 |
final ListView listView = getListView(); |
66 |
||
67 |
listView.setItemsCanFocus(false); |
|
68 |
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); |
|
447
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
69 |
listView.setOnItemClickListener(new GroupOnItemClickListener()); |
437
fbac93bba310
un petit peu de doc en plus
Nikita Kozlov <nikita@beem-project.com>
parents:
436
diff
changeset
|
70 |
|
436
13468f4c8f45
petit debug sur le call et maj group
Nikita Kozlov <nikita@beem-project.com>
parents:
430
diff
changeset
|
71 |
mText = (TextView) findViewById(R.id.GroupListText); |
439
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
72 |
mText.setOnKeyListener(new GroupListOnKeyListener()); |
430 | 73 |
} |
74 |
||
75 |
/** |
|
76 |
* {@inheritDoc} |
|
77 |
*/ |
|
78 |
@Override |
|
79 |
protected void onResume() { |
|
80 |
super.onResume(); |
|
81 |
this.registerReceiver(mReceiver, new IntentFilter(BeemBroadcastReceiver.BEEM_CONNECTION_CLOSED)); |
|
82 |
bindService(new Intent(this, BeemService.class), mServConn, BIND_AUTO_CREATE); |
|
83 |
mReceiver.setBinded(); |
|
84 |
} |
|
85 |
||
86 |
/** |
|
87 |
* {@inheritDoc} |
|
88 |
*/ |
|
89 |
@Override |
|
90 |
protected void onPause() { |
|
91 |
super.onPause(); |
|
92 |
this.unregisterReceiver(mReceiver); |
|
93 |
if (mReceiver.isBinded()) |
|
94 |
unbindService(mServConn); |
|
95 |
} |
|
437
fbac93bba310
un petit peu de doc en plus
Nikita Kozlov <nikita@beem-project.com>
parents:
436
diff
changeset
|
96 |
|
fbac93bba310
un petit peu de doc en plus
Nikita Kozlov <nikita@beem-project.com>
parents:
436
diff
changeset
|
97 |
/** |
452 | 98 |
* init activity list adapter. |
437
fbac93bba310
un petit peu de doc en plus
Nikita Kozlov <nikita@beem-project.com>
parents:
436
diff
changeset
|
99 |
*/ |
fbac93bba310
un petit peu de doc en plus
Nikita Kozlov <nikita@beem-project.com>
parents:
436
diff
changeset
|
100 |
private void setAdapter() { |
436
13468f4c8f45
petit debug sur le call et maj group
Nikita Kozlov <nikita@beem-project.com>
parents:
430
diff
changeset
|
101 |
try { |
447
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
102 |
for (String group : mRoster.getGroupsNames()) { |
443
97c8c32b61d0
maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents:
439
diff
changeset
|
103 |
mStrings.add(group); |
97c8c32b61d0
maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents:
439
diff
changeset
|
104 |
} |
447
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
105 |
mGroups = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, mStrings); |
436
13468f4c8f45
petit debug sur le call et maj group
Nikita Kozlov <nikita@beem-project.com>
parents:
430
diff
changeset
|
106 |
setListAdapter(mGroups); |
13468f4c8f45
petit debug sur le call et maj group
Nikita Kozlov <nikita@beem-project.com>
parents:
430
diff
changeset
|
107 |
mContact = mRoster.getContact(mJID); |
13468f4c8f45
petit debug sur le call et maj group
Nikita Kozlov <nikita@beem-project.com>
parents:
430
diff
changeset
|
108 |
for (String group : mContact.getGroups()) { |
13468f4c8f45
petit debug sur le call et maj group
Nikita Kozlov <nikita@beem-project.com>
parents:
430
diff
changeset
|
109 |
getListView().setItemChecked(mGroups.getPosition(group), true); |
13468f4c8f45
petit debug sur le call et maj group
Nikita Kozlov <nikita@beem-project.com>
parents:
430
diff
changeset
|
110 |
} |
13468f4c8f45
petit debug sur le call et maj group
Nikita Kozlov <nikita@beem-project.com>
parents:
430
diff
changeset
|
111 |
} catch (RemoteException e) { |
13468f4c8f45
petit debug sur le call et maj group
Nikita Kozlov <nikita@beem-project.com>
parents:
430
diff
changeset
|
112 |
e.printStackTrace(); |
437
fbac93bba310
un petit peu de doc en plus
Nikita Kozlov <nikita@beem-project.com>
parents:
436
diff
changeset
|
113 |
} |
436
13468f4c8f45
petit debug sur le call et maj group
Nikita Kozlov <nikita@beem-project.com>
parents:
430
diff
changeset
|
114 |
} |
430 | 115 |
|
448 | 116 |
/** |
117 |
* Event when group is added. |
|
118 |
*/ |
|
439
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
119 |
private class GroupListOnKeyListener implements OnKeyListener { |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
120 |
|
448 | 121 |
/** |
122 |
* Constructor. |
|
123 |
*/ |
|
124 |
public GroupListOnKeyListener() { |
|
125 |
} |
|
126 |
||
439
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
127 |
@Override |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
128 |
public boolean onKey(View v, int keyCode, KeyEvent event) { |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
129 |
if (event.getAction() == KeyEvent.ACTION_DOWN) { |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
130 |
switch (keyCode) { |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
131 |
case KeyEvent.KEYCODE_DPAD_CENTER: |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
132 |
case KeyEvent.KEYCODE_ENTER: |
443
97c8c32b61d0
maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents:
439
diff
changeset
|
133 |
if (mText.getText().length() == 0) |
97c8c32b61d0
maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents:
439
diff
changeset
|
134 |
return false; |
97c8c32b61d0
maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents:
439
diff
changeset
|
135 |
String groupname = mText.getText().toString(); |
97c8c32b61d0
maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents:
439
diff
changeset
|
136 |
mGroups.add(groupname); |
97c8c32b61d0
maj de groupList, ce devrait etre bon pour l'ajout de group et l'ajout de contact dans un groupe, mais a debug encore
Nikita Kozlov <nikita@beem-project.com>
parents:
439
diff
changeset
|
137 |
mText.setText(null); |
439
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
138 |
return true; |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
139 |
default: |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
140 |
return false; |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
141 |
} |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
142 |
} |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
143 |
return false; |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
144 |
} |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
145 |
|
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
146 |
} |
bd4ab0cd1a34
petite simplification de Contactdialog/userinfo
Nikita Kozlov <nikita@beem-project.com>
parents:
437
diff
changeset
|
147 |
|
448 | 148 |
/** |
149 |
* Event click on list group contact. |
|
150 |
*/ |
|
447
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
151 |
private class GroupOnItemClickListener implements OnItemClickListener { |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
152 |
|
448 | 153 |
/** |
154 |
* Constructor. |
|
155 |
*/ |
|
156 |
public GroupOnItemClickListener() { |
|
157 |
} |
|
158 |
||
447
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
159 |
@Override |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
160 |
public void onItemClick(AdapterView<?> arg0, View v, int arg2, long arg3) { |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
161 |
CheckedTextView textView = (CheckedTextView) v; |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
162 |
if (!textView.isChecked()) { |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
163 |
try { |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
164 |
mRoster.addContactToGroup(textView.getText().toString(), mJID); |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
165 |
} catch (RemoteException e) { |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
166 |
e.printStackTrace(); |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
167 |
} |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
168 |
} else { |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
169 |
try { |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
170 |
mRoster.removeContactFromGroup(textView.getText().toString(), mJID); |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
171 |
} catch (RemoteException e) { |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
172 |
e.printStackTrace(); |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
173 |
} |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
174 |
} |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
175 |
|
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
176 |
} |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
177 |
|
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
178 |
} |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
179 |
|
430 | 180 |
/** |
181 |
* The ServiceConnection used to connect to the Beem service. |
|
182 |
*/ |
|
183 |
private class BeemServiceConnection implements ServiceConnection { |
|
184 |
||
185 |
/** |
|
186 |
* Constructor. |
|
187 |
*/ |
|
447
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
188 |
public BeemServiceConnection() { |
2771e1b2e080
Correction gestion des groups.
Vincent Veronis <veroni_v@epitech.net>
parents:
443
diff
changeset
|
189 |
} |
430 | 190 |
|
191 |
@Override |
|
192 |
public void onServiceConnected(ComponentName name, IBinder service) { |
|
193 |
mXmppFacade = IXmppFacade.Stub.asInterface(service); |
|
194 |
try { |
|
195 |
mRoster = mXmppFacade.getRoster(); |
|
196 |
setAdapter(); |
|
197 |
} catch (RemoteException e) { |
|
198 |
e.printStackTrace(); |
|
199 |
} |
|
200 |
} |
|
201 |
||
202 |
@Override |
|
203 |
public void onServiceDisconnected(ComponentName name) { |
|
204 |
mXmppFacade = null; |
|
205 |
mRoster = null; |
|
206 |
} |
|
207 |
} |
|
208 |
||
209 |
} |