diff --git a/res/layout/chat.xml b/res/layout/chat.xml
index f288b0b35..8a181154e 100644
--- a/res/layout/chat.xml
+++ b/res/layout/chat.xml
@@ -13,61 +13,23 @@
-
-
-
-
-
-
+ android:padding="20dp"/>
+ android:padding="15dp"/>
+ android:layout_width="70dp"
+ android:layout_height="match_parent"
+ android:padding="15dp"/>
-
+
+
-
-
-
-
-
-
-
-
+
diff --git a/res/layout/chat_bubble_incoming.xml b/res/layout/chat_bubble_incoming.xml
index 7a93998d4..f6e185a48 100644
--- a/res/layout/chat_bubble_incoming.xml
+++ b/res/layout/chat_bubble_incoming.xml
@@ -7,13 +7,34 @@
android:gravity="left"
android:orientation="horizontal" >
-
+
+
+
+
+
+
+
+
diff --git a/res/layout/chat_bubble_outgoing.xml b/res/layout/chat_bubble_outgoing.xml
index 916ebe446..cc6951d8b 100644
--- a/res/layout/chat_bubble_outgoing.xml
+++ b/res/layout/chat_bubble_outgoing.xml
@@ -38,12 +38,21 @@
+
+
-
+
+
+
+
+
+
+
@@ -83,7 +100,7 @@
android:layout_width="25dp"
android:layout_height="25dp"
android:background="@drawable/chat_list_indicator"
- style="@style/font17"
+ style="@style/font18"
android:gravity="center"
android:layout_above="@+id/lastMessage"
android:layout_alignParentRight="true"
diff --git a/res/layout/conference_header.xml b/res/layout/conference_header.xml
index d3ad9c084..9379fc2fd 100644
--- a/res/layout/conference_header.xml
+++ b/res/layout/conference_header.xml
@@ -1,41 +1,48 @@
-
-
-
+ android:background="@color/colorH">
+
+
+
+
+
+
+
+
+
-
-
+ android:layout_centerInParent="true"
+ android:padding="10dp"
+ android:src="@drawable/pause_big_default"/>
-
\ No newline at end of file
+
+
+
\ No newline at end of file
diff --git a/res/layout/history_detail.xml b/res/layout/history_detail.xml
index 825b5ae75..ee8a3699b 100644
--- a/res/layout/history_detail.xml
+++ b/res/layout/history_detail.xml
@@ -20,7 +20,7 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
- android:padding="10dp"
+ android:padding="20dp"
android:adjustViewBounds="true"/>
@@ -30,7 +30,7 @@
android:background="@drawable/toolbar_button"
android:contentDescription="@string/content_description_add_contact"
android:layout_alignParentRight="true"
- android:padding="10dp"
+ android:padding="15dp"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:adjustViewBounds="true"/>
@@ -57,8 +57,8 @@
android:id="@+id/contact_picture"
android:src="@drawable/avatar"
android:contentDescription="@string/content_description_contact_picture"
- android:layout_width="120dp"
- android:layout_height="120dp"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
android:adjustViewBounds="true"
android:layout_alignParentLeft="true"
android:layout_marginLeft="5dp"/>
@@ -67,8 +67,8 @@
android:id="@+id/mask"
android:src="@drawable/avatar_mask"
android:contentDescription="@string/content_description_contact_picture"
- android:layout_width="120dp"
- android:layout_height="120dp"
+ android:layout_width="100dp"
+ android:layout_height="100dp"
android:adjustViewBounds="true"
android:layout_alignParentLeft="true"
android:layout_marginLeft="5dp"/>
@@ -78,6 +78,7 @@
@@ -95,41 +96,27 @@
android:paddingTop="20dp"
android:gravity="center"
android:orientation="horizontal">
-
-
-
-
-
-
-
+
-
+
-
0 && isNetworkReachable) {
LinphoneChatMessage message = chatRoom.createLinphoneChatMessage(messageToSend);
chatRoom.sendChatMessage(message);
- LinphoneActivity.instance().displayChat(lAddress.toString());
+ message.setListener(LinphoneManager.getInstance());
+ Contact lContact = ContactsManager.getInstance().findContactWithAddress(getActivity().getContentResolver(), lAddress);
+ if(lContact != null)
+ exitNewConversationMode(lContact,lAddress.asStringUriOnly(),null);
+ else
+ exitNewConversationMode(null,lAddress.asStringUriOnly(),lAddress.getUserName());
}
}
} else {
@@ -692,6 +749,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
private void sendImageMessage(String path, int imageSize) {
LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
boolean isNetworkReachable = lc == null ? false : lc.isNetworkReachable();
+ invalidate();
if (chatRoom != null && path != null && path.length() > 0 && isNetworkReachable) {
try {
@@ -718,8 +776,8 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
public FileUploadPrepareTask(Context context, String fileToUploadPath, int size) {
path = fileToUploadPath;
imageSize = size;
- uploadLayout.setVisibility(View.VISIBLE);
- textLayout.setVisibility(View.GONE);
+ //uploadLayout.setVisibility(View.VISIBLE);
+ //textLayout.setVisibility(View.GONE);
progressDialog = new ProgressDialog(context);
progressDialog.setIndeterminate(true);
@@ -860,6 +918,24 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
return null;
}
+ private void exitNewConversationMode(Contact c, String address, String username){
+ searchContactField.setVisibility(View.GONE);
+ sipUri = address;
+ messagesList.setVisibility(View.VISIBLE);
+ contactName.setVisibility(View.VISIBLE);
+ edit.setVisibility(View.VISIBLE);
+ back.setVisibility(View.VISIBLE);
+ startCall.setVisibility(View.VISIBLE);
+ newChatConversation = false;
+ chatRoom = LinphoneManager.getLc().getOrCreateChatRoom(address);
+
+ if(c != null)
+ changeDisplayedChat(address,c.getName(),null);
+ else
+ changeDisplayedChat(address,username,null);
+ dispayMessageList();
+ }
+
private void showPopupMenuAskingImageSize(final String filePath) {
filePathToUpload = filePath;
try {
@@ -891,12 +967,12 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
@Override
public void onLinphoneChatMessageStateChanged(LinphoneChatMessage msg, State state) {
- if (state == State.FileTransferDone || state == State.FileTransferError) {
- uploadLayout.setVisibility(View.GONE);
- textLayout.setVisibility(View.VISIBLE);
- progressBar.setProgress(0);
- currentMessageInFileTransferUploadState = null;
- }
+ //if (state == State.FileTransferDone || state == State.FileTransferError) {
+ // uploadLayout.setVisibility(View.GONE);
+ // textLayout.setVisibility(View.VISIBLE);
+ // progressBar.setProgress(0);
+ // currentMessageInFileTransferUploadState = null;
+ //}
invalidate();
}
@@ -937,7 +1013,6 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
FilterResults results) {
if (results.count > 0) {
- Log.w(results.count);
contacts.clear();
contacts = (List) results.values;
notifyDataSetChanged();
@@ -953,9 +1028,6 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
List result = new ArrayList();
if(constraint != null) {
for (ContactAddress c : contacts) {
- Log.w(constraint.toString());
- Log.w(c.mContact.getName());
- Log.w(c.mAddress);
if (c.mContact.getName().toLowerCase().startsWith(constraint.toString()) || c.mAddress.startsWith(constraint.toString())) {
result.add(c);
}
@@ -1025,15 +1097,14 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
final TextView address = (TextView) view.findViewById(R.id.contact_address);
address.setText(contact.mAddress);
+ final String a = contact.mAddress;
+ final Contact c = contact.mContact;
+
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
- searchContactField.setVisibility(View.GONE);
- sipUri = address.getText().toString();
- messagesList.setVisibility(View.VISIBLE);
- newChatConversation = false;
- chatRoom = LinphoneManager.getLc().getOrCreateChatRoom(address.getText().toString());
- dispayMessageList();
+ exitNewConversationMode(c, a,null);
+
}
});
diff --git a/src/org/linphone/ChatListFragment.java b/src/org/linphone/ChatListFragment.java
index 541b1960d..934981150 100644
--- a/src/org/linphone/ChatListFragment.java
+++ b/src/org/linphone/ChatListFragment.java
@@ -59,6 +59,7 @@ import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.ListView;
+import android.widget.RelativeLayout;
import android.widget.TextView;
/**
@@ -69,7 +70,8 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
private List mConversations, mDrafts;
private ListView chatList;
private TextView noChatHistory;
- private ImageView edit, selectAll, deselectAll, delete, newDiscussion, contactPicture;
+ private ImageView edit, selectAll, deselectAll, delete, newDiscussion, contactPicture, cancel;
+ private RelativeLayout editList, topbar;
private boolean isEditMode = false;
private boolean useLinphoneStorage;
@@ -85,6 +87,12 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
noChatHistory = (TextView) view.findViewById(R.id.noChatHistory);
+ editList = (RelativeLayout) view.findViewById(R.id.edit_list);
+ topbar = (RelativeLayout) view.findViewById(R.id.top_bar);
+
+ cancel = (ImageView) view.findViewById(R.id.cancel);
+ cancel.setOnClickListener(this);
+
edit = (ImageView) view.findViewById(R.id.edit);
edit.setOnClickListener(this);
@@ -99,7 +107,6 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
delete = (ImageView) view.findViewById(R.id.delete);
delete.setOnClickListener(this);
- delete.setVisibility(View.INVISIBLE);
return view;
}
@@ -127,10 +134,8 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
public void quitEditMode(){
isEditMode = false;
- selectAll.setVisibility(View.GONE);
- deselectAll.setVisibility(View.GONE);
- delete.setVisibility(View.GONE);
- edit.setVisibility(View.VISIBLE);
+ editList.setVisibility(View.GONE);
+ topbar.setVisibility(View.VISIBLE);
refresh();
}
@@ -257,6 +262,11 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
return;
}
+ if (id == R.id.cancel) {
+ quitEditMode();
+ return;
+ }
+
if (id == R.id.delete) {
final Dialog dialog = LinphoneActivity.instance().displayDialog(getString(R.string.delete_text));
Button delete = (Button) dialog.findViewById(R.id.delete);
@@ -282,9 +292,8 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
return;
}
else if (id == R.id.edit) {
- edit.setVisibility(View.GONE);
- selectAll.setVisibility(View.VISIBLE);
- delete.setVisibility(View.VISIBLE);
+ topbar.setVisibility(View.GONE);
+ editList.setVisibility(View.VISIBLE);
isEditMode = true;
hideAndDisplayMessageIfNoChat();
}
@@ -461,27 +470,23 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
Contact lContact = ContactsManager.getInstance().findContactWithAddress(getActivity().getContentResolver(), address);
String message = "";
- Long time = null;
+ Long time;
TextView lastMessageView = (TextView) view.findViewById(R.id.lastMessage);
LinphoneChatRoom chatRoom = LinphoneManager.getLc().getOrCreateChatRoom(contact);
LinphoneChatMessage[] history = chatRoom.getHistory(1);
LinphoneChatMessage msg = history[0];
- if (msg.getText() != null && msg.getText().length() > 0) {
+ TextView date = (TextView) view.findViewById(R.id.date);
+ if(msg.getFileTransferInformation() != null || msg.getExternalBodyUrl() != null || msg.getAppData() != null ){
+ lastMessageView.setBackgroundResource(R.drawable.chat_file_message);
+ time = msg.getTime();
+ date.setText(timestampToHumanDate(time));
+ } else if (msg.getText() != null && msg.getText().length() > 0 ){
message = msg.getText();
time = msg.getTime();
+ date.setText(timestampToHumanDate(time));
lastMessageView.setText(message);
- } else {
- if(msg.getFileTransferInformation() != null || msg.getExternalBodyUrl() != null){
- lastMessageView.setBackgroundResource(R.drawable.chat_file_message);
- time = msg.getTime();
-
- }
}
- TextView date = (TextView) view.findViewById(R.id.date);
- if(time != null)
- date.setText(timestampToHumanDate(time));
-
TextView sipUri = (TextView) view.findViewById(R.id.sipUri);
sipUri.setSelected(true); // For animation
@@ -495,8 +500,11 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
view.findViewById(R.id.draft).setVisibility(View.VISIBLE);
}
+ TextView unreadMessages = (TextView) view.findViewById(R.id.unreadMessages);
+
CheckBox select = (CheckBox) view.findViewById(R.id.delete);
if (isEditMode) {
+ unreadMessages.setVisibility(View.GONE);
select.setVisibility(View.VISIBLE);
select.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
@@ -510,10 +518,9 @@ public class ChatListFragment extends Fragment implements OnClickListener, OnIte
select.setChecked(false);
}
} else {
- delete.setVisibility(View.GONE);
+ unreadMessages.setVisibility(View.GONE);
+ //delete.setVisibility(View.GONE);
}
-
- TextView unreadMessages = (TextView) view.findViewById(R.id.unreadMessages);
if (unreadMessagesCount > 0) {
unreadMessages.setVisibility(View.VISIBLE);
diff --git a/src/org/linphone/ui/BubbleChat.java b/src/org/linphone/ui/BubbleChat.java
index ebc7e26cd..7ec8b9e11 100644
--- a/src/org/linphone/ui/BubbleChat.java
+++ b/src/org/linphone/ui/BubbleChat.java
@@ -26,6 +26,8 @@ import java.util.Calendar;
import java.util.HashMap;
import java.util.Map.Entry;
+import org.linphone.Contact;
+import org.linphone.ContactsManager;
import org.linphone.LinphoneManager;
import org.linphone.LinphoneUtils;
import org.linphone.R;
@@ -73,7 +75,7 @@ public class BubbleChat implements LinphoneChatMessage.LinphoneChatMessageListen
private static final HashMap emoticons = new HashMap();
private LinearLayout view;
- private ImageView statusView;
+ private ImageView statusView, contactPicture;
private LinphoneChatMessage nativeMessage;
private Context mContext;
private static final int SIZE_MAX = 512;
@@ -81,7 +83,7 @@ public class BubbleChat implements LinphoneChatMessage.LinphoneChatMessageListen
private Bitmap defaultBitmap;
@SuppressLint("InflateParams")
- public BubbleChat(final Context context, LinphoneChatMessage message) {
+ public BubbleChat(final Context context, LinphoneChatMessage message, Contact c) {
if (message == null) {
return;
}
@@ -94,7 +96,7 @@ public class BubbleChat implements LinphoneChatMessage.LinphoneChatMessageListen
view = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.chat_bubble_incoming, null);
}
- defaultBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.chat_photo_default);
+ defaultBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.chat_picture_over);
view.setId(message.getStorageId());
@@ -102,6 +104,12 @@ public class BubbleChat implements LinphoneChatMessage.LinphoneChatMessageListen
String externalBodyUrl = message.getExternalBodyUrl();
LinphoneContent fileTransferContent = message.getFileTransferInformation();
+
+ if(LinphoneManager.getInstance().getMessageUploadPending() != null){
+ spinner.setVisibility(View.VISIBLE);
+ nativeMessage.setListener(LinphoneManager.getInstance());
+ }
+
if (externalBodyUrl != null || fileTransferContent != null) {
Button download = (Button) view.findViewById(R.id.download);
ImageView imageView = (ImageView) view.findViewById(R.id.image);
@@ -158,8 +166,24 @@ public class BubbleChat implements LinphoneChatMessage.LinphoneChatMessageListen
}
TextView contact = (TextView) view.findViewById(R.id.contact_header);
- contact.setText(timestampToHumanDate(context, message.getTime()) + " - " + LinphoneUtils.getUsernameFromAddress(message.getFrom().asStringUriOnly()));
-
+
+
+
+ contactPicture = (ImageView) view.findViewById(R.id.contact_picture);
+
+ String displayName = nativeMessage.getFrom().getUserName();
+ final String sipUri = nativeMessage.getFrom().asStringUriOnly();
+ if(!nativeMessage.isOutgoing()) {
+ if (c != null) {
+ displayName = c.getName();
+ LinphoneUtils.setImagePictureFromUri(view.getContext(), contactPicture, c.getPhotoUri(), c.getThumbnailUri());
+ } else {
+ contactPicture.setImageResource(R.drawable.avatar);
+ }
+ }
+
+ contact.setText(timestampToHumanDate(context, message.getTime()) + " - " + displayName);
+
LinphoneChatMessage.State status = message.getStatus();
statusView = (ImageView) view.findViewById(R.id.status);
inprogress = (ProgressBar) view.findViewById(R.id.inprogress);