MucDetailsActivity.java

  1package eu.siacs.conversations.ui;
  2
  3import java.util.ArrayList;
  4import java.util.List;
  5
  6import eu.siacs.conversations.R;
  7import eu.siacs.conversations.entities.Conversation;
  8import eu.siacs.conversations.entities.MucOptions;
  9import eu.siacs.conversations.entities.MucOptions.User;
 10import eu.siacs.conversations.utils.UIHelper;
 11import android.content.Context;
 12import android.content.SharedPreferences;
 13import android.os.Bundle;
 14import android.preference.PreferenceManager;
 15import android.util.Log;
 16import android.view.LayoutInflater;
 17import android.view.Menu;
 18import android.view.MenuItem;
 19import android.view.View;
 20import android.view.View.OnClickListener;
 21import android.view.ViewGroup;
 22import android.widget.ArrayAdapter;
 23import android.widget.EditText;
 24import android.widget.ImageButton;
 25import android.widget.ImageView;
 26import android.widget.LinearLayout;
 27import android.widget.TextView;
 28
 29public class MucDetailsActivity extends XmppActivity {
 30	public static final String ACTION_VIEW_MUC = "view_muc";
 31	private Conversation conversation;
 32	private EditText mYourNick;
 33	private TextView mRoleAffiliaton;
 34	private TextView mFullJid;
 35	private LinearLayout membersView;
 36	private LinearLayout mMoreDetails;
 37	private String uuid = null;
 38	private ArrayAdapter<User> contactsAdapter;
 39	private OnClickListener changeNickListener = new OnClickListener() {
 40
 41		@Override
 42		public void onClick(View arg0) {
 43			Log.d("gultsch","on click change muc");
 44			MucOptions options = conversation.getMucOptions();
 45			String nick = mYourNick.getText().toString();
 46			if (!options.getNick().equals(nick)) {
 47				Log.d("gultsch","call to change muc");
 48				xmppConnectionService.renameInMuc(conversation, nick);
 49				finish();
 50			}
 51		}
 52	};
 53	private List<User> users = new ArrayList<MucOptions.User>();
 54
 55	@Override
 56	protected void onCreate(Bundle savedInstanceState) {
 57		super.onCreate(savedInstanceState);
 58		if (getIntent().getAction().equals(ACTION_VIEW_MUC)) {
 59			this.uuid = getIntent().getExtras().getString("uuid");
 60		}
 61		setContentView(R.layout.activity_muc_details);
 62		mYourNick = (EditText) findViewById(R.id.muc_your_nick);
 63		mFullJid = (TextView) findViewById(R.id.muc_jabberid);
 64		ImageButton imageButton = (ImageButton) findViewById(R.id.muc_edit_nick);
 65		imageButton.setOnClickListener(this.changeNickListener);
 66		membersView = (LinearLayout) findViewById(R.id.muc_members);
 67		mMoreDetails = (LinearLayout) findViewById(R.id.muc_more_details);
 68		mMoreDetails.setVisibility(View.GONE);
 69		getActionBar().setHomeButtonEnabled(true);
 70		getActionBar().setDisplayHomeAsUpEnabled(true);
 71		
 72	}
 73	
 74	@Override
 75	public boolean onOptionsItemSelected(MenuItem menuItem) {
 76	    switch (menuItem.getItemId()) {
 77	    case android.R.id.home:
 78	      finish();
 79	    }
 80	    return super.onOptionsItemSelected(menuItem);
 81	}
 82
 83	public String getReadableRole(int role) {
 84		switch (role) {
 85		case User.ROLE_MODERATOR:
 86			return getString(R.string.moderator);
 87		case User.ROLE_PARTICIPANT:
 88			return getString(R.string.participant);
 89		case User.ROLE_VISITOR:
 90			return getString(R.string.visitor);
 91		default:
 92			return "";
 93		}
 94	}
 95	
 96	@Override
 97	public boolean onCreateOptionsMenu(Menu menu) {
 98		getMenuInflater().inflate(R.menu.muc_details, menu);
 99		return true;
100	}
101
102	@Override
103	void onBackendConnected() {
104		SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
105		boolean useSubject = preferences.getBoolean("use_subject_in_muc", true);
106		if (uuid != null) {
107			for (Conversation mConv : xmppConnectionService.getConversations()) {
108				if (mConv.getUuid().equals(uuid)) {
109					this.conversation = mConv;
110				}
111			}
112			if (this.conversation != null) {
113				setTitle(conversation.getName(useSubject));
114				mFullJid.setText(conversation.getContactJid().split("/")[0]);
115				mYourNick.setText(conversation.getMucOptions().getNick());
116				mRoleAffiliaton = (TextView) findViewById(R.id.muc_role);
117				if (conversation.getMucOptions().online()) {
118					mMoreDetails.setVisibility(View.VISIBLE);
119					User self = conversation.getMucOptions().getSelf();
120					switch (self.getAffiliation()) {
121					case User.AFFILIATION_ADMIN:
122						mRoleAffiliaton.setText(getReadableRole(self.getRole())
123								+ " (Admin)");
124						break;
125					case User.AFFILIATION_OWNER:
126						mRoleAffiliaton.setText(getReadableRole(self.getRole())
127								+ " (Owner)");
128						break;
129					default:
130						mRoleAffiliaton
131								.setText(getReadableRole(self.getRole()));
132						break;
133					}
134				}
135				this.users.clear();
136				this.users.addAll(conversation.getMucOptions().getUsers());
137				//contactsAdapter.notifyDataSetChanged();
138				LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
139				membersView.removeAllViews();
140				for(User contact : conversation.getMucOptions().getUsers()) {
141					View view = (View) inflater.inflate(R.layout.contact, null);
142
143					((TextView) view.findViewById(R.id.contact_display_name))
144							.setText(contact.getName());
145					TextView role = (TextView) view.findViewById(R.id.contact_jid);
146					role.setText(getReadableRole(contact.getRole()));
147					ImageView imageView = (ImageView) view
148							.findViewById(R.id.contact_photo);
149					imageView.setImageBitmap(UIHelper.getContactPicture(null,contact.getName(), 90,this.getApplicationContext()));
150					membersView.addView(view);
151				}
152			}
153		}
154	}
155}