PlaceholderItem.java revision 51cafa0a35546a42c573357aa7a031a79cf9ba1b
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
17package com.android.camera.data;
18
19import android.graphics.Bitmap;
20import android.net.Uri;
21import android.view.View;
22
23import com.android.camera.data.FilmstripItemAttributes.Attributes;
24import com.android.camera.debug.Log;
25import com.android.camera.util.Size;
26import com.google.common.base.Optional;
27
28import java.util.Date;
29import java.util.UUID;
30
31/**
32 * A LocalData that does nothing but only shows a view.
33 */
34public class PlaceholderItem implements FilmstripItem {
35    private static final Log.Tag TAG = new Log.Tag("PlaceholderItem");
36    private static final String SIMPLE_VIEW_URI_SCHEME = "simple_view_data";
37
38    private static final FilmstripItemAttributes PLACEHOLDER_ITEM_ATTRIBUTES =
39          new FilmstripItemAttributes.Builder()
40                .with(Attributes.CAN_SWIPE_IN_FULL_SCREEN)
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
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
80    public FilmstripItemData getData() {
81        return mItemData;
82    }
83
84    @Override
85    public FilmstripItemAttributes getAttributes() {
86        return mAttributes;
87    }
88
89    @Override
90    public FilmstripItemType getItemViewType() {
91        return mItemViewType;
92    }
93
94    @Override
95    public FilmstripItem refresh() {
96        return this;
97    }
98
99    @Override
100    public boolean delete() {
101        return false;
102    }
103
104    @Override
105    public View getView(Optional<View> optionalView, int viewWidthPx, int viewHeightPx,
106          LocalFilmstripDataAdapter adapter, boolean isInProgress,
107          VideoClickedCallback videoClickedCallback) {
108        return mView;
109    }
110
111    @Override
112    public void loadFullImage(int w, int h, View view) {
113        // do nothing.
114    }
115
116    @Override
117    public void recycle(View view) {
118        // Do nothing.
119    }
120
121    @Override
122    public Optional<MediaDetails> getMediaDetails() {
123        return Optional.absent();
124    }
125
126    @Override
127    public Metadata getMetadata() {
128        return mMetaData;
129    }
130
131    @Override
132    public Optional<Bitmap> generateThumbnail(int boundingWidthPx, int boundingHeightPx) {
133        return Optional.absent();
134    }
135
136    @Override
137    public Size getDimensions() {
138        return mItemData.getDimensions();
139    }
140
141    @Override
142    public int getOrientation() {
143        return mItemData.getOrientation();
144    }
145}
146