ip2ip removal support

Note : this patch modifies compile.sh to bump a more recent version of
the daemon, also removing ip2ip.

Tuleap: #448
Change-Id: I07bf4c47d74e13bfbe303ba7b35a9564c1a4ecf7
diff --git a/compile.sh b/compile.sh
index eb7415a..4ca2aae 100755
--- a/compile.sh
+++ b/compile.sh
@@ -156,7 +156,7 @@
 if [ "$FETCH" = 1 ]
 then
     # 1/ dring
-    TESTED_HASH=ca611bcc469d40bc5642eafcc73ee0db7bec84a8
+    TESTED_HASH=3677f3ad0503f5dfaaf99ee4436fa6c0d680b9bd
     if [ ! -d "ring-daemon" ]; then
         echo "ring daemon source not found, cloning"
         git clone https://gerrit-ring.savoirfairelinux.com/ring-daemon.git
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java
index 360adc5..ebbd68b 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java
@@ -57,7 +57,6 @@
     public static final int ACCOUNT_CREATE_REQUEST = 1;
     public static final int ACCOUNT_EDIT_REQUEST = 2;
     private AccountsAdapter mAccountsAdapter;
-    private AccountsAdapter mIP2IPAdapter;
 
     private DragSortListView mDnDListView;
 
@@ -97,7 +96,6 @@
 
         Log.i(TAG, "Create Account Management Fragment");
         mAccountsAdapter = new AccountsAdapter(getActivity());
-        mIP2IPAdapter = new AccountsAdapter(getActivity());
         this.setHasOptionsMenu(true);
 
         IntentFilter intentFilter = new IntentFilter();
@@ -133,15 +131,6 @@
                 launchAccountEditActivity(mAccountsAdapter.getItem(pos));
             }
         });
-
-        ((ListView) getView().findViewById(R.id.ip2ip)).setAdapter(mIP2IPAdapter);
-        ((ListView) getView().findViewById(R.id.ip2ip)).setOnItemClickListener(new OnItemClickListener() {
-
-            @Override
-            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
-                launchAccountEditActivity(mIP2IPAdapter.accounts.get(0));
-            }
-        });
     }
 
     @Override
@@ -371,8 +360,6 @@
         if (mAccountsAdapter.isEmpty()) {
             mDnDListView.setEmptyView(v.findViewById(R.id.empty_account_list));
         }
-        mIP2IPAdapter.replaceAll(service.getIP2IPAccount());
         mAccountsAdapter.notifyDataSetChanged();
-        mIP2IPAdapter.notifyDataSetChanged();
     }
 }
diff --git a/ring-android/app/src/main/java/cx/ring/model/account/Account.java b/ring-android/app/src/main/java/cx/ring/model/account/Account.java
index 7bc974b..a68022d 100644
--- a/ring-android/app/src/main/java/cx/ring/model/account/Account.java
+++ b/ring-android/app/src/main/java/cx/ring/model/account/Account.java
@@ -26,6 +26,7 @@
 import java.util.List;
 import java.util.Map;
 
