diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2014-03-05 15:41:14 +0100 |
---|---|---|
committer | Daniel Gultsch <daniel@gultsch.de> | 2014-03-05 15:41:14 +0100 |
commit | 78312d71dd1f281f494a2a1c04e4a80f34898d2c (patch) | |
tree | 595d3f78836691fc8eb204a3102b8781c4e3bd14 /src/eu/siacs/conversations/ui/MucDetailsActivity.java | |
parent | 79ec8b2e8128a1dc1d7d0962ce99e91fdaff8b98 (diff) |
reworked contact details
Diffstat (limited to 'src/eu/siacs/conversations/ui/MucDetailsActivity.java')
-rw-r--r-- | src/eu/siacs/conversations/ui/MucDetailsActivity.java | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/src/eu/siacs/conversations/ui/MucDetailsActivity.java b/src/eu/siacs/conversations/ui/MucDetailsActivity.java new file mode 100644 index 00000000..f28fb480 --- /dev/null +++ b/src/eu/siacs/conversations/ui/MucDetailsActivity.java @@ -0,0 +1,172 @@ +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.Menu; +import android.view.MenuItem; +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.TextView; + +public class MucDetailsActivity extends XmppActivity { + public static final String ACTION_VIEW_MUC = "view_muc"; + private Conversation conversation; + private EditText mYourNick; + private TextView mRoleAffiliaton; + private TextView mFullJid; + private LinearLayout membersView; + 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); + 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.activity_muc_details); + mYourNick = (EditText) findViewById(R.id.muc_your_nick); + 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; + } + }; + getActionBar().setHomeButtonEnabled(true); + getActionBar().setDisplayHomeAsUpEnabled(true); + + } + + @Override + public boolean onOptionsItemSelected(MenuItem menuItem) { + switch (menuItem.getItemId()) { + case android.R.id.home: + finish(); + } + return super.onOptionsItemSelected(menuItem); + } + + 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 + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.muc_details, menu); + return true; + } + + @Override + void onBackendConnected() { + if (uuid != null) { + for (Conversation mConv : xmppConnectionService.getConversations()) { + if (mConv.getUuid().equals(uuid)) { + this.conversation = mConv; + } + } + if (this.conversation != null) { + setTitle(conversation.getName()); + 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); + membersView.removeAllViews(); + 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); + } + } + } + } +} |