diff options
Diffstat (limited to 'java/com/android/voicemailomtp/settings/VoicemailSettingsActivity.java')
-rw-r--r-- | java/com/android/voicemailomtp/settings/VoicemailSettingsActivity.java | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/java/com/android/voicemailomtp/settings/VoicemailSettingsActivity.java b/java/com/android/voicemailomtp/settings/VoicemailSettingsActivity.java new file mode 100644 index 000000000..ac0df6fab --- /dev/null +++ b/java/com/android/voicemailomtp/settings/VoicemailSettingsActivity.java @@ -0,0 +1,222 @@ +/** + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.voicemailomtp.settings; + +import android.content.Intent; +import android.os.Bundle; +import android.preference.Preference; +import android.preference.PreferenceActivity; +import android.preference.PreferenceScreen; +import android.preference.SwitchPreference; +import android.telecom.PhoneAccountHandle; +import android.text.TextUtils; +import android.util.Log; +import android.view.MenuItem; + +import com.android.voicemailomtp.OmtpConstants; +import com.android.voicemailomtp.OmtpVvmCarrierConfigHelper; +import com.android.voicemailomtp.R; +import com.android.voicemailomtp.SubscriptionInfoHelper; +import com.android.voicemailomtp.VisualVoicemailPreferences; + +public class VoicemailSettingsActivity extends PreferenceActivity implements + Preference.OnPreferenceChangeListener { + private static final String LOG_TAG = VoicemailSettingsActivity.class.getSimpleName(); + private static final boolean DBG = true; + + /** + * Intent action to bring up Voicemail Provider settings + * DO NOT RENAME. There are existing apps which use this intent value. + */ + public static final String ACTION_ADD_VOICEMAIL = + "com.android.voicemailomtp.CallFeaturesSetting.ADD_VOICEMAIL"; + + /** + * Intent action to bring up the {@code VoicemailSettingsActivity}. + * DO NOT RENAME. There are existing apps which use this intent value. + */ + public static final String ACTION_CONFIGURE_VOICEMAIL = + "com.android.voicemailomtp.CallFeaturesSetting.CONFIGURE_VOICEMAIL"; + + // Extra put in the return from VM provider config containing voicemail number to set + public static final String VM_NUMBER_EXTRA = "com.android.voicemailomtp.VoicemailNumber"; + // Extra put in the return from VM provider config containing call forwarding number to set + public static final String FWD_NUMBER_EXTRA = "com.android.voicemailomtp.ForwardingNumber"; + // Extra put in the return from VM provider config containing call forwarding number to set + public static final String FWD_NUMBER_TIME_EXTRA = "com.android.voicemailomtp.ForwardingNumberTime"; + // If the VM provider returns non null value in this extra we will force the user to + // choose another VM provider + public static final String SIGNOUT_EXTRA = "com.android.voicemailomtp.Signout"; + + /** + * String Extra put into ACTION_ADD_VOICEMAIL call to indicate which provider should be hidden + * in the list of providers presented to the user. This allows a provider which is being + * disabled (e.g. GV user logging out) to force the user to pick some other provider. + */ + public static final String IGNORE_PROVIDER_EXTRA = "com.android.voicemailomtp.ProviderToIgnore"; + + /** + * String Extra put into ACTION_ADD_VOICEMAIL to indicate that the voicemail setup screen should + * be opened. + */ + public static final String SETUP_VOICEMAIL_EXTRA = "com.android.voicemailomtp.SetupVoicemail"; + + /** Event for Async voicemail change call */ + private static final int EVENT_VOICEMAIL_CHANGED = 500; + private static final int EVENT_FORWARDING_CHANGED = 501; + private static final int EVENT_FORWARDING_GET_COMPLETED = 502; + + /** Handle to voicemail pref */ + private static final int VOICEMAIL_PREF_ID = 1; + private static final int VOICEMAIL_PROVIDER_CFG_ID = 2; + + /** + * Used to indicate that the voicemail preference should be shown. + */ + private boolean mShowVoicemailPreference = false; + + private int mSubId; + private PhoneAccountHandle mPhoneAccountHandle; + private SubscriptionInfoHelper mSubscriptionInfoHelper; + private OmtpVvmCarrierConfigHelper mOmtpVvmCarrierConfigHelper; + + private SwitchPreference mVoicemailVisualVoicemail; + private Preference mVoicemailChangePinPreference; + + //********************************************************************************************* + // Preference Activity Methods + //********************************************************************************************* + + @Override + protected void onCreate(Bundle icicle) { + super.onCreate(icicle); + + // Show the voicemail preference in onResume if the calling intent specifies the + // ACTION_ADD_VOICEMAIL action. + mShowVoicemailPreference = (icicle == null) && + TextUtils.equals(getIntent().getAction(), ACTION_ADD_VOICEMAIL); + + mSubscriptionInfoHelper = new SubscriptionInfoHelper(this, getIntent()); + mSubscriptionInfoHelper.setActionBarTitle( + getActionBar(), getResources(), R.string.voicemail_settings_with_label); + mSubId = mSubscriptionInfoHelper.getSubId(); + // TODO: scrap this activity. + /* + mPhoneAccountHandle = PhoneAccountHandleConverter + .fromSubId(this, mSubId); + + mOmtpVvmCarrierConfigHelper = new OmtpVvmCarrierConfigHelper( + this, mSubId); + */ + } + + @Override + protected void onResume() { + super.onResume(); + + PreferenceScreen preferenceScreen = getPreferenceScreen(); + if (preferenceScreen != null) { + preferenceScreen.removeAll(); + } + + addPreferencesFromResource(R.xml.voicemail_settings); + + PreferenceScreen prefSet = getPreferenceScreen(); + + mVoicemailVisualVoicemail = (SwitchPreference) findPreference( + getResources().getString(R.string.voicemail_visual_voicemail_key)); + + mVoicemailChangePinPreference = findPreference( + getResources().getString(R.string.voicemail_change_pin_key)); + Intent changePinIntent = new Intent(new Intent(this, VoicemailChangePinActivity.class)); + changePinIntent.putExtra(VoicemailChangePinActivity.EXTRA_PHONE_ACCOUNT_HANDLE, + mPhoneAccountHandle); + + mVoicemailChangePinPreference.setIntent(changePinIntent); + if (VoicemailChangePinActivity.isDefaultOldPinSet(this, mPhoneAccountHandle)) { + mVoicemailChangePinPreference.setTitle(R.string.voicemail_set_pin_dialog_title); + } else { + mVoicemailChangePinPreference.setTitle(R.string.voicemail_change_pin_dialog_title); + } + + if (mOmtpVvmCarrierConfigHelper.isValid()) { + mVoicemailVisualVoicemail.setOnPreferenceChangeListener(this); + mVoicemailVisualVoicemail.setChecked( + VisualVoicemailSettingsUtil.isEnabled(this, mPhoneAccountHandle)); + if (!isVisualVoicemailActivated()) { + prefSet.removePreference(mVoicemailChangePinPreference); + } + } else { + prefSet.removePreference(mVoicemailVisualVoicemail); + prefSet.removePreference(mVoicemailChangePinPreference); + } + } + + @Override + public void onPause() { + super.onPause(); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId() == android.R.id.home) { + onBackPressed(); + return true; + } + return super.onOptionsItemSelected(item); + } + + /** + * Implemented to support onPreferenceChangeListener to look for preference changes. + * + * @param preference is the preference to be changed + * @param objValue should be the value of the selection, NOT its localized + * display value. + */ + @Override + public boolean onPreferenceChange(Preference preference, Object objValue) { + if (DBG) log("onPreferenceChange: \"" + preference + "\" changed to \"" + objValue + "\""); + if (preference.getKey().equals(mVoicemailVisualVoicemail.getKey())) { + boolean isEnabled = (boolean) objValue; + VisualVoicemailSettingsUtil + .setEnabled(this, mPhoneAccountHandle, isEnabled); + PreferenceScreen prefSet = getPreferenceScreen(); + if (isVisualVoicemailActivated()) { + prefSet.addPreference(mVoicemailChangePinPreference); + } else { + prefSet.removePreference(mVoicemailChangePinPreference); + } + } + + // Always let the preference setting proceed. + return true; + } + + private boolean isVisualVoicemailActivated() { + if (!VisualVoicemailSettingsUtil.isEnabled(this, mPhoneAccountHandle)) { + return false; + } + VisualVoicemailPreferences preferences = new VisualVoicemailPreferences(this, + mPhoneAccountHandle); + return preferences.getString(OmtpConstants.SERVER_ADDRESS, null) != null; + + } + + private static void log(String msg) { + Log.d(LOG_TAG, msg); + } +} |