summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/filmstrip/DataAdapter.java
blob: 65ae48a3a83c27b4e8e6158d64b9fd5e8790c0dc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/*
 * 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.content.Context;
import android.view.View;

import com.android.camera.data.LocalData.ActionCallback;

/**
 * An interface which defines the interactions between the
 * {@link ImageData} and the
 * {@link com.android.camera.widget.FilmstripView}.
 */
public interface DataAdapter {
    /**
     * 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 dataID);

        /** Checks if the data of dataID is updated. */
        public boolean isDataUpdated(int dataID);
    }

    /**
     * An interface which defines the listener for data events over
     * {@link ImageData}. 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 onDataLoaded();

        /**
         * Called when some of the data is updated.
         *
         * @param reporter Use this reporter to know what happened.
         */
        public void onDataUpdated(UpdateReporter reporter);

        /**
         * Called when a new data item is inserted.
         *
         * @param dataID The ID of the inserted data.
         * @param data The inserted data.
         */
        public void onDataInserted(int dataID, ImageData data);

        /**
         * Called when a data item is removed.
         *
         * @param dataID The ID of the removed data.
         * @param data The data.
         */
        public void onDataRemoved(int dataID, ImageData data);
    }

    /** Returns the total number of image data. */
    public int getTotalNumber();

    /**
     * Returns the view to visually present the image data.
     *
     * @param context The {@link android.content.Context} to create the view.
     * @param recycled A view that can be reused if one is available, or null.
     * @param dataID 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(Context context, View recycled, int dataID, ActionCallback actionCallback);

    /** 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 dataId);

    /**
     * Resizes the view used to visually present the image data.  This is
     * useful when the view contains a bitmap.
     *
     * @param context The {@link android.content.Context} to create the view.
     * @param dataID The ID of the resize data to be presented.
     * @param view The view to update that was created by getView().
     * @param w Width in pixels of rendered view.
     * @param h Height in pixels of rendered view.
     */
    public void resizeView(Context context, int dataID, View view, int w, int h);

    /**
     * Returns the {@link ImageData} specified by the ID.
     *
     * @param dataID The ID of the {@link ImageData}.
     * @return The specified {@link ImageData}. Null if not available.
     */
    public ImageData getImageData(int dataID);

    /**
     * Suggests the data adapter the maximum possible size of the layout so
     * the {@link DataAdapter} can optimize the view returned for the
     * {@link ImageData}.
     *
     * @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);

    /**
     * Returns whether the view of the data can be moved by swipe
     * gesture when in full-screen.
     *
     * @param dataID The ID of the data.
     * @return Whether the view can be moved.
     */
    public boolean canSwipeInFullScreen(int dataID);
}