111d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
211d1978d8d16004598347abc93918b54a5ef760bMichael Kolbpackage com.android.browser.view;
311d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
411d1978d8d16004598347abc93918b54a5ef760bMichael Kolbimport com.android.browser.R;
511d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
611d1978d8d16004598347abc93918b54a5ef760bMichael Kolbimport android.content.Context;
711d1978d8d16004598347abc93918b54a5ef760bMichael Kolbimport android.graphics.Canvas;
811d1978d8d16004598347abc93918b54a5ef760bMichael Kolbimport android.graphics.drawable.Drawable;
911d1978d8d16004598347abc93918b54a5ef760bMichael Kolbimport android.util.AttributeSet;
1011d1978d8d16004598347abc93918b54a5ef760bMichael Kolbimport android.widget.ProgressBar;
1111d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
1211d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
1311d1978d8d16004598347abc93918b54a5ef760bMichael Kolbpublic class StopProgressView extends ProgressBar {
1411d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
1511d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    Drawable mOverlayDrawable;
1611d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    Drawable mProgressDrawable;
1711d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    int mWidth;
1811d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    int mHeight;
1911d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
2011d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    /**
2111d1978d8d16004598347abc93918b54a5ef760bMichael Kolb     * @param context
2211d1978d8d16004598347abc93918b54a5ef760bMichael Kolb     * @param attrs
2311d1978d8d16004598347abc93918b54a5ef760bMichael Kolb     * @param defStyle
2411d1978d8d16004598347abc93918b54a5ef760bMichael Kolb     * @param styleRes
2511d1978d8d16004598347abc93918b54a5ef760bMichael Kolb     */
2611d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    public StopProgressView(Context context, AttributeSet attrs, int defStyle, int styleRes) {
2711d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        super(context, attrs, defStyle, styleRes);
2811d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        init(attrs);
2911d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    }
3011d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
3111d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    /**
3211d1978d8d16004598347abc93918b54a5ef760bMichael Kolb     * @param context
3311d1978d8d16004598347abc93918b54a5ef760bMichael Kolb     * @param attrs
3411d1978d8d16004598347abc93918b54a5ef760bMichael Kolb     * @param defStyle
3511d1978d8d16004598347abc93918b54a5ef760bMichael Kolb     */
3611d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    public StopProgressView(Context context, AttributeSet attrs, int defStyle) {
3711d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        super(context, attrs, defStyle);
3811d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        init(attrs);
3911d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    }
4011d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
4111d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    /**
4211d1978d8d16004598347abc93918b54a5ef760bMichael Kolb     * @param context
4311d1978d8d16004598347abc93918b54a5ef760bMichael Kolb     * @param attrs
4411d1978d8d16004598347abc93918b54a5ef760bMichael Kolb     */
4511d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    public StopProgressView(Context context, AttributeSet attrs) {
4611d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        super(context, attrs);
4711d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        init(attrs);
4811d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    }
4911d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
5011d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    /**
5111d1978d8d16004598347abc93918b54a5ef760bMichael Kolb     * @param context
5211d1978d8d16004598347abc93918b54a5ef760bMichael Kolb     */
5311d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    public StopProgressView(Context context) {
5411d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        super(context);
5511d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        init(null);
5611d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    }
5711d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
5811d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    private void init(AttributeSet attrs) {
5911d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        mProgressDrawable = getIndeterminateDrawable();
6011d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        setImageDrawable(mContext.getResources()
6111d1978d8d16004598347abc93918b54a5ef760bMichael Kolb                .getDrawable(R.drawable.ic_stop_holo_dark));
6211d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    }
6311d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
6411d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    public void hideProgress() {
6511d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        setIndeterminateDrawable(null);
6611d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    }
6711d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
6811d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    public void showProgress() {
6911d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        setIndeterminateDrawable(mProgressDrawable);
7011d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    }
7111d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
7211d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    @Override
732e108efdcef6b91697c69bfa8d348669c61c040fMichael Kolb    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
742e108efdcef6b91697c69bfa8d348669c61c040fMichael Kolb        super.onLayout(changed, left, top, right, bottom);
752e108efdcef6b91697c69bfa8d348669c61c040fMichael Kolb        mWidth = (right - left) * 2 / 3;
762e108efdcef6b91697c69bfa8d348669c61c040fMichael Kolb        mHeight = (bottom - top) * 2 / 3;
772e108efdcef6b91697c69bfa8d348669c61c040fMichael Kolb    }
782e108efdcef6b91697c69bfa8d348669c61c040fMichael Kolb
792e108efdcef6b91697c69bfa8d348669c61c040fMichael Kolb    @Override
8011d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    protected void onDraw(Canvas canvas) {
8111d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        super.onDraw(canvas);
8211d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        if (mOverlayDrawable != null) {
8311d1978d8d16004598347abc93918b54a5ef760bMichael Kolb            int l = (getWidth() - mWidth) / 2;
8411d1978d8d16004598347abc93918b54a5ef760bMichael Kolb            int t = (getHeight() - mHeight) / 2;
8511d1978d8d16004598347abc93918b54a5ef760bMichael Kolb            mOverlayDrawable.setBounds(l, t, l + mWidth, t + mHeight);
8611d1978d8d16004598347abc93918b54a5ef760bMichael Kolb            mOverlayDrawable.draw(canvas);
8711d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        }
8811d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    }
8911d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
9011d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    public Drawable getDrawable() {
9111d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        return mOverlayDrawable;
9211d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    }
9311d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
9411d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    public void setImageDrawable(Drawable d) {
9511d1978d8d16004598347abc93918b54a5ef760bMichael Kolb        mOverlayDrawable = d;
9611d1978d8d16004598347abc93918b54a5ef760bMichael Kolb    }
9711d1978d8d16004598347abc93918b54a5ef760bMichael Kolb
9811d1978d8d16004598347abc93918b54a5ef760bMichael Kolb}
99