aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2014-03-04 02:51:01 +0100
committerDaniel Gultsch <daniel@gultsch.de>2014-03-04 02:51:01 +0100
commit8e4be5256ea5b4e47225a84604720a15b45d3f39 (patch)
tree36005a1a78536e5bfa1fb5ebc3b4d43feddf0d60
parent69af009c88c4ffa0ea3275c4b875a13e0ecdcddc (diff)
Muc Options even more awesome
-rw-r--r--AndroidManifest.xml3
-rw-r--r--gen/eu/siacs/conversations/R.java77
-rw-r--r--res/drawable-hdpi/ic_action_edit.pngbin0 -> 884 bytes
-rw-r--r--res/drawable-ldpi/ic_action_edit.pngbin0 -> 587 bytes
-rw-r--r--res/drawable-mdpi/ic_action_edit.pngbin0 -> 587 bytes
-rw-r--r--res/drawable-xhdpi/ic_action_edit.pngbin0 -> 1179 bytes
-rw-r--r--res/drawable-xxhdpi/ic_action_edit.pngbin0 -> 1670 bytes
-rw-r--r--res/layout/fragment_conversation.xml4
-rw-r--r--res/layout/muc_options.xml178
-rw-r--r--res/values/strings.xml3
-rw-r--r--src/eu/siacs/conversations/entities/MucOptions.java10
-rw-r--r--src/eu/siacs/conversations/ui/ConversationActivity.java7
-rw-r--r--src/eu/siacs/conversations/ui/ConversationFragment.java11
-rw-r--r--src/eu/siacs/conversations/ui/DialogMucDetails.java100
-rw-r--r--src/eu/siacs/conversations/ui/MucOptionsActivity.java158
15 files changed, 335 insertions, 216 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 90e177c1..8a1a4028 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -48,7 +48,8 @@
<activity
android:name="eu.siacs.conversations.ui.MucOptionsActivity"
android:label="Conference Details"
- android:parentActivityName="eu.siacs.conversations.ui.ConversationActivity" >
+ android:parentActivityName="eu.siacs.conversations.ui.ConversationActivity"
+ android:windowSoftInputMode="stateHidden">
</activity>
<activity
android:name="eu.siacs.conversations.ui.NewConversationActivity"
diff --git a/gen/eu/siacs/conversations/R.java b/gen/eu/siacs/conversations/R.java
index 8c71eebe..2c0562b2 100644
--- a/gen/eu/siacs/conversations/R.java
+++ b/gen/eu/siacs/conversations/R.java
@@ -36,42 +36,43 @@ public final class R {
public static final int ic_action_cancel_launchersize=0x7f020007;
public static final int ic_action_cancel_launchersize_light=0x7f020008;
public static final int ic_action_delete=0x7f020009;
- public static final int ic_action_group=0x7f02000a;
- public static final int ic_action_person=0x7f02000b;
- public static final int ic_action_refresh=0x7f02000c;
- public static final int ic_action_secure=0x7f02000d;
- public static final int ic_action_send=0x7f02000e;
- public static final int ic_action_send_now=0x7f02000f;
- public static final int ic_action_unsecure=0x7f020010;
- public static final int ic_launcher=0x7f020011;
- public static final int ic_profile=0x7f020012;
- public static final int message_border=0x7f020013;
- public static final int notification=0x7f020014;
- public static final int red=0x7f020015;
- public static final int redbackground=0x7f020016;
- public static final int section_header=0x7f020017;
+ public static final int ic_action_edit=0x7f02000a;
+ public static final int ic_action_group=0x7f02000b;
+ public static final int ic_action_person=0x7f02000c;
+ public static final int ic_action_refresh=0x7f02000d;
+ public static final int ic_action_secure=0x7f02000e;
+ public static final int ic_action_send=0x7f02000f;
+ public static final int ic_action_send_now=0x7f020010;
+ public static final int ic_action_unsecure=0x7f020011;
+ public static final int ic_launcher=0x7f020012;
+ public static final int ic_profile=0x7f020013;
+ public static final int message_border=0x7f020014;
+ public static final int notification=0x7f020015;
+ public static final int red=0x7f020016;
+ public static final int redbackground=0x7f020017;
+ public static final int section_header=0x7f020018;
}
public static final class id {
public static final int account_confirm_password_desc=0x7f0a001c;
- public static final int account_delete=0x7f0a0041;
- public static final int account_disable=0x7f0a0042;
- public static final int account_enable=0x7f0a0043;
+ public static final int account_delete=0x7f0a0042;
+ public static final int account_disable=0x7f0a0043;
+ public static final int account_enable=0x7f0a0044;
public static final int account_jid=0x7f0a0000;
public static final int account_list=0x7f0a002b;
public static final int account_password=0x7f0a0019;
public static final int account_password_confirm2=0x7f0a001d;
public static final int account_status=0x7f0a0002;
public static final int account_usetls=0x7f0a001a;
- public static final int action_accounts=0x7f0a003b;
- public static final int action_add=0x7f0a0036;
- public static final int action_add_account=0x7f0a0040;
- public static final int action_archive=0x7f0a003a;
- public static final int action_contact_details=0x7f0a0038;
- public static final int action_muc_details=0x7f0a0039;
- public static final int action_refresh_contacts=0x7f0a0045;
- public static final int action_security=0x7f0a0037;
- public static final int action_settings=0x7f0a003c;
- public static final int announce_pgp=0x7f0a0044;
+ public static final int action_accounts=0x7f0a003c;
+ public static final int action_add=0x7f0a0037;
+ public static final int action_add_account=0x7f0a0041;
+ public static final int action_archive=0x7f0a003b;
+ public static final int action_contact_details=0x7f0a0039;
+ public static final int action_muc_details=0x7f0a003a;
+ public static final int action_refresh_contacts=0x7f0a0046;
+ public static final int action_security=0x7f0a0038;
+ public static final int action_settings=0x7f0a003d;
+ public static final int announce_pgp=0x7f0a0045;
public static final int contactList=0x7f0a0006;
public static final int contact_display_name=0x7f0a0008;
public static final int contact_jid=0x7f0a0009;
@@ -89,23 +90,24 @@ public final class R {
public static final int details_receive_presence=0x7f0a0014;
public static final int details_send_presence=0x7f0a0013;
public static final int edit_account_register_new=0x7f0a001b;
- public static final int encryption_choice_none=0x7f0a003d;
- public static final int encryption_choice_otr=0x7f0a003e;
- public static final int encryption_choice_pgp=0x7f0a003f;
+ public static final int encryption_choice_none=0x7f0a003e;
+ public static final int encryption_choice_otr=0x7f0a003f;
+ public static final int encryption_choice_pgp=0x7f0a0040;
+ public static final int imageView1=0x7f0a0030;
public static final int info_box=0x7f0a0022;
public static final int list=0x7f0a0029;
public static final int message_body=0x7f0a002d;
public static final int message_photo=0x7f0a002c;
public static final int message_time=0x7f0a002e;
public static final int messages_view=0x7f0a0021;
+ public static final int muc_edit_nick=0x7f0a0031;
public static final int muc_error=0x7f0a0023;
public static final int muc_error_msg=0x7f0a0024;
- public static final int muc_moderators=0x7f0a0031;
- public static final int muc_moderators_header=0x7f0a0030;
- public static final int muc_participants=0x7f0a0033;
- public static final int muc_participants_header=0x7f0a0032;
- public static final int muc_visitors=0x7f0a0035;
- public static final int muc_visitors_header=0x7f0a0034;
+ public static final int muc_jabberid=0x7f0a0032;
+ public static final int muc_members=0x7f0a0036;
+ public static final int muc_more_details=0x7f0a0033;
+ public static final int muc_participants_header=0x7f0a0035;
+ public static final int muc_role=0x7f0a0034;
public static final int muc_your_nick=0x7f0a002f;
public static final int new_conversation_search=0x7f0a0004;
public static final int new_fingerprint=0x7f0a0025;
@@ -160,11 +162,14 @@ public final class R {
public static final int conference_details=0x7f050010;
public static final int encrypted_message=0x7f05000f;
public static final int just_now=0x7f05000c;
+ public static final int moderator=0x7f050012;
public static final int nick_in_use=0x7f050011;
public static final int openpgp_install_openkeychain_via=0x7f050001;
public static final int openpgp_list_preference_none=0x7f050000;
+ public static final int participant=0x7f050013;
public static final int sending=0x7f05000d;
public static final int title_activity_new_conversation=0x7f05000b;
+ public static final int visitor=0x7f050014;
}
public static final class style {
/**
diff --git a/res/drawable-hdpi/ic_action_edit.png b/res/drawable-hdpi/ic_action_edit.png
new file mode 100644
index 00000000..5f7c6eff
--- /dev/null
+++ b/res/drawable-hdpi/ic_action_edit.png
Binary files differ
diff --git a/res/drawable-ldpi/ic_action_edit.png b/res/drawable-ldpi/ic_action_edit.png
new file mode 100644
index 00000000..650b4d89
--- /dev/null
+++ b/res/drawable-ldpi/ic_action_edit.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_action_edit.png b/res/drawable-mdpi/ic_action_edit.png
new file mode 100644
index 00000000..650b4d89
--- /dev/null
+++ b/res/drawable-mdpi/ic_action_edit.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_action_edit.png b/res/drawable-xhdpi/ic_action_edit.png
new file mode 100644
index 00000000..8ab436d8
--- /dev/null
+++ b/res/drawable-xhdpi/ic_action_edit.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_action_edit.png b/res/drawable-xxhdpi/ic_action_edit.png
new file mode 100644
index 00000000..f2b2078b
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_action_edit.png
Binary files differ
diff --git a/res/layout/fragment_conversation.xml b/res/layout/fragment_conversation.xml
index dabce457..db22f38d 100644
--- a/res/layout/fragment_conversation.xml
+++ b/res/layout/fragment_conversation.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="#e5e5e5" >
+ android:background="#e5e5e5">
<RelativeLayout
android:background="#eee"
@@ -11,7 +11,7 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true" >
+ android:layout_alignParentLeft="true">
<EditText
android:id="@+id/textinput"
diff --git a/res/layout/muc_options.xml b/res/layout/muc_options.xml
index 3874de14..a4e142c2 100644
--- a/res/layout/muc_options.xml
+++ b/res/layout/muc_options.xml
@@ -1,76 +1,114 @@
-<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:orientation="vertical"
- android:padding="8dp">
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Your nickname"
- android:textColor="#33B5E5"
- android:textSize="20sp" />
+ android:background="#e5e5e5">
- <EditText
- android:id="@+id/muc_your_nick"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:ems="10"
- android:inputType="textEmailAddress"
- android:padding="8dp"
- />
+<LinearLayout
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" >
- <TextView
- android:paddingTop="16dp"
- android:id="@+id/muc_moderators_header"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Moderators"
- android:textColor="#33B5E5"
- android:textSize="20sp" />
- <TextView
- android:id="@+id/muc_moderators"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Romeo"
- android:singleLine="true"
- android:textSize="16sp"
- android:paddingLeft="8dp"
- android:paddingBottom="8dp"/>
-
- <TextView
- android:id="@+id/muc_participants_header"
- android:paddingTop="8dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Participants"
- android:textColor="#33B5E5"
- android:textSize="20sp" />
- <TextView
- android:id="@+id/muc_participants"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Juilett"
- android:singleLine="true"
- android:textSize="16sp"
- android:paddingLeft="8dp"
- android:paddingBottom="8dp"/>
- <TextView
- android:id="@+id/muc_visitors_header"
- android:paddingTop="8dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Visitors"
- android:textColor="#33B5E5"
- android:textSize="20sp" />
- <TextView
- android:id="@+id/muc_visitors"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Benvolio"
- android:singleLine="true"
- android:textSize="16sp"
- android:paddingLeft="8dp"
- android:paddingBottom="8dp"/>
+ <TextView
+ style="@style/sectionHeader"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingLeft="8dp"
+ android:paddingRight="8dp"
+ android:paddingTop="8dp"
+ android:text="Your nickname" />
+
+ <RelativeLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="#eee" >
+
+ <EditText
+ android:id="@+id/muc_your_nick"
+ android:layout_width="wrap_content"
+ android:layout_height="48dp"
+ android:layout_alignParentLeft="true"
+ android:layout_toLeftOf="@+id/imageView1"
+ android:background="#eee"
+ android:ems="10"
+ android:hint="Search or enter Jabber ID"
+ android:inputType="textEmailAddress"
+ android:paddingBottom="12dp"
+ android:paddingLeft="8dp"
+ android:paddingRight="8dp"
+ android:paddingTop="12dp" />
+
+ <ImageButton
+ android:id="@+id/muc_edit_nick"
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentTop="true"
+ android:layout_centerVertical="true"
+ android:background="?android:selectableItemBackground"
+ android:padding="8dp"
+ android:src="@drawable/ic_action_edit" />
+ </RelativeLayout>
+
+ <TextView
+ style="@style/sectionHeader"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="8dp"
+ android:text="Jabber ID" />
+ <TextView
+ android:id="@+id/muc_jabberid"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="8dp"
+ android:singleLine="true"
+ android:textColor="#5b5b5b"
+ android:textSize="18sp"/>
+
+ <LinearLayout
+ android:id="@+id/muc_more_details"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical">
+
+ <TextView
+ style="@style/sectionHeader"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="8dp"
+ android:text="Your role" />
+
+ <TextView
+ android:id="@+id/muc_role"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="8dp"
+ android:singleLine="true"
+ android:textSize="18sp"
+ android:textColor="#5b5b5b"/>
+
+
+ <TextView
+ android:id="@+id/muc_participants_header"
+ style="@style/sectionHeader"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:paddingLeft="8dp"
+ android:paddingRight="8dp"
+ android:paddingTop="8dp"
+ android:text="Other Members" />
+
+ <LinearLayout
+ android:id="@+id/muc_members"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:layout_weight="1"
+ android:orientation="vertical"
+ android:divider="?android:dividerHorizontal"
+ android:showDividers="middle"
+ >
+ </LinearLayout>
+ </LinearLayout>
-
</LinearLayout>
+</ScrollView> \ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 557b2353..a9e1fb99 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -17,4 +17,7 @@
<string name="encrypted_message">Decrypting message. please wait&#8230;</string>
<string name="conference_details">Conference Details</string>
<string name="nick_in_use">Nickname is already in use</string>
+ <string name="moderator">Moderator</string>
+ <string name="participant">Participant</string>
+ <string name="visitor">Visitor</string>
</resources>
diff --git a/src/eu/siacs/conversations/entities/MucOptions.java b/src/eu/siacs/conversations/entities/MucOptions.java
index b3b53e1d..add56fb6 100644
--- a/src/eu/siacs/conversations/entities/MucOptions.java
+++ b/src/eu/siacs/conversations/entities/MucOptions.java
@@ -3,6 +3,7 @@ package eu.siacs.conversations.entities;
import java.util.ArrayList;
import java.util.List;
+import eu.siacs.conversations.entities.MucOptions.User;
import eu.siacs.conversations.xml.Element;
import eu.siacs.conversations.xmpp.PresencePacket;
import android.annotation.SuppressLint;
@@ -75,6 +76,7 @@ public class MucOptions {
private boolean isOnline = false;
private int error = 0;
private OnRenameListener renameListener = null;
+ private User self = new User();
public void deleteUser(String name) {
@@ -107,12 +109,14 @@ public class MucOptions {
user.setAffiliation(item.getAttribute("affiliation"));
user.setRole(item.getAttribute("role"));
user.setName(name);
- addUser(user);
Log.d("xmppService","nick: "+getNick());
Log.d("xmppService","name: "+name);
if (name.equals(getNick())) {
this.isOnline = true;
this.error = 0;
+ self = user;
+ } else {
+ addUser(user);
}
} else if (type.equals("unavailable")) {
Log.d("xmppService","name: "+name);
@@ -179,4 +183,8 @@ public class MucOptions {
this.error = 0;
this.isOnline = false;
}
+
+ public User getSelf() {
+ return self;
+ }
} \ No newline at end of file
diff --git a/src/eu/siacs/conversations/ui/ConversationActivity.java b/src/eu/siacs/conversations/ui/ConversationActivity.java
index f826040b..4815957e 100644
--- a/src/eu/siacs/conversations/ui/ConversationActivity.java
+++ b/src/eu/siacs/conversations/ui/ConversationActivity.java
@@ -307,9 +307,10 @@ public class ConversationActivity extends XmppActivity {
}
break;
case R.id.action_muc_details:
- DialogMucDetails mucDetails = new DialogMucDetails();
- mucDetails.setConversation(getSelectedConversation());
- mucDetails.show(getFragmentManager(), "details");
+ Intent intent = new Intent(this,MucOptionsActivity.class);
+ intent.setAction(MucOptionsActivity.ACTION_VIEW_MUC);
+ intent.putExtra("uuid", getSelectedConversation().getUuid());
+ startActivity(intent);
break;
case R.id.action_security:
final Conversation selConv = getSelectedConversation();
diff --git a/src/eu/siacs/conversations/ui/ConversationFragment.java b/src/eu/siacs/conversations/ui/ConversationFragment.java
index 434a3556..ff372460 100644
--- a/src/eu/siacs/conversations/ui/ConversationFragment.java
+++ b/src/eu/siacs/conversations/ui/ConversationFragment.java
@@ -24,6 +24,7 @@ import eu.siacs.conversations.utils.UIHelper;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.DialogInterface;
+import android.content.Intent;
import android.content.IntentSender;
import android.content.SharedPreferences;
import android.content.IntentSender.SendIntentException;
@@ -36,8 +37,10 @@ import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.LayoutInflater;
+import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
+import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.EditText;
@@ -96,6 +99,7 @@ public class ConversationFragment extends Fragment {
}
}
};
+
private LinearLayout pgpInfo;
private LinearLayout mucError;
private TextView mucErrorText;
@@ -103,9 +107,10 @@ public class ConversationFragment extends Fragment {
@Override
public void onClick(View v) {
- DialogMucDetails mucDetails = new DialogMucDetails();
- mucDetails.setConversation(conversation);
- mucDetails.show(getFragmentManager(), "details");
+ Intent intent = new Intent(getActivity(),MucOptionsActivity.class);
+ intent.setAction(MucOptionsActivity.ACTION_VIEW_MUC);
+ intent.putExtra("uuid", conversation.getUuid());
+ startActivity(intent);
}
};
diff --git a/src/eu/siacs/conversations/ui/DialogMucDetails.java b/src/eu/siacs/conversations/ui/DialogMucDetails.java
deleted file mode 100644
index a752e88f..00000000
--- a/src/eu/siacs/conversations/ui/DialogMucDetails.java
+++ /dev/null
@@ -1,100 +0,0 @@
-package eu.siacs.conversations.ui;
-
-
-import eu.siacs.conversations.R;
-import eu.siacs.conversations.entities.Conversation;
-import eu.siacs.conversations.entities.MucOptions;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.content.DialogInterface;
-import android.content.DialogInterface.OnClickListener;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.EditText;
-import android.widget.TextView;
-
-public class DialogMucDetails extends DialogFragment {
- private XmppActivity activity;
- private Conversation conversation;
- private EditText mYourNick;
- private OnClickListener changeNickListener = new OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- MucOptions options = conversation.getMucOptions();
- String nick = mYourNick.getText().toString();
- if (!options.getNick().equals(nick)) {
- activity.xmppConnectionService.renameInMuc(conversation,nick,activity);
- }
- }
- };
-
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- this.activity = (XmppActivity) getActivity();
- AlertDialog.Builder builder = new AlertDialog.Builder(this.activity);
- LayoutInflater inflater = getActivity().getLayoutInflater();
- View view = inflater.inflate(R.layout.muc_options, null);
- builder.setView(view);
- builder.setTitle(getString(R.string.conference_details));
- mYourNick = (EditText) view.findViewById(R.id.muc_your_nick);
- TextView mTextModerators = (TextView) view.findViewById(R.id.muc_moderators);
- TextView mTextParticipants = (TextView) view.findViewById(R.id.muc_participants);
- TextView mTextVisiotors = (TextView) view.findViewById(R.id.muc_visitors);
- TextView mTextModeratorsHead = (TextView) view.findViewById(R.id.muc_moderators_header);
- TextView mTextParticipantsHead = (TextView) view.findViewById(R.id.muc_participants_header);
- TextView mTextVisiotorsHead = (TextView) view.findViewById(R.id.muc_visitors_header);
- StringBuilder mods = new StringBuilder();
- StringBuilder participants = new StringBuilder();
- StringBuilder visitors = new StringBuilder();
- for(MucOptions.User user : conversation.getMucOptions().getUsers()) {
- if (user.getRole() == MucOptions.User.ROLE_MODERATOR) {
- if (mods.length()>=1) {
- mods.append("\n, "+user.getName());
- } else {
- mods.append(user.getName());
- }
- } else if (user.getRole() == MucOptions.User.ROLE_PARTICIPANT) {
- if (participants.length()>=1) {
- participants.append("\n, "+user.getName());
- } else {
- participants.append(user.getName());
- }
- } else {
- if (visitors.length()>=1) {
- visitors.append("\n, "+user.getName());
- } else {
- visitors.append(user.getName());
- }
- }
- }
- if (mods.length()>0) {
- mTextModerators.setText(mods.toString());
- } else {
- mTextModerators.setVisibility(View.GONE);
- mTextModeratorsHead.setVisibility(View.GONE);
- }
- if (participants.length()>0) {
- mTextParticipants.setText(participants.toString());
- } else {
- mTextParticipants.setVisibility(View.GONE);
- mTextParticipantsHead.setVisibility(View.GONE);
- }
- if (visitors.length()>0) {
- mTextVisiotors.setText(visitors.toString());
- } else {
- mTextVisiotors.setVisibility(View.GONE);
- mTextVisiotorsHead.setVisibility(View.GONE);
- }
- mYourNick.setText(conversation.getMucOptions().getNick());
- builder.setPositiveButton("Done", this.changeNickListener );
- builder.setNegativeButton("Cancel", null);
- return builder.create();
- }
-
- public void setConversation(Conversation conversation) {
- this.conversation = conversation;
- }
-}
diff --git a/src/eu/siacs/conversations/ui/MucOptionsActivity.java b/src/eu/siacs/conversations/ui/MucOptionsActivity.java
new file mode 100644
index 00000000..f5996345
--- /dev/null
+++ b/src/eu/siacs/conversations/ui/MucOptionsActivity.java
@@ -0,0 +1,158 @@
+package eu.siacs.conversations.ui;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import eu.siacs.conversations.R;
+import eu.siacs.conversations.entities.Conversation;
+import eu.siacs.conversations.entities.MucOptions;
+import eu.siacs.conversations.entities.MucOptions.User;
+import eu.siacs.conversations.utils.UIHelper;
+import android.content.Context;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.EditText;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.TextView;
+
+public class MucOptionsActivity extends XmppActivity {
+ public static final String ACTION_VIEW_MUC = "view_muc";
+ private XmppActivity activity = this;
+ private Conversation conversation;
+ private EditText mYourNick;
+ private TextView mRoleAffiliaton;
+ private TextView mFullJid;
+ private LinearLayout membersView;
+ private TextView mTextParticipantsHead;
+ private LinearLayout mMoreDetails;
+ private String uuid = null;
+ private ArrayAdapter<User> contactsAdapter;
+ private OnClickListener changeNickListener = new OnClickListener() {
+
+ @Override
+ public void onClick(View arg0) {
+ Log.d("gultsch","on click change muc");
+ MucOptions options = conversation.getMucOptions();
+ String nick = mYourNick.getText().toString();
+ if (!options.getNick().equals(nick)) {
+ Log.d("gultsch","call to change muc");
+ xmppConnectionService.renameInMuc(conversation, nick, activity);
+ finish();
+ }
+ }
+ };
+ private List<User> users = new ArrayList<MucOptions.User>();
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (getIntent().getAction().equals(ACTION_VIEW_MUC)) {
+ this.uuid = getIntent().getExtras().getString("uuid");
+ }
+ setContentView(R.layout.muc_options);
+ mYourNick = (EditText) findViewById(R.id.muc_your_nick);
+ mTextParticipantsHead = (TextView) findViewById(R.id.muc_participants_header);
+ mFullJid = (TextView) findViewById(R.id.muc_jabberid);
+ ImageButton imageButton = (ImageButton) findViewById(R.id.muc_edit_nick);
+ imageButton.setOnClickListener(this.changeNickListener);
+ membersView = (LinearLayout) findViewById(R.id.muc_members);
+ mMoreDetails = (LinearLayout) findViewById(R.id.muc_more_details);
+ mMoreDetails.setVisibility(View.GONE);
+ contactsAdapter = new ArrayAdapter<MucOptions.User>(this,
+ R.layout.contact, users) {
+ @Override
+ public View getView(int position, View view, ViewGroup parent) {
+ LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ User contact = getItem(position);
+ if (view == null) {
+ view = (View) inflater.inflate(R.layout.contact, null);
+ }
+
+ ((TextView) view.findViewById(R.id.contact_display_name))
+ .setText(getItem(position).getName());
+ TextView role = (TextView) view.findViewById(R.id.contact_jid);
+ role.setText(getReadableRole(contact.getRole()));
+ ImageView imageView = (ImageView) view
+ .findViewById(R.id.contact_photo);
+ imageView.setImageBitmap(UIHelper.getUnknownContactPicture(
+ getItem(position).getName(), 90));
+ return view;
+ }
+ };
+ }
+
+ public void setConversation(Conversation conversation) {
+ this.conversation = conversation;
+ }
+
+ public String getReadableRole(int role) {
+ switch (role) {
+ case User.ROLE_MODERATOR:
+ return getString(R.string.moderator);
+ case User.ROLE_PARTICIPANT:
+ return getString(R.string.participant);
+ case User.ROLE_VISITOR:
+ return getString(R.string.visitor);
+ default:
+ return "";
+ }
+ }
+
+ @Override
+ void onBackendConnected() {
+ if (uuid != null) {
+ for (Conversation mConv : xmppConnectionService.getConversations()) {
+ if (mConv.getUuid().equals(uuid)) {
+ this.conversation = mConv;
+ }
+ }
+ if (this.conversation != null) {
+ mFullJid.setText(conversation.getContactJid().split("/")[0]);
+ mYourNick.setText(conversation.getMucOptions().getNick());
+ mRoleAffiliaton = (TextView) findViewById(R.id.muc_role);
+ if (conversation.getMucOptions().online()) {
+ mMoreDetails.setVisibility(View.VISIBLE);
+ User self = conversation.getMucOptions().getSelf();
+ switch (self.getAffiliation()) {
+ case User.AFFILIATION_ADMIN:
+ mRoleAffiliaton.setText(getReadableRole(self.getRole())
+ + " (Admin)");
+ break;
+ case User.AFFILIATION_OWNER:
+ mRoleAffiliaton.setText(getReadableRole(self.getRole())
+ + " (Owner)");
+ break;
+ default:
+ mRoleAffiliaton
+ .setText(getReadableRole(self.getRole()));
+ break;
+ }
+ }
+ this.users.clear();
+ this.users.addAll(conversation.getMucOptions().getUsers());
+ contactsAdapter.notifyDataSetChanged();
+ LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ for(User contact : conversation.getMucOptions().getUsers()) {
+ View view = (View) inflater.inflate(R.layout.contact, null);
+
+ ((TextView) view.findViewById(R.id.contact_display_name))
+ .setText(contact.getName());
+ TextView role = (TextView) view.findViewById(R.id.contact_jid);
+ role.setText(getReadableRole(contact.getRole()));
+ ImageView imageView = (ImageView) view
+ .findViewById(R.id.contact_photo);
+ imageView.setImageBitmap(UIHelper.getUnknownContactPicture(contact.getName(), 90));
+ membersView.addView(view);
+ }
+ }
+ }
+ }
+}