1f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin/* 2f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Copyright (C) 2010 The Android Open Source Project 3f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 4f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Licensed under the Apache License, Version 2.0 (the "License"); 5f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * you may not use this file except in compliance with the License. 6f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * You may obtain a copy of the License at 7f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 8f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * http://www.apache.org/licenses/LICENSE-2.0 9f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * 10f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Unless required by applicable law or agreed to in writing, software 11f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * distributed under the License is distributed on an "AS IS" BASIS, 12f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * See the License for the specific language governing permissions and 14f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * limitations under the License. 15f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin */ 16f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 17f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpackage com.android.gallery3d.data; 18f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 19f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport com.android.gallery3d.app.GalleryApp; 20f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 2145f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescupublic class FilterSource extends MediaSource { 227817979db0c52ffeacb951625b1e821eba303285Ahbong Chang @SuppressWarnings("unused") 23f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static final String TAG = "FilterSource"; 24f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private static final int FILTER_BY_MEDIATYPE = 0; 256b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang private static final int FILTER_BY_DELETE = 1; 26c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu private static final int FILTER_BY_EMPTY = 2; 27c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu private static final int FILTER_BY_EMPTY_ITEM = 3; 2845f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu private static final int FILTER_BY_CAMERA_SHORTCUT = 4; 2945f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu private static final int FILTER_BY_CAMERA_SHORTCUT_ITEM = 5; 30c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu 31c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu public static final String FILTER_EMPTY_ITEM = "/filter/empty_prompt"; 3245f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu public static final String FILTER_CAMERA_SHORTCUT = "/filter/camera_shortcut"; 3345f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu private static final String FILTER_CAMERA_SHORTCUT_ITEM = "/filter/camera_shortcut_item"; 34f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 35f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private GalleryApp mApplication; 36f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin private PathMatcher mMatcher; 37c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu private MediaItem mEmptyItem; 3845f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu private MediaItem mCameraShortcutItem; 39f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 40f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public FilterSource(GalleryApp application) { 41f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin super("filter"); 42f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mApplication = application; 43f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mMatcher = new PathMatcher(); 44f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin mMatcher.add("/filter/mediatype/*/*", FILTER_BY_MEDIATYPE); 456b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang mMatcher.add("/filter/delete/*", FILTER_BY_DELETE); 46c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu mMatcher.add("/filter/empty/*", FILTER_BY_EMPTY); 4745f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu mMatcher.add(FILTER_EMPTY_ITEM, FILTER_BY_EMPTY_ITEM); 4845f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu mMatcher.add(FILTER_CAMERA_SHORTCUT, FILTER_BY_CAMERA_SHORTCUT); 4945f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu mMatcher.add(FILTER_CAMERA_SHORTCUT_ITEM, FILTER_BY_CAMERA_SHORTCUT_ITEM); 50c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu 51c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu mEmptyItem = new EmptyAlbumImage(Path.fromString(FILTER_EMPTY_ITEM), 52c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu mApplication); 5345f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu mCameraShortcutItem = new CameraShortcutImage( 5445f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu Path.fromString(FILTER_CAMERA_SHORTCUT_ITEM), mApplication); 55f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 56f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin 576b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang // The name we accept are: 586b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang // /filter/mediatype/k/{set} where k is the media type we want. 596b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang // /filter/delete/{set} 60f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin @Override 61f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin public MediaObject createMediaObject(Path path) { 62f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin int matchType = mMatcher.match(path); 63f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin DataManager dataManager = mApplication.getDataManager(); 64f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin switch (matchType) { 656b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang case FILTER_BY_MEDIATYPE: { 666b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang int mediaType = mMatcher.getIntVar(0); 676b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang String setsName = mMatcher.getVar(1); 686b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang MediaSet[] sets = dataManager.getMediaSetsFromString(setsName); 696b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang return new FilterTypeSet(path, dataManager, sets[0], mediaType); 706b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang } 716b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang case FILTER_BY_DELETE: { 726b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang String setsName = mMatcher.getVar(0); 736b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang MediaSet[] sets = dataManager.getMediaSetsFromString(setsName); 746b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang return new FilterDeleteSet(path, sets[0]); 756b891c6a3739f8c49d42f9db6fc76cb92c7c5f25Chih-Chung Chang } 76c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu case FILTER_BY_EMPTY: { 77c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu String setsName = mMatcher.getVar(0); 78c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu MediaSet[] sets = dataManager.getMediaSetsFromString(setsName); 79c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu return new FilterEmptyPromptSet(path, sets[0], mEmptyItem); 80c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu } 81c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu case FILTER_BY_EMPTY_ITEM: { 82c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu return mEmptyItem; 83c7e3c76d6965f520a9651d309052c5f01726cd58Bobby Georgescu } 8445f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu case FILTER_BY_CAMERA_SHORTCUT: { 8545f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu return new SingleItemAlbum(path, mCameraShortcutItem); 8645f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu } 8745f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu case FILTER_BY_CAMERA_SHORTCUT_ITEM: { 8845f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu return mCameraShortcutItem; 8945f089d69141e3fb0dfaad9bc34d275b61eb2aeeBobby Georgescu } 90f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin default: 91f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin throw new RuntimeException("bad path: " + path); 92f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 93f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin } 94f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin} 95