#17220: fix service NullPointerException issue

Conflicts:

	src/com/savoirfairelinux/sflphone/client/CallElementList.java
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
index faf8f72..23f3bfe 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
@@ -72,7 +72,7 @@
     static final int ACCOUNT_CREATE_REQUEST = 1;
     static final int ACCOUNT_EDIT_REQUEST = 2;
     private SFLPhonePreferenceActivity sflphonePreferenceActivity;
-    private ISipService service;
+    private ISipService service = null;
 
     ArrayList<AccountDetail.PreferenceEntry> basicDetailKeys = null;
     ArrayList<AccountDetail.PreferenceEntry> advancedDetailKeys = null;
@@ -106,6 +106,19 @@
 
         Log.i(TAG, "Create Account Management Fragment");
 
+        /*
+         * FIXME if service cannot be obtained from SFLPhonePreferenceActivity,
+         * then get it from Application
+         */
+        service = sflphonePreferenceActivity.getSipService();
+        if (service == null) {
+            service = ((SFLphoneApplication)sflphonePreferenceActivity.getApplication()).getSipService();
+            if (service == null) {
+                Log.e(TAG, "onCreate() service=" + service);
+            }
+        }
+        Log.w(TAG, "onCreate() service=" + service);
+
         setPreferenceScreen(getAccountListPreferenceScreen());
 
         LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mMessageReceiver, new IntentFilter("accounts-changed"));
diff --git a/src/com/savoirfairelinux/sflphone/client/CallElementList.java b/src/com/savoirfairelinux/sflphone/client/CallElementList.java
index 961a027..4e68522 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallElementList.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallElementList.java
@@ -83,6 +83,7 @@
     private CallElementAdapter mAdapter;
     private String mCurFilter;
     private SFLPhoneHome sflphoneHome;
+    private SFLphoneApplication sflphoneApplication;
     private ISipService service;
     private AccountSelectionButton mAccountSelectionButton;
     private AccountList mAccountList;
@@ -303,6 +304,8 @@
                 Log.i(TAG, "On Long Click");
                 final CharSequence[] items = {"Hang up Call", "Send Message", "Add to Conference"};
                 final SipCall call = (SipCall) mAdapter.getItem(pos);
+                // FIXME
+                service = sflphoneApplication.getSipService();
                 AlertDialog.Builder builder = new AlertDialog.Builder(context);
                 builder.setTitle("Action to perform with " + call.mCallInfo.mDisplayName)
                       .setCancelable(true)
diff --git a/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java b/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
index 5e590d3..d9f5c8b 100644
--- a/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
@@ -89,6 +89,7 @@
     Activity mContext;
     String mCurFilter;
     private SFLPhoneHome sflphoneHome;
+    private SFLphoneApplication sflphoneApplication;
     private ISipService service;
     private AccountSelectionButton mAccountSelectionButton;
     private AccountList mAccountList;
@@ -103,8 +104,9 @@
     public void onAttach(Activity activity) {
         super.onAttach(activity);
         sflphoneHome = (SFLPhoneHome) activity;
-        service = ((SFLphoneApplication) sflphoneHome.getApplication()).getSipService();
-        mAccountList = ((SFLphoneApplication)sflphoneHome.getApplication()).getAccountList();
+        sflphoneApplication = (SFLphoneApplication) sflphoneHome.getApplication();
+        service = sflphoneApplication.getSipService();
+        mAccountList = sflphoneApplication.getAccountList();
 
         Log.i(TAG, "onAttach() service=" + service + ", mAccountList=" + mAccountList);
     }
@@ -228,6 +230,8 @@
                 // TODO getCallInstnace should be implemented in SipCallList
                 // final SipCall call = SipCall.getCallInstance(info);
                 final SipCall call = new SipCall(info);
+                // FIXME
+                service = sflphoneApplication.getSipService();
                 AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
                 builder.setTitle("Action to perform with " + call.mCallInfo.mDisplayName)
                       .setCancelable(true)
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
index 5070bb3..0a17ff4 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
@@ -142,8 +142,8 @@
             mBound = false;
         }
 
-        stopService(new Intent(this, SipService.class));
-        serviceIsOn = false;
+//        stopService(new Intent(this, SipService.class));
+//        serviceIsOn = false;
         super.onDestroy();
     }