159ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang/*
259ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * Copyright (C) 2010 The Android Open Source Project
359ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang *
459ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * Licensed under the Apache License, Version 2.0 (the "License");
559ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * you may not use this file except in compliance with the License.
659ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * You may obtain a copy of the License at
759ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang *
859ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang *      http://www.apache.org/licenses/LICENSE-2.0
959ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang *
1059ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * Unless required by applicable law or agreed to in writing, software
1159ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * distributed under the License is distributed on an "AS IS" BASIS,
1259ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1359ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * See the License for the specific language governing permissions and
1459ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * limitations under the License.
1559ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang */
1659ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang
1759ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wangpackage com.android.camera.ui;
1859ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang
19adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wangimport com.android.camera.CameraPreference.OnPreferenceChangedListener;
2059ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wangimport com.android.camera.ListPreference;
21adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wangimport com.android.camera.R;
2259ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang
2359ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wangimport android.content.Context;
2459ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wangimport android.hardware.Camera.CameraInfo;
2559ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wangimport android.view.View;
2659ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang
2759ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang/**
2859ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang * A view for switching the front/back camera.
2959ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang */
30cead50ba3ce2df3bd9fcf06c6f54ea0c6980f0d7repo syncpublic class CameraPicker extends RotateImageView implements View.OnClickListener {
310935e09bb12a1886a801713bbd78bbc20bf4ea4eChih-yu Huang    private static int mImageResource;
320935e09bb12a1886a801713bbd78bbc20bf4ea4eChih-yu Huang
33adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang    private OnPreferenceChangedListener mListener;
3459ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang    private ListPreference mPreference;
3559ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang    private CharSequence[] mCameras;
3659ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang
37adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang    public CameraPicker(Context context) {
38adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang        super(context);
390935e09bb12a1886a801713bbd78bbc20bf4ea4eChih-yu Huang        setImageResource(mImageResource);
4026d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang        setContentDescription(getResources().getString(
4126d88fce15a24362644123af5f0cce79ea572e7bChung-yih Wang                R.string.accessibility_camera_picker));
420935e09bb12a1886a801713bbd78bbc20bf4ea4eChih-yu Huang    }
430935e09bb12a1886a801713bbd78bbc20bf4ea4eChih-yu Huang
440935e09bb12a1886a801713bbd78bbc20bf4ea4eChih-yu Huang    public static void setImageResourceId(int imageResource) {
450935e09bb12a1886a801713bbd78bbc20bf4ea4eChih-yu Huang        mImageResource = imageResource;
4659ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang    }
4759ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang
48adab2bddc93bf4af535cb58e7167bf8690d97d8cChung-yih Wang    public void setListener(OnPreferenceChangedListener listener) {
4959ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang        mListener = listener;
5059ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang    }
5159ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang
5259ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang    public void initialize(ListPreference pref) {
5359ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang        mPreference = pref;
5459ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang        mCameras = pref.getEntryValues();
5559ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang        if (mCameras == null) return;
569e76e8d6eec20739203d213ead1fe1aab3b939aeChung-yih Wang        setOnClickListener(this);
5759ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang        setVisibility(View.VISIBLE);
5859ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang    }
5959ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang
60039f1dc1fd89b5baeed8be05f3f21770cf75d4b3Wu-cheng Li    @Override
6159ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang    public void onClick(View v) {
629e76e8d6eec20739203d213ead1fe1aab3b939aeChung-yih Wang        if (mCameras == null) return;
633ae6814e3017ea25a57a0f885579022c4faf4e84Angus Kong        int index = mPreference.findIndexOfValue(mPreference.getValue());
643ae6814e3017ea25a57a0f885579022c4faf4e84Angus Kong        CharSequence[] values = mPreference.getEntryValues();
653ae6814e3017ea25a57a0f885579022c4faf4e84Angus Kong        index = (index + 1) % values.length;
663ae6814e3017ea25a57a0f885579022c4faf4e84Angus Kong        mPreference.setValue((String) mCameras[index]);
679e76e8d6eec20739203d213ead1fe1aab3b939aeChung-yih Wang        mListener.onSharedPreferenceChanged();
6859ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang    }
6959ddc8c1add2fcffe523e3877baad1b6cc5ba2fbChung-yih Wang}
70