diff --git a/res/drawable-xhdpi/avatar_chat_mask_outgoing.png b/res/drawable-xhdpi/avatar_chat_mask_outgoing.png new file mode 100644 index 000000000..7e471c425 Binary files /dev/null and b/res/drawable-xhdpi/avatar_chat_mask_outgoing.png differ diff --git a/res/layout/chat_bubble.xml b/res/layout/chat_bubble.xml index 1b0bc6601..ea91abc84 100644 --- a/res/layout/chat_bubble.xml +++ b/res/layout/chat_bubble.xml @@ -27,14 +27,33 @@ android:layout_height="wrap_content" android:layout_toLeftOf="@id/delete_message" android:orientation="horizontal"> - - + + + + + + + + - \ No newline at end of file + diff --git a/src/org/linphone/ChatFragment.java b/src/org/linphone/ChatFragment.java index 924dc6de6..13d29ea46 100644 --- a/src/org/linphone/ChatFragment.java +++ b/src/org/linphone/ChatFragment.java @@ -950,6 +950,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC public Button fileTransferAction; public ImageView messageStatus; public ProgressBar messageSendingInProgress; + public ImageView contactPictureMask; public ViewHolder(View view) { id = view.getId(); @@ -965,6 +966,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC fileTransferAction = (Button) view.findViewById(R.id.file_transfer_action); messageStatus = (ImageView) view.findViewById(R.id.status); messageSendingInProgress = (ProgressBar) view.findViewById(R.id.inprogress); + contactPictureMask = (ImageView) view.findViewById(R.id.mask); } @Override @@ -1191,6 +1193,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC Compatibility.setTextAppearance(holder.contactName, getActivity(), R.style.font3); Compatibility.setTextAppearance(holder.fileTransferAction, getActivity(), R.style.font15); holder.fileTransferAction.setBackgroundResource(R.drawable.resizable_confirm_delete_button); + holder.contactPictureMask.setImageResource(R.drawable.avatar_chat_mask_outgoing); } else { if (isEditMode) { layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); @@ -1203,6 +1206,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC Compatibility.setTextAppearance(holder.contactName, getActivity(), R.style.font9); Compatibility.setTextAppearance(holder.fileTransferAction, getActivity(), R.style.font8); holder.fileTransferAction.setBackgroundResource(R.drawable.resizable_assistant_button); + holder.contactPictureMask.setImageResource(R.drawable.avatar_chat_mask); } holder.bubbleLayout.setLayoutParams(layoutParams); diff --git a/src/org/linphone/LinphoneManager.java b/src/org/linphone/LinphoneManager.java index ba63febf7..93abf091f 100644 --- a/src/org/linphone/LinphoneManager.java +++ b/src/org/linphone/LinphoneManager.java @@ -1116,6 +1116,12 @@ public class LinphoneManager implements LinphoneCoreListener, LinphoneChatMessag routeAudioToReceiver(); } } + if (mIncallWakeLock != null && mIncallWakeLock.isHeld()) { + mIncallWakeLock.release(); + Log.i("Last call ended: releasing incall (CPU only) wake lock"); + } else { + Log.i("Last call ended: no incall (CPU only) wake lock were held"); + } } } if (state == State.CallUpdatedByRemote) { diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java index ce7c57762..60039a8ff 100644 --- a/src/org/linphone/LinphoneService.java +++ b/src/org/linphone/LinphoneService.java @@ -25,6 +25,7 @@ import org.linphone.compatibility.Compatibility; import org.linphone.core.LinphoneAddress; import org.linphone.core.LinphoneCall; import org.linphone.core.LinphoneCall.State; +import org.linphone.core.LinphoneCallLog.CallStatus; import org.linphone.core.LinphoneCore; import org.linphone.core.LinphoneCore.GlobalState; import org.linphone.core.LinphoneCore.RegistrationState; @@ -213,6 +214,12 @@ public final class LinphoneService extends Service { if (state == State.CallEnd || state == State.CallReleased || state == State.Error) { destroyOverlay(); } + + // Enable the following to have missed call notifications + /*if (state == State.CallEnd && call.getCallLog().getStatus() == CallStatus.Missed) { + Notification notif = Compatibility.createSimpleNotification(instance, "Missed call", LinphoneManager.getLc().getMissedCallsCount() + " missed call", mNotifContentIntent); + notifyWrapper(CUSTOM_NOTIF_ID, notif); + }*/ if (state == State.StreamsRunning) { // Workaround bug current call seems to be updated after state changed to streams running