1811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler/* 2811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * Copyright (C) 2014 The Android Open Source Project 3811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * 4811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * Licensed under the Apache License, Version 2.0 (the "License"); 5811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * you may not use this file except in compliance with the License. 6811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * You may obtain a copy of the License at 7811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * 8811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * http://www.apache.org/licenses/LICENSE-2.0 9811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * 10811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * Unless required by applicable law or agreed to in writing, software 11811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * distributed under the License is distributed on an "AS IS" BASIS, 12811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * See the License for the specific language governing permissions and 14811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * limitations under the License. 15811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler */ 16811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler 17811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantlerpackage com.android.mail.drawer; 18811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler 19811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantlerimport android.view.View; 20811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantlerimport android.view.ViewGroup; 21811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantlerimport android.widget.ImageView; 22811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantlerimport android.widget.TextView; 23811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler 24811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantlerimport com.android.mail.R; 25811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantlerimport com.android.mail.providers.Account; 26811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantlerimport com.android.mail.ui.ControllableActivity; 27811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantlerimport com.android.mail.ui.DrawerController; 28811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantlerimport com.android.mail.ui.FolderListFragment; 29811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler 30811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler/** 31811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * The base class of all footer items. Subclasses must fill in the logic of 32811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * {@link #onFooterClicked()} which contains the behavior when the item is selected. 33811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler */ 34811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantlerpublic abstract class FooterItem extends DrawerItem implements View.OnClickListener { 35811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler 36811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler private final FolderListFragment.DrawerStateListener mDrawerListener; 37811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler private final int mImageResourceId; 38811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler private final int mTextResourceId; 39811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler 40811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler FooterItem(ControllableActivity activity, Account account, 41811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler FolderListFragment.DrawerStateListener drawerListener, 42811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler final int imageResourceId, final int textResourceId) { 43811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler super(activity, null, NONFOLDER_ITEM, account); 44811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler mDrawerListener = drawerListener; 45811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler mImageResourceId = imageResourceId; 46811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler mTextResourceId = textResourceId; 47811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler } 48811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler 49811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler private int getImageResourceId() { 50811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler return mImageResourceId; 51811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler } 52811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler 53811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler private int getTextResourceId() { 54811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler return mTextResourceId; 55811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler } 56811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler 57811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler /** 58811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * Executes the behavior associated with this footer item.<br> 59811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * <br> 60811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * WARNING: you probably don't want to call this directly; use {@link #onClick(View)} instead. 61811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * This method actually performs the action, and its execution may be deferred from when the 62811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * 'click' happens so we can smoothly close the drawer beforehand. 63811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler */ 64811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler public abstract void onFooterClicked(); 65811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler 66811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler @Override 67811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler public final void onClick(View v) { 68811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler final DrawerController dc = mActivity.getDrawerController(); 69811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler if (dc.isDrawerEnabled()) { 70811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler // close the drawer and defer handling the click until onDrawerClosed 71811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler mActivity.getAccountController().closeDrawer(false /* hasNewFolderOrAccount */, 72811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler null /* nextAccount */, null /* nextFolder */); 73811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler mDrawerListener.setPendingFooterClick(this); 74811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler } else { 75811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler onFooterClicked(); 76811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler } 77811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler } 78811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler 79811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler /** 80811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * For analytics 81811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler * @return label for analytics event 82811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler */ 83811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler protected String getEventLabel() { 84811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler return "drawer_footer/" + mActivity.getViewMode().getModeString(); 85811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler } 86811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler 87811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler @Override 88811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler public View getView(View convertView, ViewGroup parent) { 89811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler final ViewGroup footerItemView; 90811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler if (convertView != null) { 91811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler footerItemView = (ViewGroup) convertView; 92811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler } else { 93811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler footerItemView = 94811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler (ViewGroup) mInflater.inflate(R.layout.drawer_footer_item, parent, false); 95811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler } 96811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler 97811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler // adjust the text of the footer item 98811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler final TextView textView = (TextView) footerItemView. 99811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler findViewById(R.id.drawer_footer_text); 100811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler textView.setText(getTextResourceId()); 101811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler 102811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler // adjust the icon of the footer item 103811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler final ImageView imageView = (ImageView) footerItemView. 104811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler findViewById(R.id.drawer_footer_image); 105811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler imageView.setImageResource(getImageResourceId()); 106811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler return footerItemView; 107811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler } 108811c704ddcf180c4fd4ac0e2800ea8eea34af3e9Tony Mantler} 109