aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java73
1 files changed, 24 insertions, 49 deletions
diff --git a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java
index 76c026308..6f6ab0976 100644
--- a/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/ConferenceDetailsActivity.java
@@ -39,6 +39,7 @@ import de.pixart.messenger.ui.interfaces.OnMediaLoaded;
import de.pixart.messenger.ui.util.Attachment;
import de.pixart.messenger.ui.util.AvatarWorkerTask;
import de.pixart.messenger.ui.util.GridManager;
+import de.pixart.messenger.ui.util.MucConfiguration;
import de.pixart.messenger.ui.util.MucDetailsContextMenuHelper;
import de.pixart.messenger.ui.util.MyLinkify;
import de.pixart.messenger.ui.util.SoftKeyboardUtils;
@@ -165,53 +166,16 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
public void onClick(View v) {
final MucOptions mucOptions = mConversation.getMucOptions();
AlertDialog.Builder builder = new AlertDialog.Builder(ConferenceDetailsActivity.this);
- builder.setTitle(R.string.conference_options);
- final String[] options;
- final boolean[] values;
- if (mAdvancedMode) {
- options = new String[]{
- getString(R.string.members_only),
- getString(R.string.moderated),
- getString(R.string.non_anonymous)
- };
- values = new boolean[]{
- mucOptions.membersOnly(),
- mucOptions.moderated(),
- mucOptions.nonanonymous()
- };
- } else {
- options = new String[]{
- getString(R.string.members_only),
- getString(R.string.non_anonymous)
- };
- values = new boolean[]{
- mucOptions.membersOnly(),
- mucOptions.nonanonymous()
- };
- }
- builder.setMultiChoiceItems(options, values, (dialog, which, isChecked) -> values[which] = isChecked);
+ MucConfiguration configuration = MucConfiguration.get(ConferenceDetailsActivity.this, mucOptions);
+ builder.setTitle(configuration.title);
+ final boolean[] values = configuration.values;
+ builder.setMultiChoiceItems(configuration.names, values, (dialog, which, isChecked) -> values[which] = isChecked);
builder.setNegativeButton(R.string.cancel, null);
builder.setPositiveButton(R.string.confirm, (dialog, which) -> {
- if (!mucOptions.membersOnly() && values[0]) {
- xmppConnectionService.changeAffiliationsInConference(mConversation,
- MucOptions.Affiliation.NONE,
- MucOptions.Affiliation.MEMBER);
- }
- Bundle options1 = new Bundle();
- options1.putString("muc#roomconfig_membersonly", values[0] ? "1" : "0");
- if (values.length == 2) {
- options1.putString("muc#roomconfig_whois", values[1] ? "anyone" : "moderators");
- } else if (values.length == 3) {
- options1.putString("muc#roomconfig_moderatedroom", values[1] ? "1" : "0");
- options1.putString("muc#roomconfig_whois", values[2] ? "anyone" : "moderators");
- }
- options1.putString("muc#roomconfig_persistentroom", "1");
- final boolean whois = values.length == 2 ? values[1] : values[2];
- if (values[0] == whois) {
- options1.putString("muc#roomconfig_publicroom", whois ? "0" : "1");
- }
+ Bundle options = configuration.toBundle(values);
+ options.putString("muc#roomconfig_persistentroom", "1");
xmppConnectionService.pushConferenceConfiguration(mConversation,
- options1,
+ options,
ConferenceDetailsActivity.this);
});
builder.create().show();
@@ -539,15 +503,18 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
this.binding.mucYourNick.setText(EmojiWrapper.transform(mucOptions.getActualNick()));
if (mucOptions.online()) {
this.binding.usersWrapper.setVisibility(View.VISIBLE);
- this.binding.mucSettings.setVisibility(View.VISIBLE);
this.binding.mucInfoMore.setVisibility(this.mAdvancedMode ? View.VISIBLE : View.GONE);
this.binding.jid.setVisibility(this.mAdvancedMode ? View.VISIBLE : View.GONE);
this.binding.mucRole.setVisibility(View.VISIBLE);
this.binding.mucRole.setText(getStatus(self));
- if (mucOptions.membersOnly()) {
- this.binding.mucConferenceType.setText(R.string.private_conference);
+ if (mucOptions.getSelf().getAffiliation().ranks(MucOptions.Affiliation.OWNER)) {
+ this.binding.mucSettings.setVisibility(View.VISIBLE);
+ this.binding.mucConferenceType.setText(MucConfiguration.describe(this, mucOptions));
+ } else if (!mucOptions.isPrivateAndNonAnonymous() && mucOptions.nonanonymous()) {
+ this.binding.mucSettings.setVisibility(View.VISIBLE);
+ this.binding.mucConferenceType.setText(R.string.group_chat_will_make_your_jabber_id_public);
} else {
- this.binding.mucConferenceType.setText(R.string.public_conference);
+ this.binding.mucSettings.setVisibility(View.GONE);
}
if (mucOptions.mamSupport()) {
this.binding.mucInfoMam.setText(R.string.server_info_available);
@@ -639,7 +606,7 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
this.binding.notificationStatusButton.setImageResource(ic_notifications_none);
}
- List<User> users = mucOptions.getUsers();
+ final List<User> users = mucOptions.getUsers();
Collections.sort(users, (a, b) -> {
if (b.getAffiliation().outranks(a.getAffiliation())) {
return 1;
@@ -657,6 +624,14 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
});
this.mUserPreviewAdapter.submitList(MucOptions.sub(users, GridManager.getCurrentColumnCount(binding.users)));
this.binding.invite.setVisibility(mucOptions.canInvite() ? View.VISIBLE : View.GONE);
+ this.binding.showUsers.setVisibility(users.size() > 0 ? View.VISIBLE : View.GONE);
+ this.binding.usersWrapper.setVisibility(users.size() > 0 || mucOptions.canInvite() ? View.VISIBLE : View.GONE);
+ if (users.size() == 0) {
+ this.binding.noUsersHints.setText(mucOptions.isPrivateAndNonAnonymous() ? R.string.no_users_hint_group_chat : R.string.no_users_hint_channel);
+ this.binding.noUsersHints.setVisibility(View.VISIBLE);
+ } else {
+ this.binding.noUsersHints.setVisibility(View.GONE);
+ }
}
public static String getStatus(Context context, User user, final boolean advanced) {