MessageCommandButtonView.java revision 0435a0775e3d6637304a5a4e93675e7462397eb1
1/* 2 * Copyright (C) 2010 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.email.activity; 18 19import com.android.email.R; 20 21import android.content.Context; 22import android.util.AttributeSet; 23import android.view.LayoutInflater; 24import android.view.View; 25import android.widget.LinearLayout; 26 27/** 28 * A View that is shown at the bottom of {@link MessageViewFragment} and contains buttons such 29 * as "Delete" "Mark unread". 30 * 31 * This class is meant to hide layout differences between portrait and landscape, if any. 32 * e.g. We might combine some of the buttons when we have small real estate. 33 */ 34public class MessageCommandButtonView extends LinearLayout implements View.OnClickListener { 35 private View mMoveToNewerButton; 36 private View mMoveToOlderButton; 37 private View mForwardButton; 38 private View mReplyButton; 39 private View mReplyAllButton; 40 private View mDeleteButton; 41 private View mMarkUneadButton; 42 private View mMoveButton; 43 44 private Callback mCallback = EmptyCallback.INSTANCE; 45 46 public interface Callback { 47 public void onMoveToNewer(); 48 public void onMoveToOlder(); 49 public void onForward(); 50 public void onReply(); 51 public void onReplyAll(); 52 public void onDelete(); 53 public void onMarkUnread(); 54 public void onMove(); 55 } 56 57 private static class EmptyCallback implements Callback { 58 public static final Callback INSTANCE = new EmptyCallback(); 59 @Override public void onDelete() {} 60 @Override public void onForward() {} 61 @Override public void onMarkUnread() {} 62 @Override public void onMove() {} 63 @Override public void onMoveToNewer() {} 64 @Override public void onMoveToOlder() {} 65 @Override public void onReply() {} 66 @Override public void onReplyAll() {} 67 } 68 69 public MessageCommandButtonView(Context context, AttributeSet attrs, int defStyle) { 70 super(context, attrs, defStyle); 71 } 72 73 public MessageCommandButtonView(Context context, AttributeSet attrs) { 74 super(context, attrs); 75 } 76 77 public MessageCommandButtonView(Context context) { 78 super(context); 79 } 80 81 @Override 82 protected void onFinishInflate() { 83 super.onFinishInflate(); 84 85 mMoveToNewerButton = findViewById(R.id.move_to_newer_button); 86 mMoveToOlderButton = findViewById(R.id.move_to_older_button); 87 mForwardButton = findViewById(R.id.forward_button); 88 mReplyButton = findViewById(R.id.reply_button); 89 mReplyAllButton = findViewById(R.id.reply_all_button); 90 mDeleteButton = findViewById(R.id.delete_button); 91 mMarkUneadButton = findViewById(R.id.unread_button); 92 mMoveButton = findViewById(R.id.move_button); 93 94 mMoveToNewerButton.setOnClickListener(this); 95 mMoveToOlderButton.setOnClickListener(this); 96 mForwardButton.setOnClickListener(this); 97 mReplyButton.setOnClickListener(this); 98 mReplyAllButton.setOnClickListener(this); 99 mDeleteButton.setOnClickListener(this); 100 mMarkUneadButton.setOnClickListener(this); 101 mMoveButton.setOnClickListener(this); 102 } 103 104 public void setCallback(Callback callback) { 105 mCallback = (callback == null) ? EmptyCallback.INSTANCE : callback; 106 } 107 108 public void enableReplyForwardButtons(boolean enabled) { 109 mForwardButton.setEnabled(enabled); 110 mReplyButton.setEnabled(enabled); 111 mReplyAllButton.setEnabled(enabled); 112 } 113 114 public void enableNavigationButons(boolean enableMoveToNewer, boolean enableMoveToOlder) { 115 mMoveToNewerButton.setEnabled(enableMoveToNewer); 116 mMoveToOlderButton.setEnabled(enableMoveToOlder); 117 } 118 119 @Override 120 public void onClick(View v) { 121 switch (v.getId()) { 122 case R.id.move_to_newer_button: 123 mCallback.onMoveToNewer(); 124 break; 125 case R.id.move_to_older_button: 126 mCallback.onMoveToOlder(); 127 break; 128 case R.id.forward_button: 129 mCallback.onForward(); 130 break; 131 case R.id.reply_button: 132 mCallback.onReply(); 133 break; 134 case R.id.reply_all_button: 135 mCallback.onReplyAll(); 136 break; 137 case R.id.delete_button: 138 mCallback.onDelete(); 139 break; 140 case R.id.unread_button: 141 mCallback.onMarkUnread(); 142 break; 143 case R.id.move_button: 144 mCallback.onMove(); 145 break; 146 } 147 } 148} 149