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