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
17package com.android.dialer.widget;
18
19import android.content.Context;
20import android.util.AttributeSet;
21import android.util.Log;
22import android.view.LayoutInflater;
23import android.view.View;
24import android.widget.ImageView;
25import android.widget.LinearLayout;
26import android.widget.TextView;
27
28import com.android.dialer.R;
29
30public class EmptyContentView extends LinearLayout implements View.OnClickListener {
31
32    public static final int NO_LABEL = 0;
33    public static final int NO_IMAGE = 0;
34
35    private ImageView mImageView;
36    private TextView mDescriptionView;
37    private TextView mActionView;
38    private OnEmptyViewActionButtonClickedListener mOnActionButtonClickedListener;
39
40    public interface OnEmptyViewActionButtonClickedListener {
41        public void onEmptyViewActionButtonClicked();
42    }
43
44    public EmptyContentView(Context context) {
45        this(context, null);
46    }
47
48    public EmptyContentView(Context context, AttributeSet attrs) {
49        this(context, attrs, 0);
50    }
51
52    public EmptyContentView(Context context, AttributeSet attrs, int defStyleAttr) {
53        this(context, attrs, defStyleAttr, 0);
54    }
55
56    public EmptyContentView(Context context, AttributeSet attrs, int defStyleAttr,
57            int defStyleRes) {
58        super(context, attrs, defStyleAttr, defStyleRes);
59        setOrientation(LinearLayout.VERTICAL);
60
61        final LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(
62                Context.LAYOUT_INFLATER_SERVICE);
63        inflater.inflate(R.layout.empty_content_view, this);
64        // Don't let touches fall through the empty view.
65        setClickable(true);
66        mImageView = (ImageView) findViewById(R.id.emptyListViewImage);
67        mDescriptionView = (TextView) findViewById(R.id.emptyListViewMessage);
68        mActionView = (TextView) findViewById(R.id.emptyListViewAction);
69        mActionView.setOnClickListener(this);
70    }
71
72    public void setDescription(int resourceId) {
73        if (resourceId == NO_LABEL) {
74            mDescriptionView.setText(null);
75            mDescriptionView.setVisibility(View.GONE);
76        } else {
77            mDescriptionView.setText(resourceId);
78            mDescriptionView.setVisibility(View.VISIBLE);
79        }
80    }
81
82    public void setImage(int resourceId) {
83        mImageView.setImageResource(resourceId);
84        if (resourceId == NO_LABEL) {
85            mImageView.setVisibility(View.GONE);
86        } else {
87            mImageView.setVisibility(View.VISIBLE);
88        }
89    }
90
91    public void setActionLabel(int resourceId) {
92        if (resourceId == NO_LABEL) {
93            mActionView.setText(null);
94            mActionView.setVisibility(View.GONE);
95        } else {
96            mActionView.setText(resourceId);
97            mActionView.setVisibility(View.VISIBLE);
98        }
99    }
100
101    public boolean isShowingContent() {
102        return mImageView.getVisibility() == View.VISIBLE
103                || mDescriptionView.getVisibility() == View.VISIBLE
104                || mActionView.getVisibility() == View.VISIBLE;
105    }
106
107    public void setActionClickedListener(OnEmptyViewActionButtonClickedListener listener) {
108        mOnActionButtonClickedListener = listener;
109    }
110
111    @Override
112    public void onClick(View v) {
113        if (mOnActionButtonClickedListener != null) {
114            mOnActionButtonClickedListener.onEmptyViewActionButtonClicked();
115        }
116    }
117}
118