added share image intent to android manifest for testing purposes

This commit is contained in:
iNPUTmice 2014-06-03 14:10:18 +02:00
parent 41834b5e24
commit 0102032fc5
2 changed files with 66 additions and 43 deletions

View file

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

View file

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