diff --git a/res/values/custom.xml b/res/values/custom.xml index 7d53397f5..547d150aa 100644 --- a/res/values/custom.xml +++ b/res/values/custom.xml @@ -1,7 +1,8 @@ - + HH:mm:ss d MMM + Linphone 2 Linphone Starting up diff --git a/res/values/non_localizable_custom.xml b/res/values/non_localizable_custom.xml index c491a7c79..edb8afa81 100644 --- a/res/values/non_localizable_custom.xml +++ b/res/values/non_localizable_custom.xml @@ -12,6 +12,7 @@ true false true + true true true diff --git a/src/org/linphone/ChatFragment.java b/src/org/linphone/ChatFragment.java index bbcbb55ed..af1f185ec 100644 --- a/src/org/linphone/ChatFragment.java +++ b/src/org/linphone/ChatFragment.java @@ -79,7 +79,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneO previousMessageID = -1; for (ChatMessage msg : messagesList) { - displayMessage(msg.getId(), msg.getMessage(), msg.isIncoming(), messagesLayout); + displayMessage(msg.getId(), msg.getMessage(), msg.getTimestamp(), msg.isIncoming(), messagesLayout); } LinphoneCore lc = LinphoneManager.getLcIfManagerNotDestroyedOrNull(); @@ -89,11 +89,11 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneO return view; } - private void displayMessage(final int id, final String message, final boolean isIncoming, final RelativeLayout layout) { + private void displayMessage(final int id, final String message, final String time, final boolean isIncoming, final RelativeLayout layout) { mHandler.post(new Runnable() { @Override public void run() { - BubbleChat bubble = new BubbleChat(layout.getContext(), id, message, isIncoming, previousMessageID); + BubbleChat bubble = new BubbleChat(layout.getContext(), id, message, time, isIncoming, previousMessageID); previousMessageID = id; layout.addView(bubble.getView()); } @@ -107,6 +107,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneO LinphoneActivity.instance().selectMenu(FragmentsAvailable.CHAT); LinphoneActivity.instance().updateChatFragment(this); } + scrollToEnd(); } @Override @@ -121,7 +122,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneO LinphoneActivity.instance().onMessageSent(sipUri, messageToSend); } - displayMessage(previousMessageID + 1, messageToSend, false, messagesLayout); + displayMessage(previousMessageID + 1, messageToSend, "", false, messagesLayout); scrollToEnd(); } } @@ -137,7 +138,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneO @Override public void onMessageReceived(LinphoneAddress from, String message) { - displayMessage(previousMessageID + 1, message, true, messagesLayout); + displayMessage(previousMessageID + 1, message, "", true, messagesLayout); scrollToEnd(); } } diff --git a/src/org/linphone/ui/BubbleChat.java b/src/org/linphone/ui/BubbleChat.java index 5df6d5e29..79367db0e 100644 --- a/src/org/linphone/ui/BubbleChat.java +++ b/src/org/linphone/ui/BubbleChat.java @@ -17,6 +17,9 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +import java.text.SimpleDateFormat; +import java.util.Calendar; + import org.linphone.R; import android.content.Context; @@ -32,7 +35,7 @@ import android.widget.TextView; public class BubbleChat { private RelativeLayout view; - public BubbleChat(Context context, int id, String message, boolean isIncoming, int previousID) { + public BubbleChat(Context context, int id, String message, String time, boolean isIncoming, int previousID) { view = new RelativeLayout(context); LayoutParams layoutParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); @@ -50,7 +53,8 @@ public class BubbleChat { layoutParams.addRule(RelativeLayout.BELOW, previousID); } - TextView messageView = new TextView(context); + TextView messageView = new TextView(context); + messageView.setId(id); messageView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); messageView.setText(message); messageView.setTextColor(Color.BLACK); @@ -58,9 +62,27 @@ public class BubbleChat { view.setId(id); view.setLayoutParams(layoutParams); view.addView(messageView); + + if (context.getResources().getBoolean(R.bool.display_messages_time)) { + TextView timeView = new TextView(context); + LayoutParams timeParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); + timeParams.addRule(RelativeLayout.BELOW, id); + timeView.setLayoutParams(timeParams); + timeView.setText(timestampToHumanDate(context, time)); + timeView.setTextColor(Color.GRAY); + timeView.setTextSize(12); + view.addView(timeView); + } } public View getView() { return view; } + + private String timestampToHumanDate(Context context, String timestamp) { + SimpleDateFormat dateFormat = new SimpleDateFormat(context.getResources().getString(R.string.messages_date_format)); + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis(Long.parseLong(timestamp)); + return dateFormat.format(cal.getTime()); + } }