diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 2dfe2b22f..41d773567 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -93,6 +93,7 @@ + diff --git a/src/eu/siacs/conversations/ui/ShareWithActivity.java b/src/eu/siacs/conversations/ui/ShareWithActivity.java index 0a8ee1a70..bf64248ba 100644 --- a/src/eu/siacs/conversations/ui/ShareWithActivity.java +++ b/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 displayedContacts = new HashSet(); conversations.removeAllViews(); List convList = xmppConnectionService.getConversations(); Collections.sort(convList, new Comparator() { @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 contactsList = new ArrayList(); - 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() { @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);