-
Notifications
You must be signed in to change notification settings - Fork 0
/
GsmUmtsAdditionalCallOptions.java
85 lines (69 loc) · 3.06 KB
/
GsmUmtsAdditionalCallOptions.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package com.android.phone;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.util.Log;
import java.util.ArrayList;
public class GsmUmtsAdditionalCallOptions extends
TimeConsumingPreferenceActivity {
private static final String LOG_TAG = "GsmUmtsAdditionalCallOptions";
private final boolean DBG = (PhoneApp.DBG_LEVEL >= 2);
private static final String BUTTON_CLIR_KEY = "button_clir_key";
private static final String BUTTON_CW_KEY = "button_cw_key";
private static final String BUTTON_PN_KEY = "button_pn_key";
private CLIRListPreference mCLIRButton;
private CallWaitingCheckBoxPreference mCWButton;
private MSISDNEditPreference mMSISDNButton;
private ArrayList<Preference> mPreferences = new ArrayList<Preference> ();
private int mInitIndex= 0;
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.gsm_umts_additional_options);
PreferenceScreen prefSet = getPreferenceScreen();
mCLIRButton = (CLIRListPreference) prefSet.findPreference(BUTTON_CLIR_KEY);
mCWButton = (CallWaitingCheckBoxPreference) prefSet.findPreference(BUTTON_CW_KEY);
mMSISDNButton = (MSISDNEditPreference) prefSet.findPreference(BUTTON_PN_KEY);
mPreferences.add(mCLIRButton);
mPreferences.add(mCWButton);
mPreferences.add(mMSISDNButton);
if (icicle == null) {
if (DBG) Log.d(LOG_TAG, "start to init ");
mCLIRButton.init(this, false);
} else {
if (DBG) Log.d(LOG_TAG, "restore stored states");
mInitIndex = mPreferences.size();
mCLIRButton.init(this, true);
mCWButton.init(this, true);
mMSISDNButton.init(this, true);
int[] clirArray = icicle.getIntArray(mCLIRButton.getKey());
if (clirArray != null) {
if (DBG) Log.d(LOG_TAG, "onCreate: clirArray[0]="
+ clirArray[0] + ", clirArray[1]=" + clirArray[1]);
mCLIRButton.handleGetCLIRResult(clirArray);
} else {
mCLIRButton.init(this, false);
}
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (mCLIRButton.clirArray != null) {
outState.putIntArray(mCLIRButton.getKey(), mCLIRButton.clirArray);
}
}
@Override
public void onFinished(Preference preference, boolean reading) {
if (mInitIndex < mPreferences.size()-1 && !isFinishing()) {
mInitIndex++;
Preference pref = mPreferences.get(mInitIndex);
if (pref instanceof CallWaitingCheckBoxPreference) {
((CallWaitingCheckBoxPreference) pref).init(this, false);
} else if (pref instanceof MSISDNEditPreference) {
((MSISDNEditPreference) pref).init(this, false);
}
}
super.onFinished(preference, reading);
}
}