1 /*
2  * Copyright (C) 2013 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.camera.data;
18 
19 import android.graphics.Bitmap;
20 import android.net.Uri;
21 import android.view.View;
22 
23 import com.android.camera.debug.Log;
24 import com.android.camera.util.Size;
25 import com.google.common.base.Optional;
26 
27 import java.util.Date;
28 import java.util.UUID;
29 
30 import javax.annotation.Nonnull;
31 
32 /**
33  * A LocalData that does nothing but only shows a view.
34  */
35 public class PlaceholderItem implements FilmstripItem {
36     private static final Log.Tag TAG = new Log.Tag("PlaceholderItem");
37     private static final String SIMPLE_VIEW_URI_SCHEME = "simple_view_data";
38 
39     private static final FilmstripItemAttributes PLACEHOLDER_ITEM_ATTRIBUTES =
40           new FilmstripItemAttributes.Builder()
41                 .build();
42 
43     private final View mView;
44     private final Metadata mMetaData;
45     private final FilmstripItemType mItemViewType;
46     private final FilmstripItemData mItemData;
47     private final FilmstripItemAttributes mAttributes;
48 
PlaceholderItem( View v, FilmstripItemType viewType, int width, int height)49     public PlaceholderItem(
50           View v, FilmstripItemType viewType, int width, int height) {
51         mView = v;
52         mItemViewType = viewType;
53         Size dimensions = new Size(width, height);
54         Date creationDate = new Date(0);
55         Date lastModifiedDate = new Date(0);
56         mMetaData = new Metadata();
57         mMetaData.setLoaded(true);
58         Uri.Builder builder = new Uri.Builder();
59         String uuid = UUID.randomUUID().toString();
60         builder.scheme(SIMPLE_VIEW_URI_SCHEME).appendPath(uuid);
61         Uri uri = builder.build();
62 
63         mItemData = new FilmstripItemData(
64               -1,
65               uuid,
66               "",
67               creationDate,
68               lastModifiedDate,
69               "" /* path */,
70               uri,
71               dimensions,
72               0,
73               0,
74               Location.UNKNOWN);
75 
76         mAttributes = PLACEHOLDER_ITEM_ATTRIBUTES;
77     }
78 
79     @Override
getData()80     public FilmstripItemData getData() {
81         return mItemData;
82     }
83 
84     @Override
getAttributes()85     public FilmstripItemAttributes getAttributes() {
86         return mAttributes;
87     }
88 
89     @Override
getItemViewType()90     public FilmstripItemType getItemViewType() {
91         return mItemViewType;
92     }
93 
94     @Override
refresh()95     public FilmstripItem refresh() {
96         return this;
97     }
98 
99     @Override
delete()100     public boolean delete() {
101         return false;
102     }
103 
104     @Override
getView(Optional<View> optionalView, LocalFilmstripDataAdapter adapter, boolean isInProgress, VideoClickedCallback videoClickedCallback)105     public View getView(Optional<View> optionalView,
106           LocalFilmstripDataAdapter adapter, boolean isInProgress,
107           VideoClickedCallback videoClickedCallback) {
108         return mView;
109     }
110 
111     @Override
setSuggestedSize(int widthPx, int heightPx)112     public void setSuggestedSize(int widthPx, int heightPx) { }
113 
114     @Override
renderTiny(@onnull View view)115     public void renderTiny(@Nonnull View view) { }
116 
117     @Override
renderThumbnail(@onnull View view)118     public void renderThumbnail(@Nonnull View view) { }
119 
120     @Override
renderFullRes(@onnull View view)121     public void renderFullRes(@Nonnull View view) { }
122 
123     @Override
recycle(@onnull View view)124     public void recycle(@Nonnull View view) {
125         // Do nothing.
126     }
127 
128     @Override
getMediaDetails()129     public Optional<MediaDetails> getMediaDetails() {
130         return Optional.absent();
131     }
132 
133     @Override
getMetadata()134     public Metadata getMetadata() {
135         return mMetaData;
136     }
137 
138     @Override
generateThumbnail(int boundingWidthPx, int boundingHeightPx)139     public Optional<Bitmap> generateThumbnail(int boundingWidthPx, int boundingHeightPx) {
140         return Optional.absent();
141     }
142 
143     @Override
getDimensions()144     public Size getDimensions() {
145         return mItemData.getDimensions();
146     }
147 
148     @Override
getOrientation()149     public int getOrientation() {
150         return mItemData.getOrientation();
151     }
152 }
153