summaryrefslogtreecommitdiffstats
path: root/core/java/android/widget/Toast.java
diff options
context:
space:
mode:
authorThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:45 -0800
committerThe Android Open Source Project <initial-contribution@android.com>2009-03-03 18:28:45 -0800
commitd83a98f4ce9cfa908f5c54bbd70f03eec07e7553 (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /core/java/android/widget/Toast.java
parent076357b8567458d4b6dfdcf839ef751634cd2bfb (diff)
downloadframeworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.zip
frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.gz
frameworks_base-d83a98f4ce9cfa908f5c54bbd70f03eec07e7553.tar.bz2
auto import from //depot/cupcake/@135843
Diffstat (limited to 'core/java/android/widget/Toast.java')
-rw-r--r--core/java/android/widget/Toast.java399
1 files changed, 0 insertions, 399 deletions
diff --git a/core/java/android/widget/Toast.java b/core/java/android/widget/Toast.java
deleted file mode 100644
index ff74787..0000000
--- a/core/java/android/widget/Toast.java
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- * Copyright (C) 2007 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 android.widget;
-
-import android.app.INotificationManager;
-import android.app.ITransientNotification;
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.PixelFormat;
-import android.os.RemoteException;
-import android.os.Handler;
-import android.os.ServiceManager;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.WindowManager;
-import android.view.WindowManagerImpl;
-
-/**
- * A toast is a view containing a quick little message for the user. The toast class
- * helps you create and show those.
- * {@more}
- *
- * <p>
- * When the view is shown to the user, appears as a floating view over the
- * application. It will never receive focus. The user will probably be in the
- * middle of typing something else. The idea is to be as unobtrusive as
- * possible, while still showing the user the information you want them to see.
- * Two examples are the volume control, and the brief message saying that your
- * settings have been saved.
- * <p>
- * The easiest way to use this class is to call one of the static methods that constructs
- * everything you need and returns a new Toast object.
- */
-public class Toast {
- static final String TAG = "Toast";
- static final boolean localLOGV = false;
-
- /**
- * Show the view or text notification for a short period of time. This time
- * could be user-definable. This is the default.
- * @see #setDuration
- */
- public static final int LENGTH_SHORT = 0;
-
- /**
- * Show the view or text notification for a long period of time. This time
- * could be user-definable.
- * @see #setDuration
- */
- public static final int LENGTH_LONG = 1;
-
- final Context mContext;
- final TN mTN;
- int mDuration;
- int mGravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM;
- int mX, mY;
- float mHorizontalMargin;
- float mVerticalMargin;
- View mView;
- View mNextView;
-
- /**
- * Construct an empty Toast object. You must call {@link #setView} before you
- * can call {@link #show}.
- *
- * @param context The context to use. Usually your {@link android.app.Application}
- * or {@link android.app.Activity} object.
- */
- public Toast(Context context) {
- mContext = context;
- mTN = new TN(context);
- mY = context.getResources().getDimensionPixelSize(
- com.android.internal.R.dimen.toast_y_offset);
- }
-
- /**
- * Show the view for the specified duration.
- */
- public void show() {
- if (mNextView == null) {
- throw new RuntimeException("setView must have been called");
- }
-
- INotificationManager service = getService();
-
- String pkg = mContext.getPackageName();
-
- TN tn = mTN;
-
- try {
- service.enqueueToast(pkg, tn, mDuration);
- } catch (RemoteException e) {
- // Empty
- }
- }
-
- /**
- * Close the view if it's showing, or don't show it if it isn't showing yet.
- * You do not normally have to call this. Normally view will disappear on its own
- * after the appropriate duration.
- */
- public void cancel() {
- mTN.hide();
- // TODO this still needs to cancel the inflight notification if any
- }
-
- /**
- * Set the view to show.
- * @see #getView
- */
- public void setView(View view) {
- mNextView = view;
- }
-
- /**
- * Return the view.
- * @see #setView
- */
- public View getView() {
- return mNextView;
- }
-
- /**
- * Set how long to show the view for.
- * @see #LENGTH_SHORT
- * @see #LENGTH_LONG
- */
- public void setDuration(int duration) {
- mDuration = duration;
- }
-
- /**
- * Return the duration.
- * @see #setDuration
- */
- public int getDuration() {
- return mDuration;
- }
-
- /**
- * Set the margins of the view.
- *
- * @param horizontalMargin The horizontal margin, in percentage of the
- * container width, between the container's edges and the
- * notification
- * @param verticalMargin The vertical margin, in percentage of the
- * container height, between the container's edges and the
- * notification
- */
- public void setMargin(float horizontalMargin, float verticalMargin) {
- mHorizontalMargin = horizontalMargin;
- mVerticalMargin = verticalMargin;
- }
-
- /**
- * Return the horizontal margin.
- */
- public float getHorizontalMargin() {
- return mHorizontalMargin;
- }
-
- /**
- * Return the vertical margin.
- */
- public float getVerticalMargin() {
- return mVerticalMargin;
- }
-
- /**
- * Set the location at which the notification should appear on the screen.
- * @see android.view.Gravity
- * @see #getGravity
- */
- public void setGravity(int gravity, int xOffset, int yOffset) {
- mGravity = gravity;
- mX = xOffset;
- mY = yOffset;
- }
-
- /**
- * Get the location at which the notification should appear on the screen.
- * @see android.view.Gravity
- * @see #getGravity
- */
- public int getGravity() {
- return mGravity;
- }
-
- /**
- * Return the X offset in pixels to apply to the gravity's location.
- */
- public int getXOffset() {
- return mX;
- }
-
- /**
- * Return the Y offset in pixels to apply to the gravity's location.
- */
- public int getYOffset() {
- return mY;
- }
-
- /**
- * Make a standard toast that just contains a text view.
- *
- * @param context The context to use. Usually your {@link android.app.Application}
- * or {@link android.app.Activity} object.
- * @param text The text to show. Can be formatted text.
- * @param duration How long to display the message. Either {@link #LENGTH_SHORT} or
- * {@link #LENGTH_LONG}
- *
- */
- public static Toast makeText(Context context, CharSequence text, int duration) {
- Toast result = new Toast(context);
-
- LayoutInflater inflate = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View v = inflate.inflate(com.android.internal.R.layout.transient_notification, null);
- TextView tv = (TextView)v.findViewById(com.android.internal.R.id.message);
- tv.setText(text);
-
- result.mNextView = v;
- result.mDuration = duration;
-
- return result;
- }
-
- /**
- * Make a standard toast that just contains a text view with the text from a resource.
- *
- * @param context The context to use. Usually your {@link android.app.Application}
- * or {@link android.app.Activity} object.
- * @param resId The resource id of the string resource to use. Can be formatted text.
- * @param duration How long to display the message. Either {@link #LENGTH_SHORT} or
- * {@link #LENGTH_LONG}
- *
- * @throws Resources.NotFoundException if the resource can't be found.
- */
- public static Toast makeText(Context context, int resId, int duration)
- throws Resources.NotFoundException {
- return makeText(context, context.getResources().getText(resId), duration);
- }
-
- /**
- * Update the text in a Toast that was previously created using one of the makeText() methods.
- * @param resId The new text for the Toast.
- */
- public void setText(int resId) {
- setText(mContext.getText(resId));
- }
-
- /**
- * Update the text in a Toast that was previously created using one of the makeText() methods.
- * @param s The new text for the Toast.
- */
- public void setText(CharSequence s) {
- if (mNextView == null) {
- throw new RuntimeException("This Toast was not created with Toast.makeText()");
- }
- TextView tv = (TextView) mNextView.findViewById(com.android.internal.R.id.message);
- if (tv == null) {
- throw new RuntimeException("This Toast was not created with Toast.makeText()");
- }
- tv.setText(s);
- }
-
- // =======================================================================================
- // All the gunk below is the interaction with the Notification Service, which handles
- // the proper ordering of these system-wide.
- // =======================================================================================
-
- private static INotificationManager sService;
-
- static private INotificationManager getService()
- {
- if (sService != null) {
- return sService;
- }
- sService = INotificationManager.Stub.asInterface(ServiceManager.getService("notification"));
- return sService;
- }
-
- private class TN extends ITransientNotification.Stub
- {
- TN(Context context)
- {
- // XXX This should be changed to use a Dialog, with a Theme.Toast
- // defined that sets up the layout params appropriately.
- mParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
- mParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
- mParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
- | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
- | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
- mParams.format = PixelFormat.TRANSLUCENT;
- mParams.windowAnimations = com.android.internal.R.style.Animation_Toast;
- mParams.type = WindowManager.LayoutParams.TYPE_TOAST;
- mParams.setTitle("Toast");
- }
-
- /**
- * schedule handleShow into the right thread
- */
- public void show()
- {
- if (localLOGV) Log.v(TAG, "SHOW: " + this);
- mHandler.post(mShow);
- }
-
- /**
- * schedule handleHide into the right thread
- */
- public void hide()
- {
- if (localLOGV) Log.v(TAG, "HIDE: " + this);
- mHandler.post(mHide);
- }
-
- public void handleShow()
- {
- if (localLOGV) Log.v(TAG, "HANDLE SHOW: " + this + " mView=" + mView
- + " mNextView=" + mNextView);
- if (mView != mNextView) {
- // remove the old view if necessary
- handleHide();
- mView = mNextView;
- mWM = WindowManagerImpl.getDefault();
- final int gravity = mGravity;
- mParams.gravity = gravity;
- if ((gravity & Gravity.HORIZONTAL_GRAVITY_MASK) == Gravity.FILL_HORIZONTAL) {
- mParams.horizontalWeight = 1.0f;
- }
- if ((gravity & Gravity.VERTICAL_GRAVITY_MASK) == Gravity.FILL_VERTICAL) {
- mParams.verticalWeight = 1.0f;
- }
- mParams.x = mX;
- mParams.y = mY;
- mParams.verticalMargin = mVerticalMargin;
- mParams.horizontalMargin = mHorizontalMargin;
- if (mView.getParent() != null) {
- if (localLOGV) Log.v(
- TAG, "REMOVE! " + mView + " in " + this);
- mWM.removeView(mView);
- }
- if (localLOGV) Log.v(TAG, "ADD! " + mView + " in " + this);
- mWM.addView(mView, mParams);
- }
- }
-
- public void handleHide()
- {
- if (localLOGV) Log.v(TAG, "HANDLE HIDE: " + this + " mView=" + mView);
- if (mView != null) {
- // note: checking parent() just to make sure the view has
- // been added... i have seen cases where we get here when
- // the view isn't yet added, so let's try not to crash.
- if (mView.getParent() != null) {
- if (localLOGV) Log.v(
- TAG, "REMOVE! " + mView + " in " + this);
- mWM.removeView(mView);
- }
- mView = null;
- }
- }
-
- Runnable mShow = new Runnable() {
- public void run() {
- handleShow();
- }
- };
-
- Runnable mHide = new Runnable() {
- public void run() {
- handleHide();
- }
- };
-
- private final WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
-
- WindowManagerImpl mWM;
- }
-
- final Handler mHandler = new Handler();
-}
-