13c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen/*
23c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * Copyright (C) 2009 The Android Open Source Project
33c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen *
43c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * Licensed under the Apache License, Version 2.0 (the "License");
53c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * you may not use this file except in compliance with the License.
63c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * You may obtain a copy of the License at
73c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen *
83c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen *      http://www.apache.org/licenses/LICENSE-2.0
93c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen *
103c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * Unless required by applicable law or agreed to in writing, software
113c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * distributed under the License is distributed on an "AS IS" BASIS,
123c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * See the License for the specific language governing permissions and
143c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen * limitations under the License.
153c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen */
163c02f2877dc2f8f0b5c01d03fa2b487c040e4000Wei-Ta Chen
17f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparkspackage com.cooliris.media;
18f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks
19f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparksimport java.util.ArrayList;
20f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks
21f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparkspublic interface DataSource {
22f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    // Load the sets to be displayed.
23f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    void loadMediaSets(final MediaFeed feed);
24f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks
255e0474e8e1942c41234eb251f948c2fbb7445b02Venkat Krishnaraj    // rangeStart->rangeEnd is inclusive
26f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    // Pass in Shared.INFINITY for the rangeEnd to load all items.
27f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    void loadItemsForSet(final MediaFeed feed, final MediaSet parentSet, int rangeStart, int rangeEnd);
281bb0c42b2a62f580eea4764d6a4434ffecfbf353Dave Sparks
29f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    // Called when the data source will no longer be used.
30f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    void shutdown();
311bb0c42b2a62f580eea4764d6a4434ffecfbf353Dave Sparks
32f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    boolean performOperation(int operation, ArrayList<MediaBucket> mediaBuckets, Object data);
33f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks
34f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks    DiskCache getThumbnailCache();
35897ad622181117e8acbdeae2ff0afece68f1332cVenkat Krishnaraj
36897ad622181117e8acbdeae2ff0afece68f1332cVenkat Krishnaraj    // This method is called so that we can setup listeners for any databases that the datasource uses
37897ad622181117e8acbdeae2ff0afece68f1332cVenkat Krishnaraj    String[] getDatabaseUris();
385e0474e8e1942c41234eb251f948c2fbb7445b02Venkat Krishnaraj
39897ad622181117e8acbdeae2ff0afece68f1332cVenkat Krishnaraj    // Called when the user explicitly requests a refresh, or when the application is brought to the foreground.
40897ad622181117e8acbdeae2ff0afece68f1332cVenkat Krishnaraj    // Alternatively, when one or more of the database's data changes, this method will be called.
41897ad622181117e8acbdeae2ff0afece68f1332cVenkat Krishnaraj    void refresh(final MediaFeed feed, final String[] databaseUris);
42897ad622181117e8acbdeae2ff0afece68f1332cVenkat Krishnaraj
43f99dfe8549fb6c2c06c8cb7ca7d5eb33002c809eDave Sparks}
44