mirror of
https://github.com/moparisthebest/Conversations
synced 2024-12-25 08:58:55 -05:00
redesigned muc details a little bit
This commit is contained in:
parent
eb8253d49a
commit
e79a34b651
BIN
res/drawable-hdpi/ic_action_edit_dark.png
Normal file
BIN
res/drawable-hdpi/ic_action_edit_dark.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 884 B |
BIN
res/drawable-mdpi/ic_action_edit_dark.png
Normal file
BIN
res/drawable-mdpi/ic_action_edit_dark.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 587 B |
BIN
res/drawable-xhdpi/ic_action_edit_dark.png
Normal file
BIN
res/drawable-xhdpi/ic_action_edit_dark.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
BIN
res/drawable-xxhdpi/ic_action_edit_dark.png
Normal file
BIN
res/drawable-xxhdpi/ic_action_edit_dark.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
@ -2,147 +2,128 @@
|
||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/secondarybackground">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical" >
|
||||
<TextView
|
||||
style="@style/sectionHeader"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp"
|
||||
android:text="@string/muc_details_conference"
|
||||
android:textColor="@color/primarytext"/>
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/primarybackground" >
|
||||
|
||||
|
||||
<EditText
|
||||
android:id="@+id/muc_subject"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="48dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_toLeftOf="@+id/muc_edit_subject"
|
||||
android:background="@color/primarybackground"
|
||||
android:ems="10"
|
||||
android:hint="@string/muc_details_conference_subject"
|
||||
android:inputType="textAutoComplete"
|
||||
android:paddingBottom="12dp"
|
||||
android:paddingLeft="8dp"
|
||||
android:paddingRight="8dp"
|
||||
android:paddingTop="12dp" />
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/muc_edit_subject"
|
||||
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
|
||||
android:id="@+id/muc_jabberid"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp"
|
||||
android:singleLine="true"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/primarytext"/>
|
||||
|
||||
<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="@string/muc_details_your_nickname"
|
||||
android:textColor="@color/primarytext"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/primarybackground" >
|
||||
|
||||
|
||||
<EditText
|
||||
android:id="@+id/muc_your_nick"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="48dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_toLeftOf="@+id/muc_edit_nick"
|
||||
android:background="@color/primarybackground"
|
||||
android:ems="10"
|
||||
android:hint="@string/muc_details_your_nickname"
|
||||
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
|
||||
android:id="@+id/muc_role"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp"
|
||||
android:singleLine="true"
|
||||
android:textSize="14sp"
|
||||
android:textColor="@color/primarytext"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/muc_more_details"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<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="@string/muc_details_other_members"
|
||||
android:textColor="@color/primarytext"/>
|
||||
android:background="@color/primarybackground" >
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/muc_members"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:divider="?android:dividerHorizontal"
|
||||
android:showDividers="middle"
|
||||
>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:layout_marginTop="24dp"
|
||||
android:id="@+id/invite"
|
||||
style="?android:attr/buttonStyleSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/invite_contacts"
|
||||
android:layout_gravity="center_horizontal"/>
|
||||
</LinearLayout>
|
||||
android:orientation="vertical" >
|
||||
|
||||
<TextView
|
||||
style="@style/sectionHeader"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp"
|
||||
android:text="@string/muc_details_conference" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/muc_jabberid"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="8dp"
|
||||
android:singleLine="true"
|
||||
android:text="@string/account_settings_example_jabber_id"
|
||||
android:textColor="@color/primarytext"
|
||||
android:textSize="14sp"/>
|
||||
|
||||
<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="@string/you" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?android:attr/activatedBackgroundIndicator"
|
||||
android:padding="8dp"
|
||||
android:paddingBottom="8dp" >
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/your_photo"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:src="@drawable/ic_profile" >
|
||||
</ImageView>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toRightOf="@+id/your_photo"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="8dp" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/muc_your_nick"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:text="hallo hallo"
|
||||
android:textColor="@color/primarytext"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/muc_role"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:singleLine="true"
|
||||
android:text="Participant"
|
||||
android:textColor="@color/primarytext"
|
||||
android:textSize="14sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/edit_nick_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:background="?android:selectableItemBackground"
|
||||
android:src="@drawable/ic_action_edit_dark"
|
||||
android:padding="8dp"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/muc_more_details"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<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="@string/muc_details_other_members" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/muc_members"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:divider="?android:dividerHorizontal"
|
||||
android:orientation="vertical"
|
||||
android:showDividers="middle" >
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:id="@+id/invite"
|
||||
style="?android:attr/buttonStyleSmall"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="24dp"
|
||||
android:text="@string/invite_contacts" />
|
||||
</LinearLayout>
|
||||
|
||||
</ScrollView>
|
@ -1,28 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout 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:id="@+id/textView1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/enter_new_name"
|
||||
android:textColor="@color/primarytext"
|
||||
android:textSize="18sp" />
|
||||
|
||||
<EditText
|
||||
android:paddingTop="16dp"
|
||||
android:paddingBottom="8dp"
|
||||
android:id="@+id/editText1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:inputType="textPersonName" >
|
||||
|
||||
<requestFocus />
|
||||
</EditText>
|
||||
|
||||
</LinearLayout>
|
18
res/layout/quickedit.xml
Normal file
18
res/layout/quickedit.xml
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:padding="16dp">
|
||||
<EditText
|
||||
android:id="@+id/editor"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ems="10"
|
||||
android:inputType="textPersonName"
|
||||
android:textColor="@color/primarytext">
|
||||
|
||||
<requestFocus />
|
||||
</EditText>
|
||||
|
||||
</LinearLayout>
|
@ -1,5 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||
<item
|
||||
android:id="@+id/action_edit_subject"
|
||||
android:orderInCategory="10"
|
||||
android:showAsAction="always"
|
||||
android:icon="@drawable/ic_action_edit"
|
||||
android:title="@string/action_edit_subject" />
|
||||
<item
|
||||
android:id="@+id/action_accounts"
|
||||
android:orderInCategory="90"
|
||||
|
@ -1,5 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="primary" type="color">#ff259b24</color>
|
||||
<color name="primarydark" type="color">#ff0a7e07</color>
|
||||
<color name="primarytext" type="color">#de000000</color>
|
||||
<color name="secondarytext" type="color">#8a000000</color>
|
||||
<color name="ondarktext" type="color">#fffafafa</color>
|
||||
|
@ -270,4 +270,6 @@
|
||||
<string name="save_as_bookmark">Save as bookmark</string>
|
||||
<string name="delete_bookmark">Delete bookmark</string>
|
||||
<string name="bookmark_already_exists">This bookmark already exists</string>
|
||||
<string name="you">You</string>
|
||||
<string name="action_edit_subject">Edit conference subject</string>
|
||||
</resources>
|
||||
|
@ -6,14 +6,14 @@
|
||||
<item name="android:layout_marginTop">8dp</item>
|
||||
<item name="android:textSize">14sp</item>
|
||||
<item name="android:textAllCaps">true</item>
|
||||
<item name="android:textColor">#5b5b5b</item>
|
||||
<item name="android:textColor">@color/primarytext</item>
|
||||
<item name="android:textStyle">bold</item>
|
||||
</style>
|
||||
|
||||
<style name="Divider">
|
||||
<item name="android:layout_width">match_parent</item>
|
||||
<item name="android:layout_height">1.5dp</item>
|
||||
<item name="android:background">#b7b7b7</item>
|
||||
<item name="android:background">@color/divider</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -8,8 +8,8 @@
|
||||
</style>
|
||||
|
||||
<style name="ConversationsActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
|
||||
<item name="android:background">#259b24</item>
|
||||
<item name="android:backgroundStacked">#0a7e07</item>
|
||||
<item name="android:background">@color/primary</item>
|
||||
<item name="android:backgroundStacked">@color/primarydark</item>
|
||||
<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
|
||||
<item name="android:icon">@android:color/transparent</item>
|
||||
</style>
|
||||
|
@ -87,7 +87,7 @@ public class MucOptions {
|
||||
private boolean aboutToRename = false;
|
||||
private User self = new User();
|
||||
private String subject = null;
|
||||
private String nick;
|
||||
private String joinnick;
|
||||
|
||||
public MucOptions(Account account) {
|
||||
this.account = account;
|
||||
@ -124,10 +124,16 @@ public class MucOptions {
|
||||
user.setAffiliation(item.getAttribute("affiliation"));
|
||||
user.setRole(item.getAttribute("role"));
|
||||
user.setName(name);
|
||||
if (name.equals(getJoinNick())) {
|
||||
if (name.equals(this.joinnick)) {
|
||||
this.isOnline = true;
|
||||
this.error = 0;
|
||||
self = user;
|
||||
if (aboutToRename) {
|
||||
if (renameListener!=null) {
|
||||
renameListener.onRename(true);
|
||||
}
|
||||
aboutToRename = false;
|
||||
}
|
||||
} else {
|
||||
addUser(user);
|
||||
}
|
||||
@ -146,16 +152,6 @@ public class MucOptions {
|
||||
}
|
||||
}
|
||||
} else if (type.equals("unavailable")) {
|
||||
if (name.equals(self.getName())) {
|
||||
Element item = packet.findChild("x","http://jabber.org/protocol/muc#user").findChild("item");
|
||||
String nick = item.getAttribute("nick");
|
||||
if (nick!=null) {
|
||||
aboutToRename = false;
|
||||
if (renameListener!=null) {
|
||||
renameListener.onRename(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
deleteUser(packet.getAttribute("from").split("/")[1]);
|
||||
} else if (type.equals("error")) {
|
||||
Element error = packet.findChild("error");
|
||||
@ -191,10 +187,6 @@ public class MucOptions {
|
||||
}
|
||||
}
|
||||
|
||||
public String getJoinNick() {
|
||||
return this.nick;
|
||||
}
|
||||
|
||||
public String getActualNick() {
|
||||
if (this.self.getName()!=null) {
|
||||
return this.self.getName();
|
||||
@ -204,7 +196,7 @@ public class MucOptions {
|
||||
}
|
||||
|
||||
public void setJoinNick(String nick) {
|
||||
this.nick = nick;
|
||||
this.joinnick = nick;
|
||||
}
|
||||
|
||||
public void setConversation(Conversation conversation) {
|
||||
@ -282,6 +274,6 @@ public class MucOptions {
|
||||
}
|
||||
|
||||
public String getJoinJid() {
|
||||
return this.conversation.getContactJid().split("/")[0]+"/"+this.getJoinNick();
|
||||
return this.conversation.getContactJid().split("/")[0]+"/"+this.joinnick;
|
||||
}
|
||||
}
|
@ -141,15 +141,15 @@ public class ContactDetailsActivity extends XmppActivity {
|
||||
break;
|
||||
case R.id.action_edit_contact:
|
||||
if (contact.getSystemAccount() == null) {
|
||||
|
||||
View view = (View) getLayoutInflater().inflate(
|
||||
R.layout.edit_contact_name, null);
|
||||
name = (EditText) view.findViewById(R.id.editText1);
|
||||
name.setText(contact.getDisplayName());
|
||||
builder.setView(view).setTitle(contact.getJid())
|
||||
.setPositiveButton(getString(R.string.edit), editContactNameListener)
|
||||
.create().show();
|
||||
|
||||
quickEdit(contact.getDisplayName(), new OnValueEdited() {
|
||||
|
||||
@Override
|
||||
public void onValueEdited(String value) {
|
||||
contact.setServerName(value);
|
||||
activity.xmppConnectionService.pushContactToServer(contact);
|
||||
populateView();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
Intent intent = new Intent(Intent.ACTION_EDIT);
|
||||
String[] systemAccount = contact.getSystemAccount().split("#");
|
||||
|
@ -654,34 +654,6 @@ public class ConversationFragment extends Fragment {
|
||||
activity.invalidateOptionsMenu();
|
||||
}
|
||||
}
|
||||
if (conversation.getMode() == Conversation.MODE_MULTI) {
|
||||
activity.xmppConnectionService
|
||||
.setOnRenameListener(new OnRenameListener() {
|
||||
|
||||
@Override
|
||||
public void onRename(final boolean success) {
|
||||
activity.xmppConnectionService
|
||||
.updateConversation(conversation);
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (success) {
|
||||
Toast.makeText(
|
||||
getActivity(),
|
||||
getString(R.string.your_nick_has_been_changed),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
Toast.makeText(
|
||||
getActivity(),
|
||||
getString(R.string.nick_in_use),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void decryptMessage(Message message) {
|
||||
|
@ -9,108 +9,124 @@ import eu.siacs.conversations.R;
|
||||
import eu.siacs.conversations.crypto.PgpEngine;
|
||||
import eu.siacs.conversations.entities.Conversation;
|
||||
import eu.siacs.conversations.entities.MucOptions;
|
||||
import eu.siacs.conversations.entities.MucOptions.OnRenameListener;
|
||||
import eu.siacs.conversations.entities.MucOptions.User;
|
||||
import eu.siacs.conversations.services.XmppConnectionService.OnConversationUpdate;
|
||||
import eu.siacs.conversations.utils.UIHelper;
|
||||
import eu.siacs.conversations.xmpp.stanzas.MessagePacket;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.IntentSender.SendIntentException;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
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.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageButton;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class MucDetailsActivity extends XmppActivity {
|
||||
public static final String ACTION_VIEW_MUC = "view_muc";
|
||||
private Conversation conversation;
|
||||
private EditText mYourNick;
|
||||
private EditText mSubject;
|
||||
private TextView mYourNick;
|
||||
private ImageView mYourPhoto;
|
||||
private ImageButton mEditNickButton;
|
||||
private TextView mRoleAffiliaton;
|
||||
private TextView mFullJid;
|
||||
private LinearLayout membersView;
|
||||
private LinearLayout mMoreDetails;
|
||||
private Button mInviteButton;
|
||||
private String uuid = null;
|
||||
private OnClickListener changeNickListener = new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
MucOptions options = conversation.getMucOptions();
|
||||
String nick = mYourNick.getText().toString();
|
||||
if (!options.getActualNick().equals(nick)) {
|
||||
xmppConnectionService.renameInMuc(conversation, nick);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private OnClickListener changeSubjectListener = new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View arg0) {
|
||||
String subject = mSubject.getText().toString();
|
||||
MucOptions options = conversation.getMucOptions();
|
||||
if (!subject.equals(options.getSubject())) {
|
||||
MessagePacket packet = xmppConnectionService.getMessageGenerator().conferenceSubject(conversation, subject);
|
||||
xmppConnectionService.sendMessagePacket(conversation.getAccount(), packet);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private OnClickListener inviteListener = new OnClickListener() {
|
||||
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
/*Intent intent = new Intent(getApplicationContext(),
|
||||
ContactsActivity.class);
|
||||
intent.setAction("invite");
|
||||
intent.putExtra("uuid",conversation.getUuid());
|
||||
startActivity(intent);*/
|
||||
/*
|
||||
* Intent intent = new Intent(getApplicationContext(),
|
||||
* ContactsActivity.class); intent.setAction("invite");
|
||||
* intent.putExtra("uuid",conversation.getUuid());
|
||||
* startActivity(intent);
|
||||
*/
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
private List<User> users = new ArrayList<MucOptions.User>();
|
||||
private OnConversationUpdate onConvChanged = new OnConversationUpdate() {
|
||||
|
||||
@Override
|
||||
public void onConversationUpdate() {
|
||||
runOnUiThread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
populateView();
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_muc_details);
|
||||
mYourNick = (EditText) findViewById(R.id.muc_your_nick);
|
||||
mYourNick = (TextView) findViewById(R.id.muc_your_nick);
|
||||
mYourPhoto = (ImageView) findViewById(R.id.your_photo);
|
||||
mEditNickButton = (ImageButton) findViewById(R.id.edit_nick_button);
|
||||
mFullJid = (TextView) findViewById(R.id.muc_jabberid);
|
||||
ImageButton editNickButton = (ImageButton) findViewById(R.id.muc_edit_nick);
|
||||
editNickButton.setOnClickListener(this.changeNickListener);
|
||||
ImageButton editSubjectButton = (ImageButton) findViewById(R.id.muc_edit_subject);
|
||||
editSubjectButton.setOnClickListener(this.changeSubjectListener);
|
||||
membersView = (LinearLayout) findViewById(R.id.muc_members);
|
||||
mMoreDetails = (LinearLayout) findViewById(R.id.muc_more_details);
|
||||
mMoreDetails.setVisibility(View.GONE);
|
||||
mSubject = (EditText) findViewById(R.id.muc_subject);
|
||||
mInviteButton = (Button) findViewById(R.id.invite);
|
||||
mInviteButton.setOnClickListener(inviteListener);
|
||||
getActionBar().setHomeButtonEnabled(true);
|
||||
getActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
mEditNickButton.setOnClickListener(new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
quickEdit(conversation.getMucOptions().getActualNick(),
|
||||
new OnValueEdited() {
|
||||
|
||||
@Override
|
||||
public void onValueEdited(String value) {
|
||||
xmppConnectionService.renameInMuc(conversation,
|
||||
value);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem menuItem) {
|
||||
switch (menuItem.getItemId()) {
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
}
|
||||
return super.onOptionsItemSelected(menuItem);
|
||||
switch (menuItem.getItemId()) {
|
||||
case android.R.id.home:
|
||||
finish();
|
||||
break;
|
||||
case R.id.action_edit_subject:
|
||||
if (conversation != null) {
|
||||
quickEdit(conversation.getName(true), new OnValueEdited() {
|
||||
|
||||
@Override
|
||||
public void onValueEdited(String value) {
|
||||
MessagePacket packet = xmppConnectionService
|
||||
.getMessageGenerator().conferenceSubject(
|
||||
conversation, value);
|
||||
xmppConnectionService.sendMessagePacket(
|
||||
conversation.getAccount(), packet);
|
||||
}
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
return super.onOptionsItemSelected(menuItem);
|
||||
}
|
||||
|
||||
public String getReadableRole(int role) {
|
||||
@ -125,7 +141,7 @@ public class MucDetailsActivity extends XmppActivity {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.muc_details, menu);
|
||||
@ -134,8 +150,7 @@ public class MucDetailsActivity extends XmppActivity {
|
||||
|
||||
@Override
|
||||
void onBackendConnected() {
|
||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
boolean useSubject = preferences.getBoolean("use_subject_in_muc", true);
|
||||
registerListener();
|
||||
if (getIntent().getAction().equals(ACTION_VIEW_MUC)) {
|
||||
this.uuid = getIntent().getExtras().getString("uuid");
|
||||
}
|
||||
@ -146,69 +161,117 @@ public class MucDetailsActivity extends XmppActivity {
|
||||
}
|
||||
}
|
||||
if (this.conversation != null) {
|
||||
mSubject.setText(conversation.getMucOptions().getSubject());
|
||||
setTitle(conversation.getName(useSubject));
|
||||
mFullJid.setText(conversation.getContactJid().split("/")[0]);
|
||||
mYourNick.setText(conversation.getMucOptions().getActualNick());
|
||||
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())
|
||||
+ " (" + getString(R.string.admin) + ")");
|
||||
break;
|
||||
case User.AFFILIATION_OWNER:
|
||||
mRoleAffiliaton.setText(getReadableRole(self.getRole())
|
||||
+ " (" + getString(R.string.owner) + ")");
|
||||
break;
|
||||
default:
|
||||
mRoleAffiliaton
|
||||
.setText(getReadableRole(self.getRole()));
|
||||
break;
|
||||
populateView();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
if (xmppConnectionServiceBound) {
|
||||
xmppConnectionService.removeOnConversationListChangedListener();
|
||||
}
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
protected void registerListener() {
|
||||
if (xmppConnectionServiceBound) {
|
||||
xmppConnectionService
|
||||
.setOnConversationListChangedListener(this.onConvChanged);
|
||||
xmppConnectionService.setOnRenameListener(new OnRenameListener() {
|
||||
|
||||
@Override
|
||||
public void onRename(final boolean success) {
|
||||
runOnUiThread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
populateView();
|
||||
if (success) {
|
||||
Toast.makeText(MucDetailsActivity.this,
|
||||
getString(R.string.your_nick_has_been_changed),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
Toast.makeText(MucDetailsActivity.this,
|
||||
getString(R.string.nick_in_use),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
}
|
||||
this.users.clear();
|
||||
this.users.addAll(conversation.getMucOptions().getUsers());
|
||||
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
membersView.removeAllViews();
|
||||
for(final User contact : conversation.getMucOptions().getUsers()) {
|
||||
View view = (View) inflater.inflate(R.layout.contact, null);
|
||||
TextView displayName = (TextView) view.findViewById(R.id.contact_display_name);
|
||||
TextView key = (TextView) view.findViewById(R.id.key);
|
||||
displayName.setText(contact.getName());
|
||||
TextView role = (TextView) view.findViewById(R.id.contact_jid);
|
||||
role.setText(getReadableRole(contact.getRole()));
|
||||
if (contact.getPgpKeyId()!=0) {
|
||||
key.setVisibility(View.VISIBLE);
|
||||
key.setOnClickListener(new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
PgpEngine pgp = xmppConnectionService.getPgpEngine();
|
||||
if (pgp!=null) {
|
||||
PendingIntent intent = pgp.getIntentForKey(conversation.getAccount(), contact.getPgpKeyId());
|
||||
if (intent!=null) {
|
||||
try {
|
||||
startIntentSenderForResult(intent.getIntentSender(), 0, null, 0, 0, 0);
|
||||
} catch (SendIntentException e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
key.setText(OpenPgpUtils.convertKeyIdToHex(contact.getPgpKeyId()));
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
private void populateView() {
|
||||
mYourPhoto.setImageBitmap(UIHelper.getContactPicture(conversation
|
||||
.getMucOptions().getActualNick(), 48, this, false));
|
||||
setTitle(conversation.getName(true));
|
||||
mFullJid.setText(conversation.getContactJid().split("/")[0]);
|
||||
mYourNick.setText(conversation.getMucOptions().getActualNick());
|
||||
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()) + " ("
|
||||
+ getString(R.string.admin) + ")");
|
||||
break;
|
||||
case User.AFFILIATION_OWNER:
|
||||
mRoleAffiliaton.setText(getReadableRole(self.getRole()) + " ("
|
||||
+ getString(R.string.owner) + ")");
|
||||
break;
|
||||
default:
|
||||
mRoleAffiliaton.setText(getReadableRole(self.getRole()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.users.clear();
|
||||
this.users.addAll(conversation.getMucOptions().getUsers());
|
||||
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
membersView.removeAllViews();
|
||||
for (final User contact : conversation.getMucOptions().getUsers()) {
|
||||
View view = (View) inflater.inflate(R.layout.contact, null);
|
||||
TextView displayName = (TextView) view
|
||||
.findViewById(R.id.contact_display_name);
|
||||
TextView key = (TextView) view.findViewById(R.id.key);
|
||||
displayName.setText(contact.getName());
|
||||
TextView role = (TextView) view.findViewById(R.id.contact_jid);
|
||||
role.setText(getReadableRole(contact.getRole()));
|
||||
if (contact.getPgpKeyId() != 0) {
|
||||
key.setVisibility(View.VISIBLE);
|
||||
key.setOnClickListener(new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
viewPgpKey(contact);
|
||||
}
|
||||
ImageView imageView = (ImageView) view
|
||||
.findViewById(R.id.contact_photo);
|
||||
imageView.setImageBitmap(UIHelper.getContactPicture(contact.getName(), 48,this.getApplicationContext(), false));
|
||||
membersView.addView(view);
|
||||
});
|
||||
key.setText(OpenPgpUtils.convertKeyIdToHex(contact
|
||||
.getPgpKeyId()));
|
||||
}
|
||||
Bitmap bm = UIHelper.getContactPicture(contact.getName(), 48, this,
|
||||
false);
|
||||
ImageView iv = (ImageView) view.findViewById(R.id.contact_photo);
|
||||
iv.setImageBitmap(bm);
|
||||
membersView.addView(view);
|
||||
}
|
||||
}
|
||||
|
||||
private void viewPgpKey(User user) {
|
||||
PgpEngine pgp = xmppConnectionService.getPgpEngine();
|
||||
if (pgp != null) {
|
||||
PendingIntent intent = pgp.getIntentForKey(
|
||||
conversation.getAccount(), user.getPgpKeyId());
|
||||
if (intent != null) {
|
||||
try {
|
||||
startIntentSenderForResult(intent.getIntentSender(), 0,
|
||||
null, 0, 0, 0);
|
||||
} catch (SendIntentException e) {
|
||||
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Log.d("xmppService","uuid in muc details was null");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,10 +23,10 @@ import android.content.ServiceConnection;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.util.Log;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.EditText;
|
||||
|
||||
public abstract class XmppActivity extends Activity {
|
||||
|
||||
@ -37,6 +37,10 @@ public abstract class XmppActivity extends Activity {
|
||||
public XmppConnectionService xmppConnectionService;
|
||||
public boolean xmppConnectionServiceBound = false;
|
||||
protected boolean handledViewIntent = false;
|
||||
|
||||
protected interface OnValueEdited {
|
||||
public void onValueEdited(String value);
|
||||
}
|
||||
|
||||
protected ServiceConnection mConnection = new ServiceConnection() {
|
||||
|
||||
@ -193,10 +197,7 @@ public abstract class XmppActivity extends Activity {
|
||||
try {
|
||||
startIntentSenderForResult(pi.getIntentSender(),
|
||||
REQUEST_ANNOUNCE_PGP, null, 0, 0, 0);
|
||||
} catch (SendIntentException e) {
|
||||
Log.d("xmppService",
|
||||
"coulnd start intent for pgp anncouncment");
|
||||
}
|
||||
} catch (SendIntentException e) {}
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -256,6 +257,26 @@ public abstract class XmppActivity extends Activity {
|
||||
builder.create().show();
|
||||
}
|
||||
|
||||
protected void quickEdit(final String previousValue, final OnValueEdited callback) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||
View view = (View) getLayoutInflater().inflate(R.layout.quickedit, null);
|
||||
final EditText editor = (EditText) view.findViewById(R.id.editor);
|
||||
editor.setText(previousValue);
|
||||
builder.setView(view);
|
||||
builder.setNegativeButton(R.string.cancel, null);
|
||||
builder.setPositiveButton(R.string.edit, new OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
String value = editor.getText().toString();
|
||||
if (!previousValue.equals(value) && value.trim().length() > 0) {
|
||||
callback.onValueEdited(value);
|
||||
}
|
||||
}
|
||||
});
|
||||
builder.create().show();
|
||||
}
|
||||
|
||||
public void selectPresence(final Conversation conversation,
|
||||
final OnPresenceSelected listener) {
|
||||
Contact contact = conversation.getContact();
|
||||
|
Loading…
Reference in New Issue
Block a user