diff --git a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java index eb01d29a21760eb61be6e42df8dd5a2afb33b7fe..4cfa8a7e62ce82aff72e54475c4fb70309d4fd02 100644 --- a/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java +++ b/src/com/savoirfairelinux/sflphone/client/AccountManagementFragment.java @@ -65,12 +65,14 @@ import com.savoirfairelinux.sflphone.utils.AccountDetailBasic; import com.savoirfairelinux.sflphone.utils.AccountDetailAdvanced; import com.savoirfairelinux.sflphone.utils.AccountDetailSrtp; import com.savoirfairelinux.sflphone.utils.AccountDetailTls; +import com.savoirfairelinux.sflphone.client.AccountPreferenceActivity; public class AccountManagementFragment extends PreferenceFragment { static final String TAG = "AccountManagementFragment"; static final String DEFAULT_ACCOUNT_ID = "IP2IP"; static final int ACCOUNT_CREATE_REQUEST = 1; + static final int ACCOUNT_EDIT_REQUEST = 2; private ISipService service; // HashMap<String,HashMap<String,String>> mAccountList = new HashMap<String,HashMap<String,String>>(); @@ -79,11 +81,7 @@ public class AccountManagementFragment extends PreferenceFragment ArrayList<AccountDetail.PreferenceEntry> advancedDetailKeys; ArrayList<AccountDetail.PreferenceEntry> srtpDetailKeys; ArrayList<AccountDetail.PreferenceEntry> tlsDetailKeys; - AccountDetailBasic basicDetails; - AccountDetailAdvanced advancedDetails; - AccountDetailSrtp srtpDetails; - AccountDetailTls tlsDetails; - PreferenceScreen mRoot; + PreferenceScreen mRoot = null; Activity context = getActivity(); @@ -95,11 +93,6 @@ public class AccountManagementFragment extends PreferenceFragment advancedDetailKeys = AccountDetailAdvanced.getPreferenceEntries(); srtpDetailKeys = AccountDetailSrtp.getPreferenceEntries(); tlsDetailKeys = AccountDetailTls.getPreferenceEntries(); - - basicDetails = new AccountDetailBasic(); - advancedDetails = new AccountDetailAdvanced(); - srtpDetails = new AccountDetailSrtp(); - tlsDetails = new AccountDetailTls(); } @Override @@ -145,7 +138,19 @@ public class AccountManagementFragment extends PreferenceFragment @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == ACCOUNT_CREATE_REQUEST) { + switch(requestCode) { + case ACCOUNT_CREATE_REQUEST: + Log.i(TAG, "ACCOUNT_CREATE_REQUEST Done"); + break; + case ACCOUNT_EDIT_REQUEST: + if(resultCode == AccountPreferenceActivity.ACCOUNT_MODIFIED) { + Bundle bundle = data.getExtras(); + String accountID = bundle.getString("AccountID"); + Log.i(TAG, "Update account settings for " + accountID); + } + break; + default: + break; } } @@ -161,7 +166,7 @@ public class AccountManagementFragment extends PreferenceFragment for(String s : newList) { if(!currentList.contains(s)) { Log.i("receiver", "ADDING ACCOUNT!!!!!! " + s); - mRoot.addPreference(createAccountPreferenceScreen(s).mScreen); + mRoot.addPreference(createAccountPreferenceScreen(s)); } } } @@ -201,12 +206,19 @@ public class AccountManagementFragment extends PreferenceFragment Preference.OnPreferenceClickListener launchAccountCreationOnClick = new Preference.OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { if(preference.getTitle() == "Create New Account") { - launchAccountCreationPanel(preference); + launchAccountCreationActivity(preference); } return true; } }; + Preference.OnPreferenceClickListener launchAccountEditOnClick = new Preference.OnPreferenceClickListener() { + public boolean onPreferenceClick(Preference preference) { + launchAccountEditActivity(preference); + return true; + } + }; + Preference.OnPreferenceClickListener removeSelectedAccountOnClick = new Preference.OnPreferenceClickListener() { public boolean onPreferenceClick(Preference preference) { if(preference.getTitle() == "Delete Account") { @@ -216,13 +228,20 @@ public class AccountManagementFragment extends PreferenceFragment } }; - private void launchAccountCreationPanel(Preference preference) + private void launchAccountCreationActivity(Preference preference) { - Log.i("MainSandbox", "launchPreferencePanel"); + Log.i(TAG, "Launch account creation activity"); Intent intent = preference.getIntent(); startActivityForResult(intent, ACCOUNT_CREATE_REQUEST); } + private void launchAccountEditActivity(Preference preference) + { + Log.i(TAG, "Launch account edit activity"); + Intent intent = preference.getIntent(); + startActivityForResult(intent, ACCOUNT_EDIT_REQUEST); + } + private void deleteSelectedAccount(String accountID) { Log.i(TAG, "DeleteSelectedAccount"); try { @@ -282,7 +301,7 @@ public class AccountManagementFragment extends PreferenceFragment defaultAccountCat.setTitle(R.string.default_account_category); mRoot.addPreference(defaultAccountCat); - mRoot.addPreference(createAccountPreferenceScreen(DEFAULT_ACCOUNT_ID).mScreen); + mRoot.addPreference(createAccountPreferenceScreen(DEFAULT_ACCOUNT_ID)); // Account list category PreferenceCategory accountListCat = new PreferenceCategory(currentContext); @@ -297,18 +316,47 @@ public class AccountManagementFragment extends PreferenceFragment for(String s : accountList) { // mRoot.addPreference(getAccountPreferenceScreen(s)); - mRoot.addPreference(createAccountPreferenceScreen(s).mScreen); + mRoot.addPreference(createAccountPreferenceScreen(s)); } return mRoot; } + Preference createAccountPreferenceScreen(String accountID) { + + HashMap<String, String> preferenceMap = getAccountDetails(accountID); + + AccountDetailBasic basicDetails = new AccountDetailBasic(preferenceMap); + AccountDetailAdvanced advancedDetails = new AccountDetailAdvanced(preferenceMap); + AccountDetailSrtp srtpDetails = new AccountDetailSrtp(preferenceMap); + AccountDetailTls tlsDetails = new AccountDetailTls(preferenceMap); + + Bundle bundle = new Bundle(); + bundle.putString("AccountID", accountID); + bundle.putStringArrayList(AccountDetailBasic.BUNDLE_TAG, basicDetails.getValuesOnly()); + bundle.putStringArrayList(AccountDetailAdvanced.BUNDLE_TAG, advancedDetails.getValuesOnly()); + bundle.putStringArrayList(AccountDetailSrtp.BUNDLE_TAG, srtpDetails.getValuesOnly()); + bundle.putStringArrayList(AccountDetailTls.BUNDLE_TAG, tlsDetails.getValuesOnly()); + + Intent intent = new Intent().setClass(getActivity(), AccountPreferenceActivity.class); + intent.putExtras(bundle); + + Preference editAccount = new Preference(getActivity()); + editAccount.setTitle(accountID); + editAccount.setOnPreferenceClickListener(launchAccountEditOnClick); + editAccount.setIntent(intent); + + return editAccount; + } + + /* AccountPreferenceScreen createAccountPreferenceScreen(String accountID) { AccountPreferenceScreen preference = new AccountPreferenceScreen(getPreferenceManager(), getActivity(), accountID); mAccountList.put(accountID, preference); return preference; } + */ private class AccountPreferenceScreen { diff --git a/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java b/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..5703f5f78ee3ab3bf1f073988b92ab59beeb1413 --- /dev/null +++ b/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java @@ -0,0 +1,209 @@ +/* + * Copyright (C) 2004-2012 Savoir-Faire Linux Inc. + * + * Author: Alexandre Savard <alexandre.savard@savoirfairelinux.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Additional permission under GNU GPL version 3 section 7: + * + * If you modify this program, or any covered work, by linking or + * combining it with the OpenSSL project's OpenSSL library (or a + * modified version of that library), containing parts covered by the + * terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc. + * grants you additional permission to convey the resulting work. + * Corresponding Source for a non-source form of such a combination + * shall include the source code for the parts of OpenSSL used as well + * as that of the covered work. + */ + +package com.savoirfairelinux.sflphone.client; + +import android.app.Activity; +import android.content.ComponentName; +import android.content.Context; +import android.content.ServiceConnection; +import android.content.Intent; +import android.os.Bundle; +import android.os.IBinder; +import android.os.RemoteException; +import android.preference.Preference; +import android.preference.PreferenceActivity; +import android.preference.PreferenceManager; +import android.preference.PreferenceScreen; +import android.preference.EditTextPreference; +import android.preference.CheckBoxPreference; +import android.util.Log; + +import com.savoirfairelinux.sflphone.R; +// import com.savoirfairelinux.sflphone.service.SipService; +// import com.savoirfairelinux.sflphone.service.ISipService; +import com.savoirfairelinux.sflphone.utils.AccountDetail; +import com.savoirfairelinux.sflphone.utils.AccountDetailsHandler; +import com.savoirfairelinux.sflphone.utils.AccountDetailBasic; +import com.savoirfairelinux.sflphone.utils.AccountDetailAdvanced; +import com.savoirfairelinux.sflphone.utils.AccountDetailSrtp; +import com.savoirfairelinux.sflphone.utils.AccountDetailTls; + +import java.util.HashMap; +import java.util.ArrayList; + +public class AccountPreferenceActivity extends PreferenceActivity +{ + private static final String TAG = "AccoutPreferenceActivity"; + public static final int ACCOUNT_MODIFIED = Activity.RESULT_FIRST_USER + 0; + public static final int ACCOUNT_NOT_MODIFIED = Activity.RESULT_FIRST_USER + 1; + + private AccountDetailBasic basicDetails; + private AccountDetailAdvanced advancedDetails; + private AccountDetailSrtp srtpDetails; + private AccountDetailTls tlsDetails; + private PreferenceManager mPreferenceManager; + private HashMap<String, String> mPreferenceMap; + private String mAccountID; + + Preference.OnPreferenceChangeListener changeNewAccountPreferenceListener = new Preference.OnPreferenceChangeListener() { + public boolean onPreferenceChange(Preference preference, Object newValue) { + preference.setSummary(getString(R.string.account_current_value_label) + (CharSequence)newValue); + return true; + } + }; + + Preference.OnPreferenceChangeListener changeNewAccountTwoStateListener = new Preference.OnPreferenceChangeListener() { + public boolean onPreferenceChange(Preference preference, Object newValue) { + return true; + } + }; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + addPreferencesFromResource(R.xml.account_creation_preferences); + mPreferenceManager = getPreferenceManager(); + + Bundle b = getIntent().getExtras(); + mAccountID = b.getString("AccountID"); + ArrayList<String> basicPreferenceList = b.getStringArrayList(AccountDetailBasic.BUNDLE_TAG); + ArrayList<String> advancedPreferenceList = b.getStringArrayList(AccountDetailAdvanced.BUNDLE_TAG); + ArrayList<String> srtpPreferenceList = b.getStringArrayList(AccountDetailSrtp.BUNDLE_TAG); + ArrayList<String> tlsPreferenceList = b.getStringArrayList(AccountDetailTls.BUNDLE_TAG); + + basicDetails = new AccountDetailBasic(basicPreferenceList); + advancedDetails = new AccountDetailAdvanced(advancedPreferenceList); + srtpDetails = new AccountDetailSrtp(srtpPreferenceList); + tlsDetails = new AccountDetailTls(tlsPreferenceList); + + setPreferenceDetails(basicDetails); + } + + private void setPreferenceDetails(AccountDetail details) { + for(AccountDetail.PreferenceEntry p : details.getDetailValues()) { + Preference pref = mPreferenceManager.findPreference(p.mKey); + if(pref != null) { + Log.i(TAG, "setPreferenceDetails FOUND " + p.mKey + " = " + p.mValue); + if(!p.isTwoState) { + ((EditTextPreference)pref).setText(p.mValue); + pref.setSummary(getString(R.string.account_current_value_label) + p.mValue); + } + } + } + } + + private void addPreferenceListener(AccountDetail details) { + for(AccountDetail.PreferenceEntry p : details.getDetailValues()) { + Preference pref = mPreferenceManager.findPreference(p.mKey); + if(pref != null) { + if(!p.isTwoState) { + pref.setOnPreferenceChangeListener(changeNewAccountPreferenceListener); + } + } + } + } + + @Override + protected void onStart() { + super.onStart(); + + addPreferenceListener(basicDetails); + addPreferenceListener(advancedDetails); + addPreferenceListener(srtpDetails); + addPreferenceListener(tlsDetails); + } + + @Override + protected void onStop() { + super.onStop(); + + Bundle bundle = new Bundle(); + bundle.putString("AccountID", mAccountID); + bundle.putStringArrayList(AccountDetailBasic.BUNDLE_TAG, basicDetails.getValuesOnly()); + bundle.putStringArrayList(AccountDetailAdvanced.BUNDLE_TAG, advancedDetails.getValuesOnly()); + bundle.putStringArrayList(AccountDetailSrtp.BUNDLE_TAG, srtpDetails.getValuesOnly()); + bundle.putStringArrayList(AccountDetailTls.BUNDLE_TAG, tlsDetails.getValuesOnly()); + + Intent resultIntent = new Intent(); + resultIntent.putExtras(bundle); + + setResult(ACCOUNT_MODIFIED, resultIntent); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + } + + @Override + public void onBackPressed() { + Bundle bundle = new Bundle(); + bundle.putString("AccountID", mAccountID); + bundle.putStringArrayList(AccountDetailBasic.BUNDLE_TAG, basicDetails.getValuesOnly()); + bundle.putStringArrayList(AccountDetailAdvanced.BUNDLE_TAG, advancedDetails.getValuesOnly()); + bundle.putStringArrayList(AccountDetailSrtp.BUNDLE_TAG, srtpDetails.getValuesOnly()); + bundle.putStringArrayList(AccountDetailTls.BUNDLE_TAG, tlsDetails.getValuesOnly()); + + Intent resultIntent = new Intent(); + resultIntent.putExtras(bundle); + + setResult(ACCOUNT_MODIFIED, resultIntent); + finish(); + } + + private void updateAccountDetails(HashMap<String, String> accountDetails, AccountDetail det) { + for(AccountDetail.PreferenceEntry p : det.getDetailValues()) { + Preference pref = mPreferenceManager.findPreference(p.mKey); + if(pref != null) { + if(p.isTwoState) { + CheckBoxPreference boxPref = (CheckBoxPreference) pref; + accountDetails.put(p.mKey, boxPref.isChecked() ? "true" : "false"); + } + else { + EditTextPreference textPref = (EditTextPreference)pref; + accountDetails.put(p.mKey, textPref.getText()); + } + } + } + } + + private void updateAccountDetails() { + HashMap<String, String> accountDetails = new HashMap<String, String>(); + + updateAccountDetails(accountDetails, basicDetails); + updateAccountDetails(accountDetails, advancedDetails); + updateAccountDetails(accountDetails, srtpDetails); + updateAccountDetails(accountDetails, tlsDetails); + } +} + diff --git a/src/com/savoirfairelinux/sflphone/utils/AccountDetail.java b/src/com/savoirfairelinux/sflphone/utils/AccountDetail.java index 0243e29ee83097e6cc0b1479c07710c20d58b0b1..86519b96e1faabfd35bd9a8e88ce9c0965389d03 100644 --- a/src/com/savoirfairelinux/sflphone/utils/AccountDetail.java +++ b/src/com/savoirfairelinux/sflphone/utils/AccountDetail.java @@ -26,8 +26,7 @@ import com.savoirfairelinux.sflphone.service.ISipService; import com.savoirfairelinux.sflphone.service.ServiceConstants; import com.savoirfairelinux.sflphone.service.StringMap; -import java.util.Collection; -import java.util.Set; +import java.util.ArrayList; public interface AccountDetail { @@ -36,12 +35,14 @@ public interface AccountDetail { public String mKey; public int mLabelId; public boolean isTwoState; + public String mValue; public PreferenceEntry(String key, int labelId) { mKey = key; mLabelId = labelId; isTwoState = false; + mValue = ""; } public PreferenceEntry(String key, int labelId, boolean twoState) @@ -49,11 +50,24 @@ public interface AccountDetail { mKey = key; mLabelId = labelId; isTwoState = twoState; + mValue = ""; + } + + public PreferenceEntry(String key, int labelId, boolean twoState, String value) + { + mKey = key; + mLabelId = labelId; + isTwoState = twoState; + mValue = value; } } - public Set<String> getDetailKeys(); + public ArrayList<PreferenceEntry> getDetailValues(); + + public ArrayList<String> getValuesOnly(); + + public String getDetailString(String key); - public Collection<PreferenceEntry> getDetailValues(); + public boolean getDetailBoolean(); } diff --git a/src/com/savoirfairelinux/sflphone/utils/AccountDetailAdvanced.java b/src/com/savoirfairelinux/sflphone/utils/AccountDetailAdvanced.java index b9e9eee5fe0e653df3d16d054f7d24784b1f338e..0faa79a9b4c10287f5f918472c3f3e64166c8866 100644 --- a/src/com/savoirfairelinux/sflphone/utils/AccountDetailAdvanced.java +++ b/src/com/savoirfairelinux/sflphone/utils/AccountDetailAdvanced.java @@ -24,6 +24,8 @@ package com.savoirfairelinux.sflphone.utils; import com.savoirfairelinux.sflphone.R; import com.savoirfairelinux.sflphone.utils.AccountDetail; +import android.util.Log; + import java.util.ArrayList; import java.util.Collection; import java.util.Set; @@ -31,6 +33,9 @@ import java.util.HashMap; public class AccountDetailAdvanced implements AccountDetail { + private static final String TAG = "AccountDetailAdvanced"; + public static final String BUNDLE_TAG = "AdvancedPreferenceArrayList"; + public static final String CONFIG_ACCOUNT_MAILBOX = "Account.mailbox"; public static final String CONFIG_ACCOUNT_REGISTRATION_EXPIRE = "Account.registrationExpire"; public static final String CONFIG_ACCOUNT_REGISTRATION_STATUS = "Account.registrationStatus"; @@ -60,7 +65,7 @@ public class AccountDetailAdvanced implements AccountDetail { public static final String CONFIG_STUN_SERVER = "STUN.server"; public static final String CONFIG_STUN_ENABLE = "STUN.enable"; - private HashMap<String, AccountDetail.PreferenceEntry> privateMap; + private ArrayList<AccountDetail.PreferenceEntry> privateArray; public static ArrayList<AccountDetail.PreferenceEntry> getPreferenceEntries() { @@ -91,55 +96,66 @@ public class AccountDetailAdvanced implements AccountDetail { public AccountDetailAdvanced() { - privateMap = new HashMap<String, AccountDetail.PreferenceEntry>(); - - privateMap.put(CONFIG_ACCOUNT_REGISTRATION_EXPIRE, - new PreferenceEntry(CONFIG_ACCOUNT_REGISTRATION_EXPIRE, R.string.account_registration_exp_label)); - privateMap.put(CONFIG_ACCOUNT_REGISTRATION_STATUS, - new PreferenceEntry(CONFIG_ACCOUNT_REGISTRATION_STATUS, R.string.account_registration_status_label)); - privateMap.put(CONFIG_ACCOUNT_REGISTRATION_STATE_CODE, - new PreferenceEntry(CONFIG_ACCOUNT_REGISTRATION_STATE_CODE, R.string.account_registration_code_label)); - privateMap.put(CONFIG_ACCOUNT_REGISTRATION_STATE_DESC, - new PreferenceEntry(CONFIG_ACCOUNT_REGISTRATION_STATE_DESC, R.string.account_registration_state_label)); - privateMap.put(CONFIG_CREDENTIAL_NUMBER, - new PreferenceEntry(CONFIG_CREDENTIAL_NUMBER, R.string.account_credential_count_label)); - privateMap.put(CONFIG_ACCOUNT_DTMF_TYPE, - new PreferenceEntry(CONFIG_ACCOUNT_DTMF_TYPE, R.string.account_config_dtmf_type_label)); - privateMap.put(CONFIG_RINGTONE_PATH, - new PreferenceEntry(CONFIG_RINGTONE_PATH, R.string.account_ringtone_path_label)); - privateMap.put(CONFIG_RINGTONE_ENABLED, - new PreferenceEntry(CONFIG_RINGTONE_ENABLED, R.string.account_ringtone_enabled_label, true)); - privateMap.put(CONFIG_KEEP_ALIVE_ENABLED, - new PreferenceEntry(CONFIG_KEEP_ALIVE_ENABLED, R.string.account_keep_alive_label, true)); - privateMap.put(CONFIG_ACCOUNT_AUTOANSWER, - new PreferenceEntry(CONFIG_ACCOUNT_AUTOANSWER, R.string.account_account_interface_label, true)); - privateMap.put(CONFIG_LOCAL_INTERFACE, - new PreferenceEntry(CONFIG_LOCAL_INTERFACE, R.string.account_local_interface_label)); - privateMap.put(CONFIG_INTERFACE, - new PreferenceEntry(CONFIG_INTERFACE, R.string.account_account_interface_label)); - privateMap.put(CONFIG_PUBLISHED_SAMEAS_LOCAL, - new PreferenceEntry(CONFIG_PUBLISHED_SAMEAS_LOCAL, R.string.account_published_same_as_local_label, true)); - privateMap.put(CONFIG_LOCAL_PORT, - new PreferenceEntry(CONFIG_LOCAL_PORT, R.string.account_local_port_label)); - privateMap.put(CONFIG_PUBLISHED_PORT, - new PreferenceEntry(CONFIG_PUBLISHED_PORT, R.string.account_published_port_label)); - privateMap.put(CONFIG_PUBLISHED_ADDRESS, - new PreferenceEntry(CONFIG_PUBLISHED_ADDRESS, R.string.account_published_address_label)); - privateMap.put(CONFIG_DISPLAY_NAME, - new PreferenceEntry(CONFIG_DISPLAY_NAME, R.string.account_displayname_label)); - privateMap.put(CONFIG_STUN_SERVER, - new PreferenceEntry(CONFIG_STUN_SERVER, R.string.account_stun_server_label)); - privateMap.put(CONFIG_STUN_ENABLE, - new PreferenceEntry(CONFIG_STUN_ENABLE, R.string.account_stun_enable_label, true)); + privateArray = getPreferenceEntries(); } - public Set<String> getDetailKeys() + public AccountDetailAdvanced(HashMap<String, String> pref) { - return privateMap.keySet(); + privateArray = getPreferenceEntries(); + + for(AccountDetail.PreferenceEntry p : privateArray) { + p.mValue = pref.get(p.mKey); + } } - public Collection<AccountDetail.PreferenceEntry> getDetailValues() + public AccountDetailAdvanced(ArrayList<String> pref) { - return privateMap.values(); + privateArray = getPreferenceEntries(); + + if(pref.size() != privateArray.size()) { + Log.i(TAG, "Error list are not of equal size"); + } + else { + int index = 0; + for(String s : pref) { + privateArray.get(index).mValue = s; + } + } } + + public ArrayList<AccountDetail.PreferenceEntry> getDetailValues() + { + return privateArray; + } + + public ArrayList<String> getValuesOnly() + { + ArrayList<String> valueList = new ArrayList<String>(); + + for(AccountDetail.PreferenceEntry p : privateArray) { + valueList.add(p.mValue); + } + + return valueList; + } + + public String getDetailString(String key) + { + String value = ""; + + for(AccountDetail.PreferenceEntry p : privateArray) { + if(p.mKey.equals(key)) { + value = p.mValue; + return value; + } + } + + return value; + } + + public boolean getDetailBoolean() + { + return true; + } + } diff --git a/src/com/savoirfairelinux/sflphone/utils/AccountDetailBasic.java b/src/com/savoirfairelinux/sflphone/utils/AccountDetailBasic.java index 046e4f560260f2221c8c420a57336a6fab5af86c..97e42e905d750fe2712f2e7f1d79858954a099b9 100644 --- a/src/com/savoirfairelinux/sflphone/utils/AccountDetailBasic.java +++ b/src/com/savoirfairelinux/sflphone/utils/AccountDetailBasic.java @@ -24,6 +24,8 @@ package com.savoirfairelinux.sflphone.utils; import com.savoirfairelinux.sflphone.R; import com.savoirfairelinux.sflphone.utils.AccountDetail; +import android.util.Log; + import java.util.ArrayList; import java.util.Collection; import java.util.Set; @@ -31,9 +33,12 @@ import java.util.HashMap; public class AccountDetailBasic implements AccountDetail { + private static final String TAG = "AccountDetailBasic"; + public static final String BUNDLE_TAG = "BasicPreferenceArrayList"; + + public static final String CONFIG_ACCOUNT_ENABLE = "Account.enable"; public static final String CONFIG_ACCOUNT_TYPE = "Account.type"; public static final String CONFIG_ACCOUNT_ALIAS = "Account.alias"; - public static final String CONFIG_ACCOUNT_ENABLE = "Account.enable"; public static final String CONFIG_ACCOUNT_HOSTNAME = "Account.hostname"; public static final String CONFIG_ACCOUNT_USERNAME = "Account.username"; public static final String CONFIG_ACCOUNT_ROUTESET = "Account.routeset"; @@ -42,16 +47,15 @@ public class AccountDetailBasic implements AccountDetail { public static final String CONFIG_ACCOUNT_DEFAULT_REALM = "*"; public static final String CONFIG_ACCOUNT_USERAGENT = "Account.useragent"; - private HashMap<String, AccountDetail.PreferenceEntry> privateMap; - + private ArrayList<AccountDetail.PreferenceEntry> privateArray; public static ArrayList<AccountDetail.PreferenceEntry> getPreferenceEntries() { ArrayList<AccountDetail.PreferenceEntry> preference = new ArrayList<AccountDetail.PreferenceEntry>(); + preference.add(new PreferenceEntry(CONFIG_ACCOUNT_ENABLE, R.string.account_enabled_label, true)); preference.add(new PreferenceEntry(CONFIG_ACCOUNT_TYPE, R.string.account_type_label)); preference.add(new PreferenceEntry(CONFIG_ACCOUNT_ALIAS, R.string.account_alias_label)); - preference.add(new PreferenceEntry(CONFIG_ACCOUNT_ENABLE, R.string.account_enabled_label, true)); preference.add(new PreferenceEntry(CONFIG_ACCOUNT_HOSTNAME, R.string.account_hostname_label)); preference.add(new PreferenceEntry(CONFIG_ACCOUNT_USERNAME, R.string.account_username_label)); preference.add(new PreferenceEntry(CONFIG_ACCOUNT_ROUTESET, R.string.account_routeset_label)); @@ -65,37 +69,66 @@ public class AccountDetailBasic implements AccountDetail { public AccountDetailBasic() { - privateMap = new HashMap<String, AccountDetail.PreferenceEntry>(); - - privateMap.put(CONFIG_ACCOUNT_TYPE, - new PreferenceEntry(CONFIG_ACCOUNT_TYPE, R.string.account_type_label)); - privateMap.put(CONFIG_ACCOUNT_ALIAS, - new PreferenceEntry(CONFIG_ACCOUNT_ALIAS, R.string.account_alias_label)); - privateMap.put(CONFIG_ACCOUNT_ENABLE, - new PreferenceEntry(CONFIG_ACCOUNT_ENABLE, R.string.account_enabled_label, true)); - privateMap.put(CONFIG_ACCOUNT_HOSTNAME, - new PreferenceEntry(CONFIG_ACCOUNT_HOSTNAME, R.string.account_hostname_label)); - privateMap.put(CONFIG_ACCOUNT_USERNAME, - new PreferenceEntry(CONFIG_ACCOUNT_USERNAME, R.string.account_username_label)); - privateMap.put(CONFIG_ACCOUNT_ROUTESET, - new PreferenceEntry(CONFIG_ACCOUNT_ROUTESET, R.string.account_routeset_label)); - privateMap.put(CONFIG_ACCOUNT_PASSWORD, - new PreferenceEntry(CONFIG_ACCOUNT_PASSWORD, R.string.account_password_label)); - privateMap.put(CONFIG_ACCOUNT_REALM, - new PreferenceEntry(CONFIG_ACCOUNT_REALM, R.string.account_realm_label)); - privateMap.put(CONFIG_ACCOUNT_DEFAULT_REALM, - new PreferenceEntry(CONFIG_ACCOUNT_DEFAULT_REALM, R.string.account_useragent_label)); - privateMap.put(CONFIG_ACCOUNT_USERAGENT, - new PreferenceEntry(CONFIG_ACCOUNT_USERAGENT, R.string.account_autoanswer_label)); + privateArray = getPreferenceEntries(); + } + + public AccountDetailBasic(HashMap<String, String> pref) + { + privateArray = getPreferenceEntries(); + + for(AccountDetail.PreferenceEntry p : privateArray) { + p.mValue = pref.get(p.mKey); + } + } + + public AccountDetailBasic(ArrayList<String> pref) + { + privateArray = getPreferenceEntries(); + + if(pref.size() != privateArray.size()) { + Log.i(TAG, "Error list are not of equal size"); + } + else { + int index = 0; + for(String s : pref) { + privateArray.get(index).mValue = s; + index++; + } + } + } + + public ArrayList<AccountDetail.PreferenceEntry> getDetailValues() + { + return privateArray; } - public Set<String> getDetailKeys() + public ArrayList<String> getValuesOnly() { - return privateMap.keySet(); + ArrayList<String> valueList = new ArrayList<String>(); + + for(AccountDetail.PreferenceEntry p : privateArray) { + valueList.add(p.mValue); + } + + return valueList; + } + + public String getDetailString(String key) + { + String value = ""; + + for(AccountDetail.PreferenceEntry p : privateArray) { + if(p.mKey.equals(key)) { + value = p.mValue; + return value; + } + } + + return value; } - public Collection<AccountDetail.PreferenceEntry> getDetailValues() + public boolean getDetailBoolean() { - return privateMap.values(); + return true; } } diff --git a/src/com/savoirfairelinux/sflphone/utils/AccountDetailSrtp.java b/src/com/savoirfairelinux/sflphone/utils/AccountDetailSrtp.java index 11229241b20020bdb84a6b11af6654f324231ea5..d20541957d5e127f6fc5b78e9b9681075db353da 100644 --- a/src/com/savoirfairelinux/sflphone/utils/AccountDetailSrtp.java +++ b/src/com/savoirfairelinux/sflphone/utils/AccountDetailSrtp.java @@ -24,6 +24,8 @@ package com.savoirfairelinux.sflphone.utils; import com.savoirfairelinux.sflphone.R; import com.savoirfairelinux.sflphone.utils.AccountDetail; +import android.util.Log; + import java.util.ArrayList; import java.util.Collection; import java.util.Set; @@ -31,6 +33,9 @@ import java.util.HashMap; public class AccountDetailSrtp implements AccountDetail{ + private static final String TAG = "AccountDetailSrtp"; + public static final String BUNDLE_TAG = "SrtpPreferenceArrayList"; + public static final String CONFIG_SRTP_ENABLE = "SRTP.enable"; public static final String CONFIG_SRTP_KEY_EXCHANGE = "SRTP.keyExchange"; public static final String CONFIG_SRTP_ENCRYPTION_ALGO = "SRTP.encryptionAlgorithm"; // Provided by ccRTP,0=NULL,1=AESCM,2=AESF8 @@ -40,7 +45,7 @@ public class AccountDetailSrtp implements AccountDetail{ public static final String CONFIG_ZRTP_NOT_SUPP_WARNING = "ZRTP.notSuppWarning"; public static final String CONFIG_ZRTP_DISPLAY_SAS_ONCE = "ZRTP.displaySasOnce"; - private HashMap<String, AccountDetail.PreferenceEntry> privateMap; + private ArrayList<AccountDetail.PreferenceEntry> privateArray; public static ArrayList<AccountDetail.PreferenceEntry> getPreferenceEntries() { @@ -60,33 +65,66 @@ public class AccountDetailSrtp implements AccountDetail{ public AccountDetailSrtp() { - privateMap = new HashMap<String, AccountDetail.PreferenceEntry>(); - - privateMap.put(CONFIG_SRTP_ENABLE, - new PreferenceEntry(CONFIG_SRTP_ENABLE, R.string.account_srtp_enabled_label, true)); - privateMap.put(CONFIG_SRTP_KEY_EXCHANGE, - new PreferenceEntry(CONFIG_SRTP_KEY_EXCHANGE, R.string.account_srtp_exchange_label, true)); - privateMap.put(CONFIG_SRTP_ENCRYPTION_ALGO, - new PreferenceEntry(CONFIG_SRTP_ENCRYPTION_ALGO, R.string.account_encryption_algo_label, true)); - privateMap.put(CONFIG_SRTP_RTP_FALLBACK, - new PreferenceEntry(CONFIG_SRTP_RTP_FALLBACK, R.string.account_srtp_fallback_label, true)); - privateMap.put(CONFIG_ZRTP_HELLO_HASH, - new PreferenceEntry(CONFIG_ZRTP_HELLO_HASH, R.string.account_hello_hash_enable_label, true)); - privateMap.put(CONFIG_ZRTP_DISPLAY_SAS, - new PreferenceEntry(CONFIG_ZRTP_DISPLAY_SAS, R.string.account_display_sas_label, true)); - privateMap.put(CONFIG_ZRTP_NOT_SUPP_WARNING, - new PreferenceEntry(CONFIG_ZRTP_NOT_SUPP_WARNING, R.string.account_not_supported_warning_label, true)); - privateMap.put(CONFIG_ZRTP_DISPLAY_SAS_ONCE, - new PreferenceEntry(CONFIG_ZRTP_DISPLAY_SAS_ONCE, R.string.account_display_sas_once_label, true)); + privateArray = getPreferenceEntries(); + } + + public AccountDetailSrtp(HashMap<String, String> pref) + { + privateArray = getPreferenceEntries(); + + for(AccountDetail.PreferenceEntry p : privateArray) { + p.mValue = pref.get(p.mKey); + } + } + + public AccountDetailSrtp(ArrayList<String> pref) + { + privateArray = getPreferenceEntries(); + + if(pref.size() != privateArray.size()) { + Log.i(TAG, "Error list are not of equal size"); + } + else { + int index = 0; + for(String s : pref) { + privateArray.get(index).mValue = s; + index++; + } + } + } + + public ArrayList<AccountDetail.PreferenceEntry> getDetailValues() + { + return privateArray; + } + + public ArrayList<String> getValuesOnly() + { + ArrayList<String> valueList = new ArrayList<String>(); + + for(AccountDetail.PreferenceEntry p : privateArray) { + valueList.add(p.mValue); + } + + return valueList; } - public Set<String> getDetailKeys() + public String getDetailString(String key) { - return privateMap.keySet(); + String value = ""; + + for(AccountDetail.PreferenceEntry p : privateArray) { + if(p.mKey.equals(key)) { + value = p.mValue; + return value; + } + } + + return value; } - public Collection<AccountDetail.PreferenceEntry> getDetailValues() + public boolean getDetailBoolean() { - return privateMap.values(); + return true; } } diff --git a/src/com/savoirfairelinux/sflphone/utils/AccountDetailTls.java b/src/com/savoirfairelinux/sflphone/utils/AccountDetailTls.java index 03efcd0cdc0c8c7f23495f57df239cb26c537add..bd2d6e5ebd603cd6a7c7242af377daf9564fa773 100644 --- a/src/com/savoirfairelinux/sflphone/utils/AccountDetailTls.java +++ b/src/com/savoirfairelinux/sflphone/utils/AccountDetailTls.java @@ -24,12 +24,17 @@ package com.savoirfairelinux.sflphone.utils; import com.savoirfairelinux.sflphone.R; import com.savoirfairelinux.sflphone.utils.AccountDetail; +import android.util.Log; + import java.util.ArrayList; import java.util.Collection; import java.util.Set; import java.util.HashMap; public class AccountDetailTls implements AccountDetail { + + private static final String TAG = "AccountDetailTls"; + public static final String BUNDLE_TAG = "TlsPreferenceArrayList"; public static final String CONFIG_TLS_LISTENER_PORT = "TLS.listenerPort"; public static final String CONFIG_TLS_ENABLE = "TLS.enable"; @@ -46,7 +51,7 @@ public class AccountDetailTls implements AccountDetail { public static final String CONFIG_TLS_NEGOTIATION_TIMEOUT_SEC = "TLS.negotiationTimeoutSec"; public static final String CONFIG_TLS_NEGOTIATION_TIMEOUT_MSEC = "TLS.negotiationTimemoutMsec"; - private HashMap<String, AccountDetail.PreferenceEntry> privateMap; + private ArrayList<AccountDetail.PreferenceEntry> privateArray; public static ArrayList<AccountDetail.PreferenceEntry> getPreferenceEntries() { @@ -72,45 +77,66 @@ public class AccountDetailTls implements AccountDetail { public AccountDetailTls() { - privateMap = new HashMap<String, AccountDetail.PreferenceEntry>(); - - privateMap.put(CONFIG_TLS_LISTENER_PORT, - new PreferenceEntry(CONFIG_TLS_LISTENER_PORT, R.string.account_listener_port_label)); - privateMap.put(CONFIG_TLS_ENABLE, - new PreferenceEntry(CONFIG_TLS_ENABLE, R.string.account_tls_enabled_label, true)); - privateMap.put(CONFIG_TLS_CA_LIST_FILE, - new PreferenceEntry(CONFIG_TLS_CA_LIST_FILE, R.string.account_tls_certificate_list_label)); - privateMap.put(CONFIG_TLS_CERTIFICATE_FILE, - new PreferenceEntry(CONFIG_TLS_CERTIFICATE_FILE, R.string.account_tls_certificate_file_label)); - privateMap.put(CONFIG_TLS_PRIVATE_KEY_FILE, - new PreferenceEntry(CONFIG_TLS_PRIVATE_KEY_FILE, R.string.account_tls_private_key_file_label)); - privateMap.put(CONFIG_TLS_PASSWORD, - new PreferenceEntry(CONFIG_TLS_PASSWORD, R.string.account_tls_password_label)); - privateMap.put(CONFIG_TLS_METHOD, - new PreferenceEntry(CONFIG_TLS_METHOD, R.string.account_tls_method_label)); - privateMap.put(CONFIG_TLS_CIPHERS, - new PreferenceEntry(CONFIG_TLS_CIPHERS, R.string.account_tls_ciphers_label)); - privateMap.put(CONFIG_TLS_SERVER_NAME, - new PreferenceEntry(CONFIG_TLS_SERVER_NAME, R.string.account_tls_server_name_label)); - privateMap.put(CONFIG_TLS_VERIFY_SERVER, - new PreferenceEntry(CONFIG_TLS_VERIFY_SERVER, R.string.account_tls_verify_label, true)); - privateMap.put(CONFIG_TLS_VERIFY_CLIENT, - new PreferenceEntry(CONFIG_TLS_VERIFY_CLIENT, R.string.account_tls_verify_client_label, true)); - privateMap.put(CONFIG_TLS_REQUIRE_CLIENT_CERTIFICATE, - new PreferenceEntry(CONFIG_TLS_REQUIRE_CLIENT_CERTIFICATE, R.string.account_tls_require_client_certificat_label, true)); - privateMap.put(CONFIG_TLS_NEGOTIATION_TIMEOUT_SEC, - new PreferenceEntry(CONFIG_TLS_NEGOTIATION_TIMEOUT_SEC, R.string.account_tls_negotiation_timeout_sec)); - privateMap.put(CONFIG_TLS_NEGOTIATION_TIMEOUT_MSEC, - new PreferenceEntry(CONFIG_TLS_NEGOTIATION_TIMEOUT_MSEC, R.string.account_tls_negotiation_timeout_msec)); + privateArray = getPreferenceEntries(); + } + + public AccountDetailTls(HashMap<String, String> pref) + { + privateArray = getPreferenceEntries(); + + for(AccountDetail.PreferenceEntry p : privateArray) { + p.mValue = pref.get(p.mKey); + } } - - public Set<String> getDetailKeys() + + public AccountDetailTls(ArrayList<String> pref) + { + privateArray = getPreferenceEntries(); + + if(pref.size() != privateArray.size()) { + Log.i(TAG, "Error list are not of equal size"); + } + else { + int index = 0; + for(String s : pref) { + privateArray.get(index).mValue = s; + index++; + } + } + } + + public ArrayList<AccountDetail.PreferenceEntry> getDetailValues() { - return privateMap.keySet(); + return privateArray; + } + + public ArrayList<String> getValuesOnly() + { + ArrayList<String> valueList = new ArrayList<String>(); + + for(AccountDetail.PreferenceEntry p : privateArray) { + valueList.add(p.mValue); + } + + return valueList; + } + + public String getDetailString(String key) + { + String value = ""; + + for(AccountDetail.PreferenceEntry p : privateArray) { + if(p.mKey.equals(key)) { + value = p.mValue; + return value; + } + } + + return value; } - public Collection<AccountDetail.PreferenceEntry> getDetailValues() + public boolean getDetailBoolean() { - return privateMap.values(); + return true; } }