diff --git a/res/menu/edit_contact.xml b/res/menu/edit_contact.xml
index 610c5fe..a8605e1 100644
--- a/res/menu/edit_contact.xml
+++ b/res/menu/edit_contact.xml
@@ -8,4 +8,9 @@
android:title="@string/save_contact"
i2pandroid:showAsAction="ifRoom"/>
+
+
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index fa1a5cf..0db329a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -57,6 +57,7 @@
Email destination
Browse
Save contact
+ Delete contact?
Network information is not available because Bote hasn\'t started connecting to the network yet.
Local Destination:
diff --git a/src/i2p/bote/android/addressbook/AddressBookActivity.java b/src/i2p/bote/android/addressbook/AddressBookActivity.java
index dff0b29..52ac928 100644
--- a/src/i2p/bote/android/addressbook/AddressBookActivity.java
+++ b/src/i2p/bote/android/addressbook/AddressBookActivity.java
@@ -9,6 +9,8 @@ import android.support.v7.app.ActionBarActivity;
public class AddressBookActivity extends ActionBarActivity implements
AddressBookFragment.OnContactSelectedListener {
+ static final int ALTER_CONTACT_LIST = 1;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -34,7 +36,19 @@ public class AddressBookActivity extends ActionBarActivity implements
} else {
Intent i = new Intent(this, EditContactActivity.class);
i.putExtra(EditContactFragment.CONTACT_DESTINATION, contact.getBase64Dest());
- startActivity(i);
+ startActivityForResult(i, ALTER_CONTACT_LIST);
+ }
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == ALTER_CONTACT_LIST) {
+ if (resultCode == Activity.RESULT_OK) {
+ AddressBookFragment f = (AddressBookFragment) getSupportFragmentManager().findFragmentById(android.R.id.content);
+ f.updateContactList();
+ }
+ } else {
+ super.onActivityResult(requestCode, resultCode, data);
}
}
}
diff --git a/src/i2p/bote/android/addressbook/AddressBookFragment.java b/src/i2p/bote/android/addressbook/AddressBookFragment.java
index 0bd6771..78d4ca7 100644
--- a/src/i2p/bote/android/addressbook/AddressBookFragment.java
+++ b/src/i2p/bote/android/addressbook/AddressBookFragment.java
@@ -74,7 +74,7 @@ public class AddressBookFragment extends ListFragment implements
switch (item.getItemId()) {
case R.id.action_new_contact:
Intent nci = new Intent(getActivity(), EditContactActivity.class);
- startActivity(nci);
+ getActivity().startActivityForResult(nci, AddressBookActivity.ALTER_CONTACT_LIST);
return true;
default:
@@ -87,6 +87,11 @@ public class AddressBookFragment extends ListFragment implements
mCallback.onContactSelected(mAdapter.getItem(pos));
}
+ protected void updateContactList() {
+ setListShown(false);
+ getLoaderManager().restartLoader(0, null, this);
+ }
+
// LoaderManager.LoaderCallbacks>
public Loader> onCreateLoader(int id, Bundle args) {
diff --git a/src/i2p/bote/android/addressbook/EditContactFragment.java b/src/i2p/bote/android/addressbook/EditContactFragment.java
index eb3a051..7a669b4 100644
--- a/src/i2p/bote/android/addressbook/EditContactFragment.java
+++ b/src/i2p/bote/android/addressbook/EditContactFragment.java
@@ -7,15 +7,20 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.GeneralSecurityException;
+
import i2p.bote.android.R;
import i2p.bote.android.util.BoteHelper;
import i2p.bote.android.util.EditPictureFragment;
import i2p.bote.fileencryption.PasswordException;
import i2p.bote.packet.dht.Contact;
import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
+import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -123,9 +128,11 @@ public class EditContactFragment extends EditPictureFragment {
try {
String err = BoteHelper.saveContact(destination, name, picture, text);
- if (err == null)
+ if (err == null) {
+ if (mDestination == null) // Only set if adding new contact
+ getActivity().setResult(Activity.RESULT_OK);
getActivity().finish();
- else
+ } else
mError.setText(err);
} catch (PasswordException e) {
// TODO Auto-generated catch block
@@ -138,6 +145,41 @@ public class EditContactFragment extends EditPictureFragment {
}
return true;
+ case R.id.action_delete_contact:
+ DialogFragment df = new DialogFragment() {
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+ builder.setMessage(R.string.delete_contact)
+ .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ try {
+ String err = BoteHelper.deleteContact(mDestination);
+ if (err == null) {
+ getActivity().setResult(Activity.RESULT_OK);
+ getActivity().finish();
+ } else
+ mError.setText(err);
+ } catch (PasswordException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (GeneralSecurityException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }).setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.cancel();
+ }
+ });
+ return builder.create();
+ }
+ };
+ df.show(getActivity().getSupportFragmentManager(), "deletecontact");
+ return true;
+
default:
return super.onOptionsItemSelected(item);
}