sharing text
This commit is contained in:
		
							parent
							
								
									507cfba6ad
								
							
						
					
					
						commit
						9c811f8fb2
					
				| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
 | 
			
		||||
    android:shape="rectangle">
 | 
			
		||||
    <solid android:color="#ffdddddd" />
 | 
			
		||||
</shape>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
 | 
			
		||||
    <item
 | 
			
		||||
        android:state_pressed="true"
 | 
			
		||||
        android:drawable="@drawable/grey" />
 | 
			
		||||
</selector>
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,50 @@
 | 
			
		|||
<ScrollView  xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent">
 | 
			
		||||
 | 
			
		||||
<LinearLayout
 | 
			
		||||
    android:layout_width="fill_parent"
 | 
			
		||||
    android:layout_height="wrap_content"
 | 
			
		||||
    android:orientation="vertical" >
 | 
			
		||||
 | 
			
		||||
     <TextView
 | 
			
		||||
                android:id="@+id/conversations_header"
 | 
			
		||||
                android:layout_width="wrap_content"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:text="Active Conversations"
 | 
			
		||||
                style="@style/sectionHeader"
 | 
			
		||||
                android:paddingLeft="8dp"
 | 
			
		||||
                android:paddingTop="8dp"
 | 
			
		||||
                android:paddingRight="8dp"/>
 | 
			
		||||
  
 | 
			
		||||
 | 
			
		||||
    <LinearLayout
 | 
			
		||||
        android:id="@+id/conversations"
 | 
			
		||||
        android:layout_width="fill_parent"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:orientation="vertical"
 | 
			
		||||
        android:divider="?android:dividerHorizontal"
 | 
			
		||||
        android:showDividers="middle" >
 | 
			
		||||
        
 | 
			
		||||
    </LinearLayout>
 | 
			
		||||
      <TextView
 | 
			
		||||
                android:id="@+id/contacts_header"
 | 
			
		||||
                android:layout_width="wrap_content"
 | 
			
		||||
                android:layout_height="wrap_content"
 | 
			
		||||
                android:text="Contacts"
 | 
			
		||||
                style="@style/sectionHeader"
 | 
			
		||||
                android:paddingLeft="8dp"
 | 
			
		||||
                android:paddingTop="8dp"
 | 
			
		||||
                android:paddingRight="8dp"/>
 | 
			
		||||
          <LinearLayout
 | 
			
		||||
        android:id="@+id/contacts"
 | 
			
		||||
        android:layout_width="fill_parent"
 | 
			
		||||
        android:layout_height="wrap_content"
 | 
			
		||||
        android:orientation="vertical"
 | 
			
		||||
        android:divider="?android:dividerHorizontal"
 | 
			
		||||
        android:showDividers="middle" >
 | 
			
		||||
        
 | 
			
		||||
    </LinearLayout>
 | 
			
		||||
</LinearLayout>
 | 
			
		||||
</ScrollView>
 | 
			
		||||
| 
						 | 
				
			
			@ -25,4 +25,5 @@
 | 
			
		|||
    <string name="untrusted_cert_hint">The server %s presented you with an unstrusted, possible self signed, certificate.</string>
 | 
			
		||||
    <string name="account_info">Server Info</string>
 | 
			
		||||
    <string name="register_account">Register new account on server</string>
 | 
			
		||||
    <string name="share_with">Share with</string>
 | 
			
		||||
