blob: f4bbb0d5daa8b776e4bc113560b1ea89e1802d39 [file] [log] [blame]
Alexandre Lisionc48c36a2013-11-12 16:26:10 -05001package org.sflphone.fragments;
2
Alexandre Lisionc9c30b72013-11-18 16:27:26 -05003import java.util.Locale;
4
Alexandre Lisionc48c36a2013-11-12 16:26:10 -05005import org.sflphone.R;
6import org.sflphone.account.AccountDetail;
Alexandre Lisionc9c30b72013-11-18 16:27:26 -05007import org.sflphone.account.AccountDetailSrtp;
Alexandre Lisionc48c36a2013-11-12 16:26:10 -05008import org.sflphone.model.Account;
9
10import android.app.Activity;
11import android.os.Bundle;
Alexandre Lisionc48c36a2013-11-12 16:26:10 -050012import android.preference.Preference;
13import android.preference.Preference.OnPreferenceChangeListener;
Alexandre Lision3b7148e2013-11-13 17:23:06 -050014import android.preference.Preference.OnPreferenceClickListener;
Alexandre Lisionc48c36a2013-11-12 16:26:10 -050015import android.preference.PreferenceFragment;
Alexandre Lisionc48c36a2013-11-12 16:26:10 -050016
17public class SecurityAccountFragment extends PreferenceFragment {
18
Alexandre Lisionf30ff852013-12-09 17:08:40 -050019 @SuppressWarnings("unused")
Alexandre Lisiona3650992013-11-13 14:19:35 -050020 private static final String TAG = SecurityAccountFragment.class.getSimpleName();
Alexandre Lisionc48c36a2013-11-12 16:26:10 -050021
Alexandre Lisionc48c36a2013-11-12 16:26:10 -050022 private Callbacks mCallbacks = sDummyCallbacks;
23 private static Callbacks sDummyCallbacks = new Callbacks() {
24
25 @Override
26 public Account getAccount() {
27 return null;
28 }
29
Alexandre Lision3b7148e2013-11-13 17:23:06 -050030 @Override
31 public void displayCredentialsScreen() {
32 }
33
Alexandre Lisionc9c30b72013-11-18 16:27:26 -050034 @Override
35 public void displaySRTPScreen() {
36 }
37
38 @Override
39 public void displayTLSScreen() {
40 }
41
Alexandre Lisionc48c36a2013-11-12 16:26:10 -050042 };
43
44 public interface Callbacks {
45
46 public Account getAccount();
47
Alexandre Lision3b7148e2013-11-13 17:23:06 -050048 public void displayCredentialsScreen();
49
Alexandre Lisionc9c30b72013-11-18 16:27:26 -050050 public void displaySRTPScreen();
51
52 public void displayTLSScreen();
53
Alexandre Lisionc48c36a2013-11-12 16:26:10 -050054 }
55
56 @Override
57 public void onAttach(Activity activity) {
58 super.onAttach(activity);
59 if (!(activity instanceof Callbacks)) {
60 throw new IllegalStateException("Activity must implement fragment's callbacks.");
61 }
62
63 mCallbacks = (Callbacks) activity;
64 }
65
66 @Override
67 public void onDetach() {
68 super.onDetach();
69 mCallbacks = sDummyCallbacks;
70 }
71
72 @Override
Alexandre Lisionafff1cc2013-11-22 11:57:33 -050073 public void onResume() {
74 super.onResume();
75
76 }
77
78 @Override
Alexandre Lisionc48c36a2013-11-12 16:26:10 -050079 public void onCreate(Bundle savedInstanceState) {
80 super.onCreate(savedInstanceState);
81
82 // Load the preferences from an XML resource
83 addPreferencesFromResource(R.xml.account_security_prefs);
Alexandre Lisionafff1cc2013-11-22 11:57:33 -050084 setCredentialSummary();
Alexandre Lision3b7148e2013-11-13 17:23:06 -050085 findPreference("Credential.count").setOnPreferenceClickListener(new OnPreferenceClickListener() {
86
87 @Override
88 public boolean onPreferenceClick(Preference preference) {
89 mCallbacks.displayCredentialsScreen();
90 return false;
Alexandre Lisionc48c36a2013-11-12 16:26:10 -050091 }
Alexandre Lision3b7148e2013-11-13 17:23:06 -050092 });
93
Alexandre Lisionafff1cc2013-11-22 11:57:33 -050094 // setSrtpPreferenceDetails(mCallbacks.getAccount().getSrtpDetails());
95 // addPreferenceListener(mCallbacks.getAccount().getSrtpDetails(), changeSrtpModeListener);
96 //
97 // findPreference("TLS.details").setOnPreferenceClickListener(new OnPreferenceClickListener() {
98 //
99 // @Override
100 // public boolean onPreferenceClick(Preference preference) {
101 // mCallbacks.displayTLSScreen();
102 // return false;
103 // }
104 // });
Alexandre Lisionc9c30b72013-11-18 16:27:26 -0500105
106 }
Alexandre Lisionafff1cc2013-11-22 11:57:33 -0500107
108 public void setCredentialSummary(){
109 findPreference("Credential.count").setSummary("" + mCallbacks.getAccount().getCredentials().size());
110 }
111
Alexandre Lisionc9c30b72013-11-18 16:27:26 -0500112
113 private void setSrtpPreferenceDetails(AccountDetailSrtp details) {
114
115 if (details.getDetailBoolean(AccountDetailSrtp.CONFIG_SRTP_ENABLE)) {
116 findPreference("SRTP.enable").setSummary(
117 details.getDetailString(AccountDetailSrtp.CONFIG_SRTP_KEY_EXCHANGE).toUpperCase(Locale.getDefault()));
118
119 } else {
120 findPreference("SRTP.enable").setSummary(getResources().getString(R.string.account_srtp_deactivated));
121
122 }
123
124 findPreference("SRTP.details").setEnabled(details.getDetailBoolean(AccountDetailSrtp.CONFIG_SRTP_ENABLE));
Alexandre Lisionc48c36a2013-11-12 16:26:10 -0500125 }
126
127 private void addPreferenceListener(AccountDetail details, OnPreferenceChangeListener listener) {
Alexandre Lisionc48c36a2013-11-12 16:26:10 -0500128
Alexandre Lisionc9c30b72013-11-18 16:27:26 -0500129 findPreference("SRTP.enable").setOnPreferenceChangeListener(changeSrtpModeListener);
130 findPreference("SRTP.details").setOnPreferenceClickListener(new OnPreferenceClickListener() {
Alexandre Lisionc48c36a2013-11-12 16:26:10 -0500131
Alexandre Lisionc9c30b72013-11-18 16:27:26 -0500132 @Override
133 public boolean onPreferenceClick(Preference preference) {
134 mCallbacks.displaySRTPScreen();
135 return false;
Alexandre Lisionc48c36a2013-11-12 16:26:10 -0500136 }
Alexandre Lisionc9c30b72013-11-18 16:27:26 -0500137 });
138
Alexandre Lisionc48c36a2013-11-12 16:26:10 -0500139 }
140
Alexandre Lisionc9c30b72013-11-18 16:27:26 -0500141 Preference.OnPreferenceChangeListener changeSrtpModeListener = new Preference.OnPreferenceChangeListener() {
Alexandre Lisionc48c36a2013-11-12 16:26:10 -0500142 @Override
143 public boolean onPreferenceChange(Preference preference, Object newValue) {
Alexandre Lisionc9c30b72013-11-18 16:27:26 -0500144
145 if (((String) newValue).contentEquals("NONE")) {
146 mCallbacks.getAccount().getSrtpDetails().setDetailString(AccountDetailSrtp.CONFIG_SRTP_ENABLE, AccountDetail.FALSE_STR);
147 preference.setSummary(getResources().getString(R.string.account_srtp_deactivated));
Alexandre Lisionc48c36a2013-11-12 16:26:10 -0500148 } else {
Alexandre Lisionc9c30b72013-11-18 16:27:26 -0500149 mCallbacks.getAccount().getSrtpDetails().setDetailString(AccountDetailSrtp.CONFIG_SRTP_ENABLE, AccountDetail.TRUE_STR);
150 mCallbacks.getAccount().getSrtpDetails()
151 .setDetailString(AccountDetailSrtp.CONFIG_SRTP_KEY_EXCHANGE, ((String) newValue).toLowerCase(Locale.getDefault()));
152 preference.setSummary(((String) newValue));
Alexandre Lisionc48c36a2013-11-12 16:26:10 -0500153 }
Alexandre Lisionc9c30b72013-11-18 16:27:26 -0500154 findPreference("SRTP.details").setEnabled(!((String) newValue).contentEquals("NONE"));
155 mCallbacks.getAccount().notifyObservers();
Alexandre Lisionc48c36a2013-11-12 16:26:10 -0500156 return true;
157 }
158 };
159
Alexandre Lisionc48c36a2013-11-12 16:26:10 -0500160}