From 64aa238d575b5d2794d019194ad0f3393aa327e0 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 23 Jun 2018 00:58:20 +0200 Subject: [PATCH] make safe button work --- .../services/XmppConnectionService.java | 8 --- .../ui/ConferenceDetailsActivity.java | 52 +++++++++++++++---- src/main/res/layout/activity_muc_details.xml | 6 +-- 3 files changed, 44 insertions(+), 22 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 34ebf6cda..54c36aeb9 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -2538,14 +2538,6 @@ public class XmppConnectionService extends Service { public void pushSubjectToConference(final Conversation conference, final String subject) { MessagePacket packet = this.getMessageGenerator().conferenceSubject(conference, subject); this.sendMessagePacket(conference.getAccount(), packet); - final MucOptions mucOptions = conference.getMucOptions(); - final MucOptions.User self = mucOptions.getSelf(); - if (self.getAffiliation().ranks(MucOptions.Affiliation.OWNER)) { - Bundle options = new Bundle(); - options.putString("muc#roomconfig_persistentroom", "1"); - options.putString("muc#roomconfig_roomname", subject); - this.pushConferenceConfiguration(conference, options, null); - } } public void changeAffiliationInConference(final Conversation conference, Jid user, final MucOptions.Affiliation affiliation, final OnAffiliationChanged callback) { diff --git a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java index cfaf76ceb..b650e46a0 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java @@ -14,6 +14,7 @@ import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.support.v7.widget.Toolbar; import android.text.SpannableStringBuilder; +import android.util.Log; import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.Menu; @@ -182,14 +183,6 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers builder.create().show(); } }; - private OnValueEdited onSubjectEdited = new OnValueEdited() { - - @Override - public String onValueEdited(String value) { - xmppConnectionService.pushSubjectToConference(mConversation, value.trim().isEmpty() ? null : value.trim()); - return null; - } - }; public static boolean cancelPotentialWork(User user, ImageView imageView) { final BitmapWorkerTask bitmapWorkerTask = getBitmapWorkerTask(imageView); @@ -339,13 +332,41 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers if (!owner) { this.binding.mucEditSubject.requestFocus(); } + this.binding.yourPhoto.setVisibility(View.GONE); } else { - this.binding.mucEditor.setVisibility(View.GONE); - this.binding.mucDisplay.setVisibility(View.VISIBLE); - this.binding.editMucNameButton.setImageResource(getThemeResource(R.attr.icon_edit_body, R.drawable.ic_edit_black_24dp)); + String subject = this.binding.mucEditSubject.isEnabled() ? this.binding.mucEditSubject.getEditableText().toString().trim() : null; + String name = this.binding.mucEditTitle.isEnabled() ? this.binding.mucEditTitle.getEditableText().toString().trim() : null; + onMucInfoUpdated(subject, name); + hideEditor(); } } + private void hideEditor() { + this.binding.mucEditor.setVisibility(View.GONE); + this.binding.mucDisplay.setVisibility(View.VISIBLE); + this.binding.editMucNameButton.setImageResource(getThemeResource(R.attr.icon_edit_body, R.drawable.ic_edit_black_24dp)); + this.binding.yourPhoto.setVisibility(View.VISIBLE); + } + + private void onMucInfoUpdated(String subject, String name) { + final MucOptions mucOptions = mConversation.getMucOptions(); + if (mucOptions.canChangeSubject() && !blankOnNull(mucOptions.getSubject()).equals(subject)) { + Log.d(Config.LOGTAG,"subject changed"); + xmppConnectionService.pushSubjectToConference(mConversation, subject); + } + if (mucOptions.getSelf().getAffiliation().ranks(MucOptions.Affiliation.OWNER) && !blankOnNull(mucOptions.getName()).equals(name)) { + Log.d(Config.LOGTAG,"name changed"); + Bundle options = new Bundle(); + options.putString("muc#roomconfig_persistentroom", "1"); + options.putString("muc#roomconfig_roomname", name); + xmppConnectionService.pushConferenceConfiguration(mConversation, options, null); + } + } + + private static String blankOnNull(String input) { + return input == null ? "" : input; + } + @Override protected String getShareableUri(boolean http) { if (mConversation != null) { @@ -558,6 +579,15 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers } } + @Override + public void onBackPressed() { + if (this.binding.mucEditor.getVisibility() == View.VISIBLE) { + hideEditor(); + } else { + super.onBackPressed(); + } + } + private void updateView() { invalidateOptionsMenu(); final MucOptions mucOptions = mConversation.getMucOptions(); diff --git a/src/main/res/layout/activity_muc_details.xml b/src/main/res/layout/activity_muc_details.xml index 4e6b8d2ef..c888c756a 100644 --- a/src/main/res/layout/activity_muc_details.xml +++ b/src/main/res/layout/activity_muc_details.xml @@ -46,15 +46,15 @@ android:layout_width="72dp" android:layout_height="72dp" android:layout_alignParentStart="true" - app:riv_corner_radius="2dp"/> + app:riv_corner_radius="2dp" + android:layout_marginEnd="@dimen/avatar_item_distance"/> + android:orientation="vertical">