diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2014-03-04 02:51:01 +0100 |
---|---|---|
committer | Daniel Gultsch <daniel@gultsch.de> | 2014-03-04 02:51:01 +0100 |
commit | 8e4be5256ea5b4e47225a84604720a15b45d3f39 (patch) | |
tree | 36005a1a78536e5bfa1fb5ebc3b4d43feddf0d60 | |
parent | 69af009c88c4ffa0ea3275c4b875a13e0ecdcddc (diff) |
Muc Options even more awesome
-rw-r--r-- | AndroidManifest.xml | 3 | ||||
-rw-r--r-- | gen/eu/siacs/conversations/R.java | 77 | ||||
-rw-r--r-- | res/drawable-hdpi/ic_action_edit.png | bin | 0 -> 884 bytes | |||
-rw-r--r-- | res/drawable-ldpi/ic_action_edit.png | bin | 0 -> 587 bytes | |||
-rw-r--r-- | res/drawable-mdpi/ic_action_edit.png | bin | 0 -> 587 bytes | |||
-rw-r--r-- | res/drawable-xhdpi/ic_action_edit.png | bin | 0 -> 1179 bytes | |||
-rw-r--r-- | res/drawable-xxhdpi/ic_action_edit.png | bin | 0 -> 1670 bytes | |||
-rw-r--r-- | res/layout/fragment_conversation.xml | 4 | ||||
-rw-r--r-- | res/layout/muc_options.xml | 178 | ||||
-rw-r--r-- | res/values/strings.xml | 3 | ||||
-rw-r--r-- | src/eu/siacs/conversations/entities/MucOptions.java | 10 | ||||
-rw-r--r-- | src/eu/siacs/conversations/ui/ConversationActivity.java | 7 | ||||
-rw-r--r-- | src/eu/siacs/conversations/ui/ConversationFragment.java | 11 | ||||
-rw-r--r-- | src/eu/siacs/conversations/ui/DialogMucDetails.java | 100 | ||||
-rw-r--r-- | src/eu/siacs/conversations/ui/MucOptionsActivity.java | 158 |
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 Binary files differnew file mode 100644 index 00000000..5f7c6eff --- /dev/null +++ b/res/drawable-hdpi/ic_action_edit.png diff --git a/res/drawable-ldpi/ic_action_edit.png b/res/drawable-ldpi/ic_action_edit.png Binary files differnew file mode 100644 index 00000000..650b4d89 --- /dev/null +++ b/res/drawable-ldpi/ic_action_edit.png diff --git a/res/drawable-mdpi/ic_action_edit.png b/res/drawable-mdpi/ic_action_edit.png Binary files differnew file mode 100644 index 00000000..650b4d89 --- /dev/null +++ b/res/drawable-mdpi/ic_action_edit.png diff --git a/res/drawable-xhdpi/ic_action_edit.png b/res/drawable-xhdpi/ic_action_edit.png Binary files differnew file mode 100644 index 00000000..8ab436d8 --- /dev/null +++ b/res/drawable-xhdpi/ic_action_edit.png diff --git a/res/drawable-xxhdpi/ic_action_edit.png b/res/drawable-xxhdpi/ic_action_edit.png Binary files differnew file mode 100644 index 00000000..f2b2078b --- /dev/null +++ b/res/drawable-xxhdpi/ic_action_edit.png 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…</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); + } + } + } + } +} |