1a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li/*
2a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * Copyright (C) 2012 The Android Open Source Project
3a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li *
4a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * Licensed under the Apache License, Version 2.0 (the "License");
5a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * you may not use this file except in compliance with the License.
6a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * You may obtain a copy of the License at
7a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li *
8a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li *      http://www.apache.org/licenses/LICENSE-2.0
9a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li *
10a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * Unless required by applicable law or agreed to in writing, software
11a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * distributed under the License is distributed on an "AS IS" BASIS,
12a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * See the License for the specific language governing permissions and
14a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li * limitations under the License.
15a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li */
16a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li
17a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Lipackage com.android.gallery3d.data;
18a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li
19a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Liimport com.android.gallery3d.app.GalleryApp;
20a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li
21a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Lipublic class SecureSource extends MediaSource {
22a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li    private GalleryApp mApplication;
23a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li    private static PathMatcher mMatcher = new PathMatcher();
24a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li    private static final int SECURE_ALBUM = 0;
258868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li    private static final int SECURE_UNLOCK = 1;
26a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li
27a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li    static {
28a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li        mMatcher.add("/secure/all/*", SECURE_ALBUM);
298868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li        mMatcher.add("/secure/unlock", SECURE_UNLOCK);
30a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li    }
31a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li
32a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li    public SecureSource(GalleryApp context) {
33a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li        super("secure");
34a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li        mApplication = context;
35a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li    }
36a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li
37a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li    public static boolean isSecurePath(String path) {
38a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li        return (SECURE_ALBUM == mMatcher.match(Path.fromString(path)));
39a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li    }
40a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li
41a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li    @Override
42a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li    public MediaObject createMediaObject(Path path) {
43a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li        switch (mMatcher.match(path)) {
448868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li            case SECURE_ALBUM: {
458868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li                DataManager dataManager = mApplication.getDataManager();
468868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li                MediaItem unlock = (MediaItem) dataManager.getMediaObject(
478868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li                        "/secure/unlock");
488868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li                return new SecureAlbum(path, mApplication, unlock);
498868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li            }
508868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li            case SECURE_UNLOCK:
518868aa1b2d199e7fa869c9c5fad3079175621002Wu-cheng Li                return new UnlockImage(path, mApplication);
52a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li            default:
53a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li                throw new RuntimeException("bad path: " + path);
54a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li        }
55a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li    }
56a0ce682e40c39ce046c48d8a7f989fff01bb9f2cWu-cheng Li}
57