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 {
onEmptyViewActionButtonClicked()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 
EmptyContentView(Context context)43   public EmptyContentView(Context context) {
44     this(context, null);
45   }
46 
EmptyContentView(Context context, AttributeSet attrs)47   public EmptyContentView(Context context, AttributeSet attrs) {
48     this(context, attrs, 0);
49   }
50 
EmptyContentView(Context context, AttributeSet attrs, int defStyleAttr)51   public EmptyContentView(Context context, AttributeSet attrs, int defStyleAttr) {
52     this(context, attrs, defStyleAttr, 0);
53   }
54 
EmptyContentView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)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 
setDescription(int resourceId)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 
setImage(int resourceId)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 
setActionLabel(int resourceId)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 
isShowingContent()97   public boolean isShowingContent() {
98     return mImageView.getVisibility() == View.VISIBLE
99         || mDescriptionView.getVisibility() == View.VISIBLE
100         || mActionView.getVisibility() == View.VISIBLE;
101   }
102 
setActionClickedListener(OnEmptyViewActionButtonClickedListener listener)103   public void setActionClickedListener(OnEmptyViewActionButtonClickedListener listener) {
104     mOnActionButtonClickedListener = listener;
105   }
106 
107   @Override
onClick(View v)108   public void onClick(View v) {
109     if (mOnActionButtonClickedListener != null) {
110       mOnActionButtonClickedListener.onEmptyViewActionButtonClicked();
111     }
112   }
113 
inflateLayout()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