diff options
author | Ta-wei Yen <twyen@google.com> | 2015-11-05 14:13:12 -0800 |
---|---|---|
committer | Ta-wei Yen <twyen@google.com> | 2015-11-06 22:54:14 +0000 |
commit | a5437e6882bde69cb795ed8d929c1024a8fef16e (patch) | |
tree | 1778d022d1c44d7dba00dd50abb726de8f05238b /src/com/android/dialer/voicemail | |
parent | 6e0fd6b77759baf43cb37d407041be051b4856b5 (diff) |
Call Blocking UI/String change
+ Adjusted UI/String according to new specifications.
+ Added class VisualVoicemailEnabledChecker
+ Block number dialog display different message depending
on whether VVM is activated.
Bug:25455707
Change-Id: I09425053c91a5517e309302d421beadcc2d81cd4
Diffstat (limited to 'src/com/android/dialer/voicemail')
-rw-r--r-- | src/com/android/dialer/voicemail/VisualVoicemailEnabledChecker.java | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/src/com/android/dialer/voicemail/VisualVoicemailEnabledChecker.java b/src/com/android/dialer/voicemail/VisualVoicemailEnabledChecker.java new file mode 100644 index 000000000..3134b1486 --- /dev/null +++ b/src/com/android/dialer/voicemail/VisualVoicemailEnabledChecker.java @@ -0,0 +1,98 @@ +package com.android.dialer.voicemail; + + +import android.content.Context; +import android.content.SharedPreferences; +import android.database.Cursor; +import android.preference.PreferenceManager; +import android.support.annotation.Nullable; + +import com.android.dialer.calllog.CallLogQueryHandler; + +/** + * Helper class to check whether visual voicemail is enabled. + * + * Call isVisualVoicemailEnabled() to retrieve the result. + * + * The result is cached and saved in a SharedPreferences, stored as a boolean in + * PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER. Every time a new instance is created, it will try to + * restore the cached result from the SharedPreferences. + * + * Call asyncUpdate() to make a CallLogQuery to check the actual status. This is a async call so + * isVisualVoicemailEnabled() will not be affected immediately. + * + * If the status has changed as a result of asyncUpdate(), + * Callback.onVisualVoicemailEnabledStatusChanged() will be called with the new value. + */ +public class VisualVoicemailEnabledChecker implements CallLogQueryHandler.Listener { + + public static final String PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER = + "has_active_voicemail_provider"; + private SharedPreferences mPrefs; + private boolean mHasActiveVoicemailProvider; + private CallLogQueryHandler mCallLogQueryHandler; + private VoicemailStatusHelper mVoicemailStatusHelper; + private Context mContext; + + public interface Callback { + + /** + * Callback to notify enabled status has changed to the @param newValue + */ + void onVisualVoicemailEnabledStatusChanged(boolean newValue); + } + + private Callback mCallback; + + public VisualVoicemailEnabledChecker(Context context, @Nullable Callback callback) { + mContext = context; + mCallback = callback; + mPrefs = PreferenceManager.getDefaultSharedPreferences(mContext); + mVoicemailStatusHelper = new VoicemailStatusHelperImpl(); + mHasActiveVoicemailProvider = mPrefs.getBoolean(PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER, + false); + } + + /** + * @return whether visual voicemail is enabled. Result is cached, call asyncUpdate() to + * update the result. + */ + public boolean isVisualVoicemailEnabled() { + return mHasActiveVoicemailProvider; + } + + /** + * Perform an async query into the system to check the status of visual voicemail. + * If the status has changed, Callback.onVisualVoicemailEnabledStatusChanged() will be called. + */ + public void asyncUpdate() { + mCallLogQueryHandler = + new CallLogQueryHandler(mContext, mContext.getContentResolver(), this); + mCallLogQueryHandler.fetchVoicemailStatus(); + } + + @Override + public void onVoicemailStatusFetched(Cursor statusCursor) { + boolean hasActiveVoicemailProvider = + mVoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor) > 0; + if (hasActiveVoicemailProvider != mHasActiveVoicemailProvider) { + mHasActiveVoicemailProvider = hasActiveVoicemailProvider; + mPrefs.edit().putBoolean(PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER, + mHasActiveVoicemailProvider); + if (mCallback != null) { + mCallback.onVisualVoicemailEnabledStatusChanged(mHasActiveVoicemailProvider); + } + } + } + + @Override + public void onVoicemailUnreadCountFetched(Cursor cursor) { + // Do nothing + } + + @Override + public boolean onCallsFetched(Cursor combinedCursor) { + // Do nothing + return false; + } +} |