| /* | |
| * Copyright (C) 2021 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.managedprovisioning.provisioning; | |
| import android.annotation.DrawableRes; | |
| import android.annotation.RawRes; | |
| import android.annotation.StringRes; | |
| import com.android.managedprovisioning.util.LazyStringResource; | |
| import com.android.managedprovisioning.util.LazyStringResource.Empty; | |
| /** | |
| * A wrapper describing the contents of an education screen. | |
| */ | |
| final class TransitionScreenWrapper { | |
| public final LazyStringResource header; | |
| public final LazyStringResource description; | |
| public final @RawRes int drawable; | |
| public final LazyStringResource subHeaderTitle; | |
| public final LazyStringResource subHeader; | |
| public final @DrawableRes int subHeaderIcon; | |
| public final boolean shouldLoop; | |
| public final LazyStringResource secondarySubHeaderTitle; | |
| public final LazyStringResource secondarySubHeader; | |
| public final @DrawableRes int secondarySubHeaderIcon; | |
| TransitionScreenWrapper(LazyStringResource header, @RawRes int drawable) { | |
| this(header, /* description= */ Empty.INSTANCE, drawable, /* shouldLoop= */ true); | |
| } | |
| TransitionScreenWrapper(@StringRes int headerId, @RawRes int drawable) { | |
| this(LazyStringResource.of(headerId), drawable); | |
| } | |
| TransitionScreenWrapper( | |
| LazyStringResource header, | |
| LazyStringResource description, | |
| @RawRes int drawable, | |
| boolean shouldLoop) { | |
| this( | |
| header, | |
| description, | |
| drawable, | |
| /* subHeaderTitle= */ Empty.INSTANCE, | |
| /* subHeader= */ Empty.INSTANCE, | |
| /* subHeaderIcon= */ 0, | |
| shouldLoop, | |
| /* secondarySubHeaderTitle= */ Empty.INSTANCE, | |
| /* secondarySubHeader= */ Empty.INSTANCE, | |
| /* secondarySubHeaderIcon= */ 0); | |
| } | |
| TransitionScreenWrapper( | |
| @StringRes int headerId, | |
| @StringRes int descriptionId, | |
| @RawRes int drawable, | |
| boolean shouldLoop) { | |
| this(LazyStringResource.of(headerId), LazyStringResource.of(descriptionId), | |
| drawable, shouldLoop); | |
| } | |
| private TransitionScreenWrapper( | |
| LazyStringResource header, | |
| LazyStringResource description, | |
| int drawable, | |
| LazyStringResource subHeaderTitle, | |
| LazyStringResource subHeader, | |
| int subHeaderIcon, | |
| boolean shouldLoop, | |
| LazyStringResource secondarySubHeaderTitle, | |
| LazyStringResource secondarySubHeader, | |
| int secondarySubHeaderIcon) { | |
| this.header = header; | |
| this.description = description; | |
| this.drawable = drawable; | |
| this.subHeaderTitle = subHeaderTitle; | |
| this.subHeader = subHeader; | |
| this.subHeaderIcon = subHeaderIcon; | |
| this.shouldLoop = shouldLoop; | |
| this.secondarySubHeaderTitle = secondarySubHeaderTitle; | |
| this.secondarySubHeader = secondarySubHeader; | |
| this.secondarySubHeaderIcon = secondarySubHeaderIcon; | |
| validateFields(); | |
| } | |
| private void validateFields() { | |
| final boolean isItemProvided = | |
| !(subHeader instanceof Empty) | |
| || subHeaderIcon != 0 | |
| || !(subHeaderTitle instanceof Empty) | |
| || !(secondarySubHeader instanceof Empty) | |
| || secondarySubHeaderIcon != 0 | |
| || !(secondarySubHeaderTitle instanceof Empty); | |
| if (isItemProvided && drawable != 0) { | |
| throw new IllegalArgumentException("Cannot show items and animation at the same time."); | |
| } | |
| if (header instanceof Empty) { | |
| throw new IllegalArgumentException("Header resource id must be a positive number."); | |
| } | |
| } | |
| public static final class Builder { | |
| private LazyStringResource mHeader = Empty.INSTANCE; | |
| private LazyStringResource mDescription = Empty.INSTANCE; | |
| @RawRes | |
| private int mDrawable; | |
| private LazyStringResource mSubHeaderTitle = Empty.INSTANCE; | |
| private LazyStringResource mSubHeader = Empty.INSTANCE; | |
| @DrawableRes | |
| private int mSubHeaderIcon; | |
| private boolean mShouldLoop; | |
| private LazyStringResource mSecondarySubHeaderTitle = Empty.INSTANCE; | |
| private LazyStringResource mSecondarySubHeader = Empty.INSTANCE; | |
| @DrawableRes | |
| private int mSecondarySubHeaderIcon; | |
| public Builder setHeader(LazyStringResource header) { | |
| this.mHeader = header; | |
| return this; | |
| } | |
| public Builder setHeader(@StringRes int headerId) { | |
| return setHeader(LazyStringResource.of(headerId)); | |
| } | |
| public Builder setDescription(LazyStringResource description) { | |
| this.mDescription = description; | |
| return this; | |
| } | |
| public Builder setDescription(@StringRes int descriptionId) { | |
| return setDescription(LazyStringResource.of(descriptionId)); | |
| } | |
| public Builder setAnimation(int drawable) { | |
| this.mDrawable = drawable; | |
| return this; | |
| } | |
| public Builder setSubHeaderTitle(LazyStringResource subHeaderTitle) { | |
| this.mSubHeaderTitle = subHeaderTitle; | |
| return this; | |
| } | |
| public Builder setSubHeaderTitle(@StringRes int subHeaderTitleId) { | |
| return setSubHeaderTitle(LazyStringResource.of(subHeaderTitleId)); | |
| } | |
| public Builder setSubHeader(LazyStringResource subHeader) { | |
| this.mSubHeader = subHeader; | |
| return this; | |
| } | |
| public Builder setSubHeader(@StringRes int subHeaderId) { | |
| return setSubHeader(LazyStringResource.of(subHeaderId)); | |
| } | |
| public Builder setSubHeaderIcon(int subHeaderIcon) { | |
| this.mSubHeaderIcon = subHeaderIcon; | |
| return this; | |
| } | |
| public Builder setShouldLoop(boolean shouldLoop) { | |
| this.mShouldLoop = shouldLoop; | |
| return this; | |
| } | |
| public Builder setSecondarySubHeaderTitle(LazyStringResource secondarySubHeaderTitle) { | |
| this.mSecondarySubHeaderTitle = secondarySubHeaderTitle; | |
| return this; | |
| } | |
| public Builder setSecondarySubHeaderTitle(@StringRes int secondarySubHeaderTitleId) { | |
| return setSecondarySubHeaderTitle(LazyStringResource.of(secondarySubHeaderTitleId)); | |
| } | |
| public Builder setSecondarySubHeader(LazyStringResource secondarySubHeader) { | |
| this.mSecondarySubHeader = secondarySubHeader; | |
| return this; | |
| } | |
| public Builder setSecondarySubHeader(@StringRes int secondarySubHeaderId) { | |
| return setSecondarySubHeader(LazyStringResource.of(secondarySubHeaderId)); | |
| } | |
| public Builder setSecondarySubHeaderIcon(int secondarySubHeaderIcon) { | |
| this.mSecondarySubHeaderIcon = secondarySubHeaderIcon; | |
| return this; | |
| } | |
| public TransitionScreenWrapper build() { | |
| return new TransitionScreenWrapper( | |
| mHeader, | |
| mDescription, | |
| mDrawable, | |
| mSubHeaderTitle, | |
| mSubHeader, | |
| mSubHeaderIcon, | |
| mShouldLoop, | |
| mSecondarySubHeaderTitle, | |
| mSecondarySubHeader, | |
| mSecondarySubHeaderIcon); | |
| } | |
| } | |
| } |