picture notification and some drive by bug fixes
This commit is contained in:
parent
1dae59141d
commit
864f3610b3
|
@ -1,5 +1,6 @@
|
|||
package eu.siacs.conversations.services;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.regex.Matcher;
|
||||
|
@ -11,6 +12,7 @@ import android.app.PendingIntent;
|
|||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Bitmap;
|
||||
import android.net.Uri;
|
||||
import android.os.PowerManager;
|
||||
import android.os.SystemClock;
|
||||
|
@ -109,19 +111,31 @@ public class NotificationService {
|
|||
mBuilder.setLargeIcon(mXmppConnectionService
|
||||
.getAvatarService().get(conversation, getPixel(64)));
|
||||
mBuilder.setContentTitle(conversation.getName());
|
||||
StringBuilder text = new StringBuilder();
|
||||
for (int i = 0; i < messages.size(); ++i) {
|
||||
text.append(getReadableBody(messages.get(i)));
|
||||
if (i != messages.size() - 1) {
|
||||
text.append("\n");
|
||||
if (messages.size() == 1 && messages.get(0).getType() == Message.TYPE_IMAGE) {
|
||||
try {
|
||||
Bitmap bitmap = mXmppConnectionService.getFileBackend().getThumbnail(messages.get(0),getPixel(288),false);
|
||||
mBuilder.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(bitmap));
|
||||
mBuilder.setContentText(mXmppConnectionService.getString(R.string.image_file));
|
||||
} catch (FileNotFoundException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
} else {
|
||||
StringBuilder text = new StringBuilder();
|
||||
for (int i = 0; i < messages.size(); ++i) {
|
||||
text.append(getReadableBody(messages.get(i)));
|
||||
if (i != messages.size() - 1) {
|
||||
text.append("\n");
|
||||
}
|
||||
}
|
||||
mBuilder.setStyle(new NotificationCompat.BigTextStyle()
|
||||
.bigText(text.toString()));
|
||||
mBuilder.setContentText(getReadableBody(messages.get(0)));
|
||||
if (notify) {
|
||||
mBuilder.setTicker(getReadableBody(messages
|
||||
.get(messages.size() - 1)));
|
||||
}
|
||||
}
|
||||
mBuilder.setStyle(new NotificationCompat.BigTextStyle()
|
||||
.bigText(text.toString()));
|
||||
mBuilder.setContentText(getReadableBody(messages.get(0)));
|
||||
if (notify) {
|
||||
mBuilder.setTicker(getReadableBody(messages
|
||||
.get(messages.size() - 1)));
|
||||
}
|
||||
mBuilder.setContentIntent(createContentIntent(conversation
|
||||
.getUuid()));
|
||||
|
|
|
@ -629,23 +629,11 @@ public class ConversationActivity extends XmppActivity implements
|
|||
@Override
|
||||
protected void onNewIntent(Intent intent) {
|
||||
if (xmppConnectionServiceBound) {
|
||||
if ((Intent.ACTION_VIEW.equals(intent.getAction()) && (VIEW_CONVERSATION
|
||||
.equals(intent.getType())))) {
|
||||
String convToView = (String) intent.getExtras().get(
|
||||
CONVERSATION);
|
||||
updateConversationList();
|
||||
for (int i = 0; i < conversationList.size(); ++i) {
|
||||
if (conversationList.get(i).getUuid().equals(convToView)) {
|
||||
setSelectedConversation(conversationList.get(i));
|
||||
break;
|
||||
}
|
||||
}
|
||||
paneShouldBeOpen = false;
|
||||
String text = intent.getExtras().getString(TEXT, null);
|
||||
swapConversationFragment().setText(text);
|
||||
if (intent != null
|
||||
&& VIEW_CONVERSATION.equals(getIntent().getType())) {
|
||||
handleViewConversationIntent(intent);
|
||||
}
|
||||
} else {
|
||||
handledViewIntent = false;
|
||||
setIntent(intent);
|
||||
}
|
||||
}
|
||||
|
@ -705,11 +693,7 @@ public class ConversationActivity extends XmppActivity implements
|
|||
mOpenConverstaion = null;
|
||||
} else if (getIntent() != null
|
||||
&& VIEW_CONVERSATION.equals(getIntent().getType())) {
|
||||
String uuid = (String) getIntent().getExtras().get(CONVERSATION);
|
||||
String text = getIntent().getExtras().getString(TEXT, null);
|
||||
selectConversationByUuid(uuid);
|
||||
paneShouldBeOpen = false;
|
||||
swapConversationFragment().setText(text);
|
||||
handleViewConversationIntent(getIntent());
|
||||
setIntent(null);
|
||||
} else {
|
||||
showConversationsOverview();
|
||||
|
@ -731,6 +715,14 @@ public class ConversationActivity extends XmppActivity implements
|
|||
}
|
||||
ExceptionHelper.checkForCrash(this, this.xmppConnectionService);
|
||||
}
|
||||
|
||||
private void handleViewConversationIntent(Intent intent) {
|
||||
String uuid = (String) intent.getExtras().get(CONVERSATION);
|
||||
String text = intent.getExtras().getString(TEXT, null);
|
||||
selectConversationByUuid(uuid);
|
||||
paneShouldBeOpen = false;
|
||||
swapConversationFragment().setText(text);
|
||||
}
|
||||
|
||||
private void selectConversationByUuid(String uuid) {
|
||||
for (int i = 0; i < conversationList.size(); ++i) {
|
||||
|
|
|
@ -58,7 +58,6 @@ public abstract class XmppActivity extends Activity {
|
|||
|
||||
public XmppConnectionService xmppConnectionService;
|
||||
public boolean xmppConnectionServiceBound = false;
|
||||
protected boolean handledViewIntent = false;
|
||||
|
||||
protected int mPrimaryTextColor;
|
||||
protected int mSecondaryTextColor;
|
||||
|
|
|
@ -100,6 +100,8 @@ public class ConversationAdapter extends ArrayAdapter<Conversation> {
|
|||
mLastMessage.setText("");
|
||||
}
|
||||
} else if (message.getEncryption() == Message.ENCRYPTION_PGP) {
|
||||
imagePreview.setVisibility(View.GONE);
|
||||
mLastMessage.setVisibility(View.VISIBLE);
|
||||
mLastMessage.setText(R.string.encrypted_message_received);
|
||||
} else {
|
||||
mLastMessage.setVisibility(View.GONE);
|
||||
|
|
Loading…
Reference in a new issue