From 5a148ad244705d4d7238903b37c3a46206df2521 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Fri, 29 Jun 2018 23:29:21 +0200 Subject: non functional muc edit button --- .../messenger/services/XmppConnectionService.java | 8 -- .../messenger/ui/ConferenceDetailsActivity.java | 100 ++++++++++++++++----- src/main/res/drawable-hdpi/ic_save_black_24dp.png | Bin 0 -> 317 bytes src/main/res/drawable-hdpi/ic_save_white_24dp.png | Bin 0 -> 324 bytes src/main/res/drawable-mdpi/ic_save_black_24dp.png | Bin 0 -> 171 bytes src/main/res/drawable-mdpi/ic_save_white_24dp.png | Bin 0 -> 175 bytes src/main/res/drawable-xhdpi/ic_save_black_24dp.png | Bin 0 -> 301 bytes src/main/res/drawable-xhdpi/ic_save_white_24dp.png | Bin 0 -> 309 bytes .../res/drawable-xxhdpi/ic_save_black_24dp.png | Bin 0 -> 497 bytes .../res/drawable-xxhdpi/ic_save_white_24dp.png | Bin 0 -> 504 bytes .../res/drawable-xxxhdpi/ic_save_black_24dp.png | Bin 0 -> 598 bytes .../res/drawable-xxxhdpi/ic_save_white_24dp.png | Bin 0 -> 614 bytes src/main/res/layout/activity_muc_details.xml | 92 ++++++++++++++----- src/main/res/layout/create_conference_dialog.xml | 2 +- src/main/res/values/attrs.xml | 1 + src/main/res/values/strings.xml | 3 +- src/main/res/values/themes.xml | 44 ++++++--- 17 files changed, 178 insertions(+), 72 deletions(-) create mode 100644 src/main/res/drawable-hdpi/ic_save_black_24dp.png create mode 100644 src/main/res/drawable-hdpi/ic_save_white_24dp.png create mode 100644 src/main/res/drawable-mdpi/ic_save_black_24dp.png create mode 100644 src/main/res/drawable-mdpi/ic_save_white_24dp.png create mode 100644 src/main/res/drawable-xhdpi/ic_save_black_24dp.png create mode 100644 src/main/res/drawable-xhdpi/ic_save_white_24dp.png create mode 100644 src/main/res/drawable-xxhdpi/ic_save_black_24dp.png create mode 100644 src/main/res/drawable-xxhdpi/ic_save_white_24dp.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_save_black_24dp.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_save_white_24dp.png diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java index 3b2699667..51f4793d1 100644 --- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java +++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java @@ -2788,14 +2788,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/de/pixart/messenger/ui/ConferenceDetailsActivity.java b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java index 4b0477e1a..2951151cf 100644 --- a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java @@ -12,7 +12,6 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; -import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.widget.Toolbar; import android.text.SpannableStringBuilder; @@ -24,7 +23,6 @@ import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; -import android.widget.TextView; import android.widget.Toast; import org.openintents.openpgp.util.OpenPgpUtils; @@ -227,14 +225,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); @@ -317,6 +307,7 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers intent.putExtra("uuid", mConversation.getUuid()); startActivity(intent); }); + this.binding.editMucNameButton.setOnClickListener(this::onMucEditButtonClicked); } @Override @@ -356,6 +347,69 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers return super.onOptionsItemSelected(menuItem); } + public void onMucEditButtonClicked(View v) { + if (this.binding.mucEditor.getVisibility() == View.GONE) { + final MucOptions mucOptions = mConversation.getMucOptions(); + this.binding.mucEditor.setVisibility(View.VISIBLE); + this.binding.mucDisplay.setVisibility(View.GONE); + this.binding.editMucNameButton.setImageResource(getThemeResource(R.attr.icon_save, R.drawable.ic_save_black_24dp)); + final String name = mucOptions.getName(); + this.binding.mucEditTitle.setText(""); + final boolean owner = mucOptions.getSelf().getAffiliation().ranks(MucOptions.Affiliation.OWNER); + if (owner || printableValue(name)) { + this.binding.mucEditTitle.setVisibility(View.VISIBLE); + if (name != null) { + this.binding.mucEditTitle.append(name); + } + } else { + this.binding.mucEditTitle.setVisibility(View.GONE); + } + this.binding.mucEditTitle.setEnabled(owner); + final String subject = mucOptions.getSubject(); + this.binding.mucEditSubject.setText(""); + if (subject != null) { + this.binding.mucEditSubject.append(subject); + } + this.binding.mucEditSubject.setEnabled(mucOptions.canChangeSubject()); + if (!owner) { + this.binding.mucEditSubject.requestFocus(); + } + this.binding.yourPhoto.setVisibility(View.GONE); + } else { + 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) { @@ -567,6 +621,15 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers this.binding.detailsMucAvatar.setImageBitmap(avatarService().get(mConversation, getPixel(Config.AVATAR_SIZE))); } + @Override + public void onBackPressed() { + if (this.binding.mucEditor.getVisibility() == View.VISIBLE) { + hideEditor(); + } else { + super.onBackPressed(); + } + } + private void updateView() { invalidateOptionsMenu(); if (mConversation == null) { @@ -580,20 +643,9 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers } else { account = mConversation.getAccount().getJid().asBareJid().toString(); } - if (getSupportActionBar() != null) { - final ActionBar ab = getSupportActionBar(); - if (ab != null) { - ab.setCustomView(R.layout.ab_title); - ab.setDisplayShowCustomEnabled(true); - TextView abtitle = findViewById(android.R.id.text1); - TextView absubtitle = findViewById(android.R.id.text2); - abtitle.setText(mConversation.getName()); - abtitle.setSelected(true); - abtitle.setClickable(false); - absubtitle.setVisibility(View.GONE); - absubtitle.setClickable(false); - } - } + + + this.binding.editMucNameButton.setVisibility((self.getAffiliation().ranks(MucOptions.Affiliation.OWNER) || mucOptions.canChangeSubject()) ? View.VISIBLE : View.GONE); this.binding.detailsAccount.setText(getString(R.string.using_account, account)); this.binding.jid.setText(mConversation.getJid().asBareJid().toEscapedString()); if (xmppConnectionService.multipleAccounts()) { diff --git a/src/main/res/drawable-hdpi/ic_save_black_24dp.png b/src/main/res/drawable-hdpi/ic_save_black_24dp.png new file mode 100644 index 000000000..261c183f8 Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_save_black_24dp.png differ diff --git a/src/main/res/drawable-hdpi/ic_save_white_24dp.png b/src/main/res/drawable-hdpi/ic_save_white_24dp.png new file mode 100644 index 000000000..a3b0cb3be Binary files /dev/null and b/src/main/res/drawable-hdpi/ic_save_white_24dp.png differ diff --git a/src/main/res/drawable-mdpi/ic_save_black_24dp.png b/src/main/res/drawable-mdpi/ic_save_black_24dp.png new file mode 100644 index 000000000..280cb2330 Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_save_black_24dp.png differ diff --git a/src/main/res/drawable-mdpi/ic_save_white_24dp.png b/src/main/res/drawable-mdpi/ic_save_white_24dp.png new file mode 100644 index 000000000..24eb15f8d Binary files /dev/null and b/src/main/res/drawable-mdpi/ic_save_white_24dp.png differ diff --git a/src/main/res/drawable-xhdpi/ic_save_black_24dp.png b/src/main/res/drawable-xhdpi/ic_save_black_24dp.png new file mode 100644 index 000000000..d13a342dc Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_save_black_24dp.png differ diff --git a/src/main/res/drawable-xhdpi/ic_save_white_24dp.png b/src/main/res/drawable-xhdpi/ic_save_white_24dp.png new file mode 100644 index 000000000..93d1fdd47 Binary files /dev/null and b/src/main/res/drawable-xhdpi/ic_save_white_24dp.png differ diff --git a/src/main/res/drawable-xxhdpi/ic_save_black_24dp.png b/src/main/res/drawable-xxhdpi/ic_save_black_24dp.png new file mode 100644 index 000000000..00078fcd8 Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_save_black_24dp.png differ diff --git a/src/main/res/drawable-xxhdpi/ic_save_white_24dp.png b/src/main/res/drawable-xxhdpi/ic_save_white_24dp.png new file mode 100644 index 000000000..36461723b Binary files /dev/null and b/src/main/res/drawable-xxhdpi/ic_save_white_24dp.png differ diff --git a/src/main/res/drawable-xxxhdpi/ic_save_black_24dp.png b/src/main/res/drawable-xxxhdpi/ic_save_black_24dp.png new file mode 100644 index 000000000..ed3c6139a Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_save_black_24dp.png differ diff --git a/src/main/res/drawable-xxxhdpi/ic_save_white_24dp.png b/src/main/res/drawable-xxxhdpi/ic_save_white_24dp.png new file mode 100644 index 000000000..ec8be2bee Binary files /dev/null and b/src/main/res/drawable-xxxhdpi/ic_save_white_24dp.png differ diff --git a/src/main/res/layout/activity_muc_details.xml b/src/main/res/layout/activity_muc_details.xml index 7dc1ae3e6..2c1a0e682 100644 --- a/src/main/res/layout/activity_muc_details.xml +++ b/src/main/res/layout/activity_muc_details.xml @@ -47,36 +47,79 @@ android:layout_width="match_parent" android:layout_height="wrap_content"> - + android:layout_alignParentStart="true" + android:layout_toStartOf="@+id/edit_muc_name_button" + android:orientation="vertical"> - + - + + + + + + + android:layout_alignParentStart="true" + android:layout_toStartOf="@+id/edit_muc_name_button" + + android:orientation="vertical" + android:visibility="gone"> + + + + + + + + + + + + diff --git a/src/main/res/values/attrs.xml b/src/main/res/values/attrs.xml index f72834b9f..10690b682 100644 --- a/src/main/res/values/attrs.xml +++ b/src/main/res/values/attrs.xml @@ -47,6 +47,7 @@ + diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 14feee019..57edf9ba6 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -229,7 +229,7 @@ Delete bookmark This bookmark already exists Edit group chat subject - The subject of this group chat + Topic Joining group chat… Leave Contact added you to contact list @@ -801,4 +801,5 @@ Only the owner can change group chat avatar Contact name Nickname for this group chat + Name diff --git a/src/main/res/values/themes.xml b/src/main/res/values/themes.xml index 8c68c25f1..aa844dce1 100644 --- a/src/main/res/values/themes.xml +++ b/src/main/res/values/themes.xml @@ -50,13 +50,16 @@ @color/black12 - @drawable/ic_send_cancel_offline - @drawable/ic_send_location_offline - @drawable/ic_send_photo_offline - @drawable/ic_send_picture_offline - @drawable/ic_send_text_offline - @drawable/ic_send_videocam_offline - @drawable/ic_send_voice_offline + @drawable/ic_send_cancel_offline + @drawable/ic_send_location_offline + + @drawable/ic_send_photo_offline + @drawable/ic_send_picture_offline + + @drawable/ic_send_text_offline + @drawable/ic_send_videocam_offline + + @drawable/ic_send_voice_offline @drawable/ic_group_add_white_24dp @drawable/ic_person_add_white_24dp @@ -67,6 +70,7 @@ @drawable/ic_file_download_white_24dp @drawable/ic_edit_white_24dp @drawable/ic_edit_black_24dp + @drawable/ic_save_black_24dp @drawable/ic_done_black_24dp @drawable/ic_group_white_24dp @drawable/ic_contacts_white_24dp @@ -176,13 +180,24 @@ @color/white12 - @drawable/ic_send_cancel_offline_white - @drawable/ic_send_location_offline_white - @drawable/ic_send_photo_offline_white - @drawable/ic_send_picture_offline_white - @drawable/ic_send_text_offline_white - @drawable/ic_send_videocam_offline_white - @drawable/ic_send_voice_offline_white + + @drawable/ic_send_cancel_offline_white + + + @drawable/ic_send_location_offline_white + + @drawable/ic_send_photo_offline_white + + + @drawable/ic_send_picture_offline_white + + @drawable/ic_send_text_offline_white + + + @drawable/ic_send_videocam_offline_white + + @drawable/ic_send_voice_offline_white + @drawable/ic_attach_camera_white @drawable/ic_attach_videocam_white @@ -206,6 +221,7 @@ @drawable/ic_file_download_white_24dp @drawable/ic_edit_white_24dp @drawable/ic_edit_white_24dp + @drawable/ic_save_white_24dp @drawable/ic_done_black_24dp @drawable/ic_group_white_24dp @drawable/ic_add_white_24dp -- cgit v1.2.3