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