/* * Copyright (C) 2013 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.camera.data; import java.util.EnumSet; /** * Represents an immutable set of item attributes */ public class FilmstripItemAttributes { public enum Attributes { HAS_DETAILED_CAPTURE_INFO, CAN_SHARE, CAN_EDIT, CAN_DELETE, CAN_PLAY, CAN_OPEN_VIEWER, CAN_SWIPE_AWAY, CAN_ZOOM_IN_PLACE, IS_RENDERING, IS_IMAGE, IS_VIDEO, } private final EnumSet mAttributes; public static final FilmstripItemAttributes DEFAULT = new Builder().build(); private FilmstripItemAttributes(EnumSet attributes) { mAttributes = attributes; } public boolean hasDetailedCaptureInfo() { return mAttributes.contains(Attributes.HAS_DETAILED_CAPTURE_INFO); } // TODO: Replace this with a command. public boolean canShare() { return mAttributes.contains(Attributes.CAN_SHARE); } // TODO: Replace this with a command. public boolean canEdit() { return mAttributes.contains(Attributes.CAN_EDIT); } // TODO: Replace this with a command. public boolean canDelete() { return mAttributes.contains(Attributes.CAN_DELETE); } public boolean canSwipeAway() { return mAttributes.contains(Attributes.CAN_SWIPE_AWAY); } public boolean canZoomInPlace() { return mAttributes.contains(Attributes.CAN_ZOOM_IN_PLACE); } public boolean isRendering() { return mAttributes.contains(Attributes.IS_RENDERING); } // TODO: Consider replacing video / image with an enum. public boolean isImage() { return mAttributes.contains(Attributes.IS_IMAGE); } public boolean isVideo() { return mAttributes.contains(Attributes.IS_VIDEO); } /** * Builder for {@code FilmstripItemAttributes}. */ public static class Builder { EnumSet mAttributes = EnumSet.noneOf(Attributes.class); public Builder with(Attributes attribute) { mAttributes.add(attribute); return this; } public FilmstripItemAttributes build() { return new FilmstripItemAttributes(EnumSet.copyOf(mAttributes)); } } }