/* * Copyright (C) 2010 Cyril Mottier (http://www.cyrilmottier.com) * * 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 greendroid.widget; import android.view.LayoutInflater; import android.view.View; import com.cyrilmottier.android.greendroid.R; /** * An extension of a {@link NormalActionBarItem} that supports a loading states. * When in loading state, a {@link LoaderActionBarItem} display an indeterminate * circular {@link ProgressBar}. This item is very handful with application * fetching data from the network or performing long background tasks. * * @author Cyril Mottier */ public class LoaderActionBarItem extends NormalActionBarItem { private boolean mLoading; private View mButton; private View mProgressBar; public LoaderActionBarItem() { mLoading = false; } @Override protected View createItemView() { return LayoutInflater.from(mContext).inflate(R.layout.gd_action_bar_item_loader, mActionBar, false); } @Override protected void prepareItemView() { super.prepareItemView(); mButton = mItemView.findViewById(R.id.gd_action_bar_item); mProgressBar = mItemView.findViewById(R.id.gd_action_bar_item_progress_bar); } @Override protected void onItemClicked() { super.onItemClicked(); setLoading(true); } /** * Sets the loading state of this {@link LoaderActionBarItem}. * * @param loading The new loading state. If true, an indeterminate * {@link ProgressBar} is displayed. When false (default value) * the {@link ActionBarItem} behaves exactly like a regular * {@link NormalActionBarItem}. */ public void setLoading(boolean loading) { if (loading != mLoading) { mProgressBar.setVisibility(loading ? View.VISIBLE : View.GONE); mButton.setVisibility(loading ? View.GONE : View.VISIBLE); mLoading = loading; } } }