diff --git a/res/layout/main.xml b/res/layout/main.xml
index 9e42fa0fe..14bf5a990 100644
--- a/res/layout/main.xml
+++ b/res/layout/main.xml
@@ -91,14 +91,32 @@
android:scaleType="fitXY"
android:src="@drawable/settings" />
-
+ android:layout_height="wrap_content"
+ android:layout_weight="0.2">
+
+
+
+
+
+
diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java
index b7f8ad49f..d7b5cff37 100644
--- a/src/org/linphone/LinphoneActivity.java
+++ b/src/org/linphone/LinphoneActivity.java
@@ -74,7 +74,7 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
private static final int callActivity = 19;
private static LinphoneActivity instance;
private StatusFragment statusFragment;
- private TextView missedCalls;
+ private TextView missedCalls, missedChats;
private ImageView history, contacts, dialer, settings, chat;
private FragmentsAvailable currentFragment;
private Fragment dialerFragment, messageListenerFragment;
@@ -148,6 +148,7 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
chat = (ImageView) findViewById(R.id.chat);
chat.setOnClickListener(this);
missedCalls = (TextView) findViewById(R.id.missedCalls);
+ missedChats = (TextView) findViewById(R.id.missedChats);
}
private void changeCurrentFragment(FragmentsAvailable newFragmentType, Bundle extras) {
@@ -275,6 +276,9 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
extras.putString("DisplayName", lAddress.getDisplayName());
extras.putString("PictureUri", uri.toString());
}
+
+ LinphoneService.instance().resetMessageNotifCount();
+ displayMissedChats(0);
changeCurrentFragment(FragmentsAvailable.CHAT, extras);
}
@@ -415,6 +419,7 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
if (LinphoneService.isReady()) {
LinphoneUtils.findUriPictureOfContactAndSetDisplayName(from, getContentResolver());
LinphoneService.instance().displayMessageNotification(from.asStringUriOnly(), from.getDisplayName(), message);
+ displayMissedChats(LinphoneService.instance().getMessageNotifCount());
}
}
@@ -441,7 +446,9 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
if (missedCallsCount > 0) {
missedCalls.setText(missedCallsCount + "");
missedCalls.setVisibility(View.VISIBLE);
- missedCalls.startAnimation(AnimationUtils.loadAnimation(LinphoneActivity.this, R.anim.bounce));
+ if (!getResources().getBoolean(R.bool.disable_animations)) {
+ missedCalls.startAnimation(AnimationUtils.loadAnimation(LinphoneActivity.this, R.anim.bounce));
+ }
} else {
missedCalls.clearAnimation();
missedCalls.setVisibility(View.GONE);
@@ -449,6 +456,24 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene
}
});
}
+
+ private void displayMissedChats(final int missedChatCount) {
+ mHandler.post(new Runnable() {
+ @Override
+ public void run() {
+ if (missedChatCount > 0) {
+ missedChats.setText(missedChatCount + "");
+ missedChats.setVisibility(View.VISIBLE);
+ if (!getResources().getBoolean(R.bool.disable_animations)) {
+ missedChats.startAnimation(AnimationUtils.loadAnimation(LinphoneActivity.this, R.anim.bounce));
+ }
+ } else {
+ missedChats.clearAnimation();
+ missedChats.setVisibility(View.GONE);
+ }
+ }
+ });
+ }
@Override
public void onCallStateChanged(LinphoneCall call, State state,
diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java
index 9d32be753..76aab926d 100644
--- a/src/org/linphone/LinphoneService.java
+++ b/src/org/linphone/LinphoneService.java
@@ -48,7 +48,6 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
import android.media.MediaPlayer;
import android.media.RingtoneManager;
-import android.net.Uri;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager.WifiLock;
import android.os.Build;
@@ -115,8 +114,13 @@ public final class LinphoneService extends Service implements LinphoneServiceLis
private static final int IC_LEVEL_OFFLINE=3;
+ public int getMessageNotifCount() {
+ return mMsgNotifCount;
+ }
-
+ public void resetMessageNotifCount() {
+ mMsgNotifCount = 0;
+ }
@Override
public void onCreate() {