added confirm dialog before contact and bookmark removal

iNPUTmice created

Change summary

res/values/strings.xml                                         |  3 
src/eu/siacs/conversations/services/XmppConnectionService.java |  1 
src/eu/siacs/conversations/ui/StartConversation.java           | 58 +++
3 files changed, 50 insertions(+), 12 deletions(-)

Detailed changes

res/values/strings.xml 🔗

@@ -37,7 +37,8 @@
     <string name="participant">Participant</string>
     <string name="visitor">Visitor</string>
     <string name="enter_new_name">Enter a new name:</string>
-    <string name="remove_contact_text">Do you want to delete %s from your roster? The conversation associated with this account will not be removed.</string>
+    <string name="remove_contact_text">Would you like to remove %s from your roster? The conversation associated with this contact will not be removed.</string>
+    <string name="remove_bookmark_text">Would you like to remove %s as a bookmark? The conversation associated with this bookmark will not be removed.</string>
     <string name="untrusted_cert_hint">The server %s presented you with an untrusted, possible self signed, certificate.</string>
     <string name="account_info">Server Info</string>
     <string name="register_account">Register new account on server</string>

src/eu/siacs/conversations/ui/StartConversation.java 🔗

@@ -12,6 +12,8 @@ import android.app.Fragment;
 import android.app.FragmentTransaction;
 import android.app.ListFragment;
 import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
 import android.os.Bundle;
 import android.support.v13.app.FragmentPagerAdapter;
 import android.support.v4.view.ViewPager;
@@ -225,7 +227,9 @@ public class StartConversation extends XmppActivity {
 				.findOrCreateConversation(bookmark.getAccount(),
 						bookmark.getJid(), true);
 		conversation.setBookmark(bookmark);
-		xmppConnectionService.joinMuc(conversation);
+		if (!conversation.getMucOptions().online()) {
+			xmppConnectionService.joinMuc(conversation);
+		}
 		if (!bookmark.autojoin()) {
 			bookmark.setAutojoin(true);
 			xmppConnectionService.pushBookmarks(bookmark.getAccount());
@@ -241,18 +245,47 @@ public class StartConversation extends XmppActivity {
 
 	protected void deleteContact() {
 		int position = contact_context_id;
-		Contact contact = (Contact) contacts.get(position);
-		xmppConnectionService.deleteContactOnServer(contact);
-		filter(mSearchEditText.getText().toString());
+		final Contact contact = (Contact) contacts.get(position);
+		AlertDialog.Builder builder = new AlertDialog.Builder(this);
+		builder.setNegativeButton(R.string.cancel, null);
+		builder.setTitle(R.string.action_delete_contact);
+		builder.setMessage(
+				getString(R.string.remove_contact_text,
+						contact.getJid()));
+		builder.setPositiveButton(R.string.delete,new OnClickListener() {
+			
+			@Override
+			public void onClick(DialogInterface dialog, int which) {
+				xmppConnectionService.deleteContactOnServer(contact);
+				filter(mSearchEditText.getText().toString());
+			}
+		});
+		builder.create().show();
+		
 	}
 
 	protected void deleteConference() {
 		int position = conference_context_id;
-		Bookmark bookmark = (Bookmark) conferences.get(position);
-		Account account = bookmark.getAccount();
-		account.getBookmarks().remove(bookmark);
-		xmppConnectionService.pushBookmarks(account);
-		filter(mSearchEditText.getText().toString());
+		final Bookmark bookmark = (Bookmark) conferences.get(position);
+		
+		AlertDialog.Builder builder = new AlertDialog.Builder(this);
+		builder.setNegativeButton(R.string.cancel, null);
+		builder.setTitle(R.string.delete_bookmark);
+		builder.setMessage(
+				getString(R.string.remove_bookmark_text,
+						bookmark.getJid()));
+		builder.setPositiveButton(R.string.delete,new OnClickListener() {
+			
+			@Override
+			public void onClick(DialogInterface dialog, int which) {
+				Account account = bookmark.getAccount();
+				account.getBookmarks().remove(bookmark);
+				xmppConnectionService.pushBookmarks(account);
+				filter(mSearchEditText.getText().toString());
+			}
+		});
+		builder.create().show();
+		
 	}
 
 	protected void showCreateContactDialog() {
@@ -342,13 +375,18 @@ public class StartConversation extends XmppActivity {
 											.findOrCreateConversation(account,
 													conferenceJid, true);
 									conversation.setBookmark(bookmark);
-									xmppConnectionService.joinMuc(conversation);
+									if (!conversation.getMucOptions().online()) {
+										xmppConnectionService.joinMuc(conversation);
+									}
 									switchToConversation(conversation);
 								}
 							} else {
 								Conversation conversation = xmppConnectionService
 										.findOrCreateConversation(account,
 												conferenceJid, true);
+								if (!conversation.getMucOptions().online()) {
+									xmppConnectionService.joinMuc(conversation);
+								}
 								switchToConversation(conversation);
 							}
 						} else {