+import android.text.TextUtils;
 import android.util.Log;
 
 public class Account extends java.util.Observable {
@@ -178,7 +179,7 @@
     }
 
     public boolean isIP2IP() {
-        return basicDetails.getDetailString(AccountDetailBasic.CONFIG_ACCOUNT_ALIAS).contentEquals("IP2IP");
+        return isSip() && TextUtils.isEmpty(getHost());
     }
 
     public boolean isAutoanswerEnabled() {
diff --git a/ring-android/app/src/main/java/cx/ring/service/LocalService.java b/ring-android/app/src/main/java/cx/ring/service/LocalService.java
index 8c117ec..d60e86b 100644
--- a/ring-android/app/src/main/java/cx/ring/service/LocalService.java
+++ b/ring-android/app/src/main/java/cx/ring/service/LocalService.java
@@ -126,9 +126,7 @@
     private final IBinder mBinder = new LocalBinder();
 
     private Map<String, Conversation> conversations = new HashMap<>();
-    private ArrayList<Account> all_accounts = new ArrayList<>();
-    private List<Account> accounts = all_accounts;
-    private List<Account> ip2ip_account = all_accounts;
+    private List<Account> accounts = new ArrayList<>();
 
     private HistoryManager historyManager;
 
@@ -357,9 +355,7 @@
         @Override
         public void onLoadComplete(Loader<ArrayList<Account>> loader, ArrayList<Account> data) {
             Log.w(TAG, "AccountsLoader Loader.OnLoadCompleteListener " + data.size());
-            all_accounts = data;
-            accounts = all_accounts.subList(0,data.size()-1);
-            ip2ip_account = all_accounts.subList(data.size()-1,data.size());
+            accounts = data;
             mAccountLoader.stopLoading();
             boolean haveSipAccount = false;
             boolean haveRingAccount = false;
@@ -508,11 +504,10 @@
     }
 
     public List<Account> getAccounts() { return accounts; }
-    public List<Account> getIP2IPAccount() { return ip2ip_account; }
     public Account getAccount(String account_id) {
         if (account_id == null || account_id.isEmpty())
             return null;
-        for (Account acc : all_accounts)
+        for (Account acc : accounts)
             if (acc.getAccountID().equals(account_id))
                 return acc;
         return null;
@@ -528,7 +523,6 @@
         }
         accounts = newlist;
         try {
-            order += AccountsLoader.ACCOUNT_IP2IP;
             mService.setAccountOrder(order);
         } catch (RemoteException e) {
             e.printStackTrace();
@@ -635,17 +629,20 @@
 
     public Account guessAccount(CallContact c, SipUri uri) {
         if (uri.isRingId()) {
-            for (Account a : all_accounts)
+            for (Account a : accounts)
                 if (a.isRing())
                     return a;
             // ring ids must be called with ring accounts
             return null;
         }
-        for (Account a : all_accounts)
+        for (Account a : accounts)
             if (a.isSip() && a.getHost().equals(uri.host))
                 return a;
-        if (uri.isSingleIp())
-            return ip2ip_account.get(0);
+        if (uri.isSingleIp()) {
+            for (Account a : accounts)
+                if (a.isIP2IP())
+                    return a;
+        }
         return accounts.get(0);
     }
 
@@ -1031,8 +1028,6 @@
     }
 
     public class AccountsLoader extends AsyncTaskLoader<ArrayList<Account>> {
-        public static final String ACCOUNTS = "accounts";
-        public static final String ACCOUNT_IP2IP = "IP2IP";
         public AccountsLoader(Context context) {
             super(context);
             Log.w(TAG, "AccountsLoader constructor");
@@ -1054,7 +1049,6 @@
         public ArrayList<Account> loadInBackground() {
             Log.w(TAG, "AccountsLoader loadInBackground");
             ArrayList<Account> accounts = new ArrayList<>();
-            Account IP2IP = null;
             if (checkCancel())
                 return null;
             try {
@@ -1067,23 +1061,13 @@
                         return null;
                     details = (Map<String, String>) mService.getAccountDetails(id);
                     state = (Map<String, String>) mService.getVolatileAccountDetails(id);
-                    if (id.contentEquals(ACCOUNT_IP2IP)) {
-                        IP2IP = new Account(ACCOUNT_IP2IP, details, new ArrayList<Map<String, String>>(), state); // Empty credentials
-                        //accounts.add(IP2IP);
-                        continue;
-                    }
                     credentials = (ArrayList<Map<String, String>>) mService.getCredentials(id);
-                /*for (Map.Entry<String, String> entry : State.entrySet()) {
-                    Log.i(TAG, "State:" + entry.getKey() + " -> " + entry.getValue());
-                }*/
                     Account tmp = new Account(id, details, credentials, state);
                     accounts.add(tmp);
-                    // Log.i(TAG, "account:" + tmp.getAlias() + " " + tmp.isEnabled());
                 }
             } catch (RemoteException | NullPointerException e) {
                 Log.e(TAG, e.toString());
             }
-            accounts.add(IP2IP);
             if (checkCancel())
                 return null;
             return accounts;
diff --git a/ring-android/app/src/main/jni/configurationmanager.i b/ring-android/app/src/main/jni/configurationmanager.i
index 91604a5..e6322b0 100644
--- a/ring-android/app/src/main/jni/configurationmanager.i
+++ b/ring-android/app/src/main/jni/configurationmanager.i
@@ -117,8 +117,6 @@
 std::map<std::string, std::string> getHookSettings();
 void setHookSettings(const std::map<std::string, std::string>& settings);
 
-std::map<std::string, std::string> getIp2IpDetails();
-
 std::vector<std::map<std::string, std::string> > getCredentials(const std::string& accountID);
 void setCredentials(const std::string& accountID, const std::vector<std::map<std::string, std::string> >& details);
 
@@ -188,4 +186,4 @@
     virtual void errorAlert(int alert){}
     virtual void getHardwareAudioFormat(std::vector<int32_t>* /*params_ret*/){}
     virtual void getAppDataPath(const std::string& /* name */, std::vector<std::string>* /*path_ret*/){}
-};
\ No newline at end of file
+};