136 lines
5.8 KiB
Java
136 lines
5.8 KiB
Java
![]() |
/*
|
||
|
* Copyright (C) 2023 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 android.service.notification;
|
||
|
|
||
|
import android.annotation.NonNull;
|
||
|
import android.app.Flags;
|
||
|
import android.app.NotificationManager.Policy;
|
||
|
|
||
|
/**
|
||
|
* Converters between different Zen representations.
|
||
|
* @hide
|
||
|
*/
|
||
|
public class ZenAdapters {
|
||
|
|
||
|
/** Maps {@link Policy} to {@link ZenPolicy}. */
|
||
|
@NonNull
|
||
|
public static ZenPolicy notificationPolicyToZenPolicy(@NonNull Policy policy) {
|
||
|
ZenPolicy.Builder zenPolicyBuilder = new ZenPolicy.Builder()
|
||
|
.allowAlarms(policy.allowAlarms())
|
||
|
.allowCalls(
|
||
|
policy.allowCalls()
|
||
|
? notificationPolicySendersToZenPolicyPeopleType(
|
||
|
policy.allowCallsFrom())
|
||
|
: ZenPolicy.PEOPLE_TYPE_NONE)
|
||
|
.allowConversations(
|
||
|
policy.allowConversations()
|
||
|
? notificationPolicyConversationSendersToZenPolicy(
|
||
|
policy.allowConversationsFrom())
|
||
|
: ZenPolicy.CONVERSATION_SENDERS_NONE)
|
||
|
.allowEvents(policy.allowEvents())
|
||
|
.allowMedia(policy.allowMedia())
|
||
|
.allowMessages(
|
||
|
policy.allowMessages()
|
||
|
? notificationPolicySendersToZenPolicyPeopleType(
|
||
|
policy.allowMessagesFrom())
|
||
|
: ZenPolicy.PEOPLE_TYPE_NONE)
|
||
|
.allowReminders(policy.allowReminders())
|
||
|
.allowRepeatCallers(policy.allowRepeatCallers())
|
||
|
.allowSystem(policy.allowSystem());
|
||
|
|
||
|
if (policy.suppressedVisualEffects != Policy.SUPPRESSED_EFFECTS_UNSET) {
|
||
|
zenPolicyBuilder.showBadges(policy.showBadges())
|
||
|
.showFullScreenIntent(policy.showFullScreenIntents())
|
||
|
.showInAmbientDisplay(policy.showAmbient())
|
||
|
.showInNotificationList(policy.showInNotificationList())
|
||
|
.showLights(policy.showLights())
|
||
|
.showPeeking(policy.showPeeking())
|
||
|
.showStatusBarIcons(policy.showStatusBarIcons());
|
||
|
}
|
||
|
|
||
|
if (Flags.modesApi()) {
|
||
|
zenPolicyBuilder.allowPriorityChannels(policy.allowPriorityChannels());
|
||
|
}
|
||
|
|
||
|
return zenPolicyBuilder.build();
|
||
|
}
|
||
|
|
||
|
/** Maps {@link ZenPolicy.PeopleType} enum to {@link Policy.PrioritySenders}. */
|
||
|
@Policy.PrioritySenders
|
||
|
public static int zenPolicyPeopleTypeToNotificationPolicySenders(
|
||
|
@ZenPolicy.PeopleType int zpPeopleType, @Policy.PrioritySenders int defaultResult) {
|
||
|
switch (zpPeopleType) {
|
||
|
case ZenPolicy.PEOPLE_TYPE_ANYONE:
|
||
|
return Policy.PRIORITY_SENDERS_ANY;
|
||
|
case ZenPolicy.PEOPLE_TYPE_CONTACTS:
|
||
|
return Policy.PRIORITY_SENDERS_CONTACTS;
|
||
|
case ZenPolicy.PEOPLE_TYPE_STARRED:
|
||
|
return Policy.PRIORITY_SENDERS_STARRED;
|
||
|
default:
|
||
|
return defaultResult;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/** Maps {@link Policy.PrioritySenders} enum to {@link ZenPolicy.PeopleType}. */
|
||
|
@ZenPolicy.PeopleType
|
||
|
public static int notificationPolicySendersToZenPolicyPeopleType(
|
||
|
@Policy.PrioritySenders int npPrioritySenders) {
|
||
|
switch (npPrioritySenders) {
|
||
|
case Policy.PRIORITY_SENDERS_ANY:
|
||
|
return ZenPolicy.PEOPLE_TYPE_ANYONE;
|
||
|
case Policy.PRIORITY_SENDERS_CONTACTS:
|
||
|
return ZenPolicy.PEOPLE_TYPE_CONTACTS;
|
||
|
case Policy.PRIORITY_SENDERS_STARRED:
|
||
|
default:
|
||
|
return ZenPolicy.PEOPLE_TYPE_STARRED;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/** Maps {@link ZenPolicy.ConversationSenders} enum to {@link Policy.ConversationSenders}. */
|
||
|
@Policy.ConversationSenders
|
||
|
public static int zenPolicyConversationSendersToNotificationPolicy(
|
||
|
@ZenPolicy.ConversationSenders int zpConversationSenders,
|
||
|
@Policy.ConversationSenders int defaultResult) {
|
||
|
switch (zpConversationSenders) {
|
||
|
case ZenPolicy.CONVERSATION_SENDERS_ANYONE:
|
||
|
return Policy.CONVERSATION_SENDERS_ANYONE;
|
||
|
case ZenPolicy.CONVERSATION_SENDERS_IMPORTANT:
|
||
|
return Policy.CONVERSATION_SENDERS_IMPORTANT;
|
||
|
case ZenPolicy.CONVERSATION_SENDERS_NONE:
|
||
|
return Policy.CONVERSATION_SENDERS_NONE;
|
||
|
default:
|
||
|
return defaultResult;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/** Maps {@link Policy.ConversationSenders} enum to {@link ZenPolicy.ConversationSenders}. */
|
||
|
@ZenPolicy.ConversationSenders
|
||
|
private static int notificationPolicyConversationSendersToZenPolicy(
|
||
|
@Policy.ConversationSenders int npPriorityConversationSenders) {
|
||
|
switch (npPriorityConversationSenders) {
|
||
|
case Policy.CONVERSATION_SENDERS_ANYONE:
|
||
|
return ZenPolicy.CONVERSATION_SENDERS_ANYONE;
|
||
|
case Policy.CONVERSATION_SENDERS_IMPORTANT:
|
||
|
return ZenPolicy.CONVERSATION_SENDERS_IMPORTANT;
|
||
|
case Policy.CONVERSATION_SENDERS_NONE:
|
||
|
return ZenPolicy.CONVERSATION_SENDERS_NONE;
|
||
|
default: // including Policy.CONVERSATION_SENDERS_UNSET
|
||
|
return ZenPolicy.CONVERSATION_SENDERS_UNSET;
|
||
|
}
|
||
|
}
|
||
|
}
|