Submenu context.
Alias OK.
--- a/res/layout/contactdialogaliasdialog.xml Thu Dec 03 12:15:54 2009 +0100
+++ b/res/layout/contactdialogaliasdialog.xml Fri Dec 04 11:31:17 2009 +0100
@@ -2,13 +2,14 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
-
+ <TextView android:id="@+id/CDAliasDialogLabel"
+ android:layout_height="wrap_content" android:layout_width="wrap_content"
+ android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
+ android:text="@string/userinfo_label_alias"
+ android:gravity="left" style="@style/Label" />
<EditText android:id="@+id/CDAliasDialogName"
- android:layout_width="fill_parent" android:layout_height="wrap_content"
- android:inputType="textPersonName" android:imeOptions="actionDone"
- android:singleLine="true" android:maxLines="1" />
-
- <Button android:id="@+id/CDAliasDialogOk" android:layout_width="fill_parent"
- android:layout_height="wrap_content" android:text="@string/OkButton" />
-
+ android:layout_height="wrap_content" android:layout_width="fill_parent"
+ android:layout_marginLeft="20dip" android:layout_marginRight="20dip"
+ android:scrollHorizontally="true" android:autoText="false"
+ android:capitalize="none" android:gravity="fill_horizontal" />
</LinearLayout>
--- a/res/menu/contactlist_context.xml Thu Dec 03 12:15:54 2009 +0100
+++ b/res/menu/contactlist_context.xml Fri Dec 04 11:31:17 2009 +0100
@@ -1,5 +1,17 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:id="@+id/contact_list_context_menu_chat_item" android:title="@string/CDChat" />
- <item android:id="@+id/contact_list_context_menu_call_item" android:title="@string/CDCall" android:visible="false" />
- <item android:id="@+id/contact_list_context_menu_manage_user_item" android:title="@string/CDInfos" />
+ <item android:id="@+id/contact_list_context_menu_chat_item"
+ android:title="@string/CDChat" />
+ <item android:id="@+id/contact_list_context_menu_call_item"
+ android:title="@string/CDCall" android:visible="false" />
+ <item android:id="@+id/contact_list_context_menu_user_info"
+ android:title="@string/CDInfos">
+ <menu>
+ <item android:id="@+id/menu_userinfo_alias" android:title="@string/userinfo_label_alias" />
+ <item android:id="@+id/userinfo_layout_chg_group" android:title="@string/userinfo_label_chg_group" />
+ <item android:id="@+id/userinfo_layout_re_suscription"
+ android:title="@string/userinfo_label_re_suscription" />
+ <item android:id="@+id/userinfo_layout_block" android:title="@string/userinfo_label_block" />
+ <item android:id="@+id/userinfo_layout_delete" android:title="@string/userinfo_label_delete" />
+ </menu>
+ </item>
</menu>
--- a/res/values/strings.xml Thu Dec 03 12:15:54 2009 +0100
+++ b/res/values/strings.xml Fri Dec 04 11:31:17 2009 +0100
@@ -233,7 +233,7 @@
<string name="contact_list_all_contact">All contacts</string>
<string name="contact_list_no_group">No group</string>
- <!-- UserInfo Activity -->
+ <!-- UserInfo dialog -->
<string name="userinfo_label_alias">Alias</string>
<string name="userinfo_label_chg_group">Manage groups</string>
<string name="userinfo_label_re_suscription">Resend invit</string>
--- a/src/com/beem/project/beem/ui/ContactList.java Thu Dec 03 12:15:54 2009 +0100
+++ b/src/com/beem/project/beem/ui/ContactList.java Fri Dec 04 11:31:17 2009 +0100
@@ -10,8 +10,11 @@
import org.jivesoftware.smack.util.StringUtils;
import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
import android.content.ComponentName;
import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
@@ -23,6 +26,7 @@
import android.os.IBinder;
import android.os.RemoteException;
import android.preference.PreferenceManager;
+import android.util.Log;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -32,10 +36,12 @@
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
+import android.widget.EditText;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
+import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import com.beem.project.beem.R;
@@ -55,6 +61,7 @@
// private static final String TAG = "CONTACTLIST_ACT";
private static final Intent SERVICE_INTENT = new Intent();
private static final int REQUEST_CODE = 1;
+ private static final int DIALOG_ALIAS = 11;
private BeemContactList mAdapterContactList;
private BeemBanner mAdapterBanner;
private IRoster mRoster;
@@ -62,6 +69,7 @@
private final List<String> mListGroup = new ArrayList<String>();
private final Map<String, List<Contact>> mContactOnGroup = new HashMap<String, List<Contact>>();
private String mCurGroup;
+ private Contact mContact;
private Handler mHandler;
private IXmppFacade mXmppFacade;
private SharedPreferences mSettings;
@@ -140,6 +148,16 @@
// TODO gere les info du context menu pour afficher que pour le bon long click
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.contactlist_context, menu);
+ AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
+ Contact c = mListContact.get(info.position);
+ try {
+ mContact = mRoster.getContact(c.getJID());
+ } catch (RemoteException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ menu.setHeaderTitle(mContact.getJID());
+ Log.e("OO", mContact.getName());
}
/**
@@ -147,34 +165,31 @@
*/
@Override
public boolean onContextItemSelected(MenuItem item) {
- ContextMenu.ContextMenuInfo i = item.getMenuInfo();
- if (i != null && i instanceof AdapterView.AdapterContextMenuInfo) {
- AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) i;
- Contact c = mListContact.get(info.position);
- Intent in;
- if (c != null) {
- switch (item.getItemId()) {
- case R.id.contact_list_context_menu_chat_item:
- in = new Intent(this, Chat.class);
- in.setData(c.toUri());
- startActivity(in);
+ Intent in;
+ if (mContact != null) {
+ switch (item.getItemId()) {
+ case R.id.contact_list_context_menu_chat_item:
+ in = new Intent(this, Chat.class);
+ in.setData(mContact.toUri());
+ startActivity(in);
+ return true;
+ case R.id.contact_list_context_menu_call_item:
+ try {
+ mXmppFacade.call(mContact.getJID() + "/psi");
return true;
- case R.id.contact_list_context_menu_call_item:
- try {
- mXmppFacade.call(c.getJID() + "/psi");
- return true;
- } catch (RemoteException e) {
- e.printStackTrace();
- }
- case R.id.contact_list_context_menu_manage_user_item:
- in = new Intent(this, UserInfo.class);
- //TODO use in.setData(c.toUri()); a la place
- in.putExtra("contact_contactdialog", c.getJID());
- startActivity(in);
- return true;
- default:
- return super.onContextItemSelected(item);
- }
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ return true;
+ case R.id.contact_list_context_menu_user_info:
+ item.getSubMenu().setHeaderTitle(mContact.getName());
+ return true;
+ case R.id.menu_userinfo_alias:
+ Dialog alias = new DialogAlias(ContactList.this, mContact).create();
+ alias.show();
+ return true;
+ default:
+ return super.onContextItemSelected(item);
}
}
return super.onContextItemSelected(item);
@@ -188,7 +203,6 @@
mListContact.clear();
stopService(SERVICE_INTENT);
finish();
- // startActivity(new Intent(this, Login.class));
}
}
}
@@ -340,8 +354,7 @@
R.drawable.status_available));
mIconsMap.put(Status.CONTACT_STATUS_AVAILABLE_FOR_CHAT, BitmapFactory.decodeResource(getResources(),
R.drawable.status_available));
- mIconsMap
- .put(Status.CONTACT_STATUS_AWAY, BitmapFactory.decodeResource(getResources(), R.drawable.status_away));
+ mIconsMap.put(Status.CONTACT_STATUS_AWAY, BitmapFactory.decodeResource(getResources(), R.drawable.status_away));
mIconsMap.put(Status.CONTACT_STATUS_BUSY, BitmapFactory.decodeResource(getResources(), R.drawable.status_dnd));
mIconsMap.put(Status.CONTACT_STATUS_DISCONNECT, BitmapFactory.decodeResource(getResources(),
R.drawable.status_offline));
@@ -564,7 +577,6 @@
return position;
}
-
/**
* {@inheritDoc}
*/
@@ -671,6 +683,52 @@
}
/**
+ * Create dialog alias.
+ */
+ public class DialogAlias extends AlertDialog.Builder {
+ EditText editTextAlias;
+ Contact contact;
+
+ protected DialogAlias(Context context, Contact c) {
+ super(context);
+ LayoutInflater factory = LayoutInflater.from(context);
+ final View textEntryView = factory.inflate(R.layout.contactdialogaliasdialog, null);
+ setTitle(c.getName());
+ setView(textEntryView);
+ editTextAlias = (EditText) textEntryView.findViewById(R.id.CDAliasDialogName);
+ editTextAlias.setText(mContact.getName());
+ setPositiveButton("OK", new ContactDialogAliasDialog());
+ setNegativeButton("Cancel", new ContactDialogAliasDialog());
+ contact = c;
+ }
+
+ /**
+ * Event click on the button OK.
+ */
+ class ContactDialogAliasDialog implements DialogInterface.OnClickListener {
+
+ /**
+ * Constructor.
+ */
+ public ContactDialogAliasDialog() {
+ }
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ Log.i("OOO", "OO " + which);
+ String name = editTextAlias.getText().toString();
+ if (name.length() == 0)
+ name = mContact.getJID();
+ try {
+ mRoster.setContactName(mContact.getJID(), name);
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ /**
* The service connection used to connect to the Beem service.
*/
private class BeemServiceConnection implements ServiceConnection {
--- a/src/com/beem/project/beem/ui/Settings.java Thu Dec 03 12:15:54 2009 +0100
+++ b/src/com/beem/project/beem/ui/Settings.java Fri Dec 04 11:31:17 2009 +0100
@@ -93,9 +93,7 @@
startActivity(i);
return true;
case R.id.settings_menu_privacy_lists:
- /*
- * i = new Intent(this, PrivacyList.class); startActivity(i);
- */
+ i = new Intent(this, PrivacyList.class); startActivity(i);
return true;
default:
return false;
--- a/src/com/beem/project/beem/ui/UserInfo.java Thu Dec 03 12:15:54 2009 +0100
+++ b/src/com/beem/project/beem/ui/UserInfo.java Fri Dec 04 11:31:17 2009 +0100
@@ -160,14 +160,14 @@
nameText.setText(mContact.getJID());
else
nameText.setText(mContact.getName());
- Button ok = (Button) findViewById(R.id.CDAliasDialogOk);
- ok.setOnClickListener(new ContactDialogAliasDialogOK());
+ //Button ok = (Button) findViewById(R.id.CDAliasDialogOk);
+ //ok.setOnClickListener(new ContactDialogAliasDialogOK());
}
/**
* Event click on the button OK.
*/
- private class ContactDialogAliasDialogOK implements View.OnClickListener {
+ public class ContactDialogAliasDialogOK implements View.OnClickListener {
/**
* Constructor.