From 31b539daf74048d2a712e89e0c9a9de80af63ba5 Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 23 Nov 2014 21:36:44 +0100 Subject: [PATCH] MUC: option to set/delete bookmark in conference details. --- .../ui/ConferenceDetailsActivity.java | 39 +++++++++++++++++++ src/main/res/menu/muc_details.xml | 10 +++++ 2 files changed, 49 insertions(+) diff --git a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java index 290842fb..0a97bc7a 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java @@ -27,6 +27,8 @@ import java.util.List; import eu.siacs.conversations.R; import eu.siacs.conversations.crypto.PgpEngine; +import eu.siacs.conversations.entities.Account; +import eu.siacs.conversations.entities.Bookmark; import eu.siacs.conversations.entities.Contact; import eu.siacs.conversations.entities.Conversation; import eu.siacs.conversations.entities.MucOptions.User; @@ -149,6 +151,12 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers }); } break; + case R.id.action_save_as_bookmark: + saveAsBookmark(); + break; + case R.id.action_delete_bookmark: + deleteBookmark(); + break; } return super.onOptionsItemSelected(menuItem); } @@ -175,6 +183,21 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers } } + @Override + public boolean onPrepareOptionsMenu(Menu menu) { + MenuItem menuItemSaveBookmark = menu.findItem(R.id.action_save_as_bookmark); + MenuItem menuItemDeleteBookmark = menu.findItem(R.id.action_delete_bookmark); + Account account = mConversation.getAccount(); + if (account.hasBookmarkFor(mConversation.getContactJid().toBareJid())) { + menuItemSaveBookmark.setVisible(false); + menuItemDeleteBookmark.setVisible(true); + } else { + menuItemDeleteBookmark.setVisible(false); + menuItemSaveBookmark.setVisible(true); + } + return true; + } + @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.muc_details, menu); @@ -224,6 +247,22 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers } } + protected void saveAsBookmark() { + Account account = mConversation.getAccount(); + Bookmark bookmark = new Bookmark(account, mConversation.getContactJid().toBareJid()); + account.getBookmarks().add(bookmark); + xmppConnectionService.pushBookmarks(account); + mConversation.setBookmark(bookmark); + } + + protected void deleteBookmark() { + Account account = mConversation.getAccount(); + Bookmark bookmark = mConversation.getBookmark(); + bookmark.unregisterConversation(); + account.getBookmarks().remove(bookmark); + xmppConnectionService.pushBookmarks(account); + } + @Override void onBackendConnected() { if (getIntent().getAction().equals(ACTION_VIEW_MUC)) { diff --git a/src/main/res/menu/muc_details.xml b/src/main/res/menu/muc_details.xml index 84b90e17..341d438a 100644 --- a/src/main/res/menu/muc_details.xml +++ b/src/main/res/menu/muc_details.xml @@ -11,6 +11,16 @@ android:id="@+id/action_show_qr_code" android:title="@string/show_qr_code" android:showAsAction="never" /> + +