added share image intent to android manifest for testing purposes

iNPUTmice created

Change summary

AndroidManifest.xml                                  |   1 
src/eu/siacs/conversations/ui/ShareWithActivity.java | 108 ++++++++-----
2 files changed, 66 insertions(+), 43 deletions(-)

Detailed changes

AndroidManifest.xml 🔗

@@ -93,6 +93,7 @@
                 <action android:name="android.intent.action.SEND" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <data android:mimeType="text/plain" />
+                <data android:mimeType="image/*" />
             </intent-filter>
         </activity>
     </application>

src/eu/siacs/conversations/ui/ShareWithActivity.java 🔗

@@ -15,8 +15,10 @@ import eu.siacs.conversations.utils.UIHelper;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.graphics.Bitmap;
+import android.net.Uri;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
+import android.util.Log;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.widget.ImageView;
@@ -24,10 +26,10 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 
 public class ShareWithActivity extends XmppActivity {
-	
+
 	private LinearLayout conversations;
 	private LinearLayout contacts;
-	
+
 	@Override
 	protected void onCreate(Bundle savedInstanceState) {
 
@@ -35,17 +37,17 @@ public class ShareWithActivity extends XmppActivity {
 
 		setContentView(R.layout.share_with);
 		setTitle(getString(R.string.title_activity_sharewith));
-		
+
 		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);
+		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);
@@ -53,69 +55,89 @@ public class ShareWithActivity extends XmppActivity {
 		imageView.setImageBitmap(bm);
 		return view;
 	}
-	
-	
-	
+
 	@Override
 	void onBackendConnected() {
-		SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+		final boolean isImage = (getIntent().getType() != null && getIntent()
+				.getType().startsWith("image/"));
+		SharedPreferences preferences = PreferenceManager
+				.getDefaultSharedPreferences(this);
 		boolean useSubject = preferences.getBoolean("use_subject_in_muc", true);
-		
+
 		Set<Contact> displayedContacts = new HashSet<Contact>();
 		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());
+				return (int) (rhs.getLatestMessage().getTimeSent() - lhs
+						.getLatestMessage().getTimeSent());
 			}
 		});
-		for(final Conversation conversation : convList) {
-			View view = createContactView(conversation.getName(useSubject),
-					conversation.getLatestMessage().getBody().trim(),
-					UIHelper.getContactPicture(conversation, 48,
-						this.getApplicationContext(), false));
-			view.setOnClickListener(new OnClickListener() {
-				
-				@Override
-				public void onClick(View v) {
-					 String sharedText = getIntent().getStringExtra(Intent.EXTRA_TEXT);
-					 switchToConversation(conversation, sharedText,true);
-					 finish();
-				}
-			});
-			conversations.addView(view);
-			displayedContacts.add(conversation.getContact());
+		for (final Conversation conversation : convList) {
+			if (!isImage || conversation.getMode() == Conversation.MODE_SINGLE) {
+				View view = createContactView(
+						conversation.getName(useSubject),
+						conversation.getLatestMessage().getBody().trim(),
+						UIHelper.getContactPicture(conversation, 48,
+								this.getApplicationContext(), false));
+				view.setOnClickListener(new OnClickListener() {
+
+					@Override
+					public void onClick(View v) {
+						String sharedText = null;
+						if (isImage) {
+							Uri uri = (Uri) getIntent().getParcelableExtra(Intent.EXTRA_STREAM);
+							Log.d(LOGTAG,uri.toString());
+						} else {
+							sharedText = getIntent().getStringExtra(
+								Intent.EXTRA_TEXT);
+						}
+						switchToConversation(conversation, sharedText, true);
+						finish();
+					}
+				});
+				conversations.addView(view);
+				displayedContacts.add(conversation.getContact());
+			}
 		}
 		contacts.removeAllViews();
 		List<Contact> contactsList = new ArrayList<Contact>();
-		for(Account account : xmppConnectionService.getAccounts()) {
-			for(Contact contact : account.getRoster().getContacts()) {
-				if (!displayedContacts.contains(contact)&&(contact.showInRoster())) {
+		for (Account account : xmppConnectionService.getAccounts()) {
+			for (Contact contact : account.getRoster().getContacts()) {
+				if (!displayedContacts.contains(contact)
+						&& (contact.showInRoster())) {
 					contactsList.add(contact);
 				}
 			}
 		}
-		
+
 		Collections.sort(contactsList, new Comparator<Contact>() {
 			@Override
 			public int compare(Contact lhs, Contact rhs) {
-				return lhs.getDisplayName().compareToIgnoreCase(rhs.getDisplayName());
+				return lhs.getDisplayName().compareToIgnoreCase(
+						rhs.getDisplayName());
 			}
 		});
-		
-		for(int i = 0; i < contactsList.size(); ++i) {
+
+		for (int i = 0; i < contactsList.size(); ++i) {
 			final Contact con = contactsList.get(i);
-			View view = createContactView(con.getDisplayName(), con.getJid(), 
-					UIHelper.getContactPicture(con, 48, this.getApplicationContext(), false));
+			View view = createContactView(
+					con.getDisplayName(),
+					con.getJid(),
+					UIHelper.getContactPicture(con, 48,
+							this.getApplicationContext(), false));
 			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,true);
-					 finish();
+					String sharedText = getIntent().getStringExtra(
+							Intent.EXTRA_TEXT);
+					Conversation conversation = xmppConnectionService
+							.findOrCreateConversation(con.getAccount(),
+									con.getJid(), false);
+					switchToConversation(conversation, sharedText, true);
+					finish();
 				}
 			});
 			contacts.addView(view);