124069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling/*
224069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling * Copyright (C) 2014 The Android Open Source Project
324069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling *
424069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling * Licensed under the Apache License, Version 2.0 (the "License");
524069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling * you may not use this file except in compliance with the License.
624069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling * You may obtain a copy of the License at
724069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling *
824069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling *      http://www.apache.org/licenses/LICENSE-2.0
924069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling *
1024069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling * Unless required by applicable law or agreed to in writing, software
1124069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling * distributed under the License is distributed on an "AS IS" BASIS,
1224069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1324069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling * See the License for the specific language governing permissions and
1424069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling * limitations under the License.
1524069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling */
1624069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling
1724069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberlingpackage com.android.camera.session;
1824069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling
1924069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberlingimport android.content.ContentResolver;
2024069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberlingimport android.location.Location;
2124069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling
2224069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberlingimport java.io.File;
2324069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling
2424069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling/**
2524069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling * Creates {@link StackSaver} instances.
2624069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling */
2724069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberlingpublic class StackSaverFactory {
2824069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling    private final String mCameraDirectory;
2924069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling    private final ContentResolver mContentResolver;
3024069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling
3124069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling    /**
3224069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling     * Create a new stack saver factory.
3324069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling     *
3424069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling     * @param cameraDirectory the directory in which the camera stores images.
3524069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling     * @param contentResolver the Android content resolver used to include
3624069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling     *            images into the media store.
3724069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling     */
3824069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling    public StackSaverFactory(String cameraDirectory,
3924069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling            ContentResolver contentResolver) {
4024069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling        mCameraDirectory = cameraDirectory;
4124069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling        mContentResolver = contentResolver;
4224069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling    }
4324069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling
4424069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling    /**
4524069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling     * Creates a new StackSaver.
4624069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling     *
4724069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling     * @param mTitle the title of this stack session.
4824069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling     * @param location the GPS location that the media in this session was
4924069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling     *            created at.
5024069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling     * @return A StackSaver that is set up to save images in a stacked location.
5124069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling     */
5224069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling    public StackSaver create(String mTitle, Location location) {
5324069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling        return new StackSaverImpl(new File(mCameraDirectory, mTitle), location, mContentResolver);
5424069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling    }
5524069e7a9cc9b4f908f18a71301285ccf5e164f6Sascha Haeberling}
56