| /* |
| * Copyright (C) 2018 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.example.android.intentplayground; |
| |
| import java.util.Arrays; |
| import java.util.HashSet; |
| import java.util.Set; |
| import java.util.stream.Collectors; |
| |
| import static java.util.Collections.emptySet; |
| |
| /** |
| * Represents the different intent flags related to activities and tasks. |
| */ |
| enum IntentFlag { |
| SINGLE_TOP ("FLAG_ACTIVITY_SINGLE_TOP", emptySet(), emptySet(), emptySet()), |
| BROUGHT_TO_FRONT ("FLAG_ACTIVITY_BROUGHT_TO_FRONT", emptySet(), emptySet(), emptySet()), |
| NEW_TASK ("FLAG_ACTIVITY_NEW_TASK", emptySet(), emptySet(), emptySet()), |
| CLEAR_TASK ("FLAG_ACTIVITY_CLEAR_TASK", emptySet(), emptySet(), setOf(NEW_TASK)), |
| CLEAR_TOP ("FLAG_ACTIVITY_CLEAR_TOP", setOf(SINGLE_TOP, NEW_TASK), emptySet(), emptySet()), |
| MATCH_EXTERNAL("FLAG_ACTIVITY_MATCH_EXTERNAL", emptySet(), emptySet(), emptySet()), |
| MULTIPLE_TASK ("FLAG_ACTIVITY_MULTIPLE_TASK", emptySet(), emptySet(), setOf(NEW_TASK)), |
| NEW_DOCUMENT ("FLAG_ACTIVITY_NEW_DOCUMENT", setOf(MULTIPLE_TASK), emptySet(), |
| emptySet()), |
| RETAIN_IN_RECENTS ("FLAG_ACTIVITY_RETAIN_IN_RECENTS", setOf(NEW_DOCUMENT), |
| emptySet(), emptySet()), |
| CLEAR_WHEN_TASK_RESET ("FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET", emptySet(), emptySet(), |
| emptySet()), |
| EXCLUDE_FROM_RECENTS ("FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS", emptySet(), setOf(RETAIN_IN_RECENTS), |
| emptySet()), |
| FORWARD_RESULT ("FLAG_ACTIVITY_FORWARD_RESULT", emptySet(), emptySet(), emptySet()), |
| LAUNCHED_FROM_HISTORY ("FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY", emptySet(), emptySet(), |
| emptySet()), |
| LAUNCH_ADJACENT ("FLAG_ACTIVITY_LAUNCH_ADJACENT", setOf(MULTIPLE_TASK), emptySet(), |
| setOf(NEW_TASK)), |
| NO_ANIMATION ("FLAG_ACTIVITY_NO_ANIMATION", emptySet(), emptySet(), emptySet()), |
| NO_HISTORY ("FLAG_ACTIVITY_NO_HISTORY", emptySet(), emptySet(), emptySet()), |
| NO_USER_ACTION ("FLAG_ACTIVITY_NO_USER_ACTION", emptySet(), emptySet(), emptySet()), |
| PREVIOUS_IS_TOP ("FLAG_ACTIVITY_PREVIOUS_IS_TOP", emptySet(), emptySet(), emptySet()), |
| REORDER_TO_FRONT ("FLAG_ACTIVITY_REORDER_TO_FRONT", emptySet(), setOf(CLEAR_TOP), emptySet()), |
| RESET_TASK_IF_NEEDED ("FLAG_ACTIVITY_RESET_TASK_IF_NEEDED", emptySet(), emptySet(), emptySet()), |
| TASK_ON_HOME ("FLAG_ACTIVITY_TASK_ON_HOME", emptySet(), emptySet(), setOf(NEW_TASK)); |
| |
| public String name; |
| private Set<IntentFlag> mComplements = new HashSet<>(); |
| private Set<IntentFlag> mConflicts = new HashSet<>(); |
| private Set<IntentFlag> mRequests = new HashSet<>(); |
| |
| IntentFlag(String name, Set<IntentFlag> complements, Set<IntentFlag> conflicts, |
| Set<IntentFlag> requests) { |
| this.name = name; |
| this.mComplements = complements; |
| this.mConflicts = conflicts; |
| this.mRequests = requests; |
| } |
| |
| /** |
| * @return A set of flags that complement the action of this flag. |
| */ |
| public Set<IntentFlag> getComplements() { |
| return mComplements; |
| } |
| |
| /** |
| * @return A set of flags that conflict with the action of this flag. |
| */ |
| public Set<IntentFlag> getConflicts() { |
| return mConflicts; |
| } |
| |
| /** |
| * @return A set of flags that are necessary for the action of this flag. |
| */ |
| public Set<IntentFlag> getRequests() { |
| return mRequests; |
| } |
| |
| public String getName() { |
| return name; |
| } |
| |
| /** |
| * Convenience method to create a set of intent flags. |
| */ |
| protected static Set<IntentFlag> setOf(IntentFlag... flags) { |
| return Arrays.stream(flags).collect(Collectors.toSet()); |
| } |
| } |
| |