* #34699: advanced settings screen working
diff --git a/src/org/sflphone/fragments/AdvancedAccountFragment.java b/src/org/sflphone/fragments/AdvancedAccountFragment.java
index ac180f1..6ccf4b9 100644
--- a/src/org/sflphone/fragments/AdvancedAccountFragment.java
+++ b/src/org/sflphone/fragments/AdvancedAccountFragment.java
@@ -9,12 +9,10 @@
 import org.sflphone.account.AccountDetail;
 import org.sflphone.account.AccountDetailAdvanced;
 import org.sflphone.model.Account;
-import org.sflphone.views.NumberPickerPreference;
 
 import android.app.Activity;
 import android.os.Bundle;
 import android.preference.CheckBoxPreference;
-import android.preference.EditTextPreference;
 import android.preference.ListPreference;
 import android.preference.Preference;
 import android.preference.Preference.OnPreferenceChangeListener;
@@ -23,7 +21,7 @@
 
 public class AdvancedAccountFragment extends PreferenceFragment {
 
-    private static final String TAG = GeneralAccountFragment.class.getSimpleName();
+    private static final String TAG = AdvancedAccountFragment.class.getSimpleName();
 
     private boolean isDifferent = false;
 
@@ -67,8 +65,7 @@
         addPreferencesFromResource(R.xml.account_advanced_prefs);
         setPreferenceDetails(mCallbacks.getAccount().getAdvancedDetails());
         addPreferenceListener(mCallbacks.getAccount().getAdvancedDetails(), changeAdvancedPreferenceListener);
-        
-        
+
     }
 
     private void setPreferenceDetails(AccountDetail details) {
@@ -77,18 +74,7 @@
             Preference pref = findPreference(p.mKey);
             if (pref != null) {
                 if (p.mKey == AccountDetailAdvanced.CONFIG_LOCAL_INTERFACE) {
-                    ArrayList<CharSequence> entries = new ArrayList<CharSequence>();
-                    try {
-
-                        for (Enumeration<NetworkInterface> list = NetworkInterface.getNetworkInterfaces(); list.hasMoreElements();) {
-                            NetworkInterface i = list.nextElement();
-                            Log.e("network_interfaces", "display name " + i.getDisplayName());
-                            if (i.isUp())
-                                entries.add(i.getDisplayName());
-                        }
-                    } catch (SocketException e) {
-                        Log.e(TAG, e.toString());
-                    }
+                    ArrayList<CharSequence> entries = getNetworkInterfaces();
                     CharSequence[] display = new CharSequence[entries.size()];
                     entries.toArray(display);
                     ((ListPreference) pref).setEntries(display);
@@ -97,9 +83,14 @@
                     continue;
                 }
                 if (!p.isTwoState) {
-
                     pref.setSummary(p.mValue);
-
+                } else if(pref.getKey().contentEquals("STUN.enable")){
+                    ((CheckBoxPreference)pref).setChecked(p.mValue.contentEquals("true"));
+                    findPreference("STUN.server").setEnabled(p.mValue.contentEquals("true"));
+                } else if(pref.getKey().contentEquals("Account.publishedSameAsLocal")){
+                    ((CheckBoxPreference)pref).setChecked(p.mValue.contentEquals("true"));
+                    findPreference("Account.publishedPort").setEnabled(!p.mValue.contentEquals("true"));
+                    findPreference("Account.publishedAddress").setEnabled(!p.mValue.contentEquals("true"));
                 }
             } else {
                 Log.w(TAG, "pref not found");
@@ -107,6 +98,23 @@
         }
     }
 
+    private ArrayList<CharSequence> getNetworkInterfaces() {
+        ArrayList<CharSequence> result = new ArrayList<CharSequence>();
+        
+        result.add("default");
+        try {
+
+            for (Enumeration<NetworkInterface> list = NetworkInterface.getNetworkInterfaces(); list.hasMoreElements();) {
+                NetworkInterface i = list.nextElement();
+                if (i.isUp())
+                    result.add(i.getDisplayName());
+            }
+        } catch (SocketException e) {
+            Log.e(TAG, e.toString());
+        }
+        return result;
+    }
+
     private void addPreferenceListener(AccountDetail details, OnPreferenceChangeListener listener) {
         for (AccountDetail.PreferenceEntry p : details.getDetailValues()) {
             Log.i(TAG, "addPreferenceListener: pref " + p.mKey + p.mValue);
@@ -126,18 +134,17 @@
         public boolean onPreferenceChange(Preference preference, Object newValue) {
             setDifferent(true);
             if (preference instanceof CheckBoxPreference) {
-                     mCallbacks.getAccount().getAdvancedDetails().setDetailString(preference.getKey(), ((Boolean) newValue).toString());
-                     if(preference.getKey().contentEquals("STUN.enable")){
-                         findPreference("STUN.server").setEnabled((Boolean) newValue);
-                     } else if (preference.getKey().contentEquals("Account.publishedSameAsLocal")){
-                         findPreference("Account.publishedPort").setEnabled((Boolean) newValue);
-                         findPreference("Account.publishedAddress").setEnabled((Boolean) newValue);
-                     }
-                    
-                    
+                mCallbacks.getAccount().getAdvancedDetails().setDetailString(preference.getKey(), ((Boolean) newValue).toString());
+                if (preference.getKey().contentEquals("STUN.enable")) {
+                    findPreference("STUN.server").setEnabled((Boolean) newValue);
+                } else if (preference.getKey().contentEquals("Account.publishedSameAsLocal")) {
+                    findPreference("Account.publishedPort").setEnabled(!(Boolean) newValue);
+                    findPreference("Account.publishedAddress").setEnabled(!(Boolean) newValue);
+                }
+
             } else {
                 preference.setSummary((CharSequence) newValue);
-                Log.i(TAG, "Changing preference value:" + newValue);
+                Log.i(TAG, "Changing" + preference.getKey() + " value:" + newValue);
                 mCallbacks.getAccount().getAdvancedDetails().setDetailString(preference.getKey(), ((CharSequence) newValue).toString());
             }
             return true;