From d9e294463497390921d6c10140d71645ceef6928 Mon Sep 17 00:00:00 2001 From: alision <alexandre.lision@savoirfairelinux.com> Date: Wed, 17 Apr 2013 16:10:18 -0400 Subject: [PATCH] Merged AccountCreationActivity and AccountPreferenceActivity (redundant) Fixed issues in account edition Added layouts for action bar menus (+ icons) --- AndroidManifest.xml | 3 - bin/AndroidManifest.xml | 3 - res/drawable-hdpi/ic_checkmark_holo_light.png | Bin 0 -> 1159 bytes res/menu/account_creation.xml | 10 + res/menu/account_edition.xml | 17 + res/values/strings.xml | 1 - res/xml/account_creation_preferences.xml | 137 +++--- .../sflphone/account/AccountDetail.java | 2 + .../sflphone/account/AccountDetailBasic.java | 1 + .../account/AccountDetailsHandler.java | 7 +- .../sflphone/account/AccountManagementUI.java | 2 +- .../account/AccountSelectionSpinner.java | 12 + .../client/AccountCreationActivity.java | 288 ------------- .../client/AccountPreferenceActivity.java | 396 +++++++++++------- .../sflphone/client/SFLPhoneHomeActivity.java | 46 +- .../client/SFLPhonePreferenceActivity.java | 34 +- .../sflphone/client/SFLphoneApplication.java | 2 +- .../receiver}/AccountListReceiver.java | 5 +- .../{CallList.java => CallListReceiver.java} | 4 +- .../fragments/AccountManagementFragment.java | 175 ++++---- ...ment.java => AudioManagementFragment.java} | 4 +- .../fragments/CallElementListFragment.java | 7 +- .../fragments/ContactListFragment.java | 2 +- .../sflphone/fragments/HistoryFragment.java | 23 + 24 files changed, 501 insertions(+), 680 deletions(-) create mode 100644 res/drawable-hdpi/ic_checkmark_holo_light.png create mode 100644 res/menu/account_creation.xml create mode 100644 res/menu/account_edition.xml delete mode 100644 src/com/savoirfairelinux/sflphone/client/AccountCreationActivity.java rename src/com/savoirfairelinux/sflphone/{account => client/receiver}/AccountListReceiver.java (97%) rename src/com/savoirfairelinux/sflphone/client/receiver/{CallList.java => CallListReceiver.java} (97%) rename src/com/savoirfairelinux/sflphone/fragments/{PrefManagementFragment.java => AudioManagementFragment.java} (98%) create mode 100644 src/com/savoirfairelinux/sflphone/fragments/HistoryFragment.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index ed3877ea8..34dc33fb9 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -70,9 +70,6 @@ as that of the covered work. android:name="android.support.PARENT_ACTIVITY" android:value="com.savoirfairelinux.sflphone.client.SFLPhoneHome" /> </activity> - <activity android:name=".client.AccountCreationActivity" - android:label="@string/app_name" - android:screenOrientation="portrait"/> <activity android:name=".client.AccountPreferenceActivity" android:label="@string/app_name" android:screenOrientation="portrait"/> diff --git a/bin/AndroidManifest.xml b/bin/AndroidManifest.xml index ed3877ea8..34dc33fb9 100644 --- a/bin/AndroidManifest.xml +++ b/bin/AndroidManifest.xml @@ -70,9 +70,6 @@ as that of the covered work. android:name="android.support.PARENT_ACTIVITY" android:value="com.savoirfairelinux.sflphone.client.SFLPhoneHome" /> </activity> - <activity android:name=".client.AccountCreationActivity" - android:label="@string/app_name" - android:screenOrientation="portrait"/> <activity android:name=".client.AccountPreferenceActivity" android:label="@string/app_name" android:screenOrientation="portrait"/> diff --git a/res/drawable-hdpi/ic_checkmark_holo_light.png b/res/drawable-hdpi/ic_checkmark_holo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..1607f35857df6796c7c8cf13b2c4c3b089cb988e GIT binary patch literal 1159 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I0wfs{c7_5;rX+877l!}s{b%+Ad7K3vk;OpT z1B~5HX4`=T%L*LRfwTh{zxw<mfq{X!-_yl0B;(%O8@b&fsWQhup0`XlyKIu%*(K-l zUa@JzC5LYZmDc3#z8y7dQ%8bRqtD)s7kynmlk(P_xs!X1W$}S7onY--=7O$EJ6xCE zv`nuuNKZR|=HA@9b3b1EBX{oX&$;iv*B72GZOhyBa@lMkQE}>&27Bt1^gYrg`|Mt? zycS=%@a5kRyRNjaQfg@m<GxtB(*LVf=GxCrq1UXh|L|G)`0GTM^^eUePKdUDI=td; z?DChwd;M-am~}+jEbZ`%FT5r%g1683(h#xaiEl7d=D*3Zl8$|Kb03>^30mf?-%-jU zyQA^Wo9ioYXoz*}N#4F?>pte+4tY=S=Uh@V^t!kGcD?Ce*}LpTo8wnsT2X&~Mz)Fn zerC3!-S?zKYlT8p<)uEq&-s#Tc45K#sK?5+NujFlZ;Q5;zAZoC(DzSG_?Pi7PV48( z@)tL%{o?#9`Pb0;+2Z`!jWU0=9-DbDsq(41V}EGp%XHHTf6Ll;a*MC#-*{`s*`!cg zt+FexpL-j;KAI)&GxPnu^b6|^@)Q=^C+^-azG!~pf|zR64ToZbSaqJf2)9gASp5G+ z^4DLjLR(_iYzvjUkbh!|htd32wO@<bHc$QEnfp)6$^LMIL&DbSwh!};-&J1ux8z)& zqWk_!>_GYYqFwtuX7RcR&92d#`r_kiM*B0VithIxcTDX0XT12Ij+gyq2c?o*#!eG& z$g177-rdSp`@qe;C*{k0zw6?@?@BhwtqMwyy{bMTBK?4*edjFyBFkSFcDt!+SWaDT zAO3+Y?OjXbiOr{&7T$QP^)7qc1*iSGi|tdd$agQ!k7VxcW_RjbZrdJl@;%$!P$Bc$ z^=|uZXa5y%i(R*NdeY|kw;ghMCO&@~F4}c>*`vC`yqJXtc=>M6yI7xjB{ea3r`~A? zze1Ib_q%7dcC*brsl&30DgXA=i}k4|mM*<;K6Sygkdxl?PU+lP^~iCf#^U+w{@+s8 z)9tO}W7ZX$_r>e*p$(UvR&MV}{d&LR#?hsh&gU=4dl>qA$;?(x=~=J#n?8DU>E(07 z3rUIduN!gi|8XyDWynd(=$Ht;zlYdfiSgag7WBHCxq4N|$x3HEo&GvTpsC-g=C0BE zG*`DSTCdiSxs;pztswVOrQo*LUr+ls8YiARB*)%bx8>;hw+qq@&$q3d<m_Z^8?`>) zooilKv44$rtY%f5&ZMKZ;!BvqUp@a*c12%n>;9Xk9RK!jhh~mU|9|ZHr9LT7Em#f% z^QdZxYeY#(Vo9o1a#1RfVlXl=G}JXP)-|#SF*L9;F}5-^(ls!*GBDU*6nF|nLvDUb zW?Cg~4d?V<mH{<Lf@}!RPb(=;EJ|f?Ovz75Rq)JBOiv9;O-!jQJeg_(RK(!v>gTe~ HDWM4fT?rR= literal 0 HcmV?d00001 diff --git a/res/menu/account_creation.xml b/res/menu/account_creation.xml new file mode 100644 index 000000000..9fc56fd4c --- /dev/null +++ b/res/menu/account_creation.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" > + + <item + android:id="@+id/menuitem_create" + android:icon="@drawable/ic_checkmark_holo_light" + android:showAsAction="ifRoom" + android:title="Create"/> + +</menu> \ No newline at end of file diff --git a/res/menu/account_edition.xml b/res/menu/account_edition.xml new file mode 100644 index 000000000..4714e87ff --- /dev/null +++ b/res/menu/account_edition.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android" > + + <item + android:id="@+id/menuitem_delete" + android:title="Delete" + android:showAsAction="ifRoom" + android:icon="@android:drawable/ic_menu_delete"/> + + <item + android:id="@+id/menuitem_edit" + android:title="Edit" + android:showAsAction="ifRoom" + android:icon="@android:drawable/ic_menu_edit"/> + + +</menu> \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml index f1e17c391..5ea9b6b21 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -152,6 +152,5 @@ as that of the covered work. <string name="default_account_category">Default Account</string> <string name="account_list_category">Account List</string> - <string name="account_current_value_label">Current value:: </string> </resources> diff --git a/res/xml/account_creation_preferences.xml b/res/xml/account_creation_preferences.xml index 41791acc5..e7261491c 100644 --- a/res/xml/account_creation_preferences.xml +++ b/res/xml/account_creation_preferences.xml @@ -39,64 +39,64 @@ as that of the covered work. android:persistent="false" android:defaultValue="true" android:title="Account enabled" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> <EditTextPreference android:id="@+id/account_creation_type" android:key="Account.type" android:persistent="false" android:defaultValue="SIP" android:title="Type" - android:summary="Current value:: SIP"/> + android:summary="SIP"/> <EditTextPreference android:id="@+id/account_creation_alias" android:key="Account.alias" android:persistent="false" android:defaultValue="" android:title="Alias" - android:summary="Current value:: "/> + android:summary=""/> <EditTextPreference android:id="@+id/account_creation_hostname" android:key="Account.hostname" android:persistent="false" android:defaultValue="" android:title="Hostname" - android:summary="Current value:: "/> + android:summary=""/> <EditTextPreference android:id="@+id/account_creation_username" android:key="Account.username" android:persistent="false" android:defaultValue="" android:title="Username" - android:summary="Current value:: "/> + android:summary=""/> <EditTextPreference android:id="@+id/account_creation_routeset" android:key="Account.routeset" android:persistent="false" android:defaultValue="" android:title="Route Set" - android:summary="Current value:: "/> + android:summary=""/> <EditTextPreference android:id="@+id/account_creation_password" android:key="Account.password" android:persistent="false" android:defaultValue="" android:title="Password" - android:summary="Current value:: "/> + android:summary=""/> <EditTextPreference android:id="@+id/account_creation_realm" android:key="Account.realm" android:persistent="false" android:defaultValue="*" android:title="Realm" - android:summary="Current value:: *"/> + android:summary="*"/> <EditTextPreference android:id="@+id/account_creation_useragent" android:key="Account.useragent" android:persistent="false" android:defaultValue="SFLPhone" android:title="User Agent" - android:summary="Current value:: SFLPhone"/> + android:summary="SFLPhone"/> </PreferenceCategory> <PreferenceCategory android:id="@+id/account_advanced_category" @@ -107,138 +107,133 @@ as that of the covered work. android:persistent="false" android:defaultValue="60" android:title="Registration Expire" - android:summary="Current value:: 60"/> + android:summary="60"/> <CheckBoxPreference android:id="@+id/account_creation_autoanswer" android:key="Account.autoAnswer" android:persistent="false" android:defaultValue="false" android:title="Auto Answer" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> <EditTextPreference android:id="@+id/account_creation_registration_status" android:key="Account.registrationStatus" android:persistent="false" android:defaultValue="" android:title="Registration Status" - android:summary="Current value:: "/> + android:summary=""/> <EditTextPreference android:id="@+id/account_creation_registration_state_code" android:key="Account.registrationCode" android:persistent="false" android:defaultValue="" android:title="Registration Code" - android:summary="Current value:: "/> + android:summary=""/> <EditTextPreference android:id="@+id/account_creation_registration_state_desc" android:key="Account.registrationDescription" android:persistent="false" android:defaultValue="" android:title="Registration Desciption" - android:summary="Current value:: "/> + android:summary=""/> <EditTextPreference android:id="@+id/account_creation_credential_number" android:key="Credential.count" android:persistent="false" android:defaultValue="0" android:title="Credential Number" - android:summary="Current value:: 0"/> + android:summary="0"/> <EditTextPreference android:id="@+id/account_creation_dtmf_type" android:key="Account.dtmfType" android:persistent="false" android:defaultValue="SIP" android:title="DTMF Type" - android:summary="Current value:: SIP"/> + android:summary="SIP"/> <EditTextPreference android:id="@+id/account_creation_ringtone_path" android:key="Account.ringtonePath" android:persistent="false" android:defaultValue="" - android:title="Ringtone Path" - android:summary="Current value:: "/> + android:title="Ringtone Path"/> <CheckBoxPreference android:id="@+id/account_creation_ringtone_enabled" android:key="Account.ringtoneEnabled" android:persistent="false" android:defaultValue="true" - android:title="Ringtone Enabled" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:title="Ringtone Enabled"/> <CheckBoxPreference android:id="@+id/account_creation_keep_alive" android:key="Account.keepAliveEnabled" android:persistent="false" android:defaultValue="false" - android:title="Keep Alive" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:title="Keep Alive"/> <EditTextPreference android:id="@+id/account_creation_local_interface" android:key="Account.localInterface" android:persistent="false" android:defaultValue="eth0" android:title="Local Interface" - android:summary="Current value:: eth0"/> + android:summary="eth0"/> <EditTextPreference android:id="@+id/account_creation_interface" android:key="Account.interface" android:persistent="false" android:defaultValue="eht0" android:title="Interface" - android:summary="Current value:: eth0"/> + android:summary="eth0"/> <CheckBoxPreference android:id="@+id/account_creation_published_sameas_local" android:key="Account.publishedSameAsLocal" android:persistent="false" android:defaultValue="false" android:title="Published same as local" - android:summaryOn="Current value:: yes" - android:summaryOff="Current value:: no"/> + android:summaryOn="yes" + android:summaryOff="no"/> <EditTextPreference android:id="@+id/account_creation_local_port" android:key="Account.localPort" android:persistent="false" android:defaultValue="5060" android:title="Local Port" - android:summary="Current value:: 5060"/> + android:summary="5060"/> <EditTextPreference android:id="@+id/account_creation_published_port" android:key="Account.publishedPort" android:persistent="false" android:defaultValue="5060" android:title="Published Port" - android:summary="Current value:: 5060"/> + android:summary="5060"/> <EditTextPreference android:id="@+id/account_creation_published_address" android:key="Account.publishedAddress" android:persistent="false" android:defaultValue="0.0.0.0" android:title="Published Address" - android:summary="Current value:: 0.0.0.0"/> + android:summary="0.0.0.0"/> <EditTextPreference android:id="@+id/account_creation_display_name" android:key="Account.displayName" android:persistent="false" android:defaultValue="SFLPhone" android:title="Display Name" - android:summary="Current value:: SFLPhone"/> + android:summary="SFLPhone"/> <CheckBoxPreference android:id="@+id/account_creation_stun_enable" android:key="STUN.enable" android:persistent="false" android:defaultValue="false" android:title="Stun Enabled" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> <EditTextPreference android:id="@+id/account_creation_stun_server" android:key="STUN.server" android:persistent="false" android:defaultValue="" android:title="Stun Server" - android:summary="Current value:: "/> + android:summary=""/> </PreferenceCategory> <PreferenceCategory android:id="@+id/account_srtp_category" @@ -249,64 +244,64 @@ as that of the covered work. android:persistent="false" android:defaultValue="false" android:title="SRTP Enabled" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> <CheckBoxPreference android:id="@+id/account_creation_srtp_key_exchange" android:key="SRTP.keyExchange" android:persistent="false" android:defaultValue="false" android:title="SRTP Key Exchange" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> <CheckBoxPreference android:id="@+id/account_creation_srtp_encryp_algo" android:key="SRTP.encryptionAlgorithm" android:persistent="false" android:defaultValue="false" android:title="SRTP Encrypt Algo" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> <CheckBoxPreference android:id="@+id/account_creation_srtp_rtp_fallback" android:key="SRTP.rtpFallback" android:persistent="false" android:defaultValue="false" android:title="SRTP RTP Fallback" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> <CheckBoxPreference android:id="@+id/account_creation_srtp_hello_hash" android:key="ZRTP.helloHashEnable" android:persistent="false" android:defaultValue="disabled" android:title="ZRTP Hello Hash" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> <CheckBoxPreference android:id="@+id/account_creation_srtp_display_sas" android:key="ZRTP.displaySAS" android:persistent="false" android:defaultValue="false" android:title="ZRTP Display SAS" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> <CheckBoxPreference android:id="@+id/account_creation_srtp_supported_warning" android:key="ZRTP.notSuppWarning" android:persistent="false" android:defaultValue="false" android:title="ZRTP Not Supported Warning" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> <CheckBoxPreference android:id="@+id/account_creation_srtp_displaysas_once" android:key="ZRTP.displaySasOnce" android:persistent="false" android:defaultValue="false" android:title="ZRTP Display SAS Once" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> </PreferenceCategory> <PreferenceCategory android:id="@+id/account_tls_category" @@ -317,101 +312,101 @@ as that of the covered work. android:persistent="false" android:defaultValue="false" android:title="TLS Enabled" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> <EditTextPreference android:id="@+id/account_creation_tls_listener_port" android:key="TLS.listenerPort" android:persistent="false" android:defaultValue="5061" android:title="Listener Port" - android:summary="Current value:: 5061"/> + android:summary="5061"/> <EditTextPreference android:id="@+id/account_creation_tls_certificate_list_file" android:key="TLS.certificateListFile" android:persistent="false" android:defaultValue="" android:title="TLS Certificate List File" - android:summary="Current value:: "/> + android:summary=""/> <EditTextPreference android:id="@+id/account_creation_tls_certificate_file" android:key="TLS.certificateFile" android:persistent="false" android:defaultValue="" android:title="TLS Certificate File" - android:summary="Current value:: "/> + android:summary=""/> <EditTextPreference android:id="@+id/account_creation_tls_private_key_file" android:key="TLS.privateKeyFile" android:persistent="false" android:defaultValue="disabled" android:title="TLS Private Key File" - android:summary="Current value:: disabled"/> + android:summary="disabled"/> <EditTextPreference android:id="@+id/account_creation_tls_password" android:key="TLS.password" android:persistent="false" android:defaultValue="" android:title="TLS Password" - android:summary="Current value:: "/> + android:summary=""/> <EditTextPreference android:id="@+id/account_creation_tls_method" android:key="TLS.method" android:persistent="false" android:defaultValue="" android:title="TLS Method" - android:summary="Current value:: "/> + android:summary=""/> <EditTextPreference android:id="@+id/account_creation_tls_ciphers" android:key="TLS.ciphers" android:persistent="false" android:defaultValue="" android:title="TLS Ciphers" - android:summary="Current value:: "/> + android:summary=""/> <EditTextPreference android:id="@+id/account_creation_tls_server_name" android:key="TLS.serverName" android:persistent="false" android:defaultValue="" android:title="TLS Server Name" - android:summary="Current value:: "/> + android:summary=""/> <CheckBoxPreference android:id="@+id/account_creation_tls_verify_server" android:key="TLS.verifyServer" android:persistent="false" android:defaultValue="false" android:title="TLS Verify Server" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> <CheckBoxPreference android:id="@+id/account_creation_tls_verify_client" android:key="TLS.verifyClient" android:persistent="false" android:defaultValue="false" android:title="TLS Verify Client" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> <CheckBoxPreference android:id="@+id/account_creation_tls_require_client_cert" android:key="TLS.requireClientCertificate" android:persistent="false" android:defaultValue="false" android:title="TLS Require Client Certificate" - android:summaryOn="Current value:: enabled" - android:summaryOff="Current value:: disabled"/> + android:summaryOn="enabled" + android:summaryOff="disabled"/> <EditTextPreference android:id="@+id/account_creation_tls_timeout_sec" android:key="TLS.negotiationTimeoutSec" android:persistent="false" android:defaultValue="60" android:title="TLS Timeout Sec" - android:summary="Current value:: 60"/> + android:summary="60"/> <EditTextPreference android:id="@+id/account_creation_tls_timeout_msec" android:key="TLS.negotiationTimeoutMsec" android:persistent="false" android:defaultValue="0" android:title="TLS Timeout Msec" - android:summary="Current value:: 0"/> + android:summary="0"/> </PreferenceCategory> </PreferenceScreen> diff --git a/src/com/savoirfairelinux/sflphone/account/AccountDetail.java b/src/com/savoirfairelinux/sflphone/account/AccountDetail.java index 50a6257f5..9507c2497 100644 --- a/src/com/savoirfairelinux/sflphone/account/AccountDetail.java +++ b/src/com/savoirfairelinux/sflphone/account/AccountDetail.java @@ -58,6 +58,8 @@ public interface AccountDetail { } } + 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 03a1354c6..0db252304 100644 --- a/src/com/savoirfairelinux/sflphone/account/AccountDetailBasic.java +++ b/src/com/savoirfairelinux/sflphone/account/AccountDetailBasic.java @@ -107,6 +107,7 @@ public class AccountDetailBasic implements AccountDetail { 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 3e71d728b..6b8c41baa 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 6401d5b67..d58aa7cfa 100644 --- a/src/com/savoirfairelinux/sflphone/account/AccountManagementUI.java +++ b/src/com/savoirfairelinux/sflphone/account/AccountManagementUI.java @@ -32,7 +32,7 @@ package com.savoirfairelinux.sflphone.account; 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 ef23f3592..9642fdf42 100644 --- a/src/com/savoirfairelinux/sflphone/account/AccountSelectionSpinner.java +++ b/src/com/savoirfairelinux/sflphone/account/AccountSelectionSpinner.java @@ -32,6 +32,8 @@ package com.savoirfairelinux.sflphone.account; 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 @@ public class AccountSelectionSpinner extends Spinner implements AccountManagemen }; + /**************************************** + * 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 @@ public class AccountSelectionSpinner extends Spinner implements AccountManagemen } } + @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 @@ public class AccountSelectionSpinner extends Spinner implements AccountManagemen // } } + @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 93de02e83..000000000 --- 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 72c8efd07..a11b80cc2 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.AccountDetailAdvanced; 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(); + + 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; } - }; - private void init() { + 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 @@ public class AccountPreferenceActivity extends PreferenceActivity 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,143 +147,230 @@ public class AccountPreferenceActivity extends PreferenceActivity addPreferenceListener(tlsDetails); } - 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(getString(R.string.account_current_value_label) + p.mValue); - } - } - } - } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); - 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(changeBasicPreferenceListener); - } - } - } - } + Bundle b = getIntent().getExtras(); - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + 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); - addPreferencesFromResource(R.xml.account_creation_preferences); - mPreferenceManager = getPreferenceManager(); + if (mAccountID.equals("IP2IP")) + return true; - init(); - } + inflater.inflate(R.menu.account_edition, menu); + break; + } - @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; } @Override - protected void onStart() { - super.onStart(); - } - - @Override - protected void onStop() { - super.onStop(); - } + 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 - 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(); + + 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 AlertDialog createAlertDialog() - { - 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); - - 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 */ - } - }); + 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(); + } - AlertDialog alertDialog = builder.create(); - alertDialog.setOwnerActivity(ownerActivity); + } - 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; } + private void updateAccountDetails(HashMap<String, String> accountDetails, AccountDetail det) { - for(AccountDetail.PreferenceEntry p : det.getDetailValues()) { + for (AccountDetail.PreferenceEntry p : det.getDetailValues()) { Preference pref = mPreferenceManager.findPreference(p.mKey); - if(pref != null) { - if(p.isTwoState) { + if (pref != null) { + if (p.isTwoState) { CheckBoxPreference boxPref = (CheckBoxPreference) pref; accountDetails.put(p.mKey, boxPref.isChecked() ? "true" : "false"); - } - else { - EditTextPreference textPref = (EditTextPreference)pref; + } else { + EditTextPreference textPref = (EditTextPreference) pref; accountDetails.put(p.mKey, textPref.getText()); } } } } - private void updateAccountDetails() { - HashMap<String, String> accountDetails = new HashMap<String, String>(); + 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); + } + } + } + } - updateAccountDetails(accountDetails, basicDetails); - updateAccountDetails(accountDetails, advancedDetails); - updateAccountDetails(accountDetails, srtpDetails); - updateAccountDetails(accountDetails, tlsDetails); + 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(changeBasicPreferenceListener); + } + } + } } -} + + + + + /****************************************** + * + * AlertDialogs + * + ******************************************/ + + 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; + } + + 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 */ + } + }); + + AlertDialog alertDialog = builder.create(); + alertDialog.setOwnerActivity(ownerActivity); + + return alertDialog; + } + + 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); + + Intent resultIntent = new Intent(); + resultIntent.putExtras(bundle); + + 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); + + return alertDialog; + } + +} diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java index 26eb7b3c9..ad0692493 100644 --- a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java +++ b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java @@ -48,26 +48,23 @@ import android.support.v13.app.FragmentStatePagerAdapter; 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 @@ public class SFLPhoneHomeActivity extends Activity implements ActionBar.TabListe 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 @@ public class SFLPhoneHomeActivity extends Activity implements ActionBar.TabListe 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 @@ public class SFLPhoneHomeActivity extends Activity implements ActionBar.TabListe 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 @@ public class SFLPhoneHomeActivity extends Activity implements ActionBar.TabListe 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 @@ public class SFLPhoneHomeActivity extends Activity implements ActionBar.TabListe // 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 @@ public class SFLPhoneHomeActivity extends Activity implements ActionBar.TabListe 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 @@ public class SFLPhoneHomeActivity extends Activity implements ActionBar.TabListe } } - /** - * 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 @@ public class SFLPhoneHomeActivity extends Activity implements ActionBar.TabListe 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 17bed3e8a..00d302350 100644 --- a/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java +++ b/src/com/savoirfairelinux/sflphone/client/SFLPhonePreferenceActivity.java @@ -49,14 +49,14 @@ import android.util.Log; 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 @@ public class SFLPhonePreferenceActivity extends Activity implements ActionBar.Ta 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 class SFLPhonePreferenceActivity extends Activity implements ActionBar.Ta } } - 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 f7ef9c9ab..4fc442719 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; 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 97% rename from src/com/savoirfairelinux/sflphone/account/AccountListReceiver.java rename to src/com/savoirfairelinux/sflphone/client/receiver/AccountListReceiver.java index d78db6f17..efd6c5b2e 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 android.util.Log; 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 @@ public class AccountListReceiver extends BroadcastReceiver { 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 bfec63a18..ddf4efa6f 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.model.SipCall; 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 @@ public class CallList extends BroadcastReceiver 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 6568ade1b..4881381e0 100644 --- a/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java +++ b/src/com/savoirfairelinux/sflphone/fragments/AccountManagementFragment.java @@ -33,7 +33,6 @@ package com.savoirfairelinux.sflphone.fragments; 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.AccountDetailAdvanced; 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 @@ public class AccountManagementFragment extends PreferenceFragment 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 @@ public class AccountManagementFragment extends PreferenceFragment 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 @@ public class AccountManagementFragment extends PreferenceFragment @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); - - 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> 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; + 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); + + 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"); + + 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 @@ public class AccountManagementFragment extends PreferenceFragment 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 @@ public class AccountManagementFragment extends PreferenceFragment 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 @@ public class AccountManagementFragment extends PreferenceFragment } }; - 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 @@ public class AccountManagementFragment extends PreferenceFragment 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 @@ public class AccountManagementFragment extends PreferenceFragment 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 class AccountManagementFragment extends PreferenceFragment } } - public PreferenceScreen getAccountListPreferenceScreen() - { + public PreferenceScreen getAccountListPreferenceScreen() { Activity currentContext = getActivity(); mRoot = getPreferenceManager().createPreferenceScreen(currentContext); @@ -321,31 +318,31 @@ public class AccountManagementFragment extends PreferenceFragment 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 @@ public class AccountManagementFragment extends PreferenceFragment 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 bc2916ad2..954eb4960 100644 --- a/src/com/savoirfairelinux/sflphone/fragments/PrefManagementFragment.java +++ b/src/com/savoirfairelinux/sflphone/fragments/AudioManagementFragment.java @@ -53,12 +53,12 @@ import android.widget.TextView; 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 ae5fc4a04..48535cd05 100644 --- a/src/com/savoirfairelinux/sflphone/fragments/CallElementListFragment.java +++ b/src/com/savoirfairelinux/sflphone/fragments/CallElementListFragment.java @@ -70,10 +70,10 @@ import android.widget.ListView; 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 @@ import com.savoirfairelinux.sflphone.service.ISipService; * 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 class CallElementListFragment extends ListFragment implements LoaderManag } public String getSelectedAccount() { -// return mAccountSelectionButton.getText().toString(); + // return mAccountSelectionButton.getText().toString(); return "CIOUCOU"; } @@ -340,6 +340,7 @@ public class CallElementListFragment extends ListFragment implements LoaderManag @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 a968d367d..18e8043df 100644 --- a/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java +++ b/src/com/savoirfairelinux/sflphone/fragments/ContactListFragment.java @@ -77,10 +77,10 @@ import android.widget.SearchView.OnQueryTextListener; 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 000000000..23d98f5a8 --- /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; + } +} -- GitLab