Muc Options even more awesome

Daniel Gultsch created

Change summary

AndroidManifest.xml                                     |   3 
gen/eu/siacs/conversations/R.java                       |  77 ++--
res/drawable-hdpi/ic_action_edit.png                    |   0 
res/drawable-ldpi/ic_action_edit.png                    |   0 
res/drawable-mdpi/ic_action_edit.png                    |   0 
res/drawable-xhdpi/ic_action_edit.png                   |   0 
res/drawable-xxhdpi/ic_action_edit.png                  |   0 
res/layout/fragment_conversation.xml                    |   4 
res/layout/muc_options.xml                              | 178 ++++++----
res/values/strings.xml                                  |   3 
src/eu/siacs/conversations/entities/MucOptions.java     |  10 
src/eu/siacs/conversations/ui/ConversationActivity.java |   7 
src/eu/siacs/conversations/ui/ConversationFragment.java |  11 
src/eu/siacs/conversations/ui/DialogMucDetails.java     | 100 ------
src/eu/siacs/conversations/ui/MucOptionsActivity.java   | 158 +++++++++
15 files changed, 335 insertions(+), 216 deletions(-)

Detailed changes

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"

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 {
         /** 

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"

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>

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>

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;
+	}
 }

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();

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);
 		}
 	};
 	

src/eu/siacs/conversations/ui/DialogMucDetails.java 🔗

@@ -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;
-	}
-}

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);
+				}
+			}
+		}
+	}
+}