diff --git a/res/layout/accounts.xml b/res/layout/accounts.xml
new file mode 100644
index 000000000..7716e595c
--- /dev/null
+++ b/res/layout/accounts.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
diff --git a/res/layout/status.xml b/res/layout/status.xml
index 4471819e5..e7d6fb4bb 100644
--- a/res/layout/status.xml
+++ b/res/layout/status.xml
@@ -9,7 +9,7 @@
diff --git a/src/org/linphone/StatusFragment.java b/src/org/linphone/StatusFragment.java
index be607da73..9aec6bc38 100644
--- a/src/org/linphone/StatusFragment.java
+++ b/src/org/linphone/StatusFragment.java
@@ -17,9 +17,14 @@ 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.util.ArrayList;
+import java.util.HashMap;
+
import org.linphone.core.LinphoneCall;
+import org.linphone.core.LinphoneCore;
import org.linphone.core.LinphoneCore.MediaEncryption;
import org.linphone.core.LinphoneCore.RegistrationState;
+import org.linphone.core.LinphoneProxyConfig;
import org.linphone.ui.SlidingDrawer;
import android.app.Activity;
@@ -30,7 +35,13 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
+import android.widget.Adapter;
import android.widget.ImageView;
+import android.widget.ListAdapter;
+import android.widget.ListView;
+import android.widget.RelativeLayout;
+import android.widget.RelativeLayout.LayoutParams;
+import android.widget.SimpleAdapter;
import android.widget.TextView;
/**
@@ -42,6 +53,7 @@ public class StatusFragment extends Fragment {
private Handler refreshHandler = new Handler();
private TextView statusText, exit;
private ImageView statusLed, callQuality, encryption;
+ private RelativeLayout sliderContent;
private SlidingDrawer drawer;
private Runnable mCallQualityUpdater;
private boolean isInCall, isAttached = false;
@@ -58,6 +70,7 @@ public class StatusFragment extends Fragment {
encryption = (ImageView) view.findViewById(R.id.encryption);
drawer = (SlidingDrawer) view.findViewById(R.id.statusBar);
+ sliderContent = (RelativeLayout) view.findViewById(R.id.content);
exit = (TextView) view.findViewById(R.id.exit);
exit.setOnClickListener(new OnClickListener() {
@Override
@@ -100,7 +113,8 @@ public class StatusFragment extends Fragment {
if (getResources().getBoolean(R.bool.lock_statusbar)) {
return;
}
-
+
+ populateSliderContent();
if (getResources().getBoolean(R.bool.disable_animations)) {
drawer.toggle();
} else {
@@ -108,6 +122,28 @@ public class StatusFragment extends Fragment {
}
}
+ private void populateSliderContent() {
+ sliderContent.removeAllViews();
+
+ ListView accounts = new ListView(getActivity());
+ accounts.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
+
+ accounts.setDividerHeight(0);
+ ArrayList> hashMapAccountsStateList = new ArrayList>();
+ for (LinphoneProxyConfig lpc : LinphoneManager.getLc().getProxyConfigList()) {
+ HashMap entitiesHashMap = new HashMap();
+ entitiesHashMap.put("Identity", lpc.getIdentity().split("sip:")[1]);
+ entitiesHashMap.put("State", Integer.toString(getStatusIconResource(lpc.getState())));
+ hashMapAccountsStateList.add(entitiesHashMap);
+ }
+ Adapter adapterForList = new SimpleAdapter(getActivity(), hashMapAccountsStateList, R.layout.accounts,
+ new String[] {"Identity", "State"},
+ new int[] { R.id.Identity, R.id.State });
+ accounts.setAdapter((ListAdapter) adapterForList);
+
+ sliderContent.addView(accounts);
+ }
+
public void registrationStateChanged(final RegistrationState state) {
if (!isAttached)
return;
@@ -115,27 +151,48 @@ public class StatusFragment extends Fragment {
mHandler.post(new Runnable() {
@Override
public void run() {
- try {
- if (state == RegistrationState.RegistrationOk && LinphoneManager.getLc().getDefaultProxyConfig().isRegistered()) {
- statusLed.setImageResource(R.drawable.led_connected);
- statusText.setText(getString(R.string.status_connected));
- } else if (state == RegistrationState.RegistrationProgress) {
- statusLed.setImageResource(R.drawable.led_inprogress);
- statusText.setText(getString(R.string.status_in_progress));
- } else if (state == RegistrationState.RegistrationFailed) {
- statusLed.setImageResource(R.drawable.led_error);
- statusText.setText(getString(R.string.status_error));
- } else {
- statusLed.setImageResource(R.drawable.led_disconnected);
- statusText.setText(getString(R.string.status_not_connected));
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
+ statusLed.setImageResource(getStatusIconResource(state));
+ statusText.setText(getStatusIconText(state));
}
});
}
+ private int getStatusIconResource(LinphoneCore.RegistrationState state) {
+ try {
+ if (state == RegistrationState.RegistrationOk && LinphoneManager.getLc().getDefaultProxyConfig().isRegistered()) {
+ return R.drawable.led_connected;
+ } else if (state == RegistrationState.RegistrationProgress) {
+ return R.drawable.led_inprogress;
+ } else if (state == RegistrationState.RegistrationFailed) {
+ return R.drawable.led_error;
+ } else {
+ return R.drawable.led_disconnected;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return -1;
+ }
+
+ private String getStatusIconText(LinphoneCore.RegistrationState state) {
+ try {
+ if (state == RegistrationState.RegistrationOk && LinphoneManager.getLc().getDefaultProxyConfig().isRegistered()) {
+ return getString(R.string.status_connected);
+ } else if (state == RegistrationState.RegistrationProgress) {
+ return getString(R.string.status_in_progress);
+ } else if (state == RegistrationState.RegistrationFailed) {
+ return getString(R.string.status_error);
+ } else {
+ return getString(R.string.status_not_connected);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
private void startCallQuality() {
callQuality.setVisibility(View.VISIBLE);
refreshHandler.postDelayed(mCallQualityUpdater = new Runnable() {