Home | History | Annotate | Download | only in widget
      1 /*
      2  * Copyright (C) 2015 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.dialer.app.widget;
     18 
     19 import android.content.Context;
     20 import android.util.AttributeSet;
     21 import android.view.LayoutInflater;
     22 import android.view.View;
     23 import android.widget.ImageView;
     24 import android.widget.LinearLayout;
     25 import android.widget.TextView;
     26 import com.android.dialer.app.R;
     27 
     28 public class EmptyContentView extends LinearLayout implements View.OnClickListener {
     29 
     30   /** Listener to call when action button is clicked. */
     31   public interface OnEmptyViewActionButtonClickedListener {
     32     void onEmptyViewActionButtonClicked();
     33   }
     34 
     35   public static final int NO_LABEL = 0;
     36   public static final int NO_IMAGE = 0;
     37 
     38   private ImageView mImageView;
     39   private TextView mDescriptionView;
     40   private TextView mActionView;
     41   private OnEmptyViewActionButtonClickedListener mOnActionButtonClickedListener;
     42 
     43   public EmptyContentView(Context context) {
     44     this(context, null);
     45   }
     46 
     47   public EmptyContentView(Context context, AttributeSet attrs) {
     48     this(context, attrs, 0);
     49   }
     50 
     51   public EmptyContentView(Context context, AttributeSet attrs, int defStyleAttr) {
     52     this(context, attrs, defStyleAttr, 0);
     53   }
     54 
     55   public EmptyContentView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
     56     super(context, attrs, defStyleAttr, defStyleRes);
     57     inflateLayout();
     58 
     59     // Don't let touches fall through the empty view.
     60     setClickable(true);
     61     mImageView = (ImageView) findViewById(R.id.emptyListViewImage);
     62     mDescriptionView = (TextView) findViewById(R.id.emptyListViewMessage);
     63     mActionView = (TextView) findViewById(R.id.emptyListViewAction);
     64     mActionView.setOnClickListener(this);
     65   }
     66 
     67   public void setDescription(int resourceId) {
     68     if (resourceId == NO_LABEL) {
     69       mDescriptionView.setText(null);
     70       mDescriptionView.setVisibility(View.GONE);
     71     } else {
     72       mDescriptionView.setText(resourceId);
     73       mDescriptionView.setVisibility(View.VISIBLE);
     74     }
     75   }
     76 
     77   public void setImage(int resourceId) {
     78     if (resourceId == NO_LABEL) {
     79       mImageView.setImageDrawable(null);
     80       mImageView.setVisibility(View.GONE);
     81     } else {
     82       mImageView.setImageResource(resourceId);
     83       mImageView.setVisibility(View.VISIBLE);
     84     }
     85   }
     86 
     87   public void setActionLabel(int resourceId) {
     88     if (resourceId == NO_LABEL) {
     89       mActionView.setText(null);
     90       mActionView.setVisibility(View.GONE);
     91     } else {
     92       mActionView.setText(resourceId);
     93       mActionView.setVisibility(View.VISIBLE);
     94     }
     95   }
     96 
     97   public boolean isShowingContent() {
     98     return mImageView.getVisibility() == View.VISIBLE
     99         || mDescriptionView.getVisibility() == View.VISIBLE
    100         || mActionView.getVisibility() == View.VISIBLE;
    101   }
    102 
    103   public void setActionClickedListener(OnEmptyViewActionButtonClickedListener listener) {
    104     mOnActionButtonClickedListener = listener;
    105   }
    106 
    107   @Override
    108   public void onClick(View v) {
    109     if (mOnActionButtonClickedListener != null) {
    110       mOnActionButtonClickedListener.onEmptyViewActionButtonClicked();
    111     }
    112   }
    113 
    114   protected void inflateLayout() {
    115     setOrientation(LinearLayout.VERTICAL);
    116     final LayoutInflater inflater =
    117         (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    118     inflater.inflate(R.layout.empty_content_view, this);
    119   }
    120 
    121 }
    122