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