picture notification and some drive by bug fixes

This commit is contained in:
iNPUTmice 2014-10-24 14:34:46 +02:00
parent 1dae59141d
commit 864f3610b3
4 changed files with 40 additions and 33 deletions

View file

@ -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()));

View file

@ -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();
@ -732,6 +716,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) {
if (conversationList.get(i).getUuid().equals(uuid)) {

View file

@ -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;

View file

@ -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);