18ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde/* 28ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * Copyright (C) 2013 The Android Open Source Project 38ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * 48ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * Licensed under the Apache License, Version 2.0 (the "License"); 58ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * you may not use this file except in compliance with the License. 68ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * You may obtain a copy of the License at 78ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * 88ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * http://www.apache.org/licenses/LICENSE-2.0 98ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * 108ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * Unless required by applicable law or agreed to in writing, software 118ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * distributed under the License is distributed on an "AS IS" BASIS, 128ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * See the License for the specific language governing permissions and 148ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * limitations under the License. 158ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde */ 168ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 178ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdepackage com.android.camera.data; 188ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 198ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdeimport android.graphics.Bitmap; 208ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdeimport android.net.Uri; 218ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdeimport android.view.View; 228ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 238ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdeimport com.android.camera.debug.Log; 248ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdeimport com.android.camera.util.Size; 258ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdeimport com.google.common.base.Optional; 268ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 278ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdeimport java.util.Date; 288ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdeimport java.util.UUID; 298ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 3077d9f023e76816e5da7bd067ad46cc0e9c98623fPaul Rohdeimport javax.annotation.Nonnull; 3177d9f023e76816e5da7bd067ad46cc0e9c98623fPaul Rohde 328ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde/** 338ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde * A LocalData that does nothing but only shows a view. 348ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde */ 358ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohdepublic class PlaceholderItem implements FilmstripItem { 368ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private static final Log.Tag TAG = new Log.Tag("PlaceholderItem"); 378ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private static final String SIMPLE_VIEW_URI_SCHEME = "simple_view_data"; 388ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 398ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private static final FilmstripItemAttributes PLACEHOLDER_ITEM_ATTRIBUTES = 408ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde new FilmstripItemAttributes.Builder() 418ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde .build(); 428ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 438ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final View mView; 448ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final Metadata mMetaData; 458ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final FilmstripItemType mItemViewType; 468ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final FilmstripItemData mItemData; 478ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde private final FilmstripItemAttributes mAttributes; 488ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 498ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public PlaceholderItem( 508ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde View v, FilmstripItemType viewType, int width, int height) { 518ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mView = v; 528ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mItemViewType = viewType; 538ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde Size dimensions = new Size(width, height); 548ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde Date creationDate = new Date(0); 558ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde Date lastModifiedDate = new Date(0); 568ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mMetaData = new Metadata(); 578ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mMetaData.setLoaded(true); 588ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde Uri.Builder builder = new Uri.Builder(); 598ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde String uuid = UUID.randomUUID().toString(); 608ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde builder.scheme(SIMPLE_VIEW_URI_SCHEME).appendPath(uuid); 618ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde Uri uri = builder.build(); 628ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 638ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mItemData = new FilmstripItemData( 648ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde -1, 658ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde uuid, 668ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde "", 678ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde creationDate, 688ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde lastModifiedDate, 698ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde "" /* path */, 708ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde uri, 718ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde dimensions, 728ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 0, 738ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 0, 748ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde Location.UNKNOWN); 758ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 768ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde mAttributes = PLACEHOLDER_ITEM_ATTRIBUTES; 778ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 788ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 798ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde @Override 808ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public FilmstripItemData getData() { 818ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mItemData; 828ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 838ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 848ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde @Override 858ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public FilmstripItemAttributes getAttributes() { 868ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mAttributes; 878ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 888ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 898ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde @Override 908ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public FilmstripItemType getItemViewType() { 918ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mItemViewType; 928ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 938ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 948ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde @Override 958ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public FilmstripItem refresh() { 968ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return this; 978ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 988ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 998ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde @Override 1008ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public boolean delete() { 1018ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return false; 1028ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 1038ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1048ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde @Override 10577d9f023e76816e5da7bd067ad46cc0e9c98623fPaul Rohde public View getView(Optional<View> optionalView, 106005bb2f26e73c4c9daad41b615f6dd414396f625Alan Newberger LocalFilmstripDataAdapter adapter, boolean isInProgress, 1078ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde VideoClickedCallback videoClickedCallback) { 1088ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mView; 1098ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 1108ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1118ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde @Override 11277d9f023e76816e5da7bd067ad46cc0e9c98623fPaul Rohde public void setSuggestedSize(int widthPx, int heightPx) { } 11377d9f023e76816e5da7bd067ad46cc0e9c98623fPaul Rohde 11477d9f023e76816e5da7bd067ad46cc0e9c98623fPaul Rohde @Override 11577d9f023e76816e5da7bd067ad46cc0e9c98623fPaul Rohde public void renderTiny(@Nonnull View view) { } 11677d9f023e76816e5da7bd067ad46cc0e9c98623fPaul Rohde 11777d9f023e76816e5da7bd067ad46cc0e9c98623fPaul Rohde @Override 11877d9f023e76816e5da7bd067ad46cc0e9c98623fPaul Rohde public void renderThumbnail(@Nonnull View view) { } 11977d9f023e76816e5da7bd067ad46cc0e9c98623fPaul Rohde 12077d9f023e76816e5da7bd067ad46cc0e9c98623fPaul Rohde @Override 12177d9f023e76816e5da7bd067ad46cc0e9c98623fPaul Rohde public void renderFullRes(@Nonnull View view) { } 1228ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1238ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde @Override 12477d9f023e76816e5da7bd067ad46cc0e9c98623fPaul Rohde public void recycle(@Nonnull View view) { 1258ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde // Do nothing. 1268ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 1278ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1288ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde @Override 1298ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Optional<MediaDetails> getMediaDetails() { 1308ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return Optional.absent(); 1318ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 1328ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1338ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde @Override 1348ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Metadata getMetadata() { 1358ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return mMetaData; 1368ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 1378ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde 1388ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde @Override 1398ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde public Optional<Bitmap> generateThumbnail(int boundingWidthPx, int boundingHeightPx) { 1408ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde return Optional.absent(); 1418ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde } 14251cafa0a35546a42c573357aa7a031a79cf9ba1bAlan Newberger 14351cafa0a35546a42c573357aa7a031a79cf9ba1bAlan Newberger @Override 14451cafa0a35546a42c573357aa7a031a79cf9ba1bAlan Newberger public Size getDimensions() { 14551cafa0a35546a42c573357aa7a031a79cf9ba1bAlan Newberger return mItemData.getDimensions(); 14651cafa0a35546a42c573357aa7a031a79cf9ba1bAlan Newberger } 14751cafa0a35546a42c573357aa7a031a79cf9ba1bAlan Newberger 14851cafa0a35546a42c573357aa7a031a79cf9ba1bAlan Newberger @Override 14951cafa0a35546a42c573357aa7a031a79cf9ba1bAlan Newberger public int getOrientation() { 15051cafa0a35546a42c573357aa7a031a79cf9ba1bAlan Newberger return mItemData.getOrientation(); 15151cafa0a35546a42c573357aa7a031a79cf9ba1bAlan Newberger } 1528ee16b8a323ffa20e6fb1270d498ec445f64defcPaul Rohde} 153