| /* |
| * Copyright (C) 2011 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.dialer.voicemail; |
| |
| import android.database.Cursor; |
| import android.net.Uri; |
| import android.provider.VoicemailContract.Status; |
| |
| import java.util.List; |
| |
| /** |
| * Interface used by the call log UI to determine what user message, if any, related to voicemail |
| * source status needs to be shown. The messages are returned in the order of importance. |
| * <p> |
| * The implementation of this interface interacts with the voicemail content provider to fetch |
| * statuses of all the registered voicemail sources and determines if any status message needs to |
| * be shown. The user of this interface must observe/listen to provider changes and invoke |
| * this class to check if any message needs to be shown. |
| */ |
| public interface VoicemailStatusHelper { |
| public class StatusMessage { |
| /** Package of the source on behalf of which this message has to be shown.*/ |
| public final String sourcePackage; |
| /** |
| * The string resource id of the status message that should be shown in the call log |
| * page. Set to -1, if this message is not to be shown in call log. |
| */ |
| public final int callLogMessageId; |
| /** |
| * The string resource id of the status message that should be shown in the call details |
| * page. Set to -1, if this message is not to be shown in call details page. |
| */ |
| public final int callDetailsMessageId; |
| /** The string resource id of the action message that should be shown. */ |
| public final int actionMessageId; |
| /** URI for the corrective action, where applicable. Null if no action URI is available. */ |
| public final Uri actionUri; |
| public StatusMessage(String sourcePackage, int callLogMessageId, int callDetailsMessageId, |
| int actionMessageId, Uri actionUri) { |
| this.sourcePackage = sourcePackage; |
| this.callLogMessageId = callLogMessageId; |
| this.callDetailsMessageId = callDetailsMessageId; |
| this.actionMessageId = actionMessageId; |
| this.actionUri = actionUri; |
| } |
| |
| /** Whether this message should be shown in the call log page. */ |
| public boolean showInCallLog() { |
| return callLogMessageId != -1; |
| } |
| |
| /** Whether this message should be shown in the call details page. */ |
| public boolean showInCallDetails() { |
| return callDetailsMessageId != -1; |
| } |
| } |
| |
| /** |
| * Returns a list of messages, in the order or priority that should be shown to the user. An |
| * empty list is returned if no message needs to be shown. |
| * @param cursor The cursor pointing to the query on {@link Status#CONTENT_URI}. The projection |
| * to be used is defined by the implementation class of this interface. |
| */ |
| public List<StatusMessage> getStatusMessages(Cursor cursor); |
| |
| /** |
| * Returns the number of active voicemail sources installed. |
| * <p> |
| * The number of sources is counted by querying the voicemail status table. |
| */ |
| public int getNumberActivityVoicemailSources(Cursor cursor); |
| } |