• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.widget;
18 
19 import android.content.Context;
20 import android.support.annotation.StringRes;
21 import android.util.AttributeSet;
22 import android.view.LayoutInflater;
23 import android.view.View;
24 import android.widget.ImageView;
25 import android.widget.LinearLayout;
26 import android.widget.TextView;
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 
43   private @StringRes int actionLabel;
44 
EmptyContentView(Context context)45   public EmptyContentView(Context context) {
46     this(context, null);
47   }
48 
EmptyContentView(Context context, AttributeSet attrs)49   public EmptyContentView(Context context, AttributeSet attrs) {
50     this(context, attrs, 0);
51   }
52 
EmptyContentView(Context context, AttributeSet attrs, int defStyleAttr)53   public EmptyContentView(Context context, AttributeSet attrs, int defStyleAttr) {
54     this(context, attrs, defStyleAttr, 0);
55   }
56 
EmptyContentView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)57   public EmptyContentView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
58     super(context, attrs, defStyleAttr, defStyleRes);
59     inflateLayout();
60 
61     // Don't let touches fall through the empty view.
62     setClickable(true);
63     mImageView = (ImageView) findViewById(R.id.empty_list_view_image);
64     mDescriptionView = (TextView) findViewById(R.id.empty_list_view_message);
65     mActionView = (TextView) findViewById(R.id.empty_list_view_action);
66     mActionView.setOnClickListener(this);
67   }
68 
setDescription(int resourceId)69   public void setDescription(int resourceId) {
70     if (resourceId == NO_LABEL) {
71       mDescriptionView.setText(null);
72       mDescriptionView.setVisibility(View.GONE);
73     } else {
74       mDescriptionView.setText(resourceId);
75       mDescriptionView.setVisibility(View.VISIBLE);
76     }
77   }
78 
setImage(int resourceId)79   public void setImage(int resourceId) {
80     if (resourceId == NO_LABEL) {
81       mImageView.setImageDrawable(null);
82       mImageView.setVisibility(View.GONE);
83     } else {
84       mImageView.setImageResource(resourceId);
85       mImageView.setVisibility(View.VISIBLE);
86     }
87   }
88 
setActionLabel(@tringRes int resourceId)89   public void setActionLabel(@StringRes int resourceId) {
90     actionLabel = resourceId;
91     if (resourceId == NO_LABEL) {
92       mActionView.setText(null);
93       mActionView.setVisibility(View.GONE);
94     } else {
95       mActionView.setText(resourceId);
96       mActionView.setVisibility(View.VISIBLE);
97     }
98   }
99 
getActionLabel()100   public @StringRes int getActionLabel() {
101     return actionLabel;
102   }
103 
isShowingContent()104   public boolean isShowingContent() {
105     return mImageView.getVisibility() == View.VISIBLE
106         || mDescriptionView.getVisibility() == View.VISIBLE
107         || mActionView.getVisibility() == View.VISIBLE;
108   }
109 
setActionClickedListener(OnEmptyViewActionButtonClickedListener listener)110   public void setActionClickedListener(OnEmptyViewActionButtonClickedListener listener) {
111     mOnActionButtonClickedListener = listener;
112   }
113 
114   @Override
onClick(View v)115   public void onClick(View v) {
116     if (mOnActionButtonClickedListener != null) {
117       mOnActionButtonClickedListener.onEmptyViewActionButtonClicked();
118     }
119   }
120 
inflateLayout()121   protected void inflateLayout() {
122     setOrientation(LinearLayout.VERTICAL);
123     final LayoutInflater inflater =
124         (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
125     inflater.inflate(R.layout.empty_content_view, this);
126   }
127 }
128