aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2014-03-05 15:41:14 +0100
committerDaniel Gultsch <daniel@gultsch.de>2014-03-05 15:41:14 +0100
commit78312d71dd1f281f494a2a1c04e4a80f34898d2c (patch)
tree595d3f78836691fc8eb204a3102b8781c4e3bd14
parent79ec8b2e8128a1dc1d7d0962ce99e91fdaff8b98 (diff)
reworked contact details
-rw-r--r--AndroidManifest.xml8
-rw-r--r--gen/eu/siacs/conversations/R.java209
-rw-r--r--res/drawable-hdpi/ic_action_discard.pngbin0 -> 454 bytes
-rw-r--r--res/drawable-mdpi/ic_action_discard.pngbin0 -> 333 bytes
-rw-r--r--res/drawable-xhdpi/ic_action_discard.pngbin0 -> 552 bytes
-rw-r--r--res/drawable-xxhdpi/ic_action_discard.pngbin0 -> 781 bytes
-rw-r--r--res/layout/activity_contact_details.xml (renamed from res/layout/dialog_contact_details.xml)73
-rw-r--r--res/layout/activity_muc_details.xml (renamed from res/layout/muc_options.xml)0
-rw-r--r--res/layout/edit_contact_name.xml28
-rw-r--r--res/menu/contact_details.xml27
-rw-r--r--res/menu/muc_details.xml15
-rw-r--r--res/values/strings.xml2
-rw-r--r--src/eu/siacs/conversations/entities/Contact.java4
-rw-r--r--src/eu/siacs/conversations/persistance/DatabaseBackend.java14
-rw-r--r--src/eu/siacs/conversations/services/XmppConnectionService.java17
-rw-r--r--src/eu/siacs/conversations/ui/ContactDetailsActivity.java226
-rw-r--r--src/eu/siacs/conversations/ui/ConversationActivity.java22
-rw-r--r--src/eu/siacs/conversations/ui/ConversationFragment.java4
-rw-r--r--src/eu/siacs/conversations/ui/DialogContactDetails.java218
-rw-r--r--src/eu/siacs/conversations/ui/MucDetailsActivity.java (renamed from src/eu/siacs/conversations/ui/MucOptionsActivity.java)31
-rw-r--r--src/eu/siacs/conversations/ui/NewConversationActivity.java15
-rw-r--r--src/eu/siacs/conversations/ui/XmppActivity.java14
22 files changed, 529 insertions, 398 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 8a1a4028c..0e59383c0 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -46,9 +46,13 @@
android:parentActivityName="eu.siacs.conversations.ui.ConversationActivity" >
</activity>
<activity
- android:name="eu.siacs.conversations.ui.MucOptionsActivity"
+ android:name="eu.siacs.conversations.ui.MucDetailsActivity"
android:label="Conference Details"
- android:parentActivityName="eu.siacs.conversations.ui.ConversationActivity"
+ android:windowSoftInputMode="stateHidden">
+ </activity>
+ <activity
+ android:name="eu.siacs.conversations.ui.ContactDetailsActivity"
+ android:label="Contact Details"
android:windowSoftInputMode="stateHidden">
</activity>
<activity
diff --git a/gen/eu/siacs/conversations/R.java b/gen/eu/siacs/conversations/R.java
index f432a8b11..a25ec346c 100644
--- a/gen/eu/siacs/conversations/R.java
+++ b/gen/eu/siacs/conversations/R.java
@@ -36,116 +36,123 @@ 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_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 int ic_action_discard=0x7f02000a;
+ public static final int ic_action_edit=0x7f02000b;
+ public static final int ic_action_group=0x7f02000c;
+ public static final int ic_action_person=0x7f02000d;
+ public static final int ic_action_refresh=0x7f02000e;
+ public static final int ic_action_secure=0x7f02000f;
+ public static final int ic_action_send=0x7f020010;
+ public static final int ic_action_send_now=0x7f020011;
+ public static final int ic_action_unsecure=0x7f020012;
+ public static final int ic_launcher=0x7f020013;
+ public static final int ic_profile=0x7f020014;
+ public static final int message_border=0x7f020015;
+ public static final int notification=0x7f020016;
+ public static final int red=0x7f020017;
+ public static final int redbackground=0x7f020018;
+ public static final int section_header=0x7f020019;
}
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_confirm_password_desc=0x7f0a0023;
+ public static final int account_delete=0x7f0a0044;
+ public static final int account_disable=0x7f0a0045;
+ public static final int account_enable=0x7f0a0046;
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_list=0x7f0a0033;
+ public static final int account_password=0x7f0a0020;
+ public static final int account_password_confirm2=0x7f0a0024;
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 contactList=0x7f0a0006;
- public static final int contact_display_name=0x7f0a0008;
- public static final int contact_jid=0x7f0a0009;
- public static final int contact_photo=0x7f0a0007;
- public static final int contacts_header=0x7f0a0005;
- public static final int conversation_image=0x7f0a000a;
- public static final int conversation_lastmsg=0x7f0a000c;
- public static final int conversation_lastupdate=0x7f0a000d;
- public static final int conversation_name=0x7f0a000b;
- public static final int details_account=0x7f0a0012;
- public static final int details_contact_badge=0x7f0a000e;
- public static final int details_contactjid=0x7f0a0010;
- public static final int details_contactstatus=0x7f0a0011;
- public static final int details_jidbox=0x7f0a000f;
- 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 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=0x7f0a0030;
- public static final int muc_error=0x7f0a0023;
- public static final int muc_error_msg=0x7f0a0024;
- public static final int muc_jabberid=0x7f0a0031;
- public static final int muc_members=0x7f0a0035;
- public static final int muc_more_details=0x7f0a0032;
- public static final int muc_participants_header=0x7f0a0034;
- public static final int muc_role=0x7f0a0033;
- public static final int muc_your_nick=0x7f0a002f;
- public static final int new_conversation_search=0x7f0a0004;
- public static final int new_fingerprint=0x7f0a0025;
- public static final int otr_fingerprint=0x7f0a0026;
- public static final int pgp_keyentry=0x7f0a0027;
- public static final int progressBar1=0x7f0a0003;
- public static final int selected_conversation=0x7f0a002a;
- public static final int slidingpanelayout=0x7f0a0028;
- public static final int textSendButton=0x7f0a0020;
- public static final int textView1=0x7f0a0018;
+ public static final int account_usetls=0x7f0a0021;
+ public static final int action_accounts=0x7f0a0039;
+ public static final int action_add=0x7f0a003b;
+ public static final int action_add_account=0x7f0a0043;
+ public static final int action_archive=0x7f0a003f;
+ public static final int action_contact_details=0x7f0a003d;
+ public static final int action_delete_contact=0x7f0a0038;
+ public static final int action_edit_contact=0x7f0a0037;
+ public static final int action_muc_details=0x7f0a003e;
+ public static final int action_refresh_contacts=0x7f0a0048;
+ public static final int action_security=0x7f0a003c;
+ public static final int action_settings=0x7f0a003a;
+ public static final int announce_pgp=0x7f0a0047;
+ public static final int contactList=0x7f0a0014;
+ public static final int contact_display_name=0x7f0a0016;
+ public static final int contact_jid=0x7f0a0017;
+ public static final int contact_photo=0x7f0a0015;
+ public static final int contacts_header=0x7f0a0013;
+ public static final int conversation_image=0x7f0a0018;
+ public static final int conversation_lastmsg=0x7f0a001a;
+ public static final int conversation_lastupdate=0x7f0a001b;
+ public static final int conversation_name=0x7f0a0019;
+ public static final int details_account=0x7f0a0007;
+ public static final int details_contact_badge=0x7f0a0003;
+ public static final int details_contactjid=0x7f0a0005;
+ public static final int details_contactstatus=0x7f0a0006;
+ public static final int details_jidbox=0x7f0a0004;
+ public static final int details_receive_presence=0x7f0a0009;
+ public static final int details_send_presence=0x7f0a0008;
+ public static final int editText1=0x7f0a0025;
+ public static final int edit_account_register_new=0x7f0a0022;
+ public static final int encryption_choice_none=0x7f0a0040;
+ public static final int encryption_choice_otr=0x7f0a0041;
+ public static final int encryption_choice_pgp=0x7f0a0042;
+ public static final int info_box=0x7f0a002a;
+ public static final int list=0x7f0a0031;
+ public static final int message_body=0x7f0a0035;
+ public static final int message_photo=0x7f0a0034;
+ public static final int message_time=0x7f0a0036;
+ public static final int messages_view=0x7f0a0029;
+ public static final int muc_edit_nick=0x7f0a000b;
+ public static final int muc_error=0x7f0a002b;
+ public static final int muc_error_msg=0x7f0a002c;
+ public static final int muc_jabberid=0x7f0a000c;
+ public static final int muc_members=0x7f0a0010;
+ public static final int muc_more_details=0x7f0a000d;
+ public static final int muc_participants_header=0x7f0a000f;
+ public static final int muc_role=0x7f0a000e;
+ public static final int muc_your_nick=0x7f0a000a;
+ public static final int new_conversation_search=0x7f0a0012;
+ public static final int new_fingerprint=0x7f0a002d;
+ public static final int otr_fingerprint=0x7f0a002e;
+ public static final int pgp_keyentry=0x7f0a002f;
+ public static final int progressBar1=0x7f0a0011;
+ public static final int selected_conversation=0x7f0a0032;
+ public static final int slidingpanelayout=0x7f0a0030;
+ public static final int textSendButton=0x7f0a0028;
+ public static final int textView1=0x7f0a001f;
public static final int textView2=0x7f0a0001;
- public static final int textinput=0x7f0a001f;
- public static final int textsend=0x7f0a001e;
- public static final int verify_otr_fingerprint=0x7f0a0016;
- public static final int verify_otr_jid=0x7f0a0015;
- public static final int verify_otr_yourprint=0x7f0a0017;
+ public static final int textinput=0x7f0a0027;
+ public static final int textsend=0x7f0a0026;
+ public static final int verify_otr_fingerprint=0x7f0a001d;
+ public static final int verify_otr_jid=0x7f0a001c;
+ public static final int verify_otr_yourprint=0x7f0a001e;
}
public static final class layout {
public static final int account_row=0x7f030000;
- public static final int activity_new_conversation=0x7f030001;
- public static final int contact=0x7f030002;
- public static final int conversation_list_row=0x7f030003;
- public static final int dialog_contact_details=0x7f030004;
- public static final int dialog_verify_otr=0x7f030005;
- public static final int edit_account_dialog=0x7f030006;
- public static final int fragment_conversation=0x7f030007;
- public static final int fragment_conversations_overview=0x7f030008;
- public static final int manage_accounts=0x7f030009;
- public static final int message_error=0x7f03000a;
- public static final int message_recieved=0x7f03000b;
- public static final int message_sent=0x7f03000c;
- public static final int muc_options=0x7f03000d;
+ public static final int activity_contact_details=0x7f030001;
+ public static final int activity_muc_details=0x7f030002;
+ public static final int activity_new_conversation=0x7f030003;
+ public static final int contact=0x7f030004;
+ public static final int conversation_list_row=0x7f030005;
+ public static final int dialog_verify_otr=0x7f030006;
+ public static final int edit_account_dialog=0x7f030007;
+ public static final int edit_contact_name=0x7f030008;
+ public static final int fragment_conversation=0x7f030009;
+ public static final int fragment_conversations_overview=0x7f03000a;
+ public static final int manage_accounts=0x7f03000b;
+ public static final int message_error=0x7f03000c;
+ public static final int message_recieved=0x7f03000d;
+ public static final int message_sent=0x7f03000e;
}
public static final class menu {
- public static final int conversations=0x7f090000;
- public static final int encryption_choices=0x7f090001;
- public static final int manageaccounts=0x7f090002;
- public static final int manageaccounts_context=0x7f090003;
- public static final int newconversation=0x7f090004;
+ public static final int contact_details=0x7f090000;
+ public static final int conversations=0x7f090001;
+ public static final int encryption_choices=0x7f090002;
+ public static final int manageaccounts=0x7f090003;
+ public static final int manageaccounts_context=0x7f090004;
+ public static final int muc_details=0x7f090005;
+ public static final int newconversation=0x7f090006;
}
public static final class string {
public static final int action_accounts=0x7f050005;
@@ -160,12 +167,14 @@ public final class R {
public static final int app_name=0x7f050002;
public static final int conference_details=0x7f050010;
public static final int encrypted_message=0x7f05000f;
+ public static final int enter_new_name=0x7f050015;
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 remove_contact_text=0x7f050016;
public static final int sending=0x7f05000d;
public static final int title_activity_new_conversation=0x7f05000b;
public static final int visitor=0x7f050014;
diff --git a/res/drawable-hdpi/ic_action_discard.png b/res/drawable-hdpi/ic_action_discard.png
new file mode 100644
index 000000000..9c717dd32
--- /dev/null
+++ b/res/drawable-hdpi/ic_action_discard.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_action_discard.png b/res/drawable-mdpi/ic_action_discard.png
new file mode 100644
index 000000000..9dfb7cc2c
--- /dev/null
+++ b/res/drawable-mdpi/ic_action_discard.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_action_discard.png b/res/drawable-xhdpi/ic_action_discard.png
new file mode 100644
index 000000000..db69d6c25
--- /dev/null
+++ b/res/drawable-xhdpi/ic_action_discard.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_action_discard.png b/res/drawable-xxhdpi/ic_action_discard.png
new file mode 100644
index 000000000..b522daffe
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_action_discard.png
Binary files differ
diff --git a/res/layout/dialog_contact_details.xml b/res/layout/activity_contact_details.xml
index 00da4396f..cd49f1bf3 100644
--- a/res/layout/dialog_contact_details.xml
+++ b/res/layout/activity_contact_details.xml
@@ -3,12 +3,18 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:padding="8dp" >
+ android:background="#e5e5e5">
+ <TextView
+ style="@style/sectionHeader"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:padding="8dp"
+ android:text="Contact Details" />
<RelativeLayout
android:layout_width="wrap_content"
- android:layout_height="72dp"
- android:padding="0dp">
+ android:layout_height="88dp"
+ android:padding="8dp">
<QuickContactBadge
android:id="@+id/details_contact_badge"
@@ -21,78 +27,69 @@
android:id="@+id/details_jidbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_centerVertical="true"
android:layout_toRightOf="@+id/details_contact_badge"
android:orientation="vertical"
- android:layout_alignParentTop="true"
- android:paddingLeft="8dp">
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Jabber ID"
- android:textColor="#33B5E5"
- android:textSize="20sp" />
+ android:paddingLeft="8dp" >
<TextView
android:id="@+id/details_contactjid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="something@jabber.example.com"
+ android:paddingLeft="8dp"
android:singleLine="true"
- android:textSize="14sp"
- android:paddingLeft="8dp"/>
+ android:text="something@jabber.example.com"
+ android:textColor="#5b5b5b"
+ android:textSize="18sp" />
-
- </LinearLayout>
- <TextView
+ <TextView
android:id="@+id/details_contactstatus"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
+ android:paddingLeft="16dp"
android:text="online"
android:textSize="24sp"
- android:textStyle="bold"
- android:gravity="center_vertical"
- android:layout_below="@+id/details_jidbox"
- android:layout_toRightOf="@id/details_contact_badge"
- android:paddingLeft="16dp"/>
+ android:textStyle="bold" />
+ </LinearLayout>
+
</RelativeLayout>
- <TextView
+
+ <TextView
+ style="@style/sectionHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:paddingTop="8dp"
- android:text="Your account"
- android:textColor="#33B5E5"
- android:textSize="20sp"/>
-
+ android:padding="8dp"
+ android:text="Your account" />
<TextView
android:id="@+id/details_account"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:text="julia@jabber.example.com"
- android:textSize="14sp" />
-
- <TextView
+ android:textSize="18sp"
+ android:textColor="#5b5b5b" />
+ <TextView
+ style="@style/sectionHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:paddingTop="8dp"
- android:text="Subscription"
- android:textColor="#33B5E5"
- android:textSize="20sp" />
+ android:padding="8dp"
+ android:text="Subscription" />
<CheckBox
android:id="@+id/details_send_presence"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send presence updates"
- android:textSize="14sp" />
+ android:textSize="18sp"
+ android:textColor="#5b5b5b" />
<CheckBox
android:id="@+id/details_receive_presence"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Receive presence updates"
- android:textSize="14sp" />
+ android:textSize="18sp"
+ android:textColor="#5b5b5b" />
</LinearLayout> \ No newline at end of file
diff --git a/res/layout/muc_options.xml b/res/layout/activity_muc_details.xml
index fd5583cfe..fd5583cfe 100644
--- a/res/layout/muc_options.xml
+++ b/res/layout/activity_muc_details.xml
diff --git a/res/layout/edit_contact_name.xml b/res/layout/edit_contact_name.xml
new file mode 100644
index 000000000..206c74323
--- /dev/null
+++ b/res/layout/edit_contact_name.xml
@@ -0,0 +1,28 @@
+<?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="#5b5b5b"
+ 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>
diff --git a/res/menu/contact_details.xml b/res/menu/contact_details.xml
new file mode 100644
index 000000000..5d4a8d56b
--- /dev/null
+++ b/res/menu/contact_details.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item
+ android:id="@+id/action_edit_contact"
+ android:orderInCategory="10"
+ android:showAsAction="always"
+ android:icon="@drawable/ic_action_edit"
+ android:title="Edit name" />
+ <item
+ android:id="@+id/action_delete_contact"
+ android:orderInCategory="10"
+ android:showAsAction="always"
+ android:icon="@drawable/ic_action_discard"
+ android:title="Delete from roster" />
+ <item
+ android:id="@+id/action_accounts"
+ android:orderInCategory="90"
+ android:showAsAction="never"
+ android:title="@string/action_accounts"
+ />
+
+ <item
+ android:id="@+id/action_settings"
+ android:orderInCategory="100"
+ android:showAsAction="never"
+ android:title="@string/action_settings"/>
+</menu>
diff --git a/res/menu/muc_details.xml b/res/menu/muc_details.xml
new file mode 100644
index 000000000..4f9b6da05
--- /dev/null
+++ b/res/menu/muc_details.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android" >
+ <item
+ android:id="@+id/action_accounts"
+ android:orderInCategory="90"
+ android:showAsAction="never"
+ android:title="@string/action_accounts"
+ />
+
+ <item
+ android:id="@+id/action_settings"
+ android:orderInCategory="100"
+ android:showAsAction="never"
+ android:title="@string/action_settings"/>
+</menu>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a9e1fb994..3b575db15 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -20,4 +20,6 @@
<string name="moderator">Moderator</string>
<string name="participant">Participant</string>
<string name="visitor">Visitor</string>
+ <string name="enter_new_name">Enter a new name:</string>
+ <string name="remove_contact_text">Do you want to delete %s from your roster. The conversation assoziated with this account will not be removed.</string>
</resources>
diff --git a/src/eu/siacs/conversations/entities/Contact.java b/src/eu/siacs/conversations/entities/Contact.java
index 0eed39ed2..4b97cc41e 100644
--- a/src/eu/siacs/conversations/entities/Contact.java
+++ b/src/eu/siacs/conversations/entities/Contact.java
@@ -293,4 +293,8 @@ public class Contact extends AbstractEntity implements Serializable {
public boolean isInRoster() {
return this.inRoster;
}
+
+ public String getAccountUuid() {
+ return this.accountUuid;
+ }
}
diff --git a/src/eu/siacs/conversations/persistance/DatabaseBackend.java b/src/eu/siacs/conversations/persistance/DatabaseBackend.java
index 1a6f934a7..e2067141c 100644
--- a/src/eu/siacs/conversations/persistance/DatabaseBackend.java
+++ b/src/eu/siacs/conversations/persistance/DatabaseBackend.java
@@ -228,7 +228,7 @@ public class DatabaseBackend extends SQLiteOpenHelper {
}
}
- public List<Contact> getContacts(Account account) {
+ public List<Contact> getContactsByAccount(Account account) {
List<Contact> list = new ArrayList<Contact>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor;
@@ -246,7 +246,7 @@ public class DatabaseBackend extends SQLiteOpenHelper {
return list;
}
- public List<Contact> getContats(String where) {
+ public List<Contact> getContacts(String where) {
List<Contact> list = new ArrayList<Contact>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(Contact.TABLENAME, null, where, null, null, null, null);
@@ -280,5 +280,15 @@ public class DatabaseBackend extends SQLiteOpenHelper {
db.delete(Contact.TABLENAME, Contact.UUID + "=?", args);
}
+ public Contact getContact(String uuid) {
+ SQLiteDatabase db = this.getWritableDatabase();
+ String[] args = { uuid };
+ Cursor cursor = db.query(Contact.TABLENAME, null, Contact.UUID + "=?", args, null, null, null);
+ if (cursor.getCount() == 0)
+ return null;
+ cursor.moveToFirst();
+ return Contact.fromCursor(cursor);
+ }
+
}
diff --git a/src/eu/siacs/conversations/services/XmppConnectionService.java b/src/eu/siacs/conversations/services/XmppConnectionService.java
index 48f0e4702..e973afa9d 100644
--- a/src/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/eu/siacs/conversations/services/XmppConnectionService.java
@@ -535,7 +535,7 @@ public class XmppConnectionService extends Service {
public void getRoster(Account account,
final OnRosterFetchedListener listener) {
- List<Contact> contacts = databaseBackend.getContacts(account);
+ List<Contact> contacts = databaseBackend.getContactsByAccount(account);
for (int i = 0; i < contacts.size(); ++i) {
contacts.get(i).setAccount(account);
}
@@ -575,7 +575,7 @@ public class XmppConnectionService extends Service {
mWhere.append(account.getUuid());
mWhere.append("\"");
List<Contact> contactsToDelete = databaseBackend
- .getContats(mWhere.toString());
+ .getContacts(mWhere.toString());
for (Contact contact : contactsToDelete) {
databaseBackend.deleteContact(contact);
replaceContactInConversation(contact.getJid(),
@@ -604,7 +604,7 @@ public class XmppConnectionService extends Service {
public void onPhoneContactsLoaded(
Hashtable<String, Bundle> phoneContacts) {
List<Contact> contacts = databaseBackend
- .getContacts(null);
+ .getContactsByAccount(null);
for (int i = 0; i < contacts.size(); ++i) {
Contact contact = contacts.get(i);
if (phoneContacts.containsKey(contact.getJid())) {
@@ -938,6 +938,7 @@ public class XmppConnectionService extends Service {
public void updateContact(Contact contact) {
databaseBackend.updateContact(contact);
+ replaceContactInConversation(contact.getJid(), contact);
}
public void updateMessage(Message message) {
@@ -1035,4 +1036,14 @@ public class XmppConnectionService extends Service {
public void updateConversation(Conversation conversation) {
this.databaseBackend.updateConversation(conversation);
}
+
+ public Contact findContact(String uuid) {
+ Contact contact = this.databaseBackend.getContact(uuid);
+ for(Account account : getAccounts()) {
+ if (contact.getAccountUuid().equals(account.getUuid())) {
+ contact.setAccount(account);
+ }
+ }
+ return contact;
+ }
} \ No newline at end of file
diff --git a/src/eu/siacs/conversations/ui/ContactDetailsActivity.java b/src/eu/siacs/conversations/ui/ContactDetailsActivity.java
new file mode 100644
index 000000000..23fb68a16
--- /dev/null
+++ b/src/eu/siacs/conversations/ui/ContactDetailsActivity.java
@@ -0,0 +1,226 @@
+package eu.siacs.conversations.ui;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.ContactsContract.CommonDataKinds;
+import android.provider.ContactsContract.Contacts;
+import android.provider.ContactsContract.Intents;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.CheckBox;
+import android.widget.EditText;
+import android.widget.QuickContactBadge;
+import android.widget.TextView;
+import eu.siacs.conversations.R;
+import eu.siacs.conversations.entities.Contact;
+import eu.siacs.conversations.entities.Presences;
+import eu.siacs.conversations.utils.UIHelper;
+
+public class ContactDetailsActivity extends XmppActivity {
+ public static final String ACTION_VIEW_CONTACT = "view_contact";
+
+ protected ContactDetailsActivity activity = this;
+
+ private String uuid;
+ private Contact contact;
+
+ private EditText name;
+ private TextView contactJid;
+ private TextView accountJid;
+ private TextView status;
+ private CheckBox send;
+ private CheckBox receive;
+ private QuickContactBadge badge;
+
+ private DialogInterface.OnClickListener removeFromRoster = new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ activity.xmppConnectionService.deleteContact(contact);
+ activity.finish();
+ }
+ };
+
+ private DialogInterface.OnClickListener editContactNameListener = new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ contact.setDisplayName(name.getText().toString());
+ activity.xmppConnectionService.updateContact(contact);
+ populateView();
+ }
+ };
+
+ private DialogInterface.OnClickListener addToPhonebook = new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
+ intent.setType(Contacts.CONTENT_ITEM_TYPE);
+ intent.putExtra(Intents.Insert.IM_HANDLE, contact.getJid());
+ intent.putExtra(Intents.Insert.IM_PROTOCOL,
+ CommonDataKinds.Im.PROTOCOL_JABBER);
+ intent.putExtra("finishActivityOnSaveCompleted", true);
+ activity.startActivityForResult(intent, 0);
+ }
+ };
+ private OnClickListener onBadgeClick = new OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(activity);
+ builder.setTitle("Add to phone book");
+ builder.setMessage("Do you want to add " + contact.getJid()
+ + " to your phones contact list?");
+ builder.setNegativeButton("Cancel", null);
+ builder.setPositiveButton("Add", addToPhonebook);
+ builder.create().show();
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (getIntent().getAction().equals(ACTION_VIEW_CONTACT)) {
+ this.uuid = getIntent().getExtras().getString("uuid");
+ }
+ setContentView(R.layout.activity_contact_details);
+
+ contactJid = (TextView) findViewById(R.id.details_contactjid);
+ accountJid = (TextView) findViewById(R.id.details_account);
+ status = (TextView) findViewById(R.id.details_contactstatus);
+ send = (CheckBox) findViewById(R.id.details_send_presence);
+ receive = (CheckBox) findViewById(R.id.details_receive_presence);
+ badge = (QuickContactBadge) findViewById(R.id.details_contact_badge);
+
+ getActionBar().setHomeButtonEnabled(true);
+ getActionBar().setDisplayHomeAsUpEnabled(true);
+
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem menuItem) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setNegativeButton("Cancel", null);
+ switch (menuItem.getItemId()) {
+ case android.R.id.home:
+ finish();
+ break;
+ case R.id.action_delete_contact:
+ builder.setTitle("Delete from roster")
+ .setMessage(getString(R.string.remove_contact_text, contact.getJid()))
+ .setPositiveButton("Delete", removeFromRoster).create()
+ .show();
+ 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("Edit", editContactNameListener)
+ .create().show();
+
+ } else {
+ Intent intent = new Intent(Intent.ACTION_EDIT);
+ String[] systemAccount = contact.getSystemAccount().split("#");
+ long id = Long.parseLong(systemAccount[0]);
+ Uri uri = Contacts.getLookupUri(id, systemAccount[1]);
+ intent.setDataAndType(uri,Contacts.CONTENT_ITEM_TYPE);
+ intent.putExtra("finishActivityOnSaveCompleted", true);
+ startActivity(intent);
+ }
+ break;
+ }
+ return super.onOptionsItemSelected(menuItem);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.contact_details, menu);
+ return true;
+ }
+
+ private void populateView() {
+ setTitle(contact.getDisplayName());
+ if (contact.getSubscriptionOption(Contact.Subscription.FROM)) {
+ send.setChecked(true);
+ } else {
+ send.setText("Preemptively grant subscription request");
+ if (contact
+ .getSubscriptionOption(Contact.Subscription.PREEMPTIVE_GRANT)) {
+ send.setChecked(true);
+ } else {
+ send.setChecked(false);
+ }
+ }
+ if (contact.getSubscriptionOption(Contact.Subscription.TO)) {
+ receive.setChecked(true);
+ } else {
+ receive.setText("Request presence updates");
+ if (contact
+ .getSubscriptionOption(Contact.Subscription.ASKING)) {
+ receive.setChecked(true);
+ } else {
+ receive.setChecked(false);
+ }
+ }
+
+ switch (contact.getMostAvailableStatus()) {
+ case Presences.CHAT:
+ status.setText("free to chat");
+ status.setTextColor(0xFF83b600);
+ break;
+ case Presences.ONLINE:
+ status.setText("online");
+ status.setTextColor(0xFF83b600);
+ break;
+ case Presences.AWAY:
+ status.setText("away");
+ status.setTextColor(0xFFffa713);
+ break;
+ case Presences.XA:
+ status.setText("extended away");
+ status.setTextColor(0xFFffa713);
+ break;
+ case Presences.DND:
+ status.setText("do not disturb");
+ status.setTextColor(0xFFe92727);
+ break;
+ case Presences.OFFLINE:
+ status.setText("offline");
+ status.setTextColor(0xFFe92727);
+ break;
+ default:
+ status.setText("offline");
+ status.setTextColor(0xFFe92727);
+ break;
+ }
+ contactJid.setText(contact.getJid());
+ accountJid.setText(contact.getAccount().getJid());
+
+ UIHelper.prepareContactBadge(this, badge, contact);
+
+ if (contact.getSystemAccount() == null) {
+ badge.setOnClickListener(onBadgeClick);
+ }
+ }
+
+ @Override
+ public void onBackendConnected() {
+ if (uuid != null) {
+ this.contact = xmppConnectionService.findContact(uuid);
+ if (this.contact != null) {
+ populateView();
+ }
+ }
+ }
+
+}
diff --git a/src/eu/siacs/conversations/ui/ConversationActivity.java b/src/eu/siacs/conversations/ui/ConversationActivity.java
index 4815957e3..d4d0e5655 100644
--- a/src/eu/siacs/conversations/ui/ConversationActivity.java
+++ b/src/eu/siacs/conversations/ui/ConversationActivity.java
@@ -162,9 +162,9 @@ public class ConversationActivity extends XmppActivity {
}
((TextView) view.findViewById(R.id.conversation_lastupdate))
- .setText(UIHelper.readableTimeDifference(getItem(position).getLatestMessage().getTimeSent()));
+ .setText(UIHelper.readableTimeDifference(conv.getLatestMessage().getTimeSent()));
- Uri profilePhoto = getItem(position).getProfilePhotoUri();
+ Uri profilePhoto = conv.getProfilePhotoUri();
ImageView imageView = (ImageView) view.findViewById(R.id.conversation_image);
if (profilePhoto!=null) {
imageView.setImageURI(profilePhoto);
@@ -272,12 +272,6 @@ public class ConversationActivity extends XmppActivity {
case android.R.id.home:
spl.openPane();
break;
- case R.id.action_settings:
- startActivity(new Intent(this, SettingsActivity.class));
- break;
- case R.id.action_accounts:
- startActivity(new Intent(this, ManageAccountActivity.class));
- break;
case R.id.action_add:
startActivity(new Intent(this, NewConversationActivity.class));
break;
@@ -290,12 +284,12 @@ public class ConversationActivity extends XmppActivity {
selectedConversation = conversationList.get(0);
break;
case R.id.action_contact_details:
- DialogContactDetails details = new DialogContactDetails();
Contact contact = this.getSelectedConversation().getContact();
if (contact != null) {
- contact.setAccount(this.selectedConversation.getAccount());
- details.setContact(contact);
- details.show(getFragmentManager(), "details");
+ Intent intent = new Intent(this,ContactDetailsActivity.class);
+ intent.setAction(ContactDetailsActivity.ACTION_VIEW_CONTACT);
+ intent.putExtra("uuid", contact.getUuid());
+ startActivity(intent);
} else {
String jid = getSelectedConversation().getContactJid();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
@@ -307,8 +301,8 @@ public class ConversationActivity extends XmppActivity {
}
break;
case R.id.action_muc_details:
- Intent intent = new Intent(this,MucOptionsActivity.class);
- intent.setAction(MucOptionsActivity.ACTION_VIEW_MUC);
+ Intent intent = new Intent(this,MucDetailsActivity.class);
+ intent.setAction(MucDetailsActivity.ACTION_VIEW_MUC);
intent.putExtra("uuid", getSelectedConversation().getUuid());
startActivity(intent);
break;
diff --git a/src/eu/siacs/conversations/ui/ConversationFragment.java b/src/eu/siacs/conversations/ui/ConversationFragment.java
index b64fe5b2b..6c88fcb39 100644
--- a/src/eu/siacs/conversations/ui/ConversationFragment.java
+++ b/src/eu/siacs/conversations/ui/ConversationFragment.java
@@ -109,8 +109,8 @@ public class ConversationFragment extends Fragment {
@Override
public void onClick(View v) {
- Intent intent = new Intent(getActivity(),MucOptionsActivity.class);
- intent.setAction(MucOptionsActivity.ACTION_VIEW_MUC);
+ Intent intent = new Intent(getActivity(),MucDetailsActivity.class);
+ intent.setAction(MucDetailsActivity.ACTION_VIEW_MUC);
intent.putExtra("uuid", conversation.getUuid());
startActivity(intent);
}
diff --git a/src/eu/siacs/conversations/ui/DialogContactDetails.java b/src/eu/siacs/conversations/ui/DialogContactDetails.java
deleted file mode 100644
index 1210bc3cb..000000000
--- a/src/eu/siacs/conversations/ui/DialogContactDetails.java
+++ /dev/null
@@ -1,218 +0,0 @@
-package eu.siacs.conversations.ui;
-
-import eu.siacs.conversations.R;
-import eu.siacs.conversations.entities.Contact;
-import eu.siacs.conversations.entities.Presences;
-import eu.siacs.conversations.utils.UIHelper;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.app.DialogFragment;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.os.Bundle;
-import android.provider.ContactsContract.CommonDataKinds;
-import android.provider.ContactsContract.Contacts;
-import android.provider.ContactsContract.Intents;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.widget.CheckBox;
-import android.widget.QuickContactBadge;
-import android.widget.TextView;
-
-public class DialogContactDetails extends DialogFragment {
-
- private Contact contact = null;
- boolean displayingInRoster = false;
-
- private DialogContactDetails mDetailsDialog = this;
- private XmppActivity activity;
-
- private CheckBox send;
- private CheckBox receive;
-
- private DialogInterface.OnClickListener askRemoveFromRoster = new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
- builder.setTitle("Delete from roster");
- builder.setMessage("Do you want to delete "+contact.getJid()+" from your roster. The conversation assoziated with this account will not be removed.");
- builder.setNegativeButton("Cancel", null);
- builder.setPositiveButton("Delete",removeFromRoster);
- builder.create().show();
- }
- };
-
- private DialogInterface.OnClickListener removeFromRoster = new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- activity.xmppConnectionService.deleteContact(contact);
- mDetailsDialog.dismiss();
- }
- };
-
- private DialogInterface.OnClickListener addToPhonebook = new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
- intent.setType(Contacts.CONTENT_ITEM_TYPE);
- intent.putExtra(Intents.Insert.IM_HANDLE,contact.getJid());
- intent.putExtra(Intents.Insert.IM_PROTOCOL,CommonDataKinds.Im.PROTOCOL_JABBER);
- intent.putExtra("finishActivityOnSaveCompleted", true);
- getActivity().startActivityForResult(intent,0);
- mDetailsDialog.dismiss();
- }
- };
-
- private DialogInterface.OnClickListener updateSubscriptions = new DialogInterface.OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- boolean needsUpdating = false;
- if (contact.getSubscriptionOption(Contact.Subscription.FROM)) {
- if (!send.isChecked()) {
- contact.resetSubscriptionOption(Contact.Subscription.FROM);
- contact.resetSubscriptionOption(Contact.Subscription.PREEMPTIVE_GRANT);
- activity.xmppConnectionService.stopPresenceUpdatesTo(contact);
- needsUpdating=true;
- }
- } else {
- if (contact.getSubscriptionOption(Contact.Subscription.PREEMPTIVE_GRANT)) {
- if (!send.isChecked()) {
- contact.resetSubscriptionOption(Contact.Subscription.PREEMPTIVE_GRANT);
- needsUpdating=true;
- }
- } else {
- if (send.isChecked()) {
- contact.setSubscriptionOption(Contact.Subscription.PREEMPTIVE_GRANT);
- needsUpdating=true;
- }
- }
- }
- if (contact.getSubscriptionOption(Contact.Subscription.TO)) {
- if (!receive.isChecked()) {
- contact.resetSubscriptionOption(Contact.Subscription.TO);
- activity.xmppConnectionService.stopPresenceUpdatesFrom(contact);
- needsUpdating=true;
- }
- } else {
- if (contact.getSubscriptionOption(Contact.Subscription.ASKING)) {
- if (!receive.isChecked()) {
- contact.resetSubscriptionOption(Contact.Subscription.ASKING);
- activity.xmppConnectionService.stopPresenceUpdatesFrom(contact);
- needsUpdating=true;
- }
- } else {
- if (receive.isChecked()) {
- contact.setSubscriptionOption(Contact.Subscription.ASKING);
- activity.xmppConnectionService.requestPresenceUpdatesFrom(contact);
- needsUpdating=true;
- }
- }
- }
- if (needsUpdating) {
- activity.xmppConnectionService.updateContact(contact);
- }
- }
- };
-
- public void setContact(Contact contact) {
- this.contact = contact;
- }
-
- @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.dialog_contact_details, null);
- TextView contactJid = (TextView) view.findViewById(R.id.details_contactjid);
- TextView accountJid = (TextView) view.findViewById(R.id.details_account);
- TextView status = (TextView) view.findViewById(R.id.details_contactstatus);
- send = (CheckBox) view.findViewById(R.id.details_send_presence);
- receive = (CheckBox) view.findViewById(R.id.details_receive_presence);
- //ImageView contactPhoto = (ImageView) view.findViewById(R.id.details_contact_picture);
- QuickContactBadge badge = (QuickContactBadge) view.findViewById(R.id.details_contact_badge);
-
- if (contact.getSubscriptionOption(Contact.Subscription.FROM)) {
- send.setChecked(true);
- } else {
- send.setText("Preemptively grant subscription request");
- if (contact.getSubscriptionOption(Contact.Subscription.PREEMPTIVE_GRANT)) {
- send.setChecked(true);
- } else {
- send.setChecked(false);
- }
- }
- if (contact.getSubscriptionOption(Contact.Subscription.TO)) {
- receive.setChecked(true);
- } else {
- receive.setText("Request presence updates");
- if (contact.getSubscriptionOption(Contact.Subscription.ASKING)) {
- receive.setChecked(true);
- } else {
- receive.setChecked(false);
- }
- }
-
- switch (contact.getMostAvailableStatus()) {
- case Presences.CHAT:
- status.setText("free to chat");
- status.setTextColor(0xFF83b600);
- break;
- case Presences.ONLINE:
- status.setText("online");
- status.setTextColor(0xFF83b600);
- break;
- case Presences.AWAY:
- status.setText("away");
- status.setTextColor(0xFFffa713);
- break;
- case Presences.XA:
- status.setText("extended away");
- status.setTextColor(0xFFffa713);
- break;
- case Presences.DND:
- status.setText("do not disturb");
- status.setTextColor(0xFFe92727);
- break;
- case Presences.OFFLINE:
- status.setText("offline");
- status.setTextColor(0xFFe92727);
- break;
- default:
- status.setText("offline");
- status.setTextColor(0xFFe92727);
- break;
- }
- contactJid.setText(contact.getJid());
- accountJid.setText(contact.getAccount().getJid());
-
- UIHelper.prepareContactBadge(getActivity(), badge, contact);
-
- if (contact.getSystemAccount()==null) {
- badge.setOnClickListener(new OnClickListener() {
-
- @Override
- public void onClick(View v) {
- AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
- builder.setTitle("Add to phone book");
- builder.setMessage("Do you want to add "+contact.getJid()+" to your phones contact list?");
- builder.setNegativeButton("Cancel", null);
- builder.setPositiveButton("Add",addToPhonebook);
- builder.create().show();
- }
- });
- }
-
- builder.setView(view);
- builder.setTitle(contact.getDisplayName());
-
- builder.setNeutralButton("Done", this.updateSubscriptions);
- builder.setPositiveButton("Remove from roster", this.askRemoveFromRoster);
- return builder.create();
- }
-}
diff --git a/src/eu/siacs/conversations/ui/MucOptionsActivity.java b/src/eu/siacs/conversations/ui/MucDetailsActivity.java
index 4381eac4c..f28fb480b 100644
--- a/src/eu/siacs/conversations/ui/MucOptionsActivity.java
+++ b/src/eu/siacs/conversations/ui/MucDetailsActivity.java
@@ -12,6 +12,8 @@ import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
@@ -22,15 +24,13 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
-public class MucOptionsActivity extends XmppActivity {
+public class MucDetailsActivity 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;
@@ -56,9 +56,8 @@ public class MucOptionsActivity extends XmppActivity {
if (getIntent().getAction().equals(ACTION_VIEW_MUC)) {
this.uuid = getIntent().getExtras().getString("uuid");
}
- setContentView(R.layout.muc_options);
+ setContentView(R.layout.activity_muc_details);
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);
@@ -86,10 +85,18 @@ public class MucOptionsActivity extends XmppActivity {
return view;
}
};
+ getActionBar().setHomeButtonEnabled(true);
+ getActionBar().setDisplayHomeAsUpEnabled(true);
+
}
-
- public void setConversation(Conversation conversation) {
- this.conversation = conversation;
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem menuItem) {
+ switch (menuItem.getItemId()) {
+ case android.R.id.home:
+ finish();
+ }
+ return super.onOptionsItemSelected(menuItem);
}
public String getReadableRole(int role) {
@@ -104,6 +111,12 @@ public class MucOptionsActivity extends XmppActivity {
return "";
}
}
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ getMenuInflater().inflate(R.menu.muc_details, menu);
+ return true;
+ }
@Override
void onBackendConnected() {
@@ -114,6 +127,7 @@ public class MucOptionsActivity extends XmppActivity {
}
}
if (this.conversation != null) {
+ setTitle(conversation.getName());
mFullJid.setText(conversation.getContactJid().split("/")[0]);
mYourNick.setText(conversation.getMucOptions().getNick());
mRoleAffiliaton = (TextView) findViewById(R.id.muc_role);
@@ -139,6 +153,7 @@ public class MucOptionsActivity extends XmppActivity {
this.users.addAll(conversation.getMucOptions().getUsers());
contactsAdapter.notifyDataSetChanged();
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ membersView.removeAllViews();
for(User contact : conversation.getMucOptions().getUsers()) {
View view = (View) inflater.inflate(R.layout.contact, null);
diff --git a/src/eu/siacs/conversations/ui/NewConversationActivity.java b/src/eu/siacs/conversations/ui/NewConversationActivity.java
index 628a30479..4b323c267 100644
--- a/src/eu/siacs/conversations/ui/NewConversationActivity.java
+++ b/src/eu/siacs/conversations/ui/NewConversationActivity.java
@@ -39,7 +39,6 @@ import android.content.Intent;
public class NewConversationActivity extends XmppActivity {
- protected List<Contact> phoneContacts = new ArrayList<Contact>();
protected List<Contact> rosterContacts = new ArrayList<Contact>();
protected List<Contact> aggregatedContacts = new ArrayList<Contact>();
protected ListView contactsView;
@@ -188,10 +187,10 @@ public class NewConversationActivity extends XmppActivity {
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
int pos, long arg3) {
- Contact clickedContact = aggregatedContacts.get(pos);
- DialogContactDetails dialog = new DialogContactDetails();
- dialog.setContact(clickedContact);
- dialog.show(getFragmentManager(), "details");
+ Intent intent = new Intent(activity,ContactDetailsActivity.class);
+ intent.setAction(ContactDetailsActivity.ACTION_VIEW_CONTACT);
+ intent.putExtra("uuid", aggregatedContacts.get(pos).getUuid());
+ startActivity(intent);
return true;
}
});
@@ -278,12 +277,6 @@ public class NewConversationActivity extends XmppActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
- case R.id.action_settings:
- startActivity(new Intent(this, SettingsActivity.class));
- break;
- case R.id.action_accounts:
- startActivity(new Intent(this, ManageAccountActivity.class));
- break;
case R.id.action_refresh_contacts:
refreshContacts();
break;
diff --git a/src/eu/siacs/conversations/ui/XmppActivity.java b/src/eu/siacs/conversations/ui/XmppActivity.java
index 6b1d12891..a2951c65a 100644
--- a/src/eu/siacs/conversations/ui/XmppActivity.java
+++ b/src/eu/siacs/conversations/ui/XmppActivity.java
@@ -1,5 +1,6 @@
package eu.siacs.conversations.ui;
+import eu.siacs.conversations.R;
import eu.siacs.conversations.services.XmppConnectionService;
import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinder;
import android.app.Activity;
@@ -10,6 +11,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.IBinder;
+import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
@@ -79,4 +81,16 @@ public abstract class XmppActivity extends Activity {
}
abstract void onBackendConnected();
+
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.action_settings:
+ startActivity(new Intent(this, SettingsActivity.class));
+ break;
+ case R.id.action_accounts:
+ startActivity(new Intent(this, ManageAccountActivity.class));
+ break;
+ }
+ return super.onOptionsItemSelected(item);
+ }
}