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