redesigned muc details a little bit
This commit is contained in:
parent
eb8253d49a
commit
e79a34b651
Binary file not shown.
After Width: | Height: | Size: 884 B |
Binary file not shown.
After Width: | Height: | Size: 587 B |
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.6 KiB |
|
@ -2,59 +2,29 @@
|
||||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@color/secondarybackground">
|
android:background="@color/primarybackground" >
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical" >
|
android:orientation="vertical" >
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/sectionHeader"
|
style="@style/sectionHeader"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:text="@string/muc_details_conference"
|
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
|
<TextView
|
||||||
android:id="@+id/muc_jabberid"
|
android:id="@+id/muc_jabberid"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:padding="8dp"
|
android:padding="8dp"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textSize="14sp"
|
android:text="@string/account_settings_example_jabber_id"
|
||||||
android:textColor="@color/primarytext"/>
|
android:textColor="@color/primarytext"
|
||||||
|
android:textSize="14sp"/>
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
style="@style/sectionHeader"
|
style="@style/sectionHeader"
|
||||||
|
@ -63,49 +33,61 @@
|
||||||
android:paddingLeft="8dp"
|
android:paddingLeft="8dp"
|
||||||
android:paddingRight="8dp"
|
android:paddingRight="8dp"
|
||||||
android:paddingTop="8dp"
|
android:paddingTop="8dp"
|
||||||
android:text="@string/muc_details_your_nickname"
|
android:text="@string/you" />
|
||||||
android:textColor="@color/primarytext"/>
|
|
||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@color/primarybackground" >
|
android:background="?android:attr/activatedBackgroundIndicator"
|
||||||
|
android:padding="8dp"
|
||||||
|
android:paddingBottom="8dp" >
|
||||||
|
|
||||||
|
<ImageView
|
||||||
<EditText
|
android:id="@+id/your_photo"
|
||||||
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_width="48dp"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentLeft="true"
|
||||||
android:layout_alignParentTop="true"
|
android:src="@drawable/ic_profile" >
|
||||||
|
</ImageView>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:background="?android:selectableItemBackground"
|
android:layout_toRightOf="@+id/your_photo"
|
||||||
android:padding="8dp"
|
android:orientation="vertical"
|
||||||
android:src="@drawable/ic_action_edit" />
|
android:paddingLeft="8dp" >
|
||||||
</RelativeLayout>
|
|
||||||
|
<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
|
<TextView
|
||||||
android:id="@+id/muc_role"
|
android:id="@+id/muc_role"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:padding="8dp"
|
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textSize="14sp"
|
android:text="Participant"
|
||||||
android:textColor="@color/primarytext"/>
|
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
|
<LinearLayout
|
||||||
android:id="@+id/muc_more_details"
|
android:id="@+id/muc_more_details"
|
||||||
|
@ -121,28 +103,27 @@
|
||||||
android:paddingLeft="8dp"
|
android:paddingLeft="8dp"
|
||||||
android:paddingRight="8dp"
|
android:paddingRight="8dp"
|
||||||
android:paddingTop="8dp"
|
android:paddingTop="8dp"
|
||||||
android:text="@string/muc_details_other_members"
|
android:text="@string/muc_details_other_members" />
|
||||||
android:textColor="@color/primarytext"/>
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/muc_members"
|
android:id="@+id/muc_members"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:orientation="vertical"
|
|
||||||
android:divider="?android:dividerHorizontal"
|
android:divider="?android:dividerHorizontal"
|
||||||
android:showDividers="middle"
|
android:orientation="vertical"
|
||||||
>
|
android:showDividers="middle" >
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
android:layout_marginTop="24dp"
|
|
||||||
android:id="@+id/invite"
|
android:id="@+id/invite"
|
||||||
style="?android:attr/buttonStyleSmall"
|
style="?android:attr/buttonStyleSmall"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:text="@string/invite_contacts"
|
android:layout_gravity="center_horizontal"
|
||||||
android:layout_gravity="center_horizontal"/>
|
android:layout_marginTop="24dp"
|
||||||
|
android:text="@string/invite_contacts" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
</ScrollView>
|
</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>
|
|
|
@ -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"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
|
<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
|
<item
|
||||||
android:id="@+id/action_accounts"
|
android:id="@+id/action_accounts"
|
||||||
android:orderInCategory="90"
|
android:orderInCategory="90"
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
<color name="primary" type="color">#ff259b24</color>
|
||||||
|
<color name="primarydark" type="color">#ff0a7e07</color>
|
||||||
<color name="primarytext" type="color">#de000000</color>
|
<color name="primarytext" type="color">#de000000</color>
|
||||||
<color name="secondarytext" type="color">#8a000000</color>
|
<color name="secondarytext" type="color">#8a000000</color>
|
||||||
<color name="ondarktext" type="color">#fffafafa</color>
|
<color name="ondarktext" type="color">#fffafafa</color>
|
||||||
|
|
|
@ -270,4 +270,6 @@
|
||||||
<string name="save_as_bookmark">Save as bookmark</string>
|
<string name="save_as_bookmark">Save as bookmark</string>
|
||||||
<string name="delete_bookmark">Delete bookmark</string>
|
<string name="delete_bookmark">Delete bookmark</string>
|
||||||
<string name="bookmark_already_exists">This bookmark already exists</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>
|
</resources>
|
||||||
|
|
|
@ -6,14 +6,14 @@
|
||||||
<item name="android:layout_marginTop">8dp</item>
|
<item name="android:layout_marginTop">8dp</item>
|
||||||
<item name="android:textSize">14sp</item>
|
<item name="android:textSize">14sp</item>
|
||||||
<item name="android:textAllCaps">true</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>
|
<item name="android:textStyle">bold</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="Divider">
|
<style name="Divider">
|
||||||
<item name="android:layout_width">match_parent</item>
|
<item name="android:layout_width">match_parent</item>
|
||||||
<item name="android:layout_height">1.5dp</item>
|
<item name="android:layout_height">1.5dp</item>
|
||||||
<item name="android:background">#b7b7b7</item>
|
<item name="android:background">@color/divider</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
|
@ -8,8 +8,8 @@
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="ConversationsActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
|
<style name="ConversationsActionBar" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
|
||||||
<item name="android:background">#259b24</item>
|
<item name="android:background">@color/primary</item>
|
||||||
<item name="android:backgroundStacked">#0a7e07</item>
|
<item name="android:backgroundStacked">@color/primarydark</item>
|
||||||
<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
|
<item name="android:displayOptions">showHome|homeAsUp|showTitle</item>
|
||||||
<item name="android:icon">@android:color/transparent</item>
|
<item name="android:icon">@android:color/transparent</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -87,7 +87,7 @@ public class MucOptions {
|
||||||
private boolean aboutToRename = false;
|
private boolean aboutToRename = false;
|
||||||
private User self = new User();
|
private User self = new User();
|
||||||
private String subject = null;
|
private String subject = null;
|
||||||
private String nick;
|
private String joinnick;
|
||||||
|
|
||||||
public MucOptions(Account account) {
|
public MucOptions(Account account) {
|
||||||
this.account = account;
|
this.account = account;
|
||||||
|
@ -124,10 +124,16 @@ public class MucOptions {
|
||||||
user.setAffiliation(item.getAttribute("affiliation"));
|
user.setAffiliation(item.getAttribute("affiliation"));
|
||||||
user.setRole(item.getAttribute("role"));
|
user.setRole(item.getAttribute("role"));
|
||||||
user.setName(name);
|
user.setName(name);
|
||||||
if (name.equals(getJoinNick())) {
|
if (name.equals(this.joinnick)) {
|
||||||
this.isOnline = true;
|
this.isOnline = true;
|
||||||
this.error = 0;
|
this.error = 0;
|
||||||
self = user;
|
self = user;
|
||||||
|
if (aboutToRename) {
|
||||||
|
if (renameListener!=null) {
|
||||||
|
renameListener.onRename(true);
|
||||||
|
}
|
||||||
|
aboutToRename = false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
addUser(user);
|
addUser(user);
|
||||||
}
|
}
|
||||||
|
@ -146,16 +152,6 @@ public class MucOptions {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (type.equals("unavailable")) {
|
} 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]);
|
deleteUser(packet.getAttribute("from").split("/")[1]);
|
||||||
} else if (type.equals("error")) {
|
} else if (type.equals("error")) {
|
||||||
Element error = packet.findChild("error");
|
Element error = packet.findChild("error");
|
||||||
|
@ -191,10 +187,6 @@ public class MucOptions {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getJoinNick() {
|
|
||||||
return this.nick;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getActualNick() {
|
public String getActualNick() {
|
||||||
if (this.self.getName()!=null) {
|
if (this.self.getName()!=null) {
|
||||||
return this.self.getName();
|
return this.self.getName();
|
||||||
|
@ -204,7 +196,7 @@ public class MucOptions {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setJoinNick(String nick) {
|
public void setJoinNick(String nick) {
|
||||||
this.nick = nick;
|
this.joinnick = nick;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setConversation(Conversation conversation) {
|
public void setConversation(Conversation conversation) {
|
||||||
|
@ -282,6 +274,6 @@ public class MucOptions {
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getJoinJid() {
|
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;
|
break;
|
||||||
case R.id.action_edit_contact:
|
case R.id.action_edit_contact:
|
||||||
if (contact.getSystemAccount() == null) {
|
if (contact.getSystemAccount() == null) {
|
||||||
|
quickEdit(contact.getDisplayName(), new OnValueEdited() {
|
||||||
|
|
||||||
View view = (View) getLayoutInflater().inflate(
|
@Override
|
||||||
R.layout.edit_contact_name, null);
|
public void onValueEdited(String value) {
|
||||||
name = (EditText) view.findViewById(R.id.editText1);
|
contact.setServerName(value);
|
||||||
name.setText(contact.getDisplayName());
|
activity.xmppConnectionService.pushContactToServer(contact);
|
||||||
builder.setView(view).setTitle(contact.getJid())
|
populateView();
|
||||||
.setPositiveButton(getString(R.string.edit), editContactNameListener)
|
}
|
||||||
.create().show();
|
});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Intent intent = new Intent(Intent.ACTION_EDIT);
|
Intent intent = new Intent(Intent.ACTION_EDIT);
|
||||||
String[] systemAccount = contact.getSystemAccount().split("#");
|
String[] systemAccount = contact.getSystemAccount().split("#");
|
||||||
|
|
|
@ -654,34 +654,6 @@ public class ConversationFragment extends Fragment {
|
||||||
activity.invalidateOptionsMenu();
|
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) {
|
private void decryptMessage(Message message) {
|
||||||
|
|
|
@ -9,99 +9,99 @@ import eu.siacs.conversations.R;
|
||||||
import eu.siacs.conversations.crypto.PgpEngine;
|
import eu.siacs.conversations.crypto.PgpEngine;
|
||||||
import eu.siacs.conversations.entities.Conversation;
|
import eu.siacs.conversations.entities.Conversation;
|
||||||
import eu.siacs.conversations.entities.MucOptions;
|
import eu.siacs.conversations.entities.MucOptions;
|
||||||
|
import eu.siacs.conversations.entities.MucOptions.OnRenameListener;
|
||||||
import eu.siacs.conversations.entities.MucOptions.User;
|
import eu.siacs.conversations.entities.MucOptions.User;
|
||||||
|
import eu.siacs.conversations.services.XmppConnectionService.OnConversationUpdate;
|
||||||
import eu.siacs.conversations.utils.UIHelper;
|
import eu.siacs.conversations.utils.UIHelper;
|
||||||
import eu.siacs.conversations.xmpp.stanzas.MessagePacket;
|
import eu.siacs.conversations.xmpp.stanzas.MessagePacket;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.content.IntentSender.SendIntentException;
|
import android.content.IntentSender.SendIntentException;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.PreferenceManager;
|
|
||||||
import android.util.Log;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.EditText;
|
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
public class MucDetailsActivity extends XmppActivity {
|
public class MucDetailsActivity extends XmppActivity {
|
||||||
public static final String ACTION_VIEW_MUC = "view_muc";
|
public static final String ACTION_VIEW_MUC = "view_muc";
|
||||||
private Conversation conversation;
|
private Conversation conversation;
|
||||||
private EditText mYourNick;
|
private TextView mYourNick;
|
||||||
private EditText mSubject;
|
private ImageView mYourPhoto;
|
||||||
|
private ImageButton mEditNickButton;
|
||||||
private TextView mRoleAffiliaton;
|
private TextView mRoleAffiliaton;
|
||||||
private TextView mFullJid;
|
private TextView mFullJid;
|
||||||
private LinearLayout membersView;
|
private LinearLayout membersView;
|
||||||
private LinearLayout mMoreDetails;
|
private LinearLayout mMoreDetails;
|
||||||
private Button mInviteButton;
|
private Button mInviteButton;
|
||||||
private String uuid = null;
|
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() {
|
private OnClickListener inviteListener = new OnClickListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
/*Intent intent = new Intent(getApplicationContext(),
|
/*
|
||||||
ContactsActivity.class);
|
* Intent intent = new Intent(getApplicationContext(),
|
||||||
intent.setAction("invite");
|
* ContactsActivity.class); intent.setAction("invite");
|
||||||
intent.putExtra("uuid",conversation.getUuid());
|
* intent.putExtra("uuid",conversation.getUuid());
|
||||||
startActivity(intent);*/
|
* startActivity(intent);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private List<User> users = new ArrayList<MucOptions.User>();
|
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
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_muc_details);
|
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);
|
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);
|
membersView = (LinearLayout) findViewById(R.id.muc_members);
|
||||||
mMoreDetails = (LinearLayout) findViewById(R.id.muc_more_details);
|
mMoreDetails = (LinearLayout) findViewById(R.id.muc_more_details);
|
||||||
mMoreDetails.setVisibility(View.GONE);
|
mMoreDetails.setVisibility(View.GONE);
|
||||||
mSubject = (EditText) findViewById(R.id.muc_subject);
|
|
||||||
mInviteButton = (Button) findViewById(R.id.invite);
|
mInviteButton = (Button) findViewById(R.id.invite);
|
||||||
mInviteButton.setOnClickListener(inviteListener);
|
mInviteButton.setOnClickListener(inviteListener);
|
||||||
getActionBar().setHomeButtonEnabled(true);
|
getActionBar().setHomeButtonEnabled(true);
|
||||||
getActionBar().setDisplayHomeAsUpEnabled(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
|
@Override
|
||||||
|
@ -109,6 +109,22 @@ public class MucDetailsActivity extends XmppActivity {
|
||||||
switch (menuItem.getItemId()) {
|
switch (menuItem.getItemId()) {
|
||||||
case android.R.id.home:
|
case android.R.id.home:
|
||||||
finish();
|
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);
|
return super.onOptionsItemSelected(menuItem);
|
||||||
}
|
}
|
||||||
|
@ -134,8 +150,7 @@ public class MucDetailsActivity extends XmppActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void onBackendConnected() {
|
void onBackendConnected() {
|
||||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
|
registerListener();
|
||||||
boolean useSubject = preferences.getBoolean("use_subject_in_muc", true);
|
|
||||||
if (getIntent().getAction().equals(ACTION_VIEW_MUC)) {
|
if (getIntent().getAction().equals(ACTION_VIEW_MUC)) {
|
||||||
this.uuid = getIntent().getExtras().getString("uuid");
|
this.uuid = getIntent().getExtras().getString("uuid");
|
||||||
}
|
}
|
||||||
|
@ -146,8 +161,52 @@ public class MucDetailsActivity extends XmppActivity {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.conversation != null) {
|
if (this.conversation != null) {
|
||||||
mSubject.setText(conversation.getMucOptions().getSubject());
|
populateView();
|
||||||
setTitle(conversation.getName(useSubject));
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void populateView() {
|
||||||
|
mYourPhoto.setImageBitmap(UIHelper.getContactPicture(conversation
|
||||||
|
.getMucOptions().getActualNick(), 48, this, false));
|
||||||
|
setTitle(conversation.getName(true));
|
||||||
mFullJid.setText(conversation.getContactJid().split("/")[0]);
|
mFullJid.setText(conversation.getContactJid().split("/")[0]);
|
||||||
mYourNick.setText(conversation.getMucOptions().getActualNick());
|
mYourNick.setText(conversation.getMucOptions().getActualNick());
|
||||||
mRoleAffiliaton = (TextView) findViewById(R.id.muc_role);
|
mRoleAffiliaton = (TextView) findViewById(R.id.muc_role);
|
||||||
|
@ -156,16 +215,15 @@ public class MucDetailsActivity extends XmppActivity {
|
||||||
User self = conversation.getMucOptions().getSelf();
|
User self = conversation.getMucOptions().getSelf();
|
||||||
switch (self.getAffiliation()) {
|
switch (self.getAffiliation()) {
|
||||||
case User.AFFILIATION_ADMIN:
|
case User.AFFILIATION_ADMIN:
|
||||||
mRoleAffiliaton.setText(getReadableRole(self.getRole())
|
mRoleAffiliaton.setText(getReadableRole(self.getRole()) + " ("
|
||||||
+ " (" + getString(R.string.admin) + ")");
|
+ getString(R.string.admin) + ")");
|
||||||
break;
|
break;
|
||||||
case User.AFFILIATION_OWNER:
|
case User.AFFILIATION_OWNER:
|
||||||
mRoleAffiliaton.setText(getReadableRole(self.getRole())
|
mRoleAffiliaton.setText(getReadableRole(self.getRole()) + " ("
|
||||||
+ " (" + getString(R.string.owner) + ")");
|
+ getString(R.string.owner) + ")");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
mRoleAffiliaton
|
mRoleAffiliaton.setText(getReadableRole(self.getRole()));
|
||||||
.setText(getReadableRole(self.getRole()));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -175,7 +233,8 @@ public class MucDetailsActivity extends XmppActivity {
|
||||||
membersView.removeAllViews();
|
membersView.removeAllViews();
|
||||||
for (final User contact : conversation.getMucOptions().getUsers()) {
|
for (final User contact : conversation.getMucOptions().getUsers()) {
|
||||||
View view = (View) inflater.inflate(R.layout.contact, null);
|
View view = (View) inflater.inflate(R.layout.contact, null);
|
||||||
TextView displayName = (TextView) view.findViewById(R.id.contact_display_name);
|
TextView displayName = (TextView) view
|
||||||
|
.findViewById(R.id.contact_display_name);
|
||||||
TextView key = (TextView) view.findViewById(R.id.key);
|
TextView key = (TextView) view.findViewById(R.id.key);
|
||||||
displayName.setText(contact.getName());
|
displayName.setText(contact.getName());
|
||||||
TextView role = (TextView) view.findViewById(R.id.contact_jid);
|
TextView role = (TextView) view.findViewById(R.id.contact_jid);
|
||||||
|
@ -186,29 +245,33 @@ public class MucDetailsActivity extends XmppActivity {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
|
viewPgpKey(contact);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
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();
|
PgpEngine pgp = xmppConnectionService.getPgpEngine();
|
||||||
if (pgp != null) {
|
if (pgp != null) {
|
||||||
PendingIntent intent = pgp.getIntentForKey(conversation.getAccount(), contact.getPgpKeyId());
|
PendingIntent intent = pgp.getIntentForKey(
|
||||||
|
conversation.getAccount(), user.getPgpKeyId());
|
||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
try {
|
try {
|
||||||
startIntentSenderForResult(intent.getIntentSender(), 0, null, 0, 0, 0);
|
startIntentSenderForResult(intent.getIntentSender(), 0,
|
||||||
|
null, 0, 0, 0);
|
||||||
} catch (SendIntentException e) {
|
} catch (SendIntentException e) {
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
|
||||||
key.setText(OpenPgpUtils.convertKeyIdToHex(contact.getPgpKeyId()));
|
|
||||||
}
|
|
||||||
ImageView imageView = (ImageView) view
|
|
||||||
.findViewById(R.id.contact_photo);
|
|
||||||
imageView.setImageBitmap(UIHelper.getContactPicture(contact.getName(), 48,this.getApplicationContext(), false));
|
|
||||||
membersView.addView(view);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Log.d("xmppService","uuid in muc details was null");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,10 +23,10 @@ import android.content.ServiceConnection;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.util.Log;
|
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
import android.view.inputmethod.InputMethodManager;
|
||||||
|
import android.widget.EditText;
|
||||||
|
|
||||||
public abstract class XmppActivity extends Activity {
|
public abstract class XmppActivity extends Activity {
|
||||||
|
|
||||||
|
@ -38,6 +38,10 @@ public abstract class XmppActivity extends Activity {
|
||||||
public boolean xmppConnectionServiceBound = false;
|
public boolean xmppConnectionServiceBound = false;
|
||||||
protected boolean handledViewIntent = false;
|
protected boolean handledViewIntent = false;
|
||||||
|
|
||||||
|
protected interface OnValueEdited {
|
||||||
|
public void onValueEdited(String value);
|
||||||
|
}
|
||||||
|
|
||||||
protected ServiceConnection mConnection = new ServiceConnection() {
|
protected ServiceConnection mConnection = new ServiceConnection() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -193,10 +197,7 @@ public abstract class XmppActivity extends Activity {
|
||||||
try {
|
try {
|
||||||
startIntentSenderForResult(pi.getIntentSender(),
|
startIntentSenderForResult(pi.getIntentSender(),
|
||||||
REQUEST_ANNOUNCE_PGP, null, 0, 0, 0);
|
REQUEST_ANNOUNCE_PGP, null, 0, 0, 0);
|
||||||
} catch (SendIntentException e) {
|
} catch (SendIntentException e) {}
|
||||||
Log.d("xmppService",
|
|
||||||
"coulnd start intent for pgp anncouncment");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -256,6 +257,26 @@ public abstract class XmppActivity extends Activity {
|
||||||
builder.create().show();
|
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,
|
public void selectPresence(final Conversation conversation,
|
||||||
final OnPresenceSelected listener) {
|
final OnPresenceSelected listener) {
|
||||||
Contact contact = conversation.getContact();
|
Contact contact = conversation.getContact();
|
||||||
|
|
Loading…
Reference in New Issue