From af0f3c684c2d865e08bc92f4d714241a0c80437c Mon Sep 17 00:00:00 2001
From: Alexandre Savard <alexandre.savard@savoirfairelinux.com>
Date: Thu, 1 Nov 2012 18:35:56 -0400
Subject: [PATCH] #17195: Propagate account selection to other
 AccountManagementUI

---
 .../sflphone/client/AccountSelectionDialog.java   |  3 ++-
 .../sflphone/client/CallElementList.java          |  1 +
 .../sflphone/client/ContactListFragment.java      |  1 +
 .../sflphone/utils/AccountList.java               | 11 ++++++++---
 .../sflphone/utils/AccountManagementUI.java       |  8 ++++++++
 .../sflphone/utils/AccountSelectionButton.java    | 15 +++++++++++++++
 6 files changed, 35 insertions(+), 4 deletions(-)

diff --git a/src/com/savoirfairelinux/sflphone/client/AccountSelectionDialog.java b/src/com/savoirfairelinux/sflphone/client/AccountSelectionDialog.java
index f2c13c85b..32d8a1b86 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountSelectionDialog.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountSelectionDialog.java
@@ -68,7 +68,8 @@ public class AccountSelectionDialog extends AlertDialog
         // public void onClick(DialogInterface dialog, int which) {
         public void onItemClick (AdapterView<?> parent, View view, int position, long id) {
             Log.i(TAG, "Selected Account: " + ((TextView)view).getText());
-            mButton.setText(((TextView)view).getText());
+            // mButton.setText(((TextView)view).getText());
+            mButton.accountSelectedNotifyAccountList(((TextView)view).getText().toString());
         }
     };
 
diff --git a/src/com/savoirfairelinux/sflphone/client/CallElementList.java b/src/com/savoirfairelinux/sflphone/client/CallElementList.java
index cb2f24979..687059e5c 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallElementList.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallElementList.java
@@ -339,6 +339,7 @@ public class CallElementList extends ListFragment implements LoaderManager.Loade
 
         mAccountSelectionButton = (AccountSelectionButton) inflatedView.findViewById(R.id.account_selection_button);
         mAccountList.addManagementUI(mAccountSelectionButton);
+        mAccountSelectionButton.setAccountList(mAccountList);
 
         return inflatedView;
     }
diff --git a/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java b/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
index 2e870b969..0996cb24c 100644
--- a/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
@@ -280,6 +280,7 @@ public class ContactListFragment extends ListFragment implements OnQueryTextList
         // Button accountSelectionButton = (Button) inflatedView.findViewById(R.id.account_selection_button);
         mAccountSelectionButton = (AccountSelectionButton) inflatedView.findViewById(R.id.account_selection_button);
         mAccountList.addManagementUI(mAccountSelectionButton);
+        mAccountSelectionButton.setAccountList(mAccountList);
 
         return inflatedView;
     }
diff --git a/src/com/savoirfairelinux/sflphone/utils/AccountList.java b/src/com/savoirfairelinux/sflphone/utils/AccountList.java
index 016c049c0..441f149a2 100644
--- a/src/com/savoirfairelinux/sflphone/utils/AccountList.java
+++ b/src/com/savoirfairelinux/sflphone/utils/AccountList.java
@@ -66,6 +66,14 @@ public class AccountList extends BroadcastReceiver
         mUserInterfaceList.add(ui);
     }
 
+    public void accountSelected(String accountID, AccountManagementUI userInterface) {
+        if(!mUserInterfaceList.isEmpty()) {
+            for(AccountManagementUI ui : mUserInterfaceList) {
+                 ui.setSelectedAccount(accountID);
+            }
+        }
+    }
+
     @Override
     public void onReceive(Context context, Intent intent)
     {
@@ -106,12 +114,9 @@ public class AccountList extends BroadcastReceiver
 
             if(newList.size() > mList.size()) {
                 for(AccountManagementUI ui : mUserInterfaceList) {
-                    Log.i(TAG, "UPDATE UI");
                     ui.accountAdded(newList);
                 }
             }
-        } else {
-            Log.i(TAG, "UI LIST IS EMPTY");
         }
 
         mList = newList;
diff --git a/src/com/savoirfairelinux/sflphone/utils/AccountManagementUI.java b/src/com/savoirfairelinux/sflphone/utils/AccountManagementUI.java
index 289c0a65e..c6ec2179b 100644
--- a/src/com/savoirfairelinux/sflphone/utils/AccountManagementUI.java
+++ b/src/com/savoirfairelinux/sflphone/utils/AccountManagementUI.java
@@ -32,8 +32,16 @@ package com.savoirfairelinux.sflphone.utils;
 
 import java.util.ArrayList;
 
+import com.savoirfairelinux.sflphone.utils.AccountList;
+
 public interface AccountManagementUI
 {
+    public void setAccountList(AccountList accountList);
+
+    public void accountSelectedNotifyAccountList(String accountID);
+
+    public void setSelectedAccount(String accountID);
+
     public void accountAdded(ArrayList<String> newList);
 
     public void accountRemoved();
diff --git a/src/com/savoirfairelinux/sflphone/utils/AccountSelectionButton.java b/src/com/savoirfairelinux/sflphone/utils/AccountSelectionButton.java
index 1049ed81e..2ba03dea0 100644
--- a/src/com/savoirfairelinux/sflphone/utils/AccountSelectionButton.java
+++ b/src/com/savoirfairelinux/sflphone/utils/AccountSelectionButton.java
@@ -48,6 +48,7 @@ public class AccountSelectionButton extends Button implements AccountManagementU
     private ISipService mService;
     private Context mContext;
     private ArrayList<String> mList = new ArrayList<String>();
+    private AccountList mAccountList = null;
 
     public AccountSelectionButton(Context context) {
         super(context);
@@ -78,6 +79,20 @@ public class AccountSelectionButton extends Button implements AccountManagementU
         });
     }
 
+    public void setAccountList(AccountList accountList) {
+        mAccountList = accountList;
+    }
+
+    public void accountSelectedNotifyAccountList(String accountID) {
+        if(mAccountList != null) {
+            mAccountList.accountSelected(accountID, this);
+        }
+    }
+
+    public void setSelectedAccount(String accountID) {
+        setText(accountID);
+    }
+
     public void accountAdded(ArrayList<String> newList) {
         Log.i(TAG, "Account added");
         mList = newList;
-- 
GitLab