/*
|
* 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.filmstrip;
|
|
import android.view.View;
|
|
import com.android.camera.data.FilmstripItem;
|
import com.android.camera.data.FilmstripItem.VideoClickedCallback;
|
|
/**
|
* An interface which defines the interactions between the
|
* {@link FilmstripItem} and the
|
* {@link com.android.camera.widget.FilmstripView}.
|
*/
|
public interface FilmstripDataAdapter {
|
/**
|
* An interface which defines the update reporter used to return to the
|
* {@link com.android.camera.filmstrip.FilmstripController.FilmstripListener}.
|
*/
|
public interface UpdateReporter {
|
/** Checks if the data of dataID is removed. */
|
public boolean isDataRemoved(int index);
|
|
/** Checks if the data of dataID is updated. */
|
public boolean isDataUpdated(int index);
|
}
|
|
/**
|
* An interface which defines the listener for data events over
|
* {@link FilmstripItem}. Usually
|
* {@link com.android.camera.widget.FilmstripView} itself.
|
*/
|
public interface Listener {
|
/**
|
* Called when the whole data loading is done. There is not any
|
* assumption on the previous data.
|
*/
|
public void onFilmstripItemLoaded();
|
|
/**
|
* Called when some of the data is updated.
|
*
|
* @param reporter Use this reporter to know what happened.
|
*/
|
public void onFilmstripItemUpdated(UpdateReporter reporter);
|
|
/**
|
* Called when a new data item is inserted.
|
*
|
* @param index The ID of the inserted data.
|
* @param item The inserted data.
|
*/
|
public void onFilmstripItemInserted(int index, FilmstripItem item);
|
|
/**
|
* Called when a data item is removed.
|
*
|
* @param index The ID of the removed data.
|
* @param item The data.
|
*/
|
public void onFilmstripItemRemoved(int index, FilmstripItem item);
|
}
|
|
/** Returns the total number of image data. */
|
public int getTotalNumber();
|
|
/**
|
* Returns the view to visually present the image data.
|
*
|
* @param recycled A view that can be reused if one is available, or null.
|
* @param index The ID of the image data to be presented.
|
* @return The view representing the image data. Null if unavailable or
|
* the {@code dataID} is out of range.
|
*/
|
public View getView(View recycled, int index,
|
VideoClickedCallback videoClickedCallback);
|
|
/** Returns a unique identifier for the view created by this data so that the view
|
* can be reused.
|
*
|
* @see android.widget.BaseAdapter#getItemViewType(int)
|
*/
|
public int getItemViewType(int index);
|
|
/**
|
* Returns the {@link FilmstripItem} specified by the ID.
|
*
|
* @param index The ID of the {@link FilmstripItem}.
|
* @return The specified {@link FilmstripItem}. Null if not available.
|
*/
|
public FilmstripItem getFilmstripItemAt(int index);
|
|
/**
|
* Suggests the data adapter the maximum possible size of the layout so
|
* the {@link FilmstripDataAdapter} can optimize the view returned for the
|
* {@link FilmstripItem}.
|
*
|
* @param widthPixels Width in pixels of rendered view.
|
* @param heightPixels Height in pixels of rendered view.
|
*/
|
public void suggestViewSizeBound(int widthPixels, int heightPixels);
|
|
/**
|
* Sets the listener for data events over the ImageData. Replaces the
|
* previous listener if it exists.
|
*
|
* @param listener The listener to use.
|
*/
|
public void setListener(Listener listener);
|
}
|