blob: 700d3543423bb2255f50273ab094355c393fdede [file] [log] [blame]
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.camera;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.android.camera.ui.Rotatable;
import com.android.camera.ui.RotateLayout;
public class RotateDialogController implements Rotatable {
@SuppressWarnings("unused")
private static final String TAG = "RotateDialogController";
private static final long ANIM_DURATION = 150; // millis
private Activity mActivity;
private int mLayoutResourceID;
private View mDialogRootLayout;
private RotateLayout mRotateDialog;
private View mRotateDialogTitleLayout;
private View mRotateDialogButtonLayout;
private TextView mRotateDialogTitle;
private ProgressBar mRotateDialogSpinner;
private TextView mRotateDialogText;
private TextView mRotateDialogButton1;
private TextView mRotateDialogButton2;
private Animation mFadeInAnim, mFadeOutAnim;
public RotateDialogController(Activity a, int layoutResource) {
mActivity = a;
mLayoutResourceID = layoutResource;
}
private void inflateDialogLayout() {
if (mDialogRootLayout == null) {
ViewGroup layoutRoot = (ViewGroup) mActivity.getWindow().getDecorView();
LayoutInflater inflater = mActivity.getLayoutInflater();
View v = inflater.inflate(mLayoutResourceID, layoutRoot);
mDialogRootLayout = v.findViewById(R.id.rotate_dialog_root_layout);
mRotateDialog = (RotateLayout) v.findViewById(R.id.rotate_dialog_layout);
mRotateDialogTitleLayout = v.findViewById(R.id.rotate_dialog_title_layout);
mRotateDialogButtonLayout = v.findViewById(R.id.rotate_dialog_button_layout);
mRotateDialogTitle = (TextView) v.findViewById(R.id.rotate_dialog_title);
mRotateDialogSpinner = (ProgressBar) v.findViewById(R.id.rotate_dialog_spinner);
mRotateDialogText = (TextView) v.findViewById(R.id.rotate_dialog_text);
mRotateDialogButton1 = (Button) v.findViewById(R.id.rotate_dialog_button1);
mRotateDialogButton2 = (Button) v.findViewById(R.id.rotate_dialog_button2);
mFadeInAnim = AnimationUtils.loadAnimation(
mActivity, android.R.anim.fade_in);
mFadeOutAnim = AnimationUtils.loadAnimation(
mActivity, android.R.anim.fade_out);
mFadeInAnim.setDuration(ANIM_DURATION);
mFadeOutAnim.setDuration(ANIM_DURATION);
}
}
@Override
public void setOrientation(int orientation, boolean animation) {
inflateDialogLayout();
mRotateDialog.setOrientation(orientation, animation);
}
public void resetRotateDialog() {
inflateDialogLayout();
mRotateDialogTitleLayout.setVisibility(View.GONE);
mRotateDialogSpinner.setVisibility(View.GONE);
mRotateDialogButton1.setVisibility(View.GONE);
mRotateDialogButton2.setVisibility(View.GONE);
mRotateDialogButtonLayout.setVisibility(View.GONE);
}
private void fadeOutDialog() {
mDialogRootLayout.startAnimation(mFadeOutAnim);
mDialogRootLayout.setVisibility(View.GONE);
}
private void fadeInDialog() {
mDialogRootLayout.startAnimation(mFadeInAnim);
mDialogRootLayout.setVisibility(View.VISIBLE);
}
public void dismissDialog() {
if (mDialogRootLayout != null && mDialogRootLayout.getVisibility() != View.GONE) {
fadeOutDialog();
}
}
public void showAlertDialog(String title, String msg, String button1Text,
final Runnable r1, String button2Text, final Runnable r2) {
resetRotateDialog();
if (title != null) {
mRotateDialogTitle.setText(title);
mRotateDialogTitleLayout.setVisibility(View.VISIBLE);
}
mRotateDialogText.setText(msg);
if (button1Text != null) {
mRotateDialogButton1.setText(button1Text);
mRotateDialogButton1.setContentDescription(button1Text);
mRotateDialogButton1.setVisibility(View.VISIBLE);
mRotateDialogButton1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (r1 != null) r1.run();
dismissDialog();
}
});
mRotateDialogButtonLayout.setVisibility(View.VISIBLE);
}
if (button2Text != null) {
mRotateDialogButton2.setText(button2Text);
mRotateDialogButton2.setContentDescription(button2Text);
mRotateDialogButton2.setVisibility(View.VISIBLE);
mRotateDialogButton2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (r2 != null) r2.run();
dismissDialog();
}
});
mRotateDialogButtonLayout.setVisibility(View.VISIBLE);
}
fadeInDialog();
}
public void showWaitingDialog(String msg) {
resetRotateDialog();
mRotateDialogText.setText(msg);
mRotateDialogSpinner.setVisibility(View.VISIBLE);
fadeInDialog();
}
public int getVisibility() {
if (mDialogRootLayout != null) {
return mDialogRootLayout.getVisibility();
}
return View.INVISIBLE;
}
}