Création/Suppression de PrivacyLists fonctionnels.
--- a/res/values-fr/arrays.xml Wed Nov 18 00:16:35 2009 +0100
+++ b/res/values-fr/arrays.xml Thu Nov 19 01:14:15 2009 +0100
@@ -13,4 +13,9 @@
<item name="Unavailable">Indisponible</item>
<item name="Disconnected">Déconnecté(e)</item>
</string-array>
+ <string-array name="privacy_list_select_dialog">
+ <item name="@string/privacy_list_select_dialog_buddies">Contacts</item>
+ <item name="@string/privacy_list_select_dialog_groups">Groupes</item>
+ <item name="@string/privacy_list_select_dialog_delete">Supprimer</item>
+ </string-array>
</resources>
--- a/res/values/arrays.xml Wed Nov 18 00:16:35 2009 +0100
+++ b/res/values/arrays.xml Thu Nov 19 01:14:15 2009 +0100
@@ -13,4 +13,9 @@
<item name="Unavailable">Unavailable</item>
<item name="Disconnected">Disconnected</item>
</string-array>
+ <string-array name="privacy_list_select_dialog">
+ <item name="@string/privacy_list_select_dialog_buddies">Buddies</item>
+ <item name="@string/privacy_list_select_dialog_groups">Groups</item>
+ <item name="@string/privacy_list_select_dialog_delete">Delete</item>
+ </string-array>
</resources>
--- a/res/values/strings.xml Wed Nov 18 00:16:35 2009 +0100
+++ b/res/values/strings.xml Thu Nov 19 01:14:15 2009 +0100
@@ -280,6 +280,9 @@
<string name="privacy_list_create_dialog_title">Create a privacy list</string>
<string name="privacy_list_create_dialog_list_name_label">Title</string>
<string name="privacy_list_create_dialog_create_button">Create</string>
+ <string name="privacy_list_select_dialog_buddies">Buddies</string>
+ <string name="privacy_list_select_dialog_groups">Groups</string>
+ <string name="privacy_list_select_dialog_delete">Delete</string>
<string name="UpdateButton">Update</string>
</resources>
--- a/src/com/beem/project/beem/ui/PrivacyList.java Wed Nov 18 00:16:35 2009 +0100
+++ b/src/com/beem/project/beem/ui/PrivacyList.java Thu Nov 19 01:14:15 2009 +0100
@@ -4,6 +4,7 @@
import java.util.List;
import android.app.AlertDialog;
+import android.app.Dialog;
import android.app.ListActivity;
import android.content.ComponentName;
import android.content.DialogInterface;
@@ -20,10 +21,9 @@
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
-import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
-import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ListView;
import com.beem.project.beem.BeemService;
import com.beem.project.beem.R;
@@ -44,10 +44,17 @@
static {
SERVICE_INTENT.setComponent(new ComponentName("com.beem.project.beem", "com.beem.project.beem.BeemService"));
}
+ private static final int DIALOG_PRIVACY_LIST_ITEM = 1;
+ private static final int DIALOG_CREATE_PRIVACY_LIST = 2;
+
+ private static final String SAVED_INSTANCE_KEY_PRIVACY_LISTS = "PRIVACY_LISTS";
+ private static final String SAVED_INSTANCE_KEY_LAST_CLICKED_ITEM = "LAST_CLICKED_ITEM";
+
private Handler mHandler = new Handler();
private ArrayAdapter<String> mAdapter;
private final List<String> mPrivacyListNames = new ArrayList<String>();
+ private int mPosLastClickedItem;
private final ServiceConnection mConn = new BeemServiceConnection();
private BeemBroadcastReceiver mBroadcastReceiver;
@@ -66,6 +73,18 @@
* {@inheritDoc}.
*/
@Override
+ protected void onSaveInstanceState(Bundle savedInstanceState) {
+ Log.d(TAG, "BEGIN onSaveInstanceState.");
+ savedInstanceState.putStringArrayList(SAVED_INSTANCE_KEY_PRIVACY_LISTS, (ArrayList<String>) mPrivacyListNames);
+ savedInstanceState.putInt(SAVED_INSTANCE_KEY_LAST_CLICKED_ITEM, mPosLastClickedItem);
+ Log.d(TAG, "END onSaveInstanceState.");
+ super.onSaveInstanceState(savedInstanceState);
+ }
+
+ /**
+ * {@inheritDoc}.
+ */
+ @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d(TAG, "BEGIN onCreate.");
@@ -73,15 +92,14 @@
mHandler = new Handler();
+ if (savedInstanceState != null && !savedInstanceState.isEmpty()) {
+ mPrivacyListNames.addAll(savedInstanceState.getStringArrayList(SAVED_INSTANCE_KEY_PRIVACY_LISTS));
+ mPosLastClickedItem = savedInstanceState.getInt(SAVED_INSTANCE_KEY_LAST_CLICKED_ITEM);
+ }
+
mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mPrivacyListNames);
setListAdapter(mAdapter);
- this.getListView().setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
- }
- });
-
mPrivacyListListener = new PrivacyListListener();
mBroadcastReceiver = new BeemBroadcastReceiver(mConn);
this.registerReceiver(mBroadcastReceiver, new IntentFilter(BeemBroadcastReceiver.BEEM_CONNECTION_CLOSED));
@@ -93,6 +111,71 @@
* {@inheritDoc}.
*/
@Override
+ protected void onPrepareDialog(int id, Dialog dialog) {
+ Log.d(TAG, "BEGIN onPrepareDialog.");
+ switch (id) {
+ case DIALOG_PRIVACY_LIST_ITEM:
+ String dialogTitle = (mPosLastClickedItem > mPrivacyListNames.size() ? "" : mPrivacyListNames
+ .get(mPosLastClickedItem));
+ dialog.setTitle(dialogTitle);
+ }
+ Log.d(TAG, "END onPrepareDialog.");
+ }
+
+ /**
+ * {@inheritDoc}.
+ */
+ @Override
+ protected Dialog onCreateDialog(int id) {
+ Log.d(TAG, "BEGIN onCreateDialog.");
+ switch (id) {
+ case DIALOG_PRIVACY_LIST_ITEM:
+ return new AlertDialog.Builder(this).setTitle("X").setItems(R.array.privacy_list_select_dialog,
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ String[] items = getResources().getStringArray(R.array.privacy_list_select_dialog);
+ if (items[which].equals(getResources().getString(
+ R.string.privacy_list_select_dialog_delete))) {
+ try {
+ mPrivacyListManager.removePrivacyList(mPrivacyListNames.get(mPosLastClickedItem));
+ } catch (RemoteException e) {
+ Log.e(TAG, e.getMessage());
+ }
+ dismissDialog(DIALOG_PRIVACY_LIST_ITEM);
+ }
+ }
+ }).create();
+
+ case DIALOG_CREATE_PRIVACY_LIST:
+ LayoutInflater factory = LayoutInflater.from(this);
+ final View textEntryView = factory.inflate(R.layout.privacy_list_create_dialog, null);
+
+ return new AlertDialog.Builder(this).setTitle(R.string.privacy_list_create_dialog_title).setView(
+ textEntryView).setPositiveButton(R.string.privacy_list_create_dialog_create_button,
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ EditText listNameField = (EditText) textEntryView
+ .findViewById(R.id.privacy_list_create_dialog_list_name);
+ try {
+ mPrivacyListManager.createPrivacyList(listNameField.getText().toString(),
+ new ArrayList<PrivacyListItem>());
+ } catch (RemoteException e) {
+ Log.e(TAG, e.getMessage());
+ }
+ }
+ }).setNegativeButton(R.string.CancelButton, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ }
+ }).create();
+ }
+ Log.d(TAG, "END onCreateDialog.");
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}.
+ */
+ @Override
protected void onDestroy() {
super.onDestroy();
@@ -150,10 +233,19 @@
* {@inheritDoc}.
*/
@Override
+ public void onListItemClick(ListView l, View v, int position, long id) {
+ mPosLastClickedItem = position;
+ showDialog(DIALOG_PRIVACY_LIST_ITEM);
+ }
+
+ /**
+ * {@inheritDoc}.
+ */
+ @Override
public final boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.privacy_list_menu_create:
- createCreatePrivacyListDialog();
+ showDialog(DIALOG_CREATE_PRIVACY_LIST);
return true;
default:
return false;
@@ -172,6 +264,7 @@
try {
mPrivacyListManager = mXmppFacade.getPrivacyListManager();
mPrivacyListManager.addPrivacyListListener(mPrivacyListListener);
+ mPrivacyListNames.clear();
mPrivacyListNames.addAll(mPrivacyListManager.getPrivacyLists());
mAdapter.notifyDataSetChanged();
} catch (RemoteException e) {
@@ -223,34 +316,4 @@
Log.d(TAG, "END PrivacyListListener >> updatedPrivacyList.");
}
}
-
- private void createCreatePrivacyListDialog() {
- LayoutInflater factory = LayoutInflater.from(this);
- final View textEntryView = factory.inflate(R.layout.privacy_list_create_dialog, null);
- AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle(R.string.privacy_list_create_dialog_title);
- builder.setView(textEntryView);
-
- builder.setPositiveButton(R.string.privacy_list_create_dialog_create_button,
- new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- EditText listNameField = (EditText) textEntryView
- .findViewById(R.id.privacy_list_create_dialog_list_name);
- try {
- mPrivacyListManager.createPrivacyList(listNameField.getText().toString(),
- new ArrayList<PrivacyListItem>());
- } catch (RemoteException e) {
- Log.e(TAG, e.getMessage());
- }
- }
- });
-
- builder.setNegativeButton(R.string.CancelButton, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- }
- });
-
- AlertDialog createPrivacyListDialog = builder.create();
- createPrivacyListDialog.show();
- }
}
--- a/src/com/beem/project/beem/ui/Settings.java Wed Nov 18 00:16:35 2009 +0100
+++ b/src/com/beem/project/beem/ui/Settings.java Thu Nov 19 01:14:15 2009 +0100
@@ -103,8 +103,9 @@
finish();
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;