1dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu/* 2dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Copyright (C) 2010 The Android Open Source Project 3dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * 4dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Licensed under the Apache License, Version 2.0 (the "License"); 5dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * you may not use this file except in compliance with the License. 6dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * You may obtain a copy of the License at 7dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * 8dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * http://www.apache.org/licenses/LICENSE-2.0 9dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * 10dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Unless required by applicable law or agreed to in writing, software 11dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * distributed under the License is distributed on an "AS IS" BASIS, 12dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * See the License for the specific language governing permissions and 14dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * limitations under the License. 15dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu */ 16dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 17dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhupackage com.android.gallery3d.data; 18dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 19dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport com.android.gallery3d.app.GalleryApp; 20dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 21dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuclass ComboSource extends MediaSource { 22dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private static final int COMBO_ALBUMSET = 0; 23dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private static final int COMBO_ALBUM = 1; 24dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private GalleryApp mApplication; 25dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private PathMatcher mMatcher; 26dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 27dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public ComboSource(GalleryApp application) { 28dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu super("combo"); 29dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu mApplication = application; 30dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu mMatcher = new PathMatcher(); 31dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu mMatcher.add("/combo/*", COMBO_ALBUMSET); 32dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu mMatcher.add("/combo/*/*", COMBO_ALBUM); 33dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 34dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 35dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu // The only path we accept is "/combo/{set1, set2, ...} and /combo/item/{set1, set2, ...}" 36dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu @Override 37dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public MediaObject createMediaObject(Path path) { 38dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu String[] segments = path.split(); 39dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (segments.length < 2) { 40dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu throw new RuntimeException("bad path: " + path); 41dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 42dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 43dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu DataManager dataManager = mApplication.getDataManager(); 44dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu switch (mMatcher.match(path)) { 45dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu case COMBO_ALBUMSET: 46dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return new ComboAlbumSet(path, mApplication, 47dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu dataManager.getMediaSetsFromString(segments[1])); 48dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 49dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu case COMBO_ALBUM: 50dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return new ComboAlbum(path, 51dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu dataManager.getMediaSetsFromString(segments[2]), segments[1]); 52dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 53dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return null; 54dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 55dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu} 56dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu