diff options
Diffstat (limited to 'src/com/android/camera/ui/RotateTextToast.java')
-rw-r--r-- | src/com/android/camera/ui/RotateTextToast.java | 53 |
1 files changed, 45 insertions, 8 deletions
diff --git a/src/com/android/camera/ui/RotateTextToast.java b/src/com/android/camera/ui/RotateTextToast.java index 10d97bf73..2bea5bbda 100644 --- a/src/com/android/camera/ui/RotateTextToast.java +++ b/src/com/android/camera/ui/RotateTextToast.java @@ -16,31 +16,51 @@ package com.android.camera.ui; +import java.util.HashSet; + import android.app.Activity; import android.os.Handler; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import android.widget.Toast; import com.android.camera.util.CameraUtil; import org.codeaurora.snapcam.R; public class RotateTextToast { - private static final int TOAST_DURATION = 5000; // milliseconds - ViewGroup mLayoutRoot; - RotateLayout mToast; - Handler mHandler; + private static final int LONG_DELAY = 3500; + private static final int SHORT_DELAY = 2000; + + private ViewGroup mLayoutRoot; + private RotateLayout mToast; + private Handler mHandler; + private int mDuration; + + private static HashSet<RotateLayout> mToasts = new HashSet<RotateLayout>(); + private static int mOrientation; - public RotateTextToast(Activity activity, int textResourceId, int orientation) { + private RotateTextToast(Activity activity, int duration) { mLayoutRoot = (ViewGroup) activity.getWindow().getDecorView(); LayoutInflater inflater = activity.getLayoutInflater(); View v = inflater.inflate(R.layout.rotate_text_toast, mLayoutRoot); mToast = (RotateLayout) v.findViewById(R.id.rotate_toast); + mToast.setOrientation(mOrientation, false); + mHandler = new Handler(); + mDuration = duration == Toast.LENGTH_LONG ? LONG_DELAY : SHORT_DELAY; + } + + public RotateTextToast(Activity activity, CharSequence text, int duration) { + this(activity, duration); + TextView tv = (TextView) mToast.findViewById(R.id.message); + tv.setText(text); + } + + public RotateTextToast(Activity activity, int textResourceId, int duration) { + this(activity, duration); TextView tv = (TextView) mToast.findViewById(R.id.message); tv.setText(textResourceId); - mToast.setOrientation(orientation, false); - mHandler = new Handler(); } private final Runnable mRunnable = new Runnable() { @@ -48,12 +68,29 @@ public class RotateTextToast { public void run() { CameraUtil.fadeOut(mToast); mLayoutRoot.removeView(mToast); + mToasts.remove(mToast); mToast = null; } }; public void show() { + mToasts.add(mToast); mToast.setVisibility(View.VISIBLE); - mHandler.postDelayed(mRunnable, TOAST_DURATION); + mHandler.postDelayed(mRunnable, mDuration); + } + + public static RotateTextToast makeText(Activity activity, int textResourceId, int duration) { + return new RotateTextToast(activity, textResourceId, duration); + } + + public static RotateTextToast makeText(Activity activity, CharSequence text, int duration) { + return new RotateTextToast(activity, text, duration); + } + + public static void setOrientation(int orientation) { + mOrientation = orientation; + for (final RotateLayout toast: mToasts) { + toast.setOrientation(orientation, false); + } } } |