reworked contact details
This commit is contained in:
		
							parent
							
								
									79ec8b2e81
								
							
						
					
					
						commit
						78312d71dd
					
				| 
						 | 
					@ -46,9 +46,13 @@
 | 
				
			||||||
            android:parentActivityName="eu.siacs.conversations.ui.ConversationActivity" >
 | 
					            android:parentActivityName="eu.siacs.conversations.ui.ConversationActivity" >
 | 
				
			||||||
        </activity>
 | 
					        </activity>
 | 
				
			||||||
         <activity
 | 
					         <activity
 | 
				
			||||||
            android:name="eu.siacs.conversations.ui.MucOptionsActivity"
 | 
					            android:name="eu.siacs.conversations.ui.MucDetailsActivity"
 | 
				
			||||||
            android:label="Conference Details"
 | 
					            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">
 | 
					            android:windowSoftInputMode="stateHidden">
 | 
				
			||||||
        </activity>
 | 
					        </activity>
 | 
				
			||||||
        <activity
 | 
					        <activity
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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=0x7f020007;
 | 
				
			||||||
        public static final int ic_action_cancel_launchersize_light=0x7f020008;
 | 
					        public static final int ic_action_cancel_launchersize_light=0x7f020008;
 | 
				
			||||||
        public static final int ic_action_delete=0x7f020009;
 | 
					        public static final int ic_action_delete=0x7f020009;
 | 
				
			||||||
        public static final int ic_action_edit=0x7f02000a;
 | 
					        public static final int ic_action_discard=0x7f02000a;
 | 
				
			||||||
        public static final int ic_action_group=0x7f02000b;
 | 
					        public static final int ic_action_edit=0x7f02000b;
 | 
				
			||||||
        public static final int ic_action_person=0x7f02000c;
 | 
					        public static final int ic_action_group=0x7f02000c;
 | 
				
			||||||
        public static final int ic_action_refresh=0x7f02000d;
 | 
					        public static final int ic_action_person=0x7f02000d;
 | 
				
			||||||
        public static final int ic_action_secure=0x7f02000e;
 | 
					        public static final int ic_action_refresh=0x7f02000e;
 | 
				
			||||||
        public static final int ic_action_send=0x7f02000f;
 | 
					        public static final int ic_action_secure=0x7f02000f;
 | 
				
			||||||
        public static final int ic_action_send_now=0x7f020010;
 | 
					        public static final int ic_action_send=0x7f020010;
 | 
				
			||||||
        public static final int ic_action_unsecure=0x7f020011;
 | 
					        public static final int ic_action_send_now=0x7f020011;
 | 
				
			||||||
        public static final int ic_launcher=0x7f020012;
 | 
					        public static final int ic_action_unsecure=0x7f020012;
 | 
				
			||||||
        public static final int ic_profile=0x7f020013;
 | 
					        public static final int ic_launcher=0x7f020013;
 | 
				
			||||||
        public static final int message_border=0x7f020014;
 | 
					        public static final int ic_profile=0x7f020014;
 | 
				
			||||||
        public static final int notification=0x7f020015;
 | 
					        public static final int message_border=0x7f020015;
 | 
				
			||||||
        public static final int red=0x7f020016;
 | 
					        public static final int notification=0x7f020016;
 | 
				
			||||||
        public static final int redbackground=0x7f020017;
 | 
					        public static final int red=0x7f020017;
 | 
				
			||||||
        public static final int section_header=0x7f020018;
 | 
					        public static final int redbackground=0x7f020018;
 | 
				
			||||||
 | 
					        public static final int section_header=0x7f020019;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    public static final class id {
 | 
					    public static final class id {
 | 
				
			||||||
        public static final int account_confirm_password_desc=0x7f0a001c;
 | 
					        public static final int account_confirm_password_desc=0x7f0a0023;
 | 
				
			||||||
        public static final int account_delete=0x7f0a0041;
 | 
					        public static final int account_delete=0x7f0a0044;
 | 
				
			||||||
        public static final int account_disable=0x7f0a0042;
 | 
					        public static final int account_disable=0x7f0a0045;
 | 
				
			||||||
        public static final int account_enable=0x7f0a0043;
 | 
					        public static final int account_enable=0x7f0a0046;
 | 
				
			||||||
        public static final int account_jid=0x7f0a0000;
 | 
					        public static final int account_jid=0x7f0a0000;
 | 
				
			||||||
        public static final int account_list=0x7f0a002b;
 | 
					        public static final int account_list=0x7f0a0033;
 | 
				
			||||||
        public static final int account_password=0x7f0a0019;
 | 
					        public static final int account_password=0x7f0a0020;
 | 
				
			||||||
        public static final int account_password_confirm2=0x7f0a001d;
 | 
					        public static final int account_password_confirm2=0x7f0a0024;
 | 
				
			||||||
        public static final int account_status=0x7f0a0002;
 | 
					        public static final int account_status=0x7f0a0002;
 | 
				
			||||||
        public static final int account_usetls=0x7f0a001a;
 | 
					        public static final int account_usetls=0x7f0a0021;
 | 
				
			||||||
        public static final int action_accounts=0x7f0a003b;
 | 
					        public static final int action_accounts=0x7f0a0039;
 | 
				
			||||||
        public static final int action_add=0x7f0a0036;
 | 
					        public static final int action_add=0x7f0a003b;
 | 
				
			||||||
        public static final int action_add_account=0x7f0a0040;
 | 
					        public static final int action_add_account=0x7f0a0043;
 | 
				
			||||||
        public static final int action_archive=0x7f0a003a;
 | 
					        public static final int action_archive=0x7f0a003f;
 | 
				
			||||||
        public static final int action_contact_details=0x7f0a0038;
 | 
					        public static final int action_contact_details=0x7f0a003d;
 | 
				
			||||||
        public static final int action_muc_details=0x7f0a0039;
 | 
					        public static final int action_delete_contact=0x7f0a0038;
 | 
				
			||||||
        public static final int action_refresh_contacts=0x7f0a0045;
 | 
					        public static final int action_edit_contact=0x7f0a0037;
 | 
				
			||||||
        public static final int action_security=0x7f0a0037;
 | 
					        public static final int action_muc_details=0x7f0a003e;
 | 
				
			||||||
        public static final int action_settings=0x7f0a003c;
 | 
					        public static final int action_refresh_contacts=0x7f0a0048;
 | 
				
			||||||
        public static final int announce_pgp=0x7f0a0044;
 | 
					        public static final int action_security=0x7f0a003c;
 | 
				
			||||||
        public static final int contactList=0x7f0a0006;
 | 
					        public static final int action_settings=0x7f0a003a;
 | 
				
			||||||
        public static final int contact_display_name=0x7f0a0008;
 | 
					        public static final int announce_pgp=0x7f0a0047;
 | 
				
			||||||
        public static final int contact_jid=0x7f0a0009;
 | 
					        public static final int contactList=0x7f0a0014;
 | 
				
			||||||
        public static final int contact_photo=0x7f0a0007;
 | 
					        public static final int contact_display_name=0x7f0a0016;
 | 
				
			||||||
        public static final int contacts_header=0x7f0a0005;
 | 
					        public static final int contact_jid=0x7f0a0017;
 | 
				
			||||||
        public static final int conversation_image=0x7f0a000a;
 | 
					        public static final int contact_photo=0x7f0a0015;
 | 
				
			||||||
        public static final int conversation_lastmsg=0x7f0a000c;
 | 
					        public static final int contacts_header=0x7f0a0013;
 | 
				
			||||||
        public static final int conversation_lastupdate=0x7f0a000d;
 | 
					        public static final int conversation_image=0x7f0a0018;
 | 
				
			||||||
        public static final int conversation_name=0x7f0a000b;
 | 
					        public static final int conversation_lastmsg=0x7f0a001a;
 | 
				
			||||||
        public static final int details_account=0x7f0a0012;
 | 
					        public static final int conversation_lastupdate=0x7f0a001b;
 | 
				
			||||||
        public static final int details_contact_badge=0x7f0a000e;
 | 
					        public static final int conversation_name=0x7f0a0019;
 | 
				
			||||||
        public static final int details_contactjid=0x7f0a0010;
 | 
					        public static final int details_account=0x7f0a0007;
 | 
				
			||||||
        public static final int details_contactstatus=0x7f0a0011;
 | 
					        public static final int details_contact_badge=0x7f0a0003;
 | 
				
			||||||
        public static final int details_jidbox=0x7f0a000f;
 | 
					        public static final int details_contactjid=0x7f0a0005;
 | 
				
			||||||
        public static final int details_receive_presence=0x7f0a0014;
 | 
					        public static final int details_contactstatus=0x7f0a0006;
 | 
				
			||||||
        public static final int details_send_presence=0x7f0a0013;
 | 
					        public static final int details_jidbox=0x7f0a0004;
 | 
				
			||||||
        public static final int edit_account_register_new=0x7f0a001b;
 | 
					        public static final int details_receive_presence=0x7f0a0009;
 | 
				
			||||||
        public static final int encryption_choice_none=0x7f0a003d;
 | 
					        public static final int details_send_presence=0x7f0a0008;
 | 
				
			||||||
        public static final int encryption_choice_otr=0x7f0a003e;
 | 
					        public static final int editText1=0x7f0a0025;
 | 
				
			||||||
        public static final int encryption_choice_pgp=0x7f0a003f;
 | 
					        public static final int edit_account_register_new=0x7f0a0022;
 | 
				
			||||||
        public static final int info_box=0x7f0a0022;
 | 
					        public static final int encryption_choice_none=0x7f0a0040;
 | 
				
			||||||
        public static final int list=0x7f0a0029;
 | 
					        public static final int encryption_choice_otr=0x7f0a0041;
 | 
				
			||||||
        public static final int message_body=0x7f0a002d;
 | 
					        public static final int encryption_choice_pgp=0x7f0a0042;
 | 
				
			||||||
        public static final int message_photo=0x7f0a002c;
 | 
					        public static final int info_box=0x7f0a002a;
 | 
				
			||||||
        public static final int message_time=0x7f0a002e;
 | 
					        public static final int list=0x7f0a0031;
 | 
				
			||||||
        public static final int messages_view=0x7f0a0021;
 | 
					        public static final int message_body=0x7f0a0035;
 | 
				
			||||||
        public static final int muc_edit_nick=0x7f0a0030;
 | 
					        public static final int message_photo=0x7f0a0034;
 | 
				
			||||||
        public static final int muc_error=0x7f0a0023;
 | 
					        public static final int message_time=0x7f0a0036;
 | 
				
			||||||
        public static final int muc_error_msg=0x7f0a0024;
 | 
					        public static final int messages_view=0x7f0a0029;
 | 
				
			||||||
        public static final int muc_jabberid=0x7f0a0031;
 | 
					        public static final int muc_edit_nick=0x7f0a000b;
 | 
				
			||||||
        public static final int muc_members=0x7f0a0035;
 | 
					        public static final int muc_error=0x7f0a002b;
 | 
				
			||||||
        public static final int muc_more_details=0x7f0a0032;
 | 
					        public static final int muc_error_msg=0x7f0a002c;
 | 
				
			||||||
        public static final int muc_participants_header=0x7f0a0034;
 | 
					        public static final int muc_jabberid=0x7f0a000c;
 | 
				
			||||||
        public static final int muc_role=0x7f0a0033;
 | 
					        public static final int muc_members=0x7f0a0010;
 | 
				
			||||||
        public static final int muc_your_nick=0x7f0a002f;
 | 
					        public static final int muc_more_details=0x7f0a000d;
 | 
				
			||||||
        public static final int new_conversation_search=0x7f0a0004;
 | 
					        public static final int muc_participants_header=0x7f0a000f;
 | 
				
			||||||
        public static final int new_fingerprint=0x7f0a0025;
 | 
					        public static final int muc_role=0x7f0a000e;
 | 
				
			||||||
        public static final int otr_fingerprint=0x7f0a0026;
 | 
					        public static final int muc_your_nick=0x7f0a000a;
 | 
				
			||||||
        public static final int pgp_keyentry=0x7f0a0027;
 | 
					        public static final int new_conversation_search=0x7f0a0012;
 | 
				
			||||||
        public static final int progressBar1=0x7f0a0003;
 | 
					        public static final int new_fingerprint=0x7f0a002d;
 | 
				
			||||||
        public static final int selected_conversation=0x7f0a002a;
 | 
					        public static final int otr_fingerprint=0x7f0a002e;
 | 
				
			||||||
        public static final int slidingpanelayout=0x7f0a0028;
 | 
					        public static final int pgp_keyentry=0x7f0a002f;
 | 
				
			||||||
        public static final int textSendButton=0x7f0a0020;
 | 
					        public static final int progressBar1=0x7f0a0011;
 | 
				
			||||||
        public static final int textView1=0x7f0a0018;
 | 
					        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 textView2=0x7f0a0001;
 | 
				
			||||||
        public static final int textinput=0x7f0a001f;
 | 
					        public static final int textinput=0x7f0a0027;
 | 
				
			||||||
        public static final int textsend=0x7f0a001e;
 | 
					        public static final int textsend=0x7f0a0026;
 | 
				
			||||||
        public static final int verify_otr_fingerprint=0x7f0a0016;
 | 
					        public static final int verify_otr_fingerprint=0x7f0a001d;
 | 
				
			||||||
        public static final int verify_otr_jid=0x7f0a0015;
 | 
					        public static final int verify_otr_jid=0x7f0a001c;
 | 
				
			||||||
        public static final int verify_otr_yourprint=0x7f0a0017;
 | 
					        public static final int verify_otr_yourprint=0x7f0a001e;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    public static final class layout {
 | 
					    public static final class layout {
 | 
				
			||||||
        public static final int account_row=0x7f030000;
 | 
					        public static final int account_row=0x7f030000;
 | 
				
			||||||
        public static final int activity_new_conversation=0x7f030001;
 | 
					        public static final int activity_contact_details=0x7f030001;
 | 
				
			||||||
        public static final int contact=0x7f030002;
 | 
					        public static final int activity_muc_details=0x7f030002;
 | 
				
			||||||
        public static final int conversation_list_row=0x7f030003;
 | 
					        public static final int activity_new_conversation=0x7f030003;
 | 
				
			||||||
        public static final int dialog_contact_details=0x7f030004;
 | 
					        public static final int contact=0x7f030004;
 | 
				
			||||||
        public static final int dialog_verify_otr=0x7f030005;
 | 
					        public static final int conversation_list_row=0x7f030005;
 | 
				
			||||||
        public static final int edit_account_dialog=0x7f030006;
 | 
					        public static final int dialog_verify_otr=0x7f030006;
 | 
				
			||||||
        public static final int fragment_conversation=0x7f030007;
 | 
					        public static final int edit_account_dialog=0x7f030007;
 | 
				
			||||||
        public static final int fragment_conversations_overview=0x7f030008;
 | 
					        public static final int edit_contact_name=0x7f030008;
 | 
				
			||||||
        public static final int manage_accounts=0x7f030009;
 | 
					        public static final int fragment_conversation=0x7f030009;
 | 
				
			||||||
        public static final int message_error=0x7f03000a;
 | 
					        public static final int fragment_conversations_overview=0x7f03000a;
 | 
				
			||||||
        public static final int message_recieved=0x7f03000b;
 | 
					        public static final int manage_accounts=0x7f03000b;
 | 
				
			||||||
        public static final int message_sent=0x7f03000c;
 | 
					        public static final int message_error=0x7f03000c;
 | 
				
			||||||
        public static final int muc_options=0x7f03000d;
 | 
					        public static final int message_recieved=0x7f03000d;
 | 
				
			||||||
 | 
					        public static final int message_sent=0x7f03000e;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    public static final class menu {
 | 
					    public static final class menu {
 | 
				
			||||||
        public static final int conversations=0x7f090000;
 | 
					        public static final int contact_details=0x7f090000;
 | 
				
			||||||
        public static final int encryption_choices=0x7f090001;
 | 
					        public static final int conversations=0x7f090001;
 | 
				
			||||||
        public static final int manageaccounts=0x7f090002;
 | 
					        public static final int encryption_choices=0x7f090002;
 | 
				
			||||||
        public static final int manageaccounts_context=0x7f090003;
 | 
					        public static final int manageaccounts=0x7f090003;
 | 
				
			||||||
        public static final int newconversation=0x7f090004;
 | 
					        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 class string {
 | 
				
			||||||
        public static final int action_accounts=0x7f050005;
 | 
					        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 app_name=0x7f050002;
 | 
				
			||||||
        public static final int conference_details=0x7f050010;
 | 
					        public static final int conference_details=0x7f050010;
 | 
				
			||||||
        public static final int encrypted_message=0x7f05000f;
 | 
					        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 just_now=0x7f05000c;
 | 
				
			||||||
        public static final int moderator=0x7f050012;
 | 
					        public static final int moderator=0x7f050012;
 | 
				
			||||||
        public static final int nick_in_use=0x7f050011;
 | 
					        public static final int nick_in_use=0x7f050011;
 | 
				
			||||||
        public static final int openpgp_install_openkeychain_via=0x7f050001;
 | 
					        public static final int openpgp_install_openkeychain_via=0x7f050001;
 | 
				
			||||||
        public static final int openpgp_list_preference_none=0x7f050000;
 | 
					        public static final int openpgp_list_preference_none=0x7f050000;
 | 
				
			||||||
        public static final int participant=0x7f050013;
 | 
					        public static final int participant=0x7f050013;
 | 
				
			||||||
 | 
					        public static final int remove_contact_text=0x7f050016;
 | 
				
			||||||
        public static final int sending=0x7f05000d;
 | 
					        public static final int sending=0x7f05000d;
 | 
				
			||||||
        public static final int title_activity_new_conversation=0x7f05000b;
 | 
					        public static final int title_activity_new_conversation=0x7f05000b;
 | 
				
			||||||
        public static final int visitor=0x7f050014;
 | 
					        public static final int visitor=0x7f050014;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 454 B  | 
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 333 B  | 
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 552 B  | 
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 781 B  | 
| 
						 | 
					@ -3,12 +3,18 @@
 | 
				
			||||||
    android:layout_width="match_parent"
 | 
					    android:layout_width="match_parent"
 | 
				
			||||||
    android:layout_height="match_parent"
 | 
					    android:layout_height="match_parent"
 | 
				
			||||||
    android:orientation="vertical"
 | 
					    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
 | 
					    <RelativeLayout
 | 
				
			||||||
        android:layout_width="wrap_content"
 | 
					        android:layout_width="wrap_content"
 | 
				
			||||||
        android:layout_height="72dp"
 | 
					        android:layout_height="88dp"
 | 
				
			||||||
        android:padding="0dp">
 | 
					        android:padding="8dp">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <QuickContactBadge
 | 
					        <QuickContactBadge
 | 
				
			||||||
            android:id="@+id/details_contact_badge"
 | 
					            android:id="@+id/details_contact_badge"
 | 
				
			||||||
| 
						 | 
					@ -21,78 +27,69 @@
 | 
				
			||||||
            android:id="@+id/details_jidbox"
 | 
					            android:id="@+id/details_jidbox"
 | 
				
			||||||
            android:layout_width="wrap_content"
 | 
					            android:layout_width="wrap_content"
 | 
				
			||||||
            android:layout_height="wrap_content"
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					            android:layout_centerVertical="true"
 | 
				
			||||||
            android:layout_toRightOf="@+id/details_contact_badge"
 | 
					            android:layout_toRightOf="@+id/details_contact_badge"
 | 
				
			||||||
            android:orientation="vertical"
 | 
					            android:orientation="vertical"
 | 
				
			||||||
            android:layout_alignParentTop="true"
 | 
					            android:paddingLeft="8dp" >
 | 
				
			||||||
            android:paddingLeft="8dp">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            <TextView
 | 
					 | 
				
			||||||
                android:layout_width="wrap_content"
 | 
					 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					 | 
				
			||||||
                android:text="Jabber ID"
 | 
					 | 
				
			||||||
                android:textColor="#33B5E5"
 | 
					 | 
				
			||||||
                android:textSize="20sp" />
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <TextView
 | 
					            <TextView
 | 
				
			||||||
                android:id="@+id/details_contactjid"
 | 
					                android:id="@+id/details_contactjid"
 | 
				
			||||||
                android:layout_width="wrap_content"
 | 
					                android:layout_width="wrap_content"
 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
                android:text="something@jabber.example.com"
 | 
					                android:paddingLeft="8dp"
 | 
				
			||||||
                android:singleLine="true"
 | 
					                android:singleLine="true"
 | 
				
			||||||
                android:textSize="14sp"
 | 
					                android:text="something@jabber.example.com"
 | 
				
			||||||
                android:paddingLeft="8dp"/>
 | 
					                android:textColor="#5b5b5b"
 | 
				
			||||||
 | 
					                android:textSize="18sp" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
         
 | 
					            <TextView
 | 
				
			||||||
        </LinearLayout>
 | 
					 | 
				
			||||||
           <TextView
 | 
					 | 
				
			||||||
                android:id="@+id/details_contactstatus"
 | 
					                android:id="@+id/details_contactstatus"
 | 
				
			||||||
                android:layout_width="fill_parent"
 | 
					                android:layout_width="fill_parent"
 | 
				
			||||||
                android:layout_height="fill_parent"
 | 
					                android:layout_height="fill_parent"
 | 
				
			||||||
 | 
					                android:paddingLeft="16dp"
 | 
				
			||||||
                android:text="online"
 | 
					                android:text="online"
 | 
				
			||||||
                android:textSize="24sp"
 | 
					                android:textSize="24sp"
 | 
				
			||||||
                 android:textStyle="bold"
 | 
					                android:textStyle="bold" />
 | 
				
			||||||
                 android:gravity="center_vertical"
 | 
					        </LinearLayout>
 | 
				
			||||||
                 android:layout_below="@+id/details_jidbox"
 | 
					          
 | 
				
			||||||
                 android:layout_toRightOf="@id/details_contact_badge"
 | 
					 | 
				
			||||||
                 android:paddingLeft="16dp"/>
 | 
					 | 
				
			||||||
    </RelativeLayout>
 | 
					    </RelativeLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <TextView
 | 
					  
 | 
				
			||||||
 | 
					   <TextView
 | 
				
			||||||
 | 
					        style="@style/sectionHeader"
 | 
				
			||||||
        android:layout_width="wrap_content"
 | 
					        android:layout_width="wrap_content"
 | 
				
			||||||
        android:layout_height="wrap_content"
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
        android:paddingTop="8dp"
 | 
					        android:padding="8dp"
 | 
				
			||||||
        android:text="Your account"
 | 
					        android:text="Your account" />
 | 
				
			||||||
        android:textColor="#33B5E5"
 | 
					 | 
				
			||||||
        android:textSize="20sp"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    <TextView
 | 
					    <TextView
 | 
				
			||||||
        android:id="@+id/details_account"
 | 
					        android:id="@+id/details_account"
 | 
				
			||||||
        android:layout_width="wrap_content"
 | 
					        android:layout_width="wrap_content"
 | 
				
			||||||
        android:layout_height="wrap_content"
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
        android:paddingLeft="8dp"
 | 
					        android:paddingLeft="8dp"
 | 
				
			||||||
        android:text="julia@jabber.example.com"
 | 
					        android:text="julia@jabber.example.com"
 | 
				
			||||||
        android:textSize="14sp" />
 | 
					        android:textSize="18sp"
 | 
				
			||||||
 | 
					        android:textColor="#5b5b5b" />
 | 
				
			||||||
    <TextView
 | 
					   <TextView
 | 
				
			||||||
 | 
					        style="@style/sectionHeader"
 | 
				
			||||||
        android:layout_width="wrap_content"
 | 
					        android:layout_width="wrap_content"
 | 
				
			||||||
        android:layout_height="wrap_content"
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
        android:paddingTop="8dp"
 | 
					        android:padding="8dp"
 | 
				
			||||||
        android:text="Subscription"
 | 
					        android:text="Subscription" />
 | 
				
			||||||
        android:textColor="#33B5E5"
 | 
					 | 
				
			||||||
        android:textSize="20sp" />
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <CheckBox
 | 
					    <CheckBox
 | 
				
			||||||
        android:id="@+id/details_send_presence"
 | 
					        android:id="@+id/details_send_presence"
 | 
				
			||||||
        android:layout_width="wrap_content"
 | 
					        android:layout_width="wrap_content"
 | 
				
			||||||
        android:layout_height="wrap_content"
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
        android:text="Send presence updates"
 | 
					        android:text="Send presence updates"
 | 
				
			||||||
        android:textSize="14sp" />
 | 
					        android:textSize="18sp"
 | 
				
			||||||
 | 
					        android:textColor="#5b5b5b" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <CheckBox
 | 
					    <CheckBox
 | 
				
			||||||
        android:id="@+id/details_receive_presence"
 | 
					        android:id="@+id/details_receive_presence"
 | 
				
			||||||
        android:layout_width="wrap_content"
 | 
					        android:layout_width="wrap_content"
 | 
				
			||||||
        android:layout_height="wrap_content"
 | 
					        android:layout_height="wrap_content"
 | 
				
			||||||
        android:text="Receive presence updates"
 | 
					        android:text="Receive presence updates"
 | 
				
			||||||
        android:textSize="14sp" />
 | 
					        android:textSize="18sp"
 | 
				
			||||||
 | 
					        android:textColor="#5b5b5b" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</LinearLayout>
 | 
					</LinearLayout>
 | 
				
			||||||
| 
						 | 
					@ -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>
 | 
				
			||||||
| 
						 | 
					@ -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>
 | 
				
			||||||
| 
						 | 
					@ -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>
 | 
				
			||||||
| 
						 | 
					@ -20,4 +20,6 @@
 | 
				
			||||||
    <string name="moderator">Moderator</string>
 | 
					    <string name="moderator">Moderator</string>
 | 
				
			||||||
    <string name="participant">Participant</string>
 | 
					    <string name="participant">Participant</string>
 | 
				
			||||||
    <string name="visitor">Visitor</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>
 | 
					</resources>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -293,4 +293,8 @@ public class Contact extends AbstractEntity implements Serializable {
 | 
				
			||||||
	public boolean isInRoster() {
 | 
						public boolean isInRoster() {
 | 
				
			||||||
		return this.inRoster;
 | 
							return this.inRoster;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public String getAccountUuid() {
 | 
				
			||||||
 | 
							return this.accountUuid;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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>();
 | 
							List<Contact> list = new ArrayList<Contact>();
 | 
				
			||||||
		SQLiteDatabase db = this.getReadableDatabase();
 | 
							SQLiteDatabase db = this.getReadableDatabase();
 | 
				
			||||||
		Cursor cursor;
 | 
							Cursor cursor;
 | 
				
			||||||
| 
						 | 
					@ -246,7 +246,7 @@ public class DatabaseBackend extends SQLiteOpenHelper {
 | 
				
			||||||
		return list;
 | 
							return list;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	public List<Contact> getContats(String where) {
 | 
						public List<Contact> getContacts(String where) {
 | 
				
			||||||
		List<Contact> list = new ArrayList<Contact>();
 | 
							List<Contact> list = new ArrayList<Contact>();
 | 
				
			||||||
		SQLiteDatabase db = this.getReadableDatabase();
 | 
							SQLiteDatabase db = this.getReadableDatabase();
 | 
				
			||||||
		Cursor cursor = db.query(Contact.TABLENAME, null, where, null, null, null, null);
 | 
							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);
 | 
							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);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -535,7 +535,7 @@ public class XmppConnectionService extends Service {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public void getRoster(Account account,
 | 
						public void getRoster(Account account,
 | 
				
			||||||
			final OnRosterFetchedListener listener) {
 | 
								final OnRosterFetchedListener listener) {
 | 
				
			||||||
		List<Contact> contacts = databaseBackend.getContacts(account);
 | 
							List<Contact> contacts = databaseBackend.getContactsByAccount(account);
 | 
				
			||||||
		for (int i = 0; i < contacts.size(); ++i) {
 | 
							for (int i = 0; i < contacts.size(); ++i) {
 | 
				
			||||||
			contacts.get(i).setAccount(account);
 | 
								contacts.get(i).setAccount(account);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -575,7 +575,7 @@ public class XmppConnectionService extends Service {
 | 
				
			||||||
							mWhere.append(account.getUuid());
 | 
												mWhere.append(account.getUuid());
 | 
				
			||||||
							mWhere.append("\"");
 | 
												mWhere.append("\"");
 | 
				
			||||||
							List<Contact> contactsToDelete = databaseBackend
 | 
												List<Contact> contactsToDelete = databaseBackend
 | 
				
			||||||
									.getContats(mWhere.toString());
 | 
														.getContacts(mWhere.toString());
 | 
				
			||||||
							for (Contact contact : contactsToDelete) {
 | 
												for (Contact contact : contactsToDelete) {
 | 
				
			||||||
								databaseBackend.deleteContact(contact);
 | 
													databaseBackend.deleteContact(contact);
 | 
				
			||||||
								replaceContactInConversation(contact.getJid(),
 | 
													replaceContactInConversation(contact.getJid(),
 | 
				
			||||||
| 
						 | 
					@ -604,7 +604,7 @@ public class XmppConnectionService extends Service {
 | 
				
			||||||
					public void onPhoneContactsLoaded(
 | 
										public void onPhoneContactsLoaded(
 | 
				
			||||||
							Hashtable<String, Bundle> phoneContacts) {
 | 
												Hashtable<String, Bundle> phoneContacts) {
 | 
				
			||||||
						List<Contact> contacts = databaseBackend
 | 
											List<Contact> contacts = databaseBackend
 | 
				
			||||||
								.getContacts(null);
 | 
													.getContactsByAccount(null);
 | 
				
			||||||
						for (int i = 0; i < contacts.size(); ++i) {
 | 
											for (int i = 0; i < contacts.size(); ++i) {
 | 
				
			||||||
							Contact contact = contacts.get(i);
 | 
												Contact contact = contacts.get(i);
 | 
				
			||||||
							if (phoneContacts.containsKey(contact.getJid())) {
 | 
												if (phoneContacts.containsKey(contact.getJid())) {
 | 
				
			||||||
| 
						 | 
					@ -938,6 +938,7 @@ public class XmppConnectionService extends Service {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public void updateContact(Contact contact) {
 | 
						public void updateContact(Contact contact) {
 | 
				
			||||||
		databaseBackend.updateContact(contact);
 | 
							databaseBackend.updateContact(contact);
 | 
				
			||||||
 | 
							replaceContactInConversation(contact.getJid(), contact);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public void updateMessage(Message message) {
 | 
						public void updateMessage(Message message) {
 | 
				
			||||||
| 
						 | 
					@ -1035,4 +1036,14 @@ public class XmppConnectionService extends Service {
 | 
				
			||||||
	public void updateConversation(Conversation conversation) {
 | 
						public void updateConversation(Conversation conversation) {
 | 
				
			||||||
		this.databaseBackend.updateConversation(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;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -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();
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -162,9 +162,9 @@ public class ConversationActivity extends XmppActivity {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				
 | 
									
 | 
				
			||||||
				((TextView) view.findViewById(R.id.conversation_lastupdate))
 | 
									((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);
 | 
									ImageView imageView = (ImageView) view.findViewById(R.id.conversation_image);
 | 
				
			||||||
				if (profilePhoto!=null) {
 | 
									if (profilePhoto!=null) {
 | 
				
			||||||
					imageView.setImageURI(profilePhoto);
 | 
										imageView.setImageURI(profilePhoto);
 | 
				
			||||||
| 
						 | 
					@ -272,12 +272,6 @@ public class ConversationActivity extends XmppActivity {
 | 
				
			||||||
		case android.R.id.home:
 | 
							case android.R.id.home:
 | 
				
			||||||
			spl.openPane();
 | 
								spl.openPane();
 | 
				
			||||||
			break;
 | 
								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:
 | 
							case R.id.action_add:
 | 
				
			||||||
			startActivity(new Intent(this, NewConversationActivity.class));
 | 
								startActivity(new Intent(this, NewConversationActivity.class));
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
| 
						 | 
					@ -290,12 +284,12 @@ public class ConversationActivity extends XmppActivity {
 | 
				
			||||||
			selectedConversation = conversationList.get(0);
 | 
								selectedConversation = conversationList.get(0);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case R.id.action_contact_details:
 | 
							case R.id.action_contact_details:
 | 
				
			||||||
			DialogContactDetails details = new DialogContactDetails();
 | 
					 | 
				
			||||||
			Contact contact = this.getSelectedConversation().getContact();
 | 
								Contact contact = this.getSelectedConversation().getContact();
 | 
				
			||||||
			if (contact != null) {
 | 
								if (contact != null) {
 | 
				
			||||||
				contact.setAccount(this.selectedConversation.getAccount());
 | 
									Intent intent = new Intent(this,ContactDetailsActivity.class);
 | 
				
			||||||
				details.setContact(contact);
 | 
									intent.setAction(ContactDetailsActivity.ACTION_VIEW_CONTACT);
 | 
				
			||||||
				details.show(getFragmentManager(), "details");
 | 
									intent.putExtra("uuid", contact.getUuid());
 | 
				
			||||||
 | 
									startActivity(intent);
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				String jid = getSelectedConversation().getContactJid();
 | 
									String jid = getSelectedConversation().getContactJid();
 | 
				
			||||||
				AlertDialog.Builder builder = new AlertDialog.Builder(this);
 | 
									AlertDialog.Builder builder = new AlertDialog.Builder(this);
 | 
				
			||||||
| 
						 | 
					@ -307,8 +301,8 @@ public class ConversationActivity extends XmppActivity {
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
		case R.id.action_muc_details:
 | 
							case R.id.action_muc_details:
 | 
				
			||||||
			Intent intent = new Intent(this,MucOptionsActivity.class);
 | 
								Intent intent = new Intent(this,MucDetailsActivity.class);
 | 
				
			||||||
			intent.setAction(MucOptionsActivity.ACTION_VIEW_MUC);
 | 
								intent.setAction(MucDetailsActivity.ACTION_VIEW_MUC);
 | 
				
			||||||
			intent.putExtra("uuid", getSelectedConversation().getUuid());
 | 
								intent.putExtra("uuid", getSelectedConversation().getUuid());
 | 
				
			||||||
			startActivity(intent);
 | 
								startActivity(intent);
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -109,8 +109,8 @@ public class ConversationFragment extends Fragment {
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		@Override
 | 
							@Override
 | 
				
			||||||
		public void onClick(View v) {
 | 
							public void onClick(View v) {
 | 
				
			||||||
			Intent intent = new Intent(getActivity(),MucOptionsActivity.class);
 | 
								Intent intent = new Intent(getActivity(),MucDetailsActivity.class);
 | 
				
			||||||
			intent.setAction(MucOptionsActivity.ACTION_VIEW_MUC);
 | 
								intent.setAction(MucDetailsActivity.ACTION_VIEW_MUC);
 | 
				
			||||||
			intent.putExtra("uuid", conversation.getUuid());
 | 
								intent.putExtra("uuid", conversation.getUuid());
 | 
				
			||||||
			startActivity(intent);
 | 
								startActivity(intent);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,8 @@ import android.content.Context;
 | 
				
			||||||
import android.os.Bundle;
 | 
					import android.os.Bundle;
 | 
				
			||||||
import android.util.Log;
 | 
					import android.util.Log;
 | 
				
			||||||
import android.view.LayoutInflater;
 | 
					import android.view.LayoutInflater;
 | 
				
			||||||
 | 
					import android.view.Menu;
 | 
				
			||||||
 | 
					import android.view.MenuItem;
 | 
				
			||||||
import android.view.View;
 | 
					import android.view.View;
 | 
				
			||||||
import android.view.View.OnClickListener;
 | 
					import android.view.View.OnClickListener;
 | 
				
			||||||
import android.view.ViewGroup;
 | 
					import android.view.ViewGroup;
 | 
				
			||||||
| 
						 | 
					@ -22,15 +24,13 @@ import android.widget.ImageView;
 | 
				
			||||||
import android.widget.LinearLayout;
 | 
					import android.widget.LinearLayout;
 | 
				
			||||||
import android.widget.TextView;
 | 
					import android.widget.TextView;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class MucOptionsActivity 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 XmppActivity activity = this;
 | 
					 | 
				
			||||||
	private Conversation conversation;
 | 
						private Conversation conversation;
 | 
				
			||||||
	private EditText mYourNick;
 | 
						private EditText mYourNick;
 | 
				
			||||||
	private TextView mRoleAffiliaton;
 | 
						private TextView mRoleAffiliaton;
 | 
				
			||||||
	private TextView mFullJid;
 | 
						private TextView mFullJid;
 | 
				
			||||||
	private LinearLayout membersView;
 | 
						private LinearLayout membersView;
 | 
				
			||||||
	private TextView mTextParticipantsHead;
 | 
					 | 
				
			||||||
	private LinearLayout mMoreDetails;
 | 
						private LinearLayout mMoreDetails;
 | 
				
			||||||
	private String uuid = null;
 | 
						private String uuid = null;
 | 
				
			||||||
	private ArrayAdapter<User> contactsAdapter;
 | 
						private ArrayAdapter<User> contactsAdapter;
 | 
				
			||||||
| 
						 | 
					@ -56,9 +56,8 @@ public class MucOptionsActivity extends XmppActivity {
 | 
				
			||||||
		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");
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		setContentView(R.layout.muc_options);
 | 
							setContentView(R.layout.activity_muc_details);
 | 
				
			||||||
		mYourNick = (EditText) findViewById(R.id.muc_your_nick);
 | 
							mYourNick = (EditText) findViewById(R.id.muc_your_nick);
 | 
				
			||||||
		mTextParticipantsHead = (TextView) findViewById(R.id.muc_participants_header);
 | 
					 | 
				
			||||||
		mFullJid = (TextView) findViewById(R.id.muc_jabberid);
 | 
							mFullJid = (TextView) findViewById(R.id.muc_jabberid);
 | 
				
			||||||
		ImageButton imageButton = (ImageButton) findViewById(R.id.muc_edit_nick);
 | 
							ImageButton imageButton = (ImageButton) findViewById(R.id.muc_edit_nick);
 | 
				
			||||||
		imageButton.setOnClickListener(this.changeNickListener);
 | 
							imageButton.setOnClickListener(this.changeNickListener);
 | 
				
			||||||
| 
						 | 
					@ -86,10 +85,18 @@ public class MucOptionsActivity extends XmppActivity {
 | 
				
			||||||
				return view;
 | 
									return view;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
							getActionBar().setHomeButtonEnabled(true);
 | 
				
			||||||
 | 
							getActionBar().setDisplayHomeAsUpEnabled(true);
 | 
				
			||||||
 | 
							
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
	public void setConversation(Conversation conversation) {
 | 
						@Override
 | 
				
			||||||
		this.conversation = conversation;
 | 
						public boolean onOptionsItemSelected(MenuItem menuItem) {
 | 
				
			||||||
 | 
						    switch (menuItem.getItemId()) {
 | 
				
			||||||
 | 
						    case android.R.id.home:
 | 
				
			||||||
 | 
						      finish();
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
 | 
						    return super.onOptionsItemSelected(menuItem);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public String getReadableRole(int role) {
 | 
						public String getReadableRole(int role) {
 | 
				
			||||||
| 
						 | 
					@ -104,6 +111,12 @@ public class MucOptionsActivity extends XmppActivity {
 | 
				
			||||||
			return "";
 | 
								return "";
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean onCreateOptionsMenu(Menu menu) {
 | 
				
			||||||
 | 
							getMenuInflater().inflate(R.menu.muc_details, menu);
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	void onBackendConnected() {
 | 
						void onBackendConnected() {
 | 
				
			||||||
| 
						 | 
					@ -114,6 +127,7 @@ public class MucOptionsActivity extends XmppActivity {
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			if (this.conversation != null) {
 | 
								if (this.conversation != null) {
 | 
				
			||||||
 | 
									setTitle(conversation.getName());
 | 
				
			||||||
				mFullJid.setText(conversation.getContactJid().split("/")[0]);
 | 
									mFullJid.setText(conversation.getContactJid().split("/")[0]);
 | 
				
			||||||
				mYourNick.setText(conversation.getMucOptions().getNick());
 | 
									mYourNick.setText(conversation.getMucOptions().getNick());
 | 
				
			||||||
				mRoleAffiliaton = (TextView) findViewById(R.id.muc_role);
 | 
									mRoleAffiliaton = (TextView) findViewById(R.id.muc_role);
 | 
				
			||||||
| 
						 | 
					@ -139,6 +153,7 @@ public class MucOptionsActivity extends XmppActivity {
 | 
				
			||||||
				this.users.addAll(conversation.getMucOptions().getUsers());
 | 
									this.users.addAll(conversation.getMucOptions().getUsers());
 | 
				
			||||||
				contactsAdapter.notifyDataSetChanged();
 | 
									contactsAdapter.notifyDataSetChanged();
 | 
				
			||||||
				LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 | 
									LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 | 
				
			||||||
 | 
									membersView.removeAllViews();
 | 
				
			||||||
				for(User contact : conversation.getMucOptions().getUsers()) {
 | 
									for(User contact : conversation.getMucOptions().getUsers()) {
 | 
				
			||||||
					View view = (View) inflater.inflate(R.layout.contact, null);
 | 
										View view = (View) inflater.inflate(R.layout.contact, null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,7 +39,6 @@ import android.content.Intent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class NewConversationActivity extends XmppActivity {
 | 
					public class NewConversationActivity extends XmppActivity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	protected List<Contact> phoneContacts = new ArrayList<Contact>();
 | 
					 | 
				
			||||||
	protected List<Contact> rosterContacts = new ArrayList<Contact>();
 | 
						protected List<Contact> rosterContacts = new ArrayList<Contact>();
 | 
				
			||||||
	protected List<Contact> aggregatedContacts = new ArrayList<Contact>();
 | 
						protected List<Contact> aggregatedContacts = new ArrayList<Contact>();
 | 
				
			||||||
	protected ListView contactsView;
 | 
						protected ListView contactsView;
 | 
				
			||||||
| 
						 | 
					@ -188,10 +187,10 @@ public class NewConversationActivity extends XmppActivity {
 | 
				
			||||||
			@Override
 | 
								@Override
 | 
				
			||||||
			public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
 | 
								public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
 | 
				
			||||||
					int pos, long arg3) {
 | 
										int pos, long arg3) {
 | 
				
			||||||
				Contact clickedContact = aggregatedContacts.get(pos);
 | 
									Intent intent = new Intent(activity,ContactDetailsActivity.class);
 | 
				
			||||||
				DialogContactDetails dialog = new DialogContactDetails();
 | 
									intent.setAction(ContactDetailsActivity.ACTION_VIEW_CONTACT);
 | 
				
			||||||
				dialog.setContact(clickedContact);
 | 
									intent.putExtra("uuid", aggregatedContacts.get(pos).getUuid());
 | 
				
			||||||
				dialog.show(getFragmentManager(), "details");
 | 
									startActivity(intent);
 | 
				
			||||||
				return true;
 | 
									return true;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
| 
						 | 
					@ -278,12 +277,6 @@ public class NewConversationActivity extends XmppActivity {
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public boolean onOptionsItemSelected(MenuItem item) {
 | 
						public boolean onOptionsItemSelected(MenuItem item) {
 | 
				
			||||||
		switch (item.getItemId()) {
 | 
							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:
 | 
							case R.id.action_refresh_contacts:
 | 
				
			||||||
			refreshContacts();
 | 
								refreshContacts();
 | 
				
			||||||
			break;
 | 
								break;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
package eu.siacs.conversations.ui;
 | 
					package eu.siacs.conversations.ui;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import eu.siacs.conversations.R;
 | 
				
			||||||
import eu.siacs.conversations.services.XmppConnectionService;
 | 
					import eu.siacs.conversations.services.XmppConnectionService;
 | 
				
			||||||
import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinder;
 | 
					import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinder;
 | 
				
			||||||
import android.app.Activity;
 | 
					import android.app.Activity;
 | 
				
			||||||
| 
						 | 
					@ -10,6 +11,7 @@ import android.content.Context;
 | 
				
			||||||
import android.content.Intent;
 | 
					import android.content.Intent;
 | 
				
			||||||
import android.content.ServiceConnection;
 | 
					import android.content.ServiceConnection;
 | 
				
			||||||
import android.os.IBinder;
 | 
					import android.os.IBinder;
 | 
				
			||||||
 | 
					import android.view.MenuItem;
 | 
				
			||||||
import android.view.View;
 | 
					import android.view.View;
 | 
				
			||||||
import android.view.inputmethod.InputMethodManager;
 | 
					import android.view.inputmethod.InputMethodManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -79,4 +81,16 @@ public abstract class XmppActivity extends Activity {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
	abstract void onBackendConnected();
 | 
						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);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue