Merged AccountCreationActivity and AccountPreferenceActivity (redundant)
Fixed issues in account edition
Added layouts for action bar menus (+ icons)
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountDetail.java b/src/com/savoirfairelinux/sflphone/account/AccountDetail.java
index 50a6257..9507c24 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountDetail.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountDetail.java
@@ -58,6 +58,8 @@
}
}
+ public static final String TAG = "PreferenceHashMap";
+
public ArrayList<PreferenceEntry> getDetailValues();
public ArrayList<String> getValuesOnly();
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountDetailBasic.java b/src/com/savoirfairelinux/sflphone/account/AccountDetailBasic.java
index 03a1354..0db2523 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountDetailBasic.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountDetailBasic.java
@@ -107,6 +107,7 @@
ArrayList<String> valueList = new ArrayList<String>();
for(AccountDetail.PreferenceEntry p : privateArray) {
+ Log.i(TAG,""+p.mValue);
valueList.add(p.mValue);
}
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountDetailsHandler.java b/src/com/savoirfairelinux/sflphone/account/AccountDetailsHandler.java
index 3e71d72..6b8c41b 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountDetailsHandler.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountDetailsHandler.java
@@ -21,16 +21,13 @@
*/
package com.savoirfairelinux.sflphone.account;
-import android.util.Log;
+import java.util.ArrayList;
+import java.util.HashMap;
import com.savoirfairelinux.sflphone.R;
import com.savoirfairelinux.sflphone.service.ServiceConstants;
import com.savoirfairelinux.sflphone.service.StringMap;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-
public class AccountDetailsHandler {
private static final String TAG = "AccountDetailsHandler";
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountManagementUI.java b/src/com/savoirfairelinux/sflphone/account/AccountManagementUI.java
index 6401d5b..d58aa7c 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountManagementUI.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountManagementUI.java
@@ -32,7 +32,7 @@
import java.util.ArrayList;
-import com.savoirfairelinux.sflphone.account.AccountListReceiver;
+import com.savoirfairelinux.sflphone.client.receiver.AccountListReceiver;
public interface AccountManagementUI
{
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountSelectionSpinner.java b/src/com/savoirfairelinux/sflphone/account/AccountSelectionSpinner.java
index ef23f35..9642fdf 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountSelectionSpinner.java
+++ b/src/com/savoirfairelinux/sflphone/account/AccountSelectionSpinner.java
@@ -32,6 +32,8 @@
import java.util.ArrayList;
+import com.savoirfairelinux.sflphone.client.receiver.AccountListReceiver;
+
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
@@ -92,12 +94,18 @@
};
+ /****************************************
+ * AccountManagementUI Interface
+ ****************************************/
+
+ @Override
public void setAccountList(AccountListReceiver accountList) {
Log.i(TAG,"setAccountList");
mAccountList = accountList;
}
+ @Override
public void accountSelectedNotifyAccountList(String accountID) {
Log.i(TAG, "->accountSelectedNotifyAccountList");
if (mAccountList != null) {
@@ -105,11 +113,13 @@
}
}
+ @Override
public void setSelectedAccount(String accountID) {
Log.i(TAG,"Account Selected");
// setText(accountID);
}
+ @Override
public void accountAdded(ArrayList<String> newList) {
mListAdapter = new ArrayAdapter(mContext, android.R.layout.simple_expandable_list_item_1, newList.toArray());
@@ -123,10 +133,12 @@
// }
}
+ @Override
public void accountRemoved() {
Log.i(TAG,"Account Removed");
}
+ @Override
public void accountUpdated() {
Log.i(TAG,"Account Updated");
}
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountCreationActivity.java b/src/com/savoirfairelinux/sflphone/client/AccountCreationActivity.java
deleted file mode 100644
index 93de02e..0000000
--- a/src/com/savoirfairelinux/sflphone/client/AccountCreationActivity.java
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * 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 java.util.ArrayList;
-import java.util.HashMap;
-
-import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.os.Bundle;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.preference.CheckBoxPreference;
-import android.preference.EditTextPreference;
-import android.preference.Preference;
-import android.preference.PreferenceActivity;
-import android.preference.PreferenceManager;
-import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-
-import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.account.AccountDetail;
-import com.savoirfairelinux.sflphone.account.AccountDetailAdvanced;
-import com.savoirfairelinux.sflphone.account.AccountDetailBasic;
-import com.savoirfairelinux.sflphone.account.AccountDetailSrtp;
-import com.savoirfairelinux.sflphone.account.AccountDetailTls;
-import com.savoirfairelinux.sflphone.service.ISipService;
-import com.savoirfairelinux.sflphone.service.SipService;
-
-public class AccountCreationActivity extends PreferenceActivity
-{
- static final String TAG = "SFLPhonePreferenceActivity";
- private ISipService service;
- private boolean mBound = false;
- private PreferenceManager mPreferenceManager = null;
- private AccountDetailBasic basicDetails;
- private AccountDetailAdvanced advancedDetails;
- private AccountDetailSrtp srtpDetails;
- private AccountDetailTls tlsDetails;
- private MenuItem createAccountAction = null;
- private ArrayList<String> requiredFields = null;
-
- 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;
- }
- };
-
- private ServiceConnection mConnection = new ServiceConnection() {
- @Override
- public void onServiceConnected(ComponentName className, IBinder binder) {
- service = ISipService.Stub.asInterface(binder);
- mBound = true;
- Log.d(TAG, "Service connected");
- }
-
- @Override
- public void onServiceDisconnected(ComponentName arg0) {
- mBound = false;
- Log.d(TAG, "Service disconnected");
- }
- };
-
- public AccountCreationActivity()
- {
- basicDetails = new AccountDetailBasic();
- advancedDetails = new AccountDetailAdvanced();
- srtpDetails = new AccountDetailSrtp();
- tlsDetails = new AccountDetailTls();
-
- requiredFields = new ArrayList<String>();
-
- requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_ALIAS);
- requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_HOSTNAME);
- requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_USERNAME);
- requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_PASSWORD);
- }
-
- private AlertDialog createAlertDialog()
- {
- Activity ownerActivity = this;
- AlertDialog.Builder builder = new AlertDialog.Builder(ownerActivity);
- builder.setMessage("All parameters will be lost").setTitle("Account Creation")
- .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- Activity activity = ((Dialog)dialog).getOwnerActivity();
- activity.finish();
- }
- })
- .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- /* Terminate with no action */
- }
- });
-
- AlertDialog alertDialog = builder.create();
- alertDialog.setOwnerActivity(ownerActivity);
-
- return alertDialog;
- }
-
- private AlertDialog createCouldNotValidateDialog(ArrayList<String> missingValue)
- {
- String message = "The following parameters are missing:";
-
- for(String s : missingValue)
- message += "\n - " + s;
-
- Activity ownerActivity = this;
- AlertDialog.Builder builder = new AlertDialog.Builder(ownerActivity);
- builder.setMessage(message).setTitle("Missing Parameters")
- .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- /* Nothing to be done */
- }
- });
-
- AlertDialog alertDialog = builder.create();
- return alertDialog;
- }
-
- public boolean validateAccountCreation(ArrayList<String> missingValue)
- {
- boolean valid = true;
-
- for(String s : requiredFields) {
- EditTextPreference pref = (EditTextPreference)mPreferenceManager.findPreference(s);
- Log.i(TAG, "Looking for " + s);
- if(pref.getText().isEmpty()) {
- Log.i(TAG, " INVALIDATED " + s + " " + pref.getText() + ";");
- valid = false;
- missingValue.add(pref.getTitle().toString());
- }
- }
-
- return valid;
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.account_creation_preferences);
- mPreferenceManager = getPreferenceManager();
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- createAccountAction = menu.add("Create Account");
- createAccountAction.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
- return true;
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- ArrayList<String> missingValue = new ArrayList<String>();
- if(validateAccountCreation(missingValue)) {
- createNewAccount();
- finish();
- }
- else {
- AlertDialog dialog = createCouldNotValidateDialog(missingValue);
- dialog.show();
- }
-
- return true;
- }
-
- 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);
-
- if(!mBound) {
- Log.i(TAG, "onStart: Binding service...");
- Intent intent = new Intent(this, SipService.class);
- bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
- }
- }
-
- @Override
- protected void onStop() {
- super.onStop();
-
- if(mBound) {
- Log.i(TAG, "onStop: Unbinding service...");
- unbindService(mConnection);
- mBound = false;
- }
- }
-
- @Override
- public void onBackPressed() {
-
- AlertDialog dialog = createAlertDialog();
- dialog.show();
- }
-
- 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 createNewAccount() {
-
- HashMap<String, String> accountDetails = new HashMap<String, String>();
-
- updateAccountDetails(accountDetails, basicDetails);
- updateAccountDetails(accountDetails, advancedDetails);
- updateAccountDetails(accountDetails, srtpDetails);
- updateAccountDetails(accountDetails, tlsDetails);
-
- try {
- Log.i(TAG, "ADD ACCOUNT");
- service.addAccount(accountDetails);
- } catch (RemoteException e) {
- Log.e(TAG, "Cannot call service method", e);
- }
- }
-}
diff --git a/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java b/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
index 72c8efd..a11b80c 100644
--- a/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/AccountPreferenceActivity.java
@@ -31,24 +31,23 @@
package com.savoirfairelinux.sflphone.client;
+import java.util.ArrayList;
+import java.util.HashMap;
+
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
-import android.content.ComponentName;
-import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
-import android.os.IBinder;
-import android.os.RemoteException;
+import android.preference.CheckBoxPreference;
+import android.preference.EditTextPreference;
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 android.view.Menu;
+import android.view.MenuInflater;
import android.view.MenuItem;
import com.savoirfairelinux.sflphone.R;
@@ -57,49 +56,73 @@
import com.savoirfairelinux.sflphone.account.AccountDetailBasic;
import com.savoirfairelinux.sflphone.account.AccountDetailSrtp;
import com.savoirfairelinux.sflphone.account.AccountDetailTls;
-import com.savoirfairelinux.sflphone.account.AccountDetailsHandler;
-import java.util.HashMap;
-import java.util.ArrayList;
-
-public class AccountPreferenceActivity extends PreferenceActivity
-{
+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;
- public static final int ACCOUNT_DELETED = Activity.RESULT_FIRST_USER + 2;
+
+ public static final String KEY_MODE = "mode";
+
+ public interface mode {
+ static final int CREATION_MODE = 0;
+ static final int EDITION_MODE = 1;
+ }
+
+ public interface result {
+ static final int ACCOUNT_CREATED = Activity.RESULT_FIRST_USER + 0;
+ static final int ACCOUNT_MODIFIED = Activity.RESULT_FIRST_USER + 1;
+ static final int ACCOUNT_DELETED = Activity.RESULT_FIRST_USER + 2;
+ }
private AccountDetailBasic basicDetails = null;
private AccountDetailAdvanced advancedDetails = null;
private AccountDetailSrtp srtpDetails = null;
private AccountDetailTls tlsDetails = null;
private PreferenceManager mPreferenceManager;
- private HashMap<String, String> mPreferenceMap;
- private MenuItem deleteAccountAction = null;
private String mAccountID;
-
- Preference.OnPreferenceChangeListener changeBasicPreferenceListener =
- new Preference.OnPreferenceChangeListener() {
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- preference.setSummary(getString(R.string.account_current_value_label)+(CharSequence)newValue);
-
- // String preferenceKey = basicDetailKeys.get(preference.getOrder()).mKey;
- // accountPreference.preferenceMap.put(preferenceKey, ((CharSequence)newValue).toString());
- basicDetails.setDetailString(preference.getOrder(), ((CharSequence)newValue).toString());
- // if(preferenceKey == AccountDetailBasic.CONFIG_ACCOUNT_ALIAS)
- // accountPreference.mScreen.setTitle(((CharSequence)newValue.toString()));
- return true;
- }
- };
+ private ArrayList<String> requiredFields = null;
- 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();
- private void init() {
+ Bundle b = getIntent().getExtras();
+
+ switch (b.getInt(KEY_MODE)) {
+ case mode.CREATION_MODE:
+ Log.i(TAG, "CREATION");
+ initCreation();
+ break;
+ case mode.EDITION_MODE:
+ Log.i(TAG, "ESDITION");
+ initEdition();
+ break;
+ }
+
+ requiredFields = new ArrayList<String>();
+ requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_ALIAS);
+ requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_HOSTNAME);
+ requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_USERNAME);
+ requiredFields.add(AccountDetailBasic.CONFIG_ACCOUNT_PASSWORD);
+
+ }
+
+ private void initCreation() {
+ basicDetails = new AccountDetailBasic();
+ advancedDetails = new AccountDetailAdvanced();
+ srtpDetails = new AccountDetailSrtp();
+ tlsDetails = new AccountDetailTls();
+
+ addPreferenceListener(basicDetails);
+ addPreferenceListener(advancedDetails);
+ addPreferenceListener(srtpDetails);
+ addPreferenceListener(tlsDetails);
+
+ }
+
+ private void initEdition() {
Bundle b = getIntent().getExtras();
mAccountID = b.getString("AccountID");
@@ -108,7 +131,7 @@
ArrayList<String> srtpPreferenceList = b.getStringArrayList(AccountDetailSrtp.BUNDLE_TAG);
ArrayList<String> tlsPreferenceList = b.getStringArrayList(AccountDetailTls.BUNDLE_TAG);
- basicDetails = new AccountDetailBasic(basicPreferenceList);
+ basicDetails = new AccountDetailBasic(basicPreferenceList);
advancedDetails = new AccountDetailAdvanced(advancedPreferenceList);
srtpDetails = new AccountDetailSrtp(srtpPreferenceList);
tlsDetails = new AccountDetailTls(tlsPreferenceList);
@@ -124,113 +147,225 @@
addPreferenceListener(tlsDetails);
}
- private void setPreferenceDetails(AccountDetail details) {
- for(AccountDetail.PreferenceEntry p : details.getDetailValues()) {
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ MenuInflater inflater = getMenuInflater();
+
+ Bundle b = getIntent().getExtras();
+
+ switch (b.getInt(KEY_MODE)) {
+ case mode.CREATION_MODE:
+ Log.i(TAG, "CREATION");
+ inflater.inflate(R.menu.account_creation, menu);
+ break;
+ case mode.EDITION_MODE:
+ Log.i(TAG, "onCreateOptionsMenu: " + mAccountID);
+
+ if (mAccountID.equals("IP2IP"))
+ return true;
+
+ inflater.inflate(R.menu.account_edition, menu);
+ break;
+ }
+
+ return true;
+ }
+
+ @Override
+ public void onBackPressed() {
+ Bundle b = getIntent().getExtras();
+ switch (b.getInt(KEY_MODE)) {
+ case mode.CREATION_MODE:
+ Log.i(TAG, "CREATION");
+ AlertDialog dialog = createCancelDialog();
+ dialog.show();
+ break;
+ case mode.EDITION_MODE:
+ finish();
+ }
+
+ }
+
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+
+ switch (item.getItemId()) {
+ case R.id.menuitem_delete:
+ AlertDialog dialog = createDeleteDialog();
+ dialog.show();
+ break;
+ case R.id.menuitem_create:
+ processAccount(result.ACCOUNT_CREATED);
+ break;
+ case R.id.menuitem_edit:
+ processAccount(result.ACCOUNT_MODIFIED);
+ break;
+
+ }
+
+ return true;
+ }
+
+ private void processAccount(int resultCode) {
+ AlertDialog dialog;
+ ArrayList<String> missingValue = new ArrayList<String>();
+ if (validateAccountCreation(missingValue)) {
+
+ Bundle bundle = new Bundle();
+ bundle.putString("AccountID", mAccountID);
+ HashMap<String, String> accountDetails = new HashMap<String, String>();
+
+ updateAccountDetails(accountDetails, basicDetails);
+ updateAccountDetails(accountDetails, advancedDetails);
+ updateAccountDetails(accountDetails, srtpDetails);
+ updateAccountDetails(accountDetails, tlsDetails);
+
+ bundle.putSerializable(AccountDetail.TAG, accountDetails);
+ Intent resultIntent = new Intent();
+ resultIntent.putExtras(bundle);
+
+ setResult(resultCode, resultIntent);
+ finish();
+ } else {
+ dialog = createCouldNotValidateDialog(missingValue);
+ dialog.show();
+ }
+
+ }
+
+ public boolean validateAccountCreation(ArrayList<String> missingValue) {
+ boolean valid = true;
+
+ for (String s : requiredFields) {
+ EditTextPreference pref = (EditTextPreference) mPreferenceManager.findPreference(s);
+ Log.i(TAG, "Looking for " + s);
+ if (pref.getText().isEmpty()) {
+ Log.i(TAG, " INVALIDATED " + s + " " + pref.getText() + ";");
+ valid = false;
+ missingValue.add(pref.getTitle().toString());
+ }
+ }
+
+ return valid;
+ }
+
+
+ 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) {
- ((EditTextPreference)pref).setText(p.mValue);
- pref.setSummary(getString(R.string.account_current_value_label) + p.mValue);
+ 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());
+ }
+ }
+ }
+ }
+
+ Preference.OnPreferenceChangeListener changeBasicPreferenceListener = new Preference.OnPreferenceChangeListener() {
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ preference.setSummary((CharSequence) newValue);
+ basicDetails.setDetailString(preference.getOrder(), ((CharSequence) newValue).toString());
+ return true;
+ }
+ };
+
+ private void setPreferenceDetails(AccountDetail details) {
+ for (AccountDetail.PreferenceEntry p : details.getDetailValues()) {
+ Preference pref = mPreferenceManager.findPreference(p.mKey);
+ if (pref != null) {
+ if (!p.isTwoState) {
+ ((EditTextPreference) pref).setText(p.mValue);
+ pref.setSummary(p.mValue);
}
}
}
}
private void addPreferenceListener(AccountDetail details) {
- for(AccountDetail.PreferenceEntry p : details.getDetailValues()) {
+ for (AccountDetail.PreferenceEntry p : details.getDetailValues()) {
Preference pref = mPreferenceManager.findPreference(p.mKey);
- if(pref != null) {
- if(!p.isTwoState) {
+ if (pref != null) {
+ if (!p.isTwoState) {
pref.setOnPreferenceChangeListener(changeBasicPreferenceListener);
}
}
}
}
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
+
+
+
+
+ /******************************************
+ *
+ * AlertDialogs
+ *
+ ******************************************/
+
+ private AlertDialog createCouldNotValidateDialog(ArrayList<String> missingValue) {
+ String message = "The following parameters are missing:";
- addPreferencesFromResource(R.xml.account_creation_preferences);
- mPreferenceManager = getPreferenceManager();
+ for (String s : missingValue)
+ message += "\n - " + s;
- init();
+ Activity ownerActivity = this;
+ AlertDialog.Builder builder = new AlertDialog.Builder(ownerActivity);
+ builder.setMessage(message).setTitle("Missing Parameters").setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ /* Nothing to be done */
+ }
+ });
+
+ AlertDialog alertDialog = builder.create();
+ return alertDialog;
}
+
+ private AlertDialog createCancelDialog() {
+ Activity ownerActivity = this;
+ AlertDialog.Builder builder = new AlertDialog.Builder(ownerActivity);
+ builder.setMessage("All parameters will be lost").setTitle("Account Creation").setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ Activity activity = ((Dialog) dialog).getOwnerActivity();
+ activity.finish();
+ }
+ }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ /* Terminate with no action */
+ }
+ });
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- Log.i(TAG, "onCreateOptionsMenu: " + mAccountID);
- if(mAccountID.equals("IP2IP"))
- return true;
-
-
- deleteAccountAction = menu.add("Delete Account");
- deleteAccountAction.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
- return true;
+ AlertDialog alertDialog = builder.create();
+ alertDialog.setOwnerActivity(ownerActivity);
+
+ return alertDialog;
}
-
- @Override
- protected void onStart() {
- super.onStart();
- }
-
- @Override
- protected void onStop() {
- super.onStop();
- }
-
- @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();
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- AlertDialog dialog = createAlertDialog();
- dialog.show();
-
- return true;
- }
-
- private AlertDialog createAlertDialog()
- {
+
+ private AlertDialog createDeleteDialog() {
Activity ownerActivity = this;
AlertDialog.Builder builder = new AlertDialog.Builder(ownerActivity);
builder.setMessage("Do you realy want to delete this account").setTitle("Delete Account")
- .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- Bundle bundle = new Bundle();
- bundle.putString("AccountID", mAccountID);
+ .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ Bundle bundle = new Bundle();
+ bundle.putString("AccountID", mAccountID);
- Intent resultIntent = new Intent();
- resultIntent.putExtras(bundle);
+ Intent resultIntent = new Intent();
+ resultIntent.putExtras(bundle);
- Activity activity = ((Dialog)dialog).getOwnerActivity();
- activity.setResult(ACCOUNT_DELETED, resultIntent);
- activity.finish();
- }
- })
- .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- /* Terminate with no action */
- }
- });
+ Activity activity = ((Dialog) dialog).getOwnerActivity();
+ activity.setResult(result.ACCOUNT_DELETED, resultIntent);
+ activity.finish();
+ }
+ }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int whichButton) {
+ /* Terminate with no action */
+ }
+ });
AlertDialog alertDialog = builder.create();
alertDialog.setOwnerActivity(ownerActivity);
@@ -238,29 +373,4 @@
return alertDialog;
}
- 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/client/SFLPhoneHomeActivity.java b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
index 26eb7b3..ad06924 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
@@ -48,26 +48,23 @@
import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.view.ViewPager;
import android.util.Log;
-import android.view.Gravity;
-import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
-import android.view.ViewGroup;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.widget.EditText;
import android.widget.ImageButton;
-import android.widget.TextView;
import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.account.AccountListReceiver;
-import com.savoirfairelinux.sflphone.client.receiver.CallList;
+import com.savoirfairelinux.sflphone.client.receiver.AccountListReceiver;
+import com.savoirfairelinux.sflphone.client.receiver.CallListReceiver;
import com.savoirfairelinux.sflphone.fragments.ButtonSectionFragment;
import com.savoirfairelinux.sflphone.fragments.CallElementListFragment;
import com.savoirfairelinux.sflphone.fragments.ContactListFragment;
+import com.savoirfairelinux.sflphone.fragments.HistoryFragment;
import com.savoirfairelinux.sflphone.model.SipCall;
import com.savoirfairelinux.sflphone.service.CallManagerCallBack;
import com.savoirfairelinux.sflphone.service.ConfigurationManagerCallback;
@@ -82,12 +79,12 @@
static Animation animation;
private ContactListFragment mContactListFragment = null;
private CallElementListFragment mCallElementList = null;
- private HistorySectionFragment mHistorySectionFragment = null;
+ private HistoryFragment mHistorySectionFragment = null;
private ButtonSectionFragment mButtonSectionFragment = null;
private boolean mBound = false;
private ISipService service;
public AccountListReceiver mAccountList;
- public CallList mCallList = new CallList(this);
+ public CallListReceiver mCallList = new CallListReceiver(this);
private SFLphoneApplication mApplication;
private static final int ACTION_BAR_TAB_CONTACT = 0;
@@ -146,7 +143,7 @@
mSectionsPagerAdapter.getClassName(ACTION_BAR_TAB_CONTACT));
mCallElementList = (CallElementListFragment) getFragmentManager().getFragment(savedInstanceState,
mSectionsPagerAdapter.getClassName(ACTION_BAR_TAB_CALL));
- mHistorySectionFragment = (HistorySectionFragment) getFragmentManager().getFragment(savedInstanceState,
+ mHistorySectionFragment = (HistoryFragment) getFragmentManager().getFragment(savedInstanceState,
mSectionsPagerAdapter.getClassName(ACTION_BAR_TAB_HISTORY));
mButtonSectionFragment = (ButtonSectionFragment) getFragmentManager().getFragment(savedInstanceState,
mSectionsPagerAdapter.getClassName(ACTION_BAR_TAB_TEST));
@@ -161,7 +158,7 @@
Log.w(TAG, "Recreated mCallElementList=" + mCallElementList);
}
if (mHistorySectionFragment == null) {
- mHistorySectionFragment = new HistorySectionFragment();
+ mHistorySectionFragment = new HistoryFragment();
Log.w(TAG, "Recreated mHistorySectionFragment=" + mHistorySectionFragment);
}
if (mButtonSectionFragment == null) {
@@ -408,8 +405,8 @@
Log.w(TAG, "getItem() CallElementList=" + fragment);
break;
case 2:
- fragment = new HistorySectionFragment();
- Log.w(TAG, "getItem() HistorySectionFragment=" + fragment);
+ fragment = new HistoryFragment();
+ Log.w(TAG, "getItem() HistoryFragment=" + fragment);
break;
case 3:
fragment = new ButtonSectionFragment();
@@ -422,7 +419,7 @@
// Log.i(TAG, "getItem() fragment is " + fragment);
Bundle args = new Bundle();
- args.putInt(HistorySectionFragment.ARG_SECTION_NUMBER, i + 1);
+ args.putInt(HistoryFragment.ARG_SECTION_NUMBER, i + 1);
fragment.setArguments(args);
return fragment;
}
@@ -463,7 +460,7 @@
name = CallElementListFragment.class.getName();
break;
case 2:
- name = HistorySectionFragment.class.getName();
+ name = HistoryFragment.class.getName();
break;
case 3:
name = ButtonSectionFragment.class.getName();
@@ -501,25 +498,6 @@
}
}
- /**
- * A dummy fragment representing a section of the app, but that simply displays dummy text.
- */
- public static class HistorySectionFragment extends Fragment {
- public HistorySectionFragment() {
- setRetainInstance(true);
- }
-
- public static final String ARG_SECTION_NUMBER = "section_number";
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
- TextView textView = new TextView(getActivity());
- textView.setGravity(Gravity.CENTER);
- Bundle args = getArguments();
- textView.setText("ARG_SECTION_NUMBER=" + Integer.toString(args.getInt(ARG_SECTION_NUMBER)));
- return textView;
- }
- }
@Override
public void onClick(View view) {
@@ -555,7 +533,7 @@
info.mEmail = "coolGuy@coolGuy.com";
info.mCallType = SipCall.CALL_TYPE_OUTGOING;
- SipCall call = CallList.getCallInstance(info);
+ SipCall call = CallListReceiver.getCallInstance(info);
call.launchCallActivity(this);
call.placeCallUpdateUi();
call.notifyServicePlaceCall(service);
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
index 17bed3e..00d3023 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java
@@ -49,14 +49,14 @@
import com.savoirfairelinux.sflphone.R;
import com.savoirfairelinux.sflphone.fragments.AccountManagementFragment;
-import com.savoirfairelinux.sflphone.fragments.PrefManagementFragment;
+import com.savoirfairelinux.sflphone.fragments.AudioManagementFragment;
import com.savoirfairelinux.sflphone.service.ISipService;
import com.savoirfairelinux.sflphone.service.SipService;
public class SFLPhonePreferenceActivity extends Activity implements ActionBar.TabListener
{
static final int NUM_PAGES = 2;
- static final String TAG = "SFLPhonePreferenceActivity";
+ static final String TAG = SFLPhonePreferenceActivity.class.getSimpleName();
PreferencesPagerAdapter mPreferencesPagerAdapter;
private boolean mBound = false;
static boolean serviceIsOn = false;
@@ -185,7 +185,7 @@
fragment = new AccountManagementFragment();
break;
case 1:
- fragment = new PrefManagementFragment();
+ fragment = new AudioManagementFragment();
break;
default:
Log.i(TAG, "Get new fragment " + position + " is null");
@@ -211,32 +211,4 @@
}
}
- public static class ArrayListFragment extends ListFragment {
- int mNum;
-
- static ArrayListFragment newInstance(int num) {
- ArrayListFragment f = new ArrayListFragment();
-
- // Supply num input as an argument.
- Bundle args = new Bundle();
- args.putInt("num", num);
- f.setArguments(args);
-
- return f;
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mNum = getArguments() != null ? getArguments().getInt("num") : 1;
- }
-
- @Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
- // setListAdapter(new ArrayAdapter<String>(getActivity(),
- // android.R.layout.simple_list_item_1, Cheeses.sCheeseStrings));
- }
-
- }
}
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLphoneApplication.java b/src/com/savoirfairelinux/sflphone/client/SFLphoneApplication.java
index f7ef9c9..4fc4427 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLphoneApplication.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLphoneApplication.java
@@ -8,7 +8,7 @@
import android.content.pm.PackageManager.NameNotFoundException;
import android.util.Log;
-import com.savoirfairelinux.sflphone.account.AccountListReceiver;
+import com.savoirfairelinux.sflphone.client.receiver.AccountListReceiver;
import com.savoirfairelinux.sflphone.service.ISipService;
import com.savoirfairelinux.sflphone.service.SipService;
diff --git a/src/com/savoirfairelinux/sflphone/account/AccountListReceiver.java b/src/com/savoirfairelinux/sflphone/client/receiver/AccountListReceiver.java
similarity index 96%
rename from src/com/savoirfairelinux/sflphone/account/AccountListReceiver.java
rename to src/com/savoirfairelinux/sflphone/client/receiver/AccountListReceiver.java
index d78db6f..efd6c5b 100644
--- a/src/com/savoirfairelinux/sflphone/account/AccountListReceiver.java
+++ b/src/com/savoirfairelinux/sflphone/client/receiver/AccountListReceiver.java
@@ -29,7 +29,7 @@
* as that of the covered work.
*/
-package com.savoirfairelinux.sflphone.account;
+package com.savoirfairelinux.sflphone.client.receiver;
import android.content.BroadcastReceiver;
import android.content.Intent;
@@ -39,6 +39,7 @@
import java.util.ArrayList;
+import com.savoirfairelinux.sflphone.account.AccountManagementUI;
import com.savoirfairelinux.sflphone.service.ConfigurationManagerCallback;
import com.savoirfairelinux.sflphone.service.ISipService;
@@ -80,7 +81,7 @@
{
String signalName = intent.getStringExtra(ConfigurationManagerCallback.SIGNAL_NAME);
Log.d(TAG, "Signal received: " + signalName);
-
+
if(signalName.equals(ConfigurationManagerCallback.ACCOUNTS_CHANGED)) {
processAccountsChangedSignal(intent);
} else if(signalName.equals(ConfigurationManagerCallback.ACCOUNT_STATE_CHANGED)) {
diff --git a/src/com/savoirfairelinux/sflphone/client/receiver/CallList.java b/src/com/savoirfairelinux/sflphone/client/receiver/CallListReceiver.java
similarity index 97%
rename from src/com/savoirfairelinux/sflphone/client/receiver/CallList.java
rename to src/com/savoirfairelinux/sflphone/client/receiver/CallListReceiver.java
index bfec63a..ddf4efa 100644
--- a/src/com/savoirfairelinux/sflphone/client/receiver/CallList.java
+++ b/src/com/savoirfairelinux/sflphone/client/receiver/CallListReceiver.java
@@ -44,7 +44,7 @@
import com.savoirfairelinux.sflphone.service.CallManagerCallBack;
import com.savoirfairelinux.sflphone.client.SFLPhoneHomeActivity;
-public class CallList extends BroadcastReceiver
+public class CallListReceiver extends BroadcastReceiver
{
static final String TAG = "CallList";
static ArrayList<SipCall> mList = new ArrayList<SipCall>();
@@ -81,7 +81,7 @@
return call;
}
- public CallList(SFLPhoneHomeActivity home) {
+ public CallListReceiver(SFLPhoneHomeActivity home) {
mHome = home;
}
diff --git a/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java b/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java
index 6568ade..4881381 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java
@@ -33,7 +33,6 @@
import java.util.ArrayList;
import java.util.HashMap;
-import java.util.Iterator;
import java.util.Set;
import android.app.Activity;
@@ -56,14 +55,13 @@
import com.savoirfairelinux.sflphone.account.AccountDetailBasic;
import com.savoirfairelinux.sflphone.account.AccountDetailSrtp;
import com.savoirfairelinux.sflphone.account.AccountDetailTls;
-import com.savoirfairelinux.sflphone.client.AccountCreationActivity;
import com.savoirfairelinux.sflphone.client.AccountPreferenceActivity;
import com.savoirfairelinux.sflphone.client.SFLPhonePreferenceActivity;
import com.savoirfairelinux.sflphone.client.SFLphoneApplication;
+import com.savoirfairelinux.sflphone.service.ConfigurationManagerCallback;
import com.savoirfairelinux.sflphone.service.ISipService;
-public class AccountManagementFragment extends PreferenceFragment
-{
+public class AccountManagementFragment extends PreferenceFragment {
static final String TAG = "AccountManagementFragment";
static final String DEFAULT_ACCOUNT_ID = "IP2IP";
static final int ACCOUNT_CREATE_REQUEST = 1;
@@ -86,30 +84,27 @@
Log.w(TAG, "onAttach() service=" + service);
}
- public AccountManagementFragment()
- {
- basicDetailKeys = AccountDetailBasic.getPreferenceEntries();
+ public AccountManagementFragment() {
+ basicDetailKeys = AccountDetailBasic.getPreferenceEntries();
advancedDetailKeys = AccountDetailAdvanced.getPreferenceEntries();
srtpDetailKeys = AccountDetailSrtp.getPreferenceEntries();
tlsDetailKeys = AccountDetailTls.getPreferenceEntries();
accountPreferenceHashMap = new HashMap<String, Preference>();
- }
+ }
@Override
- public void onCreate(Bundle savedInstanceState)
- {
+ public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, "Create Account Management Fragment");
/*
- * FIXME if service cannot be obtained from SFLPhonePreferenceActivity,
- * then get it from Application
+ * FIXME if service cannot be obtained from SFLPhonePreferenceActivity, then get it from Application
*/
service = sflphonePreferenceActivity.getSipService();
if (service == null) {
- service = ((SFLphoneApplication)sflphonePreferenceActivity.getApplication()).getSipService();
+ service = ((SFLphoneApplication) sflphonePreferenceActivity.getApplication()).getSipService();
if (service == null) {
Log.e(TAG, "onCreate() service=" + service);
}
@@ -118,19 +113,17 @@
setPreferenceScreen(getAccountListPreferenceScreen());
- LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mMessageReceiver, new IntentFilter("accounts-changed"));
+ LocalBroadcastManager.getInstance(getActivity()).registerReceiver(mMessageReceiver, new IntentFilter(ConfigurationManagerCallback.ACCOUNTS_CHANGED));
}
@Override
- public void onStop()
- {
+ public void onStop() {
super.onStop();
Log.i(TAG, "onStop");
}
@Override
- public void onDestroy()
- {
+ public void onDestroy() {
LocalBroadcastManager.getInstance(getActivity()).unregisterReceiver(mMessageReceiver);
super.onDestroy();
Log.i(TAG, "onDestroy");
@@ -138,57 +131,66 @@
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
- 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);
+ switch (requestCode) {
+ case ACCOUNT_CREATE_REQUEST:
+ if (resultCode == AccountPreferenceActivity.result.ACCOUNT_CREATED) {
+ Bundle bundle = data.getExtras();
+ Log.i(TAG, "Create account settings");
+ HashMap<String, String> accountDetails = new HashMap<String, String>();
+ accountDetails = (HashMap<String, String>) bundle.getSerializable(AccountDetail.TAG);
+ createNewAccount(accountDetails);
+ }
+ break;
+ case ACCOUNT_EDIT_REQUEST:
+ if (resultCode == AccountPreferenceActivity.result.ACCOUNT_MODIFIED) {
+ Bundle bundle = data.getExtras();
+ String accountID = bundle.getString("AccountID");
+ Log.i(TAG, "Update account settings for " + accountID);
- AccountDetailBasic basicDetails =
- new AccountDetailBasic(bundle.getStringArrayList(AccountDetailBasic.BUNDLE_TAG));
- AccountDetailAdvanced advancedDetails =
- new AccountDetailAdvanced(bundle.getStringArrayList(AccountDetailAdvanced.BUNDLE_TAG));
- AccountDetailSrtp srtpDetails =
- new AccountDetailSrtp(bundle.getStringArrayList(AccountDetailSrtp.BUNDLE_TAG));
- AccountDetailTls tlsDetails =
- new AccountDetailTls(bundle.getStringArrayList(AccountDetailTls.BUNDLE_TAG));
+ HashMap<String, String> accountDetails = new HashMap<String, String>();
+ accountDetails = (HashMap<String, String>) bundle.getSerializable(AccountDetail.TAG);
+
+ Preference accountScreen = accountPreferenceHashMap.get(accountID);
+ mRoot.removePreference(accountScreen);
+ accountPreferenceHashMap.remove(accountID);
+ setAccountDetails(accountID, accountDetails);
+
+ } else if (resultCode == AccountPreferenceActivity.result.ACCOUNT_DELETED) {
+ Bundle bundle = data.getExtras();
+ String accountID = bundle.getString("AccountID");
- HashMap<String, String> map = new HashMap<String, String>();
- map.putAll(basicDetails.getDetailsHashMap());
- map.putAll(advancedDetails.getDetailsHashMap());
- map.putAll(srtpDetails.getDetailsHashMap());
- map.putAll(tlsDetails.getDetailsHashMap());
-
- setAccountDetails(accountID, map);
- } else if(resultCode == AccountPreferenceActivity.ACCOUNT_DELETED) {
- Bundle bundle = data.getExtras();
- String accountID = bundle.getString("AccountID");
-
- Log.i(TAG, "Remove account " + accountID);
- deleteSelectedAccount(accountID);
- Preference accountScreen = accountPreferenceHashMap.get(accountID);
- mRoot.removePreference(accountScreen);
- accountPreferenceHashMap.remove(accountID);
- }
- break;
- default:
- break;
+ Log.i(TAG, "Remove account " + accountID);
+ deleteSelectedAccount(accountID);
+ Preference accountScreen = accountPreferenceHashMap.get(accountID);
+ mRoot.removePreference(accountScreen);
+ accountPreferenceHashMap.remove(accountID);
+ } else {
+ Log.i(TAG, "Edition canceled");
+ }
+ break;
+ default:
+ break;
}
}
+ private void createNewAccount(HashMap<String, String> accountDetails) {
+ try {
+ Log.i(TAG, "ADD ACCOUNT");
+ service.addAccount(accountDetails);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Cannot call service method", e);
+ }
+
+ }
+
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- String message = intent.getStringExtra("message");
ArrayList<String> newList = (ArrayList<String>) getAccountList();
Set<String> currentList = (Set<String>) accountPreferenceHashMap.keySet();
- if(newList.size() > currentList.size()) {
- for(String s : newList) {
- if(!currentList.contains(s)) {
+ if (newList.size() > currentList.size()) {
+ for (String s : newList) {
+ if (!currentList.contains(s)) {
Preference accountScreen = createAccountPreferenceScreen(s);
mRoot.addPreference(accountScreen);
accountPreferenceHashMap.put(s, accountScreen);
@@ -200,7 +202,7 @@
Preference.OnPreferenceClickListener launchAccountCreationOnClick = new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
- if(preference.getTitle() == "Create New Account") {
+ if (preference.getTitle() == "Create New Account") {
launchAccountCreationActivity(preference);
}
return true;
@@ -216,25 +218,24 @@
Preference.OnPreferenceClickListener removeSelectedAccountOnClick = new Preference.OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
- if(preference.getTitle() == "Delete Account") {
+ if (preference.getTitle() == "Delete Account") {
deleteSelectedAccount(preference.getKey());
}
return true;
}
};
- private void launchAccountCreationActivity(Preference preference)
- {
+ private void launchAccountCreationActivity(Preference preference) {
Log.i(TAG, "Launch account creation activity");
Intent intent = preference.getIntent();
+ intent.putExtra(AccountPreferenceActivity.KEY_MODE, AccountPreferenceActivity.mode.CREATION_MODE);
startActivityForResult(intent, ACCOUNT_CREATE_REQUEST);
}
- private void launchAccountEditActivity(Preference preference)
- {
+ private void launchAccountEditActivity(Preference preference) {
Log.i(TAG, "Launch account edit activity");
Intent intent = preference.getIntent();
-
+ intent.putExtra(AccountPreferenceActivity.KEY_MODE, AccountPreferenceActivity.mode.EDITION_MODE);
Bundle bundle = intent.getExtras();
String accountID = bundle.getString("AccountID");
@@ -264,13 +265,12 @@
}
};
- private ArrayList<String> getAccountList()
- {
+ private ArrayList<String> getAccountList() {
ArrayList<String> accountList = null;
try {
- accountList = (ArrayList<String>) service.getAccountList();
+ accountList = (ArrayList<String>) service.getAccountList();
} catch (RemoteException e) {
- Log.e(TAG, "Cannot call service method", e);
+ Log.e(TAG, "Cannot call service method", e);
}
// Remove the default account from list
@@ -279,8 +279,7 @@
return accountList;
}
- private HashMap<String, String> getAccountDetails(String accountID)
- {
+ private HashMap<String, String> getAccountDetails(String accountID) {
HashMap<String, String> accountDetails = null;
try {
accountDetails = (HashMap<String, String>) service.getAccountDetails(accountID);
@@ -291,8 +290,7 @@
return accountDetails;
}
- private void setAccountDetails(String accountID, HashMap<String, String> accountDetails)
- {
+ private void setAccountDetails(String accountID, HashMap<String, String> accountDetails) {
try {
service.setAccountDetails(accountID, accountDetails);
} catch (RemoteException e) {
@@ -300,8 +298,7 @@
}
}
- public PreferenceScreen getAccountListPreferenceScreen()
- {
+ public PreferenceScreen getAccountListPreferenceScreen() {
Activity currentContext = getActivity();
mRoot = getPreferenceManager().createPreferenceScreen(currentContext);
@@ -321,31 +318,31 @@
Preference createNewAccount = new Preference(currentContext);
createNewAccount.setTitle("Create New Account");
createNewAccount.setOnPreferenceClickListener(launchAccountCreationOnClick);
- createNewAccount.setIntent(new Intent().setClass(getActivity(), AccountCreationActivity.class));
+ createNewAccount.setIntent(new Intent().setClass(getActivity(), AccountPreferenceActivity.class));
mRoot.addPreference(createNewAccount);
ArrayList<String> accountList = getAccountList();
- for(String s : accountList) {
+ for (String s : accountList) {
Preference accountScreen = createAccountPreferenceScreen(s);
mRoot.addPreference(accountScreen);
- accountPreferenceHashMap.put(s, accountScreen);
+ accountPreferenceHashMap.put(s, accountScreen);
}
-
+
return mRoot;
}
Preference createAccountPreferenceScreen(String accountID) {
HashMap<String, String> details = getAccountDetails(accountID);
- Set<String> keys = details.keySet();
- Iterator<String> ite = keys.iterator();
- while(ite.hasNext()){
- Log.i(TAG,"key : "+ ite.next());
- }
+ // Set<String> keys = details.keySet();
+ // Iterator<String> ite = keys.iterator();
+ // while(ite.hasNext()){
+ // Log.i(TAG,"key : "+ ite.next());
+ // }
Bundle bundle = new Bundle();
bundle.putString("AccountID", accountID);
- Intent intent = new Intent().setClass(getActivity(), AccountPreferenceActivity.class);
+ Intent intent = new Intent().setClass(getActivity(), AccountPreferenceActivity.class);
intent.putExtras(bundle);
Preference editAccount = new Preference(getActivity());
@@ -353,7 +350,7 @@
editAccount.setSummary(details.get(AccountDetailBasic.CONFIG_ACCOUNT_HOSTNAME));
editAccount.setOnPreferenceClickListener(launchAccountEditOnClick);
editAccount.setIntent(intent);
-
+
return editAccount;
}
}
diff --git a/src/com/savoirfairelinux/sflphone/fragments/PrefManagementFragment.java b/src/com/savoirfairelinux/sflphone/fragments/AudioManagementFragment.java
similarity index 98%
rename from src/com/savoirfairelinux/sflphone/fragments/PrefManagementFragment.java
rename to src/com/savoirfairelinux/sflphone/fragments/AudioManagementFragment.java
index bc2916a..954eb49 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/PrefManagementFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/AudioManagementFragment.java
@@ -53,12 +53,12 @@
import com.savoirfairelinux.sflphone.R;
-public class PrefManagementFragment extends PreferenceFragment
+public class AudioManagementFragment extends PreferenceFragment
{
static final String TAG = "PrefManagementFragment";
static final String CURRENT_VALUE = "Current value:: ";
- public PrefManagementFragment()
+ public AudioManagementFragment()
{
}
diff --git a/src/com/savoirfairelinux/sflphone/fragments/CallElementListFragment.java b/src/com/savoirfairelinux/sflphone/fragments/CallElementListFragment.java
index ae5fc4a..48535cd 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/CallElementListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/CallElementListFragment.java
@@ -70,10 +70,10 @@
import android.widget.TextView;
import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.account.AccountListReceiver;
import com.savoirfairelinux.sflphone.account.AccountSelectionSpinner;
import com.savoirfairelinux.sflphone.client.SFLPhoneHomeActivity;
import com.savoirfairelinux.sflphone.client.SFLphoneApplication;
+import com.savoirfairelinux.sflphone.client.receiver.AccountListReceiver;
import com.savoirfairelinux.sflphone.model.ContactManager;
import com.savoirfairelinux.sflphone.model.SipCall;
import com.savoirfairelinux.sflphone.service.ISipService;
@@ -82,7 +82,7 @@
* Main list of Call Elements. We don't manage contacts ourself so they are
*/
public class CallElementListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> {
- private static final String TAG = "CallElementList";
+ private static final String TAG = CallElementListFragment.class.getSimpleName();
private static final String CURRENT_STATE_LABEL = " CURRENT STATE: ";
private ContactManager mContactManager;
private CallElementAdapter mAdapter;
@@ -107,7 +107,7 @@
}
public String getSelectedAccount() {
-// return mAccountSelectionButton.getText().toString();
+ // return mAccountSelectionButton.getText().toString();
return "CIOUCOU";
}
@@ -340,6 +340,7 @@
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
+ Log.i(TAG,"onCreateLoader");
// return new CursorLoader(getActivity(), CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
// This is called when a new Loader needs to be created. This
diff --git a/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java b/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java
index a968d36..18e8043 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java
@@ -77,10 +77,10 @@
import android.widget.TextView;
import com.savoirfairelinux.sflphone.R;
-import com.savoirfairelinux.sflphone.account.AccountListReceiver;
import com.savoirfairelinux.sflphone.account.AccountSelectionSpinner;
import com.savoirfairelinux.sflphone.client.SFLPhoneHomeActivity;
import com.savoirfairelinux.sflphone.client.SFLphoneApplication;
+import com.savoirfairelinux.sflphone.client.receiver.AccountListReceiver;
import com.savoirfairelinux.sflphone.model.SipCall;
import com.savoirfairelinux.sflphone.service.ISipService;
diff --git a/src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java b/src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java
new file mode 100644
index 0000000..23d98f5
--- /dev/null
+++ b/src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java
@@ -0,0 +1,23 @@
+package com.savoirfairelinux.sflphone.fragments;
+
+import android.app.Fragment;
+import android.os.Bundle;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+public class HistoryFragment extends Fragment {
+
+ public static final String ARG_SECTION_NUMBER = "section_number";
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
+ TextView textView = new TextView(getActivity());
+ textView.setGravity(Gravity.CENTER);
+ Bundle args = getArguments();
+ textView.setText("ARG_SECTION_NUMBER=" + Integer.toString(args.getInt(ARG_SECTION_NUMBER)));
+ return textView;
+ }
+}