# HG changeset patch # User Jean-Manuel Da Silva # Date 1258589655 -3600 # Node ID 7964f04c2bf748647a92d31e51af6ae3c5c24903 # Parent a77a7b4e7f34678b254b77e5a2627f6aa6a4bbf8 Création/Suppression de PrivacyLists fonctionnels. diff -r a77a7b4e7f34 -r 7964f04c2bf7 res/values-fr/arrays.xml --- 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 @@ Indisponible Déconnecté(e) + + Contacts + Groupes + Supprimer + diff -r a77a7b4e7f34 -r 7964f04c2bf7 res/values/arrays.xml --- 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 @@ Unavailable Disconnected + + Buddies + Groups + Delete + diff -r a77a7b4e7f34 -r 7964f04c2bf7 res/values/strings.xml --- 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 @@ Create a privacy list Title Create + Buddies + Groups + Delete Update diff -r a77a7b4e7f34 -r 7964f04c2bf7 src/com/beem/project/beem/ui/PrivacyList.java --- 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 mAdapter; private final List mPrivacyListNames = new ArrayList(); + 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) 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(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()); + } 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()); - } 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(); - } } diff -r a77a7b4e7f34 -r 7964f04c2bf7 src/com/beem/project/beem/ui/Settings.java --- 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;