</resources>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -398,7 +398,7 @@ public class XmppConnectionService extends Service {
 | 
			
		|||
 | 
			
		||||
	@Override
 | 
			
		||||
	public int onStartCommand(Intent intent, int flags, int startId) {
 | 
			
		||||
		Log.d(LOGTAG,"calling start service. caller was:"+intent.getAction());
 | 
			
		||||
		//Log.d(LOGTAG,"calling start service. caller was:"+intent.getAction());
 | 
			
		||||
		ConnectivityManager cm = (ConnectivityManager) getApplicationContext()
 | 
			
		||||
				.getSystemService(Context.CONNECTIVITY_SERVICE);
 | 
			
		||||
		NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
 | 
			
		||||
| 
						 | 
				
			
			@ -670,7 +670,7 @@ public class XmppConnectionService extends Service {
 | 
			
		|||
		return packet;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void getRoster(Account account,
 | 
			
		||||
	private void getRoster(Account account,
 | 
			
		||||
			final OnRosterFetchedListener listener) {
 | 
			
		||||
		List<Contact> contacts = databaseBackend.getContactsByAccount(account);
 | 
			
		||||
		for (int i = 0; i < contacts.size(); ++i) {
 | 
			
		||||
| 
						 | 
				
			
			@ -681,6 +681,14 @@ public class XmppConnectionService extends Service {
 | 
			
		|||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public List<Contact> getRoster(Account account) {
 | 
			
		||||
		List<Contact> contacts = databaseBackend.getContactsByAccount(account);
 | 
			
		||||
		for (int i = 0; i < contacts.size(); ++i) {
 | 
			
		||||
			contacts.get(i).setAccount(account);
 | 
			
		||||
		}
 | 
			
		||||
		return contacts;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void updateRoster(final Account account,
 | 
			
		||||
			final OnRosterFetchedListener listener) {
 | 
			
		||||
		IqPacket iqPacket = new IqPacket(IqPacket.TYPE_GET);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,7 +11,6 @@ import eu.siacs.conversations.entities.Contact;
 | 
			
		|||
import eu.siacs.conversations.entities.Conversation;
 | 
			
		||||
import eu.siacs.conversations.entities.Message;
 | 
			
		||||
import eu.siacs.conversations.utils.UIHelper;
 | 
			
		||||
import android.net.Uri;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import android.app.AlertDialog;
 | 
			
		||||
import android.app.FragmentTransaction;
 | 
			
		||||
| 
						 | 
				
			
			@ -42,6 +41,7 @@ public class ConversationActivity extends XmppActivity {
 | 
			
		|||
 | 
			
		||||
	public static final String VIEW_CONVERSATION = "viewConversation";
 | 
			
		||||
	public static final String CONVERSATION = "conversationUuid";
 | 
			
		||||
	public static final String TEXT = "text";
 | 
			
		||||
	
 | 
			
		||||
	public static final int REQUEST_SEND_MESSAGE = 0x75441;
 | 
			
		||||
	public static final int REQUEST_DECRYPT_PGP = 0x76783;
 | 
			
		||||
| 
						 | 
				
			
			@ -437,7 +437,8 @@ public class ConversationActivity extends XmppActivity {
 | 
			
		|||
					}
 | 
			
		||||
				}
 | 
			
		||||
				paneShouldBeOpen = false;
 | 
			
		||||
				swapConversationFragment();
 | 
			
		||||
				String text = getIntent().getExtras().getString(TEXT, null);
 | 
			
		||||
				swapConversationFragment().setText(text);
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			if (xmppConnectionService.getAccounts().size() == 0) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,5 @@
 | 
			
		|||
package eu.siacs.conversations.ui;
 | 
			
		||||
 | 
			
		||||
import java.io.FileNotFoundException;
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.Hashtable;
 | 
			
		||||
| 
						 | 
				
			
			@ -19,7 +18,6 @@ import eu.siacs.conversations.entities.Message;
 | 
			
		|||
import eu.siacs.conversations.entities.MucOptions;
 | 
			
		||||
import eu.siacs.conversations.entities.MucOptions.OnRenameListener;
 | 
			
		||||
import eu.siacs.conversations.services.XmppConnectionService;
 | 
			
		||||
import eu.siacs.conversations.utils.PhoneHelper;
 | 
			
		||||
import eu.siacs.conversations.utils.UIHelper;
 | 
			
		||||
import android.app.AlertDialog;
 | 
			
		||||
import android.app.Fragment;
 | 
			
		||||
| 
						 | 
				
			
			@ -30,9 +28,7 @@ import android.content.IntentSender;
 | 
			
		|||
import android.content.SharedPreferences;
 | 
			
		||||
import android.content.IntentSender.SendIntentException;
 | 
			
		||||
import android.graphics.Bitmap;
 | 
			
		||||
import android.graphics.BitmapFactory;
 | 
			
		||||
import android.graphics.Typeface;
 | 
			
		||||
import android.net.Uri;
 | 
			
		||||
import android.os.AsyncTask;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import android.preference.PreferenceManager;
 | 
			
		||||
| 
						 | 
				
			
			@ -63,6 +59,7 @@ public class ConversationFragment extends Fragment {
 | 
			
		|||
	protected String queuedPqpMessage = null;
 | 
			
		||||
 | 
			
		||||
	private EditText chatMsg;
 | 
			
		||||
	private String pastedText = null;
 | 
			
		||||
 | 
			
		||||
	protected Bitmap selfBitmap;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -153,6 +150,11 @@ public class ConversationFragment extends Fragment {
 | 
			
		|||
		final View view = inflater.inflate(R.layout.fragment_conversation,
 | 
			
		||||
				container, false);
 | 
			
		||||
		chatMsg = (EditText) view.findViewById(R.id.textinput);
 | 
			
		||||
		
 | 
			
		||||
		if (pastedText!=null) {
 | 
			
		||||
			chatMsg.setText(pastedText);
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		ImageButton sendButton = (ImageButton) view
 | 
			
		||||
				.findViewById(R.id.textSendButton);
 | 
			
		||||
		sendButton.setOnClickListener(this.sendMsgListener);
 | 
			
		||||
| 
						 | 
				
			
			@ -640,4 +642,8 @@ public class ConversationFragment extends Fragment {
 | 
			
		|||
		}
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public void setText(String text) {
 | 
			
		||||
		this.pastedText = text;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -289,6 +289,8 @@ public class ManageAccountActivity extends XmppActivity {
 | 
			
		|||
									XmppConnection xmpp = selectedAccountForActionMode.getXmppConnection();
 | 
			
		||||
									long connectionAge = (SystemClock.elapsedRealtime() - xmpp.lastConnect) / 60000;
 | 
			
		||||
									long sessionAge = (SystemClock.elapsedRealtime() - xmpp.lastSessionStarted) / 60000;
 | 
			
		||||
									long connectionAgeHours = connectionAge / 60;
 | 
			
		||||
									long sessionAgeHours = sessionAge / 60;
 | 
			
		||||
									View view = (View) getLayoutInflater().inflate(R.layout.server_info, null);
 | 
			
		||||
									TextView connection = (TextView) view.findViewById(R.id.connection);
 | 
			
		||||
									TextView session = (TextView) view.findViewById(R.id.session);
 | 
			
		||||
| 
						 | 
				
			
			@ -299,13 +301,21 @@ public class ManageAccountActivity extends XmppActivity {
 | 
			
		|||
									TextView roster = (TextView) view.findViewById(R.id.roster);
 | 
			
		||||
									pcks_received.setText(""+xmpp.getReceivedStanzas());
 | 
			
		||||
									pcks_sent.setText(""+xmpp.getSentStanzas());
 | 
			
		||||
									connection.setText(connectionAge+" mins");
 | 
			
		||||
									if (connectionAgeHours >= 2) {
 | 
			
		||||
										connection.setText(connectionAgeHours+" hours");
 | 
			
		||||
									} else {
 | 
			
		||||
										connection.setText(connectionAge+" mins");
 | 
			
		||||
									}
 | 
			
		||||
									if (xmpp.hasFeatureStreamManagment()) {
 | 
			
		||||
										session.setText(sessionAge+" mins");
 | 
			
		||||
										if (sessionAgeHours >= 2) {
 | 
			
		||||
											session.setText(sessionAgeHours+" hours");
 | 
			
		||||
										} else {
 | 
			
		||||
											session.setText(sessionAge+" mins");
 | 
			
		||||
										}
 | 
			
		||||
										stream.setText("Yes");
 | 
			
		||||
									} else {
 | 
			
		||||
										stream.setText("No");
 | 
			
		||||
										session.setText(connectionAge+" mins");
 | 
			
		||||
										session.setText(connection.getText());
 | 
			
		||||
									}
 | 
			
		||||
									if (xmpp.hasFeaturesCarbon()) {
 | 
			
		||||
										carbon.setText("Yes");
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,26 +64,6 @@ public class MucDetailsActivity extends XmppActivity {
 | 
			
		|||
		membersView = (LinearLayout) findViewById(R.id.muc_members);
 | 
			
		||||
		mMoreDetails = (LinearLayout) findViewById(R.id.muc_more_details);
 | 
			
		||||
		mMoreDetails.setVisibility(View.GONE);
 | 
			
		||||
		/*contactsAdapter = new ArrayAdapter<MucOptions.User>(this,
 | 
			
		||||
				R.layout.contact, users) {
 | 
			
		||||
			@Override
 | 
			
		||||
			public View getView(int position, View view, ViewGroup parent) {
 | 
			
		||||
				LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 | 
			
		||||
				User contact = getItem(position);
 | 
			
		||||
				if (view == null) {
 | 
			
		||||
					view = (View) inflater.inflate(R.layout.contact, null);
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				((TextView) view.findViewById(R.id.contact_display_name))
 | 
			
		||||
						.setText(getItem(position).getName());
 | 
			
		||||
				TextView role = (TextView) view.findViewById(R.id.contact_jid);
 | 
			
		||||
				role.setText(getReadableRole(contact.getRole()));
 | 
			
		||||
				ImageView imageView = (ImageView) view
 | 
			
		||||
						.findViewById(R.id.contact_photo);
 | 
			
		||||
				imageView.setImageBitmap(UIHelper.getContactPictureByName(contact.getName(), 90));
 | 
			
		||||
				return view;
 | 
			
		||||
			}
 | 
			
		||||
		};*/
 | 
			
		||||
		getActionBar().setHomeButtonEnabled(true);
 | 
			
		||||
		getActionBar().setDisplayHomeAsUpEnabled(true);
 | 
			
		||||
		
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,6 @@ import java.util.ArrayList;
 | 
			
		|||
import java.util.Collections;
 | 
			
		||||
import java.util.Comparator;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Locale;
 | 
			
		||||
 | 
			
		||||
import eu.siacs.conversations.R;
 | 
			
		||||
import eu.siacs.conversations.entities.Account;
 | 
			
		||||
| 
						 | 
				
			
			@ -14,11 +13,9 @@ import eu.siacs.conversations.entities.Contact;
 | 
			
		|||
import eu.siacs.conversations.entities.Conversation;
 | 
			
		||||
import eu.siacs.conversations.utils.UIHelper;
 | 
			
		||||
import eu.siacs.conversations.utils.Validator;
 | 
			
		||||
import android.net.Uri;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import android.text.Editable;
 | 
			
		||||
import android.text.TextWatcher;
 | 
			
		||||
import android.util.Log;
 | 
			
		||||
import android.view.LayoutInflater;
 | 
			
		||||
import android.view.Menu;
 | 
			
		||||
import android.view.MenuItem;
 | 
			
		||||
| 
						 | 
				
			
			@ -230,19 +227,7 @@ public class NewConversationActivity extends XmppActivity {
 | 
			
		|||
		Conversation conversation = xmppConnectionService
 | 
			
		||||
				.findOrCreateConversation(account, contact.getJid(), muc);
 | 
			
		||||
 | 
			
		||||
		switchToConversation(conversation);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void switchToConversation(Conversation conversation) {
 | 
			
		||||
		Intent viewConversationIntent = new Intent(this,
 | 
			
		||||
				ConversationActivity.class);
 | 
			
		||||
		viewConversationIntent.setAction(Intent.ACTION_VIEW);
 | 
			
		||||
		viewConversationIntent.putExtra(ConversationActivity.CONVERSATION,
 | 
			
		||||
				conversation.getUuid());
 | 
			
		||||
		viewConversationIntent.setType(ConversationActivity.VIEW_CONVERSATION);
 | 
			
		||||
		viewConversationIntent.setFlags(viewConversationIntent.getFlags()
 | 
			
		||||
				| Intent.FLAG_ACTIVITY_CLEAR_TOP);
 | 
			
		||||
		startActivity(viewConversationIntent);
 | 
			
		||||
		switchToConversation(conversation,null);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
| 
						 | 
				
			
			@ -265,12 +250,14 @@ public class NewConversationActivity extends XmppActivity {
 | 
			
		|||
						@Override
 | 
			
		||||
						public void onClick(DialogInterface dialog, int which) {
 | 
			
		||||
							Conversation conversation = xmppConnectionService.findOrCreateConversation(accounts.get(which), finalJid, false);
 | 
			
		||||
							switchToConversation(conversation);
 | 
			
		||||
							switchToConversation(conversation,null);
 | 
			
		||||
							finish();
 | 
			
		||||
						}
 | 
			
		||||
					}).show();
 | 
			
		||||
				} else {
 | 
			
		||||
					Conversation conversation = xmppConnectionService.findOrCreateConversation(this.accounts.get(0), jid, false);
 | 
			
		||||
					switchToConversation(conversation);
 | 
			
		||||
					switchToConversation(conversation,null);
 | 
			
		||||
					finish();
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -282,24 +269,10 @@ public class NewConversationActivity extends XmppActivity {
 | 
			
		|||
		}
 | 
			
		||||
		this.rosterContacts.clear();
 | 
			
		||||
		for (int i = 0; i < accounts.size(); ++i) {
 | 
			
		||||
				xmppConnectionService.getRoster(accounts.get(i),
 | 
			
		||||
						new OnRosterFetchedListener() {
 | 
			
		||||
 | 
			
		||||
							@Override
 | 
			
		||||
							public void onRosterFetched(List<Contact> roster) {
 | 
			
		||||
								rosterContacts.addAll(roster);
 | 
			
		||||
								runOnUiThread(new Runnable() {
 | 
			
		||||
 | 
			
		||||
									@Override
 | 
			
		||||
									public void run() {
 | 
			
		||||
										updateAggregatedContacts();
 | 
			
		||||
									}
 | 
			
		||||
								});
 | 
			
		||||
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
			}
 | 
			
		||||
			rosterContacts.addAll(xmppConnectionService.getRoster(accounts.get(i)));
 | 
			
		||||
		}
 | 
			
		||||
		updateAggregatedContacts();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	public boolean onCreateOptionsMenu(Menu menu) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,128 @@
 | 
			
		|||
package eu.siacs.conversations.ui;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
import java.util.Comparator;
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
import eu.siacs.conversations.R;
 | 
			
		||||
import eu.siacs.conversations.entities.Account;
 | 
			
		||||
import eu.siacs.conversations.entities.Contact;
 | 
			
		||||
import eu.siacs.conversations.entities.Conversation;
 | 
			
		||||
import eu.siacs.conversations.utils.UIHelper;
 | 
			
		||||
import android.content.Intent;
 | 
			
		||||
import android.graphics.Bitmap;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import android.util.Log;
 | 
			
		||||
import android.view.View;
 | 
			
		||||
import android.view.View.OnClickListener;
 | 
			
		||||
import android.widget.ImageView;
 | 
			
		||||
import android.widget.LinearLayout;
 | 
			
		||||
import android.widget.TextView;
 | 
			
		||||
 | 
			
		||||
public class ShareWithActivity extends XmppActivity {
 | 
			
		||||
	
 | 
			
		||||
	private LinearLayout conversations;
 | 
			
		||||
	private LinearLayout contacts;
 | 
			
		||||
	
 | 
			
		||||
	private OnClickListener click = new OnClickListener() {
 | 
			
		||||
		
 | 
			
		||||
		@Override
 | 
			
		||||
		public void onClick(View v) {
 | 
			
		||||
			// TODO Auto-generated method stub
 | 
			
		||||
			
 | 
			
		||||
		}
 | 
			
		||||
	};
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void onCreate(Bundle savedInstanceState) {
 | 
			
		||||
 | 
			
		||||
		super.onCreate(savedInstanceState);
 | 
			
		||||
 | 
			
		||||
		setContentView(R.layout.share_with);
 | 
			
		||||
		setTitle("Share with Conversation");
 | 
			
		||||
		
 | 
			
		||||
		contacts = (LinearLayout) findViewById(R.id.contacts);
 | 
			
		||||
		conversations = (LinearLayout) findViewById(R.id.conversations);
 | 
			
		||||
		
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	public View createContactView(String name, String msgTxt, Bitmap bm) {
 | 
			
		||||
		View view = (View) getLayoutInflater().inflate(R.layout.contact, null);
 | 
			
		||||
		view.setBackgroundResource(R.drawable.greybackground);
 | 
			
		||||
		TextView contactName =(TextView) view.findViewById(R.id.contact_display_name);
 | 
			
		||||
		contactName.setText(name);
 | 
			
		||||
		TextView msg = (TextView) view.findViewById(R.id.contact_jid);
 | 
			
		||||
		msg.setText(msgTxt);
 | 
			
		||||
		ImageView imageView = (ImageView) view.findViewById(R.id.contact_photo);
 | 
			
		||||
		imageView.setImageBitmap(bm);
 | 
			
		||||
		return view;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	@Override
 | 
			
		||||
	void onBackendConnected() {
 | 
			
		||||
		Set<String> displayedContacts = new HashSet<String>();
 | 
			
		||||
		conversations.removeAllViews();
 | 
			
		||||
		List<Conversation> convList = xmppConnectionService.getConversations();
 | 
			
		||||
		Collections.sort(convList, new Comparator<Conversation>() {
 | 
			
		||||
			@Override
 | 
			
		||||
			public int compare(Conversation lhs, Conversation rhs) {
 | 
			
		||||
				return (int) (rhs.getLatestMessage().getTimeSent() - lhs.getLatestMessage().getTimeSent());
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
		for(final Conversation conversation : convList) {
 | 
			
		||||
			View view = createContactView(conversation.getName(), conversation.getLatestMessage().getBody().trim(), UIHelper.getContactPicture(conversation.getContact(),conversation.getName(), 90,this.getApplicationContext()));
 | 
			
		||||
			view.setOnClickListener(new OnClickListener() {
 | 
			
		||||
				
 | 
			
		||||
				@Override
 | 
			
		||||
				public void onClick(View v) {
 | 
			
		||||
					 String sharedText = getIntent().getStringExtra(Intent.EXTRA_TEXT);
 | 
			
		||||
					 switchToConversation(conversation, sharedText);
 | 
			
		||||
					 finish();
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
			conversations.addView(view);
 | 
			
		||||
			if (conversation.getContact() != null) {
 | 
			
		||||
				displayedContacts.add(conversation.getContact().getUuid());
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		contacts.removeAllViews();
 | 
			
		||||
		final List<Contact> contactsList = new ArrayList<Contact>();
 | 
			
		||||
		for(Account account : xmppConnectionService.getAccounts()) {
 | 
			
		||||
			for(final Contact contact : xmppConnectionService.getRoster(account)) {
 | 
			
		||||
				if (!displayedContacts.contains(contact.getUuid())) {
 | 
			
		||||
					contactsList.add(contact);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		Collections.sort(contactsList, new Comparator<Contact>() {
 | 
			
		||||
			@Override
 | 
			
		||||
			public int compare(Contact lhs, Contact rhs) {
 | 
			
		||||
				return lhs.getDisplayName().compareToIgnoreCase(rhs.getDisplayName());
 | 
			
		||||
			}
 | 
			
		||||
		});
 | 
			
		||||
		
 | 
			
		||||
		for(int i = 0; i < contactsList.size(); ++i) {
 | 
			
		||||
			final Contact con = contactsList.get(i);
 | 
			
		||||
			View view = createContactView(con.getDisplayName(), con.getJid(), UIHelper.getContactPicture(con,null, 90,this.getApplicationContext()));
 | 
			
		||||
			view.setOnClickListener(new OnClickListener() {
 | 
			
		||||
				
 | 
			
		||||
				@Override
 | 
			
		||||
				public void onClick(View v) {
 | 
			
		||||
					 String sharedText = getIntent().getStringExtra(Intent.EXTRA_TEXT);
 | 
			
		||||
					 Conversation conversation = xmppConnectionService.findOrCreateConversation(con.getAccount(), con.getJid(), false);
 | 
			
		||||
					 switchToConversation(conversation, sharedText);
 | 
			
		||||
					 finish();
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
			contacts.addView(view);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
package eu.siacs.conversations.ui;
 | 
			
		||||
 | 
			
		||||
import eu.siacs.conversations.R;
 | 
			
		||||
import eu.siacs.conversations.entities.Conversation;
 | 
			
		||||
import eu.siacs.conversations.services.XmppConnectionService;
 | 
			
		||||
import eu.siacs.conversations.services.XmppConnectionService.XmppConnectionBinder;
 | 
			
		||||
import eu.siacs.conversations.utils.ExceptionHelper;
 | 
			
		||||
| 
						 | 
				
			
			@ -103,4 +104,19 @@ public abstract class XmppActivity extends Activity {
 | 
			
		|||
		super.onCreate(savedInstanceState);
 | 
			
		||||
		ExceptionHelper.init(getApplicationContext());
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public void switchToConversation(Conversation conversation, String text) {
 | 
			
		||||
		Intent viewConversationIntent = new Intent(this,
 | 
			
		||||
				ConversationActivity.class);
 | 
			
		||||
		viewConversationIntent.setAction(Intent.ACTION_VIEW);
 | 
			
		||||
		viewConversationIntent.putExtra(ConversationActivity.CONVERSATION,
 | 
			
		||||
				conversation.getUuid());
 | 
			
		||||
		if (text!=null) {
 | 
			
		||||
			viewConversationIntent.putExtra(ConversationActivity.TEXT, text);
 | 
			
		||||
		}
 | 
			
		||||
		viewConversationIntent.setType(ConversationActivity.VIEW_CONVERSATION);
 | 
			
		||||
		viewConversationIntent.setFlags(viewConversationIntent.getFlags()
 | 
			
		||||
				| Intent.FLAG_ACTIVITY_CLEAR_TOP);
 | 
			
		||||
		startActivity(viewConversationIntent);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -720,7 +720,7 @@ public class XmppConnection implements Runnable {
 | 
			
		|||
		if (this.streamFeatures==null) {
 | 
			
		||||
			return false;
 | 
			
		||||
		} else {
 | 
			
		||||
			return this.streamFeatures.hasChild("has");
 | 
			
		||||
			return this.streamFeatures.hasChild("sm");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue