1db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu/* 2db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu * Copyright (C) 2014 The Android Open Source Project 3db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu * 4db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu * Licensed under the Apache License, Version 2.0 (the "License"); 5db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu * you may not use this file except in compliance with the License. 6db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu * You may obtain a copy of the License at 7db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu * 8db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu * http://www.apache.org/licenses/LICENSE-2.0 9db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu * 10db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu * Unless required by applicable law or agreed to in writing, software 11db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu * distributed under the License is distributed on an "AS IS" BASIS, 12db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu * See the License for the specific language governing permissions and 14db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu * limitations under the License. 15db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu */ 16db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu 17db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liupackage com.android.camera.widget; 18db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu 19db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liuimport android.content.Context; 20db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liuimport android.content.res.Configuration; 21db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liuimport android.util.AttributeSet; 22db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liuimport android.view.View; 23db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liuimport android.widget.CheckBox; 24db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liuimport android.widget.CompoundButton; 25db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liuimport android.widget.FrameLayout; 26db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu 27db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liuimport com.android.camera2.R; 28db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu 29db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liupublic class LocationDialogLayout extends FrameLayout { 30db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu 31db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu public interface LocationTaggingSelectionListener { 32db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu public void onLocationTaggingSelected(boolean selected); 33db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu } 34db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu 35db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu private View mConfirmButton; 36db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu private CheckBox mCheckBox; 37db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu private int mLastOrientation; 38db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu private LocationTaggingSelectionListener mListener; 39db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu private boolean mCheckBoxChecked = true; 40db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu 41db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu public LocationDialogLayout(Context context, AttributeSet attributeSet) { 42db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu super(context, attributeSet); 43db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu mLastOrientation = context.getResources().getConfiguration().orientation; 44db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu } 45db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu 46db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu @Override 47db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu public void onFinishInflate() { 48db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu updateViewReference(); 49db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu } 50db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu 51db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu @Override 52db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu public void onConfigurationChanged(Configuration config) { 53db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu super.onConfigurationChanged(config); 54db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu // TODO: Extract the orientation checking logic in a super class as it 55db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu // is also used in the aspect ratio dialog. 56db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu if (config.orientation == mLastOrientation) { 57db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu return; 58db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu } 59db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu mLastOrientation = config.orientation; 60db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu removeAllViews(); 61db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu inflate(getContext(), R.layout.location_dialog_content, this); 62db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu updateViewReference(); 63db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu } 64db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu 65db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu private void updateViewReference() { 66db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu mCheckBox = (CheckBox) findViewById(R.id.check_box); 67db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu mCheckBox.setChecked(mCheckBoxChecked); 68db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 69db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu @Override 70db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 71db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu mCheckBoxChecked = isChecked; 72db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu } 73db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu }); 74db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu 75db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu mConfirmButton = findViewById(R.id.confirm_button); 76db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu mConfirmButton.setOnClickListener(new OnClickListener() { 77db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu @Override 78db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu public void onClick(View v) { 79db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu if (mListener != null) { 80db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu mListener.onLocationTaggingSelected(mCheckBoxChecked); 81db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu } 82db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu } 83db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu }); 84db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu } 85db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu 86db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu public void setLocationTaggingSelectionListener(LocationTaggingSelectionListener listener) { 87db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu mListener = listener; 88db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu } 89db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu 90db8f97582d09cd36eee8cfe4ed43182bff63f8bdDoris Liu} 91