• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2012 Google Inc.
3  * Licensed to The Android Open Source Project.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 package com.android.mail.browse;
19 
20 import android.content.Context;
21 import android.content.res.Resources;
22 import android.util.AttributeSet;
23 import android.view.View;
24 import android.widget.FrameLayout;
25 import android.widget.TextView;
26 
27 import com.android.mail.R;
28 import com.android.mail.browse.ConversationViewAdapter.SuperCollapsedBlockItem;
29 
30 import java.text.NumberFormat;
31 
32 /**
33  * A header block that expands to a list of collapsed message headers. Will notify a listener on tap
34  * so the listener can hide the block and reveal the corresponding collapsed message headers.
35  *
36  */
37 public class SuperCollapsedBlock extends FrameLayout implements View.OnClickListener {
38 
39     public interface OnClickListener {
40         /**
41          * Handle a click on a super-collapsed block.
42          *
43          */
onSuperCollapsedClick(SuperCollapsedBlockItem item)44         void onSuperCollapsedClick(SuperCollapsedBlockItem item);
45     }
46 
47     private SuperCollapsedBlockItem mSuperCollapsedItem;
48     private OnClickListener mClick;
49     private TextView mSuperCollapsedText;
50 
SuperCollapsedBlock(Context context)51     public SuperCollapsedBlock(Context context) {
52         this(context, null);
53     }
54 
SuperCollapsedBlock(Context context, AttributeSet attrs)55     public SuperCollapsedBlock(Context context, AttributeSet attrs) {
56         super(context, attrs);
57         setActivated(false);
58         setOnClickListener(this);
59     }
60 
initialize(OnClickListener onClick)61     public void initialize(OnClickListener onClick) {
62         mClick = onClick;
63     }
64 
65     @Override
onFinishInflate()66     protected void onFinishInflate() {
67         super.onFinishInflate();
68         mSuperCollapsedText = (TextView) findViewById(R.id.super_collapsed_text);
69     }
70 
bind(SuperCollapsedBlockItem item)71     public void bind(SuperCollapsedBlockItem item) {
72         mSuperCollapsedItem = item;
73         setCount(item.getEnd() - item.getStart() + 1);
74     }
75 
setCount(int count)76     public void setCount(int count) {
77         final String strCount = NumberFormat.getIntegerInstance().format(count);
78         mSuperCollapsedText.setText(strCount);
79         final Resources res = getResources();
80         final int colorId = mSuperCollapsedItem.hasDraft() ?
81                 R.color.text_color_draft_red : R.color.conversation_view_text_color_light;
82         mSuperCollapsedText.setTextColor(res.getColor(colorId));
83         setContentDescription(
84                 res.getQuantityString(R.plurals.show_messages_read, count, count));
85     }
86 
87     @Override
onClick(final View v)88     public void onClick(final View v) {
89         ((TextView) findViewById(R.id.super_collapsed_text)).setText(
90                 R.string.loading_conversation);
91 
92         if (mClick != null) {
93             getHandler().post(new Runnable() {
94                 @Override
95                 public void run() {
96                     mClick.onSuperCollapsedClick(mSuperCollapsedItem);
97                 }
98             });
99         }
100     }
101 }
102