aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel.gultsch@rwth-aachen.de>2014-04-15 15:19:02 +0200
committerDaniel Gultsch <daniel.gultsch@rwth-aachen.de>2014-04-15 15:19:02 +0200
commitbdf9770a61facf0e965c6c4c4dd586e8d9c27b18 (patch)
tree5ababe50f098e7037cbd48c39bcfb1ebb6210610
parent513f3c47b2aa710d205a43b63eff3301812969ce (diff)
made ui with sending images a little smoother
-rw-r--r--res/layout/message_recieved.xml1
-rw-r--r--res/layout/message_sent.xml1
-rw-r--r--res/values/strings.xml4
-rw-r--r--src/eu/siacs/conversations/entities/Message.java1
-rw-r--r--src/eu/siacs/conversations/services/XmppConnectionService.java31
-rw-r--r--src/eu/siacs/conversations/ui/ConversationFragment.java53
6 files changed, 61 insertions, 30 deletions
diff --git a/res/layout/message_recieved.xml b/res/layout/message_recieved.xml
index 32a26c3a1..f4f34232b 100644
--- a/res/layout/message_recieved.xml
+++ b/res/layout/message_recieved.xml
@@ -28,6 +28,7 @@
android:adjustViewBounds="true"
android:maxHeight="288dp"
android:maxWidth="288dp"
+ android:paddingBottom="2dp"
/>
<TextView
diff --git a/res/layout/message_sent.xml b/res/layout/message_sent.xml
index 7b56b2311..1ae422bb4 100644
--- a/res/layout/message_sent.xml
+++ b/res/layout/message_sent.xml
@@ -27,6 +27,7 @@
android:adjustViewBounds="true"
android:maxHeight="288dp"
android:maxWidth="288dp"
+ android:paddingBottom="2dp"
/>
<TextView
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 209f484cd..edea0f826 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -14,7 +14,7 @@
<string name="just_now">just now</string>
<string name="sending">sending&#8230;</string>
<string name="announce_pgp">Renew PGP announcement</string>
- <string name="encrypted_message">Decrypting message. please wait&#8230;</string>
+ <string name="encrypted_message">Decrypting message. Please wait&#8230;</string>
<string name="conference_details">Conference Details</string>
<string name="nick_in_use">Nickname is already in use</string>
<string name="moderator">Moderator</string>
@@ -52,4 +52,6 @@
<string name="add_contact">Add contact</string>
<string name="send_failed">unsuccessful delivery</string>
<string name="send_rejected">rejected</string>
+ <string name="receiving_image">Receiving image file. Please wait&#8230;</string>
+ <string name="preparing_image">Preparing image for transmission. Please wait&#8230;</string>
</resources>
diff --git a/src/eu/siacs/conversations/entities/Message.java b/src/eu/siacs/conversations/entities/Message.java
index a1cf32e83..e2b039670 100644
--- a/src/eu/siacs/conversations/entities/Message.java
+++ b/src/eu/siacs/conversations/entities/Message.java
@@ -15,6 +15,7 @@ public class Message extends AbstractEntity {
public static final int STATUS_SEND = 2;
public static final int STATUS_SEND_FAILED = 3;
public static final int STATUS_SEND_REJECTED = 4;
+ public static final int STATUS_PREPARING = 5;
public static final int ENCRYPTION_NONE = 0;
public static final int ENCRYPTION_PGP = 1;
diff --git a/src/eu/siacs/conversations/services/XmppConnectionService.java b/src/eu/siacs/conversations/services/XmppConnectionService.java
index df0b287a2..54c1c49bd 100644
--- a/src/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/eu/siacs/conversations/services/XmppConnectionService.java
@@ -401,15 +401,28 @@ public class XmppConnectionService extends Service {
return this.fileBackend;
}
- public Message attachImageToConversation(Conversation conversation, String presence, Uri uri) {
- Message message = new Message(conversation, "", Message.ENCRYPTION_NONE);
- message.setPresence(presence);
- message.setType(Message.TYPE_IMAGE);
- File file = this.fileBackend.copyImageToPrivateStorage(message, uri);
- conversation.getMessages().add(message);
- databaseBackend.createMessage(message);
- sendMessage(message, null);
- return message;
+ public void attachImageToConversation(final Conversation conversation, final String presence, final Uri uri) {
+ new Thread(new Runnable() {
+
+ @Override
+ public void run() {
+ Message message = new Message(conversation, "", Message.ENCRYPTION_NONE);
+ message.setPresence(presence);
+ message.setType(Message.TYPE_IMAGE);
+ message.setStatus(Message.STATUS_PREPARING);
+ conversation.getMessages().add(message);
+ if (convChangedListener!=null) {
+ convChangedListener.onConversationListChanged();
+ }
+ getFileBackend().copyImageToPrivateStorage(message, uri);
+ message.setStatus(Message.STATUS_UNSEND);
+ databaseBackend.createMessage(message);
+ if (convChangedListener!=null) {
+ convChangedListener.onConversationListChanged();
+ }
+ sendMessage(message, null);
+ }
+ }).start();
}
diff --git a/src/eu/siacs/conversations/ui/ConversationFragment.java b/src/eu/siacs/conversations/ui/ConversationFragment.java
index d8f9ad3be..ea5f89ebb 100644
--- a/src/eu/siacs/conversations/ui/ConversationFragment.java
+++ b/src/eu/siacs/conversations/ui/ConversationFragment.java
@@ -205,20 +205,19 @@ public class ConversationFragment extends Fragment {
case SENT:
view = (View) inflater.inflate(R.layout.message_sent,
null);
- viewHolder.imageView = (ImageView) view
+ viewHolder.contact_picture = (ImageView) view
.findViewById(R.id.message_photo);
- viewHolder.imageView.setImageBitmap(selfBitmap);
- viewHolder.indicator = (ImageView) view.findViewById(R.id.security_indicator);
+ viewHolder.contact_picture.setImageBitmap(selfBitmap);
break;
case RECIEVED:
view = (View) inflater.inflate(
R.layout.message_recieved, null);
- viewHolder.imageView = (ImageView) view
+ viewHolder.contact_picture = (ImageView) view
.findViewById(R.id.message_photo);
- viewHolder.indicator = (ImageView) view.findViewById(R.id.security_indicator);
+
if (item.getConversation().getMode() == Conversation.MODE_SINGLE) {
- viewHolder.imageView.setImageBitmap(mBitmapCache
+ viewHolder.contact_picture.setImageBitmap(mBitmapCache
.get(item.getConversation().getName(useSubject), item
.getConversation().getContact(),
getActivity()
@@ -230,6 +229,7 @@ public class ConversationFragment extends Fragment {
viewHolder = null;
break;
}
+ viewHolder.indicator = (ImageView) view.findViewById(R.id.security_indicator);
viewHolder.image = (ImageView) view.findViewById(R.id.message_image);
viewHolder.messageBody = (TextView) view
.findViewById(R.id.message_body);
@@ -242,29 +242,47 @@ public class ConversationFragment extends Fragment {
if (type == RECIEVED) {
if (item.getConversation().getMode() == Conversation.MODE_MULTI) {
if (item.getCounterpart() != null) {
- viewHolder.imageView.setImageBitmap(mBitmapCache
+ viewHolder.contact_picture.setImageBitmap(mBitmapCache
.get(item.getCounterpart(), null,
getActivity()
.getApplicationContext()));
} else {
- viewHolder.imageView.setImageBitmap(mBitmapCache
+ viewHolder.contact_picture.setImageBitmap(mBitmapCache
.get(item.getConversation().getName(useSubject),
null, getActivity()
.getApplicationContext()));
}
}
}
+
+ if (item.getEncryption() == Message.ENCRYPTION_NONE) {
+ viewHolder.indicator.setVisibility(View.GONE);
+ } else {
+ viewHolder.indicator.setVisibility(View.VISIBLE);
+ }
+
+
if (item.getType() == Message.TYPE_IMAGE) {
- viewHolder.image.setVisibility(View.VISIBLE);
- if (item.getStatus() != Message.STATUS_RECIEVING) {
- viewHolder.image.setImageBitmap(activity.xmppConnectionService.getFileBackend().getThumbnailFromMessage(item,(int) (metrics.density * 288)));
+ if (item.getStatus() == Message.STATUS_PREPARING) {
+ viewHolder.image.setVisibility(View.GONE);
+ viewHolder.messageBody.setVisibility(View.VISIBLE);
+ viewHolder.messageBody.setText(getString(R.string.preparing_image));
+ viewHolder.messageBody.setTextColor(0xff33B5E5);
+ viewHolder.messageBody.setTypeface(null,Typeface.ITALIC);
+ } else if (item.getStatus() == Message.STATUS_RECIEVING) {
+ viewHolder.image.setVisibility(View.GONE);
viewHolder.messageBody.setVisibility(View.GONE);
- } else {
viewHolder.messageBody.setVisibility(View.VISIBLE);
- viewHolder.messageBody.setText("receiving image file");
+ viewHolder.messageBody.setText(getString(R.string.receiving_image));
+ viewHolder.messageBody.setTextColor(0xff33B5E5);
+ viewHolder.messageBody.setTypeface(null,Typeface.ITALIC);
+ } else {
+ viewHolder.image.setImageBitmap(activity.xmppConnectionService.getFileBackend().getThumbnailFromMessage(item,(int) (metrics.density * 288)));
+ viewHolder.messageBody.setVisibility(View.GONE);
+ viewHolder.image.setVisibility(View.VISIBLE);
}
} else {
- if (viewHolder.image != null) viewHolder.image.setVisibility(View.GONE);
+ viewHolder.image.setVisibility(View.GONE);
viewHolder.messageBody.setVisibility(View.VISIBLE);
String body = item.getBody();
if (body != null) {
@@ -274,22 +292,17 @@ public class ConversationFragment extends Fragment {
viewHolder.messageBody.setTextColor(0xff33B5E5);
viewHolder.messageBody.setTypeface(null,
Typeface.ITALIC);
- viewHolder.indicator.setVisibility(View.VISIBLE);
} else if ((item.getEncryption() == Message.ENCRYPTION_OTR)||(item.getEncryption() == Message.ENCRYPTION_DECRYPTED)) {
viewHolder.messageBody.setText(body.trim());
viewHolder.messageBody.setTextColor(0xff333333);
viewHolder.messageBody.setTypeface(null,
Typeface.NORMAL);
- viewHolder.indicator.setVisibility(View.VISIBLE);
} else {
viewHolder.messageBody.setText(body.trim());
viewHolder.messageBody.setTextColor(0xff333333);
viewHolder.messageBody.setTypeface(null,
Typeface.NORMAL);
- viewHolder.indicator.setVisibility(View.GONE);
}
- } else {
- viewHolder.indicator.setVisibility(View.GONE);
}
}
switch (item.getStatus()) {
@@ -607,7 +620,7 @@ public class ConversationFragment extends Fragment {
protected ImageView indicator;
protected TextView time;
protected TextView messageBody;
- protected ImageView imageView;
+ protected ImageView contact_picture;
}