Implement account state change broadcast signal sender and receiver
diff --git a/.gitignore b/.gitignore
index 56a08a4..8647aa6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,5 +11,9 @@
SFLPhoneservice*
CallManagerJNI.java
Callback.java
+ConfigurationCallback.java
ManagerImpl.java
+SWIGTYPE*
+StringMap.java
+StringVect.java
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
index 2975aae..2f71c51 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java
@@ -32,8 +32,10 @@
package com.savoirfairelinux.sflphone.client;
import android.app.Activity;
+import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.preference.EditTextPreference;
import android.preference.Preference;
import android.preference.PreferenceCategory;
@@ -42,10 +44,13 @@
import android.preference.ListPreference;
import android.os.Bundle;
import android.os.RemoteException;
+import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
+
+import java.util.Set;
import java.util.HashMap;
import java.util.ArrayList;
@@ -76,6 +81,7 @@
AccountDetailAdvanced advancedDetails;
AccountDetailSrtp srtpDetails;
AccountDetailTls tlsDetails;
+ PreferenceScreen mRoot;
Activity context = getActivity();
@@ -102,6 +108,8 @@
Log.i(TAG, "Create Account Management Fragment");
setPreferenceScreen(getAccountListPreferenceScreen());
+
+ LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mMessageReceiver, new IntentFilter("accounts-changed"));
}
@Override
@@ -128,10 +136,9 @@
@Override
public void onDestroy()
{
+ LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mMessageReceiver);
super.onDestroy();
Log.i(TAG, "onDestroy");
-
-
}
@Override
@@ -140,6 +147,22 @@
}
}
+ private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String message = intent.getStringExtra("message");
+ Log.d("receiver", "Got message: " + message);
+ ArrayList<String> newList = (ArrayList<String>) getAccountList();
+ Set<String> currentList = (Set<String>) mAccountList.keySet();
+ for(String s : newList) {
+ if(!currentList.contains(s)) {
+ Log.i("receiver", "ADDING ACCOUNT!!!!!! " + s);
+ mRoot.addPreference(getAccountPreferenceScreen(s));
+ }
+ }
+ }
+ };
+
Preference.OnPreferenceChangeListener changeBasicTextEditListener = new Preference.OnPreferenceChangeListener() {
public boolean onPreferenceChange(Preference preference, Object newValue) {
@@ -216,30 +239,30 @@
ArrayList<String> accountList = getAccountList();
// Log.i(TAG, "GetAccountList: " + mAccountList);
- PreferenceScreen root = getPreferenceManager().createPreferenceScreen(currentContext);
+ mRoot = getPreferenceManager().createPreferenceScreen(currentContext);
// Default account category
PreferenceCategory defaultAccountCat = new PreferenceCategory(currentContext);
defaultAccountCat.setTitle(R.string.default_account_category);
- root.addPreference(defaultAccountCat);
+ mRoot.addPreference(defaultAccountCat);
- root.addPreference(getAccountPreferenceScreen(DEFAULT_ACCOUNT_ID));
+ mRoot.addPreference(getAccountPreferenceScreen(DEFAULT_ACCOUNT_ID));
// Account list category
PreferenceCategory accountListCat = new PreferenceCategory(currentContext);
accountListCat.setTitle(R.string.default_account_category);
- root.addPreference(accountListCat);
+ mRoot.addPreference(accountListCat);
Preference createNewAccount = new Preference(currentContext);
createNewAccount.setTitle("Touch to Create New Account");
createNewAccount.setOnPreferenceClickListener(launchAccountCreationOnClick);
createNewAccount.setIntent(new Intent().setClass(getActivity(), AccountCreationActivity.class));
- root.addPreference(createNewAccount);
+ mRoot.addPreference(createNewAccount);
for(String s : accountList)
- root.addPreference(getAccountPreferenceScreen(s));
+ mRoot.addPreference(getAccountPreferenceScreen(s));
- return root;
+ return mRoot;
}
public PreferenceCategory createPreferenceSection(PreferenceScreen root, Context context, int titleId, ArrayList<AccountDetail.PreferenceEntry> detailEntries,
diff --git a/src/com/savoirfairelinux/sflphone/service/ConfigurationManagerCallback.java b/src/com/savoirfairelinux/sflphone/service/ConfigurationManagerCallback.java
index b2c7e84..787447b 100644
--- a/src/com/savoirfairelinux/sflphone/service/ConfigurationManagerCallback.java
+++ b/src/com/savoirfairelinux/sflphone/service/ConfigurationManagerCallback.java
@@ -22,13 +22,29 @@
*/
package com.savoirfairelinux.sflphone.service;
+import android.content.Context;
+import android.content.Intent;
+import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
public class ConfigurationManagerCallback extends ConfigurationCallback {
- private static final String TAG = "ConfigurationManagerCallback";
+ private static final String TAG = "ConfigurationManagerCallback";
+ Context mContext;
+
+ ConfigurationManagerCallback(Context context) {
+ mContext = context;
+ }
@Override
public void on_account_state_changed() {
Log.i(TAG, "on_account_state_changed ninja!!!!!!!!!!!!!!");
+ sendAccountsChangedMessage();
+ }
+
+ private void sendAccountsChangedMessage() {
+ Log.d("sender", "Boradcasting message");
+ Intent intent = new Intent("accounts-changed");
+ intent.putExtra("message", "Accounts Changed");
+ LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent);
}
}
diff --git a/src/com/savoirfairelinux/sflphone/service/SipService.java b/src/com/savoirfairelinux/sflphone/service/SipService.java
index ddf1614..14c39bf 100644
--- a/src/com/savoirfairelinux/sflphone/service/SipService.java
+++ b/src/com/savoirfairelinux/sflphone/service/SipService.java
@@ -60,6 +60,7 @@
private ConfigurationManagerCallback configurationManagerCallback;
private ManagerImpl managerImpl;
private boolean isPjSipStackStarted = false;
+
/* Implement public interface for the service */
private final ISipService.Stub mBinder = new ISipService.Stub() {
@@ -372,7 +373,7 @@
SFLPhoneservice.setCallbackObject(callManagerCallBack);
configurationManagerJNI = new ConfigurationManagerJNI();
- configurationManagerCallback = new ConfigurationManagerCallback();
+ configurationManagerCallback = new ConfigurationManagerCallback(this);
SFLPhoneservice.setConfigurationCallbackObject(configurationManagerCallback);
managerImpl.init("");