1150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein/*
2150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein * Copyright (C) 2012 Google Inc.
3150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein * Licensed to The Android Open Source Project.
4150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein *
5150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein * Licensed under the Apache License, Version 2.0 (the "License");
6150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein * you may not use this file except in compliance with the License.
7150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein * You may obtain a copy of the License at
8150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein *
9150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein *      http://www.apache.org/licenses/LICENSE-2.0
10150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein *
11150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein * Unless required by applicable law or agreed to in writing, software
12150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein * distributed under the License is distributed on an "AS IS" BASIS,
13150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein * See the License for the specific language governing permissions and
15150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein * limitations under the License.
16150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein */
17150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein
18150e623129eef49467f1d6f67649e4636a4513f2Andrew Sappersteinpackage com.android.ex.photo.views;
19150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein
20150e623129eef49467f1d6f67649e4636a4513f2Andrew Sappersteinimport android.view.View;
21150e623129eef49467f1d6f67649e4636a4513f2Andrew Sappersteinimport android.widget.ProgressBar;
22150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein
23150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein/**
24150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein * This class wraps around two progress bars and is solely designed to fix
25150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein * a bug in the framework (b/6928449) that prevents a progress bar from
26150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein * gracefully switching back and forth between indeterminate and determinate
27150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein * modes.
28150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein */
29150e623129eef49467f1d6f67649e4636a4513f2Andrew Sappersteinpublic class ProgressBarWrapper {
309556f61c11991d6e955cfd68ca53f4f489dfa8c5Paul Westbrook    private final ProgressBar mDeterminate;
319556f61c11991d6e955cfd68ca53f4f489dfa8c5Paul Westbrook    private final ProgressBar mIndeterminate;
32150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein    private boolean mIsIndeterminate;
33150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein
34150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein    public ProgressBarWrapper(ProgressBar determinate,
35150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein            ProgressBar indeterminate, boolean isIndeterminate) {
36150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein        mDeterminate = determinate;
37150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein        mIndeterminate = indeterminate;
38150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein        setIndeterminate(isIndeterminate);
39150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein    }
40150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein
41150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein    public void setIndeterminate(boolean isIndeterminate) {
42150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein        mIsIndeterminate = isIndeterminate;
43150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein
44150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein        setVisibility(mIsIndeterminate);
45150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein    }
46150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein
47150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein    public void setVisibility(int visibility) {
48150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein        if (visibility == View.INVISIBLE || visibility == View.GONE) {
49150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein            mIndeterminate.setVisibility(visibility);
50150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein            mDeterminate.setVisibility(visibility);
51150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein        } else {
52150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein            setVisibility(mIsIndeterminate);
53150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein        }
54150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein    }
55150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein
56150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein    private void setVisibility(boolean isIndeterminate) {
57150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein        mIndeterminate.setVisibility(isIndeterminate ? View.VISIBLE : View.GONE);
58150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein        mDeterminate.setVisibility(isIndeterminate ? View.GONE : View.VISIBLE);
59150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein    }
60150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein
61150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein    public void setMax(int max) {
62150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein        mDeterminate.setMax(max);
63150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein    }
64150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein
65150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein    public void setProgress(int progress) {
66150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein        mDeterminate.setProgress(progress);
67150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein    }
68150e623129eef49467f1d6f67649e4636a4513f2Andrew Sapperstein}
69