1666ea1b28a76aeba74744148b15099254d918671Owen Lin/*
2666ea1b28a76aeba74744148b15099254d918671Owen Lin * Copyright (C) 2009 The Android Open Source Project
3666ea1b28a76aeba74744148b15099254d918671Owen Lin *
4666ea1b28a76aeba74744148b15099254d918671Owen Lin * Licensed under the Apache License, Version 2.0 (the "License");
5666ea1b28a76aeba74744148b15099254d918671Owen Lin * you may not use this file except in compliance with the License.
6666ea1b28a76aeba74744148b15099254d918671Owen Lin * You may obtain a copy of the License at
7666ea1b28a76aeba74744148b15099254d918671Owen Lin *
8666ea1b28a76aeba74744148b15099254d918671Owen Lin *      http://www.apache.org/licenses/LICENSE-2.0
9666ea1b28a76aeba74744148b15099254d918671Owen Lin *
10666ea1b28a76aeba74744148b15099254d918671Owen Lin * Unless required by applicable law or agreed to in writing, software
11666ea1b28a76aeba74744148b15099254d918671Owen Lin * distributed under the License is distributed on an "AS IS" BASIS,
12666ea1b28a76aeba74744148b15099254d918671Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13666ea1b28a76aeba74744148b15099254d918671Owen Lin * See the License for the specific language governing permissions and
14666ea1b28a76aeba74744148b15099254d918671Owen Lin * limitations under the License.
15666ea1b28a76aeba74744148b15099254d918671Owen Lin */
16666ea1b28a76aeba74744148b15099254d918671Owen Lin
17666ea1b28a76aeba74744148b15099254d918671Owen Linpackage com.android.camera.gallery;
18666ea1b28a76aeba74744148b15099254d918671Owen Lin
19666ea1b28a76aeba74744148b15099254d918671Owen Linimport android.net.Uri;
20666ea1b28a76aeba74744148b15099254d918671Owen Lin
21666ea1b28a76aeba74744148b15099254d918671Owen Linimport java.util.HashMap;
22666ea1b28a76aeba74744148b15099254d918671Owen Lin
23666ea1b28a76aeba74744148b15099254d918671Owen Lin//
24666ea1b28a76aeba74744148b15099254d918671Owen Lin// ImageList and Image classes have one-to-one correspondence.
25666ea1b28a76aeba74744148b15099254d918671Owen Lin// The class hierarchy (* = abstract class):
26666ea1b28a76aeba74744148b15099254d918671Owen Lin//
27666ea1b28a76aeba74744148b15099254d918671Owen Lin//    IImageList
28666ea1b28a76aeba74744148b15099254d918671Owen Lin//    - BaseImageList (*)
29666ea1b28a76aeba74744148b15099254d918671Owen Lin//      - VideoList
30666ea1b28a76aeba74744148b15099254d918671Owen Lin//      - ImageList
31666ea1b28a76aeba74744148b15099254d918671Owen Lin//        - DrmImageList
32666ea1b28a76aeba74744148b15099254d918671Owen Lin//    - SingleImageList (contains UriImage)
33666ea1b28a76aeba74744148b15099254d918671Owen Lin//    - ImageListUber
34666ea1b28a76aeba74744148b15099254d918671Owen Lin//
35666ea1b28a76aeba74744148b15099254d918671Owen Lin//    IImage
36666ea1b28a76aeba74744148b15099254d918671Owen Lin//    - BaseImage (*)
37666ea1b28a76aeba74744148b15099254d918671Owen Lin//      - VideoObject
38666ea1b28a76aeba74744148b15099254d918671Owen Lin//      - Image
39666ea1b28a76aeba74744148b15099254d918671Owen Lin//        - DrmImage
40666ea1b28a76aeba74744148b15099254d918671Owen Lin//    - UriImage
41666ea1b28a76aeba74744148b15099254d918671Owen Lin//
42666ea1b28a76aeba74744148b15099254d918671Owen Lin
43666ea1b28a76aeba74744148b15099254d918671Owen Lin/**
44666ea1b28a76aeba74744148b15099254d918671Owen Lin * The interface of all image collections used in gallery.
45666ea1b28a76aeba74744148b15099254d918671Owen Lin */
46666ea1b28a76aeba74744148b15099254d918671Owen Linpublic interface IImageList {
47666ea1b28a76aeba74744148b15099254d918671Owen Lin    public HashMap<String, String> getBucketIds();
48666ea1b28a76aeba74744148b15099254d918671Owen Lin
49666ea1b28a76aeba74744148b15099254d918671Owen Lin    /**
50666ea1b28a76aeba74744148b15099254d918671Owen Lin     * Returns the count of image objects.
51666ea1b28a76aeba74744148b15099254d918671Owen Lin     *
52666ea1b28a76aeba74744148b15099254d918671Owen Lin     * @return       the number of images
53666ea1b28a76aeba74744148b15099254d918671Owen Lin     */
54666ea1b28a76aeba74744148b15099254d918671Owen Lin    public int getCount();
55666ea1b28a76aeba74744148b15099254d918671Owen Lin
56666ea1b28a76aeba74744148b15099254d918671Owen Lin    /**
57666ea1b28a76aeba74744148b15099254d918671Owen Lin     * @return true if the count of image objects is zero.
58666ea1b28a76aeba74744148b15099254d918671Owen Lin     */
59666ea1b28a76aeba74744148b15099254d918671Owen Lin    public boolean isEmpty();
60666ea1b28a76aeba74744148b15099254d918671Owen Lin
61666ea1b28a76aeba74744148b15099254d918671Owen Lin    /**
62666ea1b28a76aeba74744148b15099254d918671Owen Lin     * Returns the image at the ith position.
63666ea1b28a76aeba74744148b15099254d918671Owen Lin     *
64666ea1b28a76aeba74744148b15099254d918671Owen Lin     * @param i     the position
65666ea1b28a76aeba74744148b15099254d918671Owen Lin     * @return      the image at the ith position
66666ea1b28a76aeba74744148b15099254d918671Owen Lin     */
67666ea1b28a76aeba74744148b15099254d918671Owen Lin    public IImage getImageAt(int i);
68666ea1b28a76aeba74744148b15099254d918671Owen Lin
69666ea1b28a76aeba74744148b15099254d918671Owen Lin    /**
70666ea1b28a76aeba74744148b15099254d918671Owen Lin     * Returns the image with a particular Uri.
71666ea1b28a76aeba74744148b15099254d918671Owen Lin     *
72666ea1b28a76aeba74744148b15099254d918671Owen Lin     * @param uri
73666ea1b28a76aeba74744148b15099254d918671Owen Lin     * @return      the image with a particular Uri. null if not found.
74666ea1b28a76aeba74744148b15099254d918671Owen Lin     */
75666ea1b28a76aeba74744148b15099254d918671Owen Lin    public IImage getImageForUri(Uri uri);
76666ea1b28a76aeba74744148b15099254d918671Owen Lin
77666ea1b28a76aeba74744148b15099254d918671Owen Lin    /**
78666ea1b28a76aeba74744148b15099254d918671Owen Lin     *
79666ea1b28a76aeba74744148b15099254d918671Owen Lin     * @param image
80666ea1b28a76aeba74744148b15099254d918671Owen Lin     * @return true if the image was removed.
81666ea1b28a76aeba74744148b15099254d918671Owen Lin     */
82666ea1b28a76aeba74744148b15099254d918671Owen Lin    public boolean removeImage(IImage image);
83666ea1b28a76aeba74744148b15099254d918671Owen Lin
84666ea1b28a76aeba74744148b15099254d918671Owen Lin    /**
85666ea1b28a76aeba74744148b15099254d918671Owen Lin     * Removes the image at the ith position.
86666ea1b28a76aeba74744148b15099254d918671Owen Lin     * @param i     the position
87666ea1b28a76aeba74744148b15099254d918671Owen Lin     */
88666ea1b28a76aeba74744148b15099254d918671Owen Lin    public boolean removeImageAt(int i);
89666ea1b28a76aeba74744148b15099254d918671Owen Lin
90666ea1b28a76aeba74744148b15099254d918671Owen Lin    public int getImageIndex(IImage image);
91666ea1b28a76aeba74744148b15099254d918671Owen Lin
92666ea1b28a76aeba74744148b15099254d918671Owen Lin    /**
93666ea1b28a76aeba74744148b15099254d918671Owen Lin     * Closes this list to release resources, no further operation is allowed.
94666ea1b28a76aeba74744148b15099254d918671Owen Lin     */
95666ea1b28a76aeba74744148b15099254d918671Owen Lin    public void close();
96666ea1b28a76aeba74744148b15099254d918671Owen Lin}
97