1769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio/*
2769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio * Copyright (C) 2014 The Android Open Source Project
3769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio *
4769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio * Licensed under the Apache License, Version 2.0 (the "License");
5769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio * you may not use this file except in compliance with the License.
6769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio * You may obtain a copy of the License at
7769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio *
8769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio *      http://www.apache.org/licenses/LICENSE-2.0
9769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio *
10769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio * Unless required by applicable law or agreed to in writing, software
11769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio * distributed under the License is distributed on an "AS IS" BASIS,
12769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio * See the License for the specific language governing permissions and
14769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio * limitations under the License.
15769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio */
16769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
17769630c8956fa844545d964166da90cc802fabacFabrice Di Megliopackage com.android.settings.dashboard;
18769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
192ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monkimport android.app.Activity;
20769630c8956fa844545d964166da90cc802fabacFabrice Di Meglioimport android.content.Context;
21769630c8956fa844545d964166da90cc802fabacFabrice Di Meglioimport android.util.AttributeSet;
22769630c8956fa844545d964166da90cc802fabacFabrice Di Meglioimport android.view.LayoutInflater;
23769630c8956fa844545d964166da90cc802fabacFabrice Di Meglioimport android.view.View;
24769630c8956fa844545d964166da90cc802fabacFabrice Di Meglioimport android.widget.FrameLayout;
25769630c8956fa844545d964166da90cc802fabacFabrice Di Meglioimport android.widget.ImageView;
26769630c8956fa844545d964166da90cc802fabacFabrice Di Meglioimport android.widget.TextView;
272ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk
282ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monkimport com.android.settings.ProfileSelectDialog;
29769630c8956fa844545d964166da90cc802fabacFabrice Di Meglioimport com.android.settings.R;
30769630c8956fa844545d964166da90cc802fabacFabrice Di Meglioimport com.android.settings.Utils;
31769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
32769630c8956fa844545d964166da90cc802fabacFabrice Di Megliopublic class DashboardTileView extends FrameLayout implements View.OnClickListener {
33769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
34769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    private static final int DEFAULT_COL_SPAN = 1;
35769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
36769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    private ImageView mImageView;
37769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    private TextView mTitleTextView;
38769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    private TextView mStatusTextView;
3947a25e76409aec1ae29b983779addf39722377f6Fabrice Di Meglio    private View mDivider;
40769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
41769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    private int mColSpan = DEFAULT_COL_SPAN;
42769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
43769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    private DashboardTile mTile;
44769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
45769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    public DashboardTileView(Context context) {
46769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        this(context, null);
47769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    }
48769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
49769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    public DashboardTileView(Context context, AttributeSet attrs) {
50769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        super(context, attrs);
51769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
52769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        final View view = LayoutInflater.from(context).inflate(R.layout.dashboard_tile, this);
53769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
54769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        mImageView = (ImageView) view.findViewById(R.id.icon);
55769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        mTitleTextView = (TextView) view.findViewById(R.id.title);
56769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        mStatusTextView = (TextView) view.findViewById(R.id.status);
5747a25e76409aec1ae29b983779addf39722377f6Fabrice Di Meglio        mDivider = view.findViewById(R.id.tile_divider);
58769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
59769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        setOnClickListener(this);
6039490546d37db544caf489a9c19e4a793131fe58Fabrice Di Meglio        setBackgroundResource(R.drawable.dashboard_tile_background);
6139490546d37db544caf489a9c19e4a793131fe58Fabrice Di Meglio        setFocusable(true);
62769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    }
63769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
64769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    public TextView getTitleTextView() {
65769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        return mTitleTextView;
66769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    }
67769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
68769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    public TextView getStatusTextView() {
69769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        return mStatusTextView;
70769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    }
71769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
72769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    public ImageView getImageView() {
73769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        return mImageView;
74769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    }
75769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
76769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    public void setTile(DashboardTile tile) {
77769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        mTile = tile;
78769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    }
79769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
8047a25e76409aec1ae29b983779addf39722377f6Fabrice Di Meglio    public void setDividerVisibility(boolean visible) {
8147a25e76409aec1ae29b983779addf39722377f6Fabrice Di Meglio        mDivider.setVisibility(visible ? View.VISIBLE : View.GONE);
8247a25e76409aec1ae29b983779addf39722377f6Fabrice Di Meglio    }
8347a25e76409aec1ae29b983779addf39722377f6Fabrice Di Meglio
84769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    void setColumnSpan(int span) {
85769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        mColSpan = span;
86769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    }
87769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
88769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    int getColumnSpan() {
89769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        return mColSpan;
90769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    }
91769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio
92769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    @Override
93769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    public void onClick(View v) {
94769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        if (mTile.fragment != null) {
95769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio            Utils.startWithFragment(getContext(), mTile.fragment, mTile.fragmentArguments, null, 0,
96a9e77993d1f82a230ff381134d4a22eff4a907cdFabrice Di Meglio                    mTile.titleRes, mTile.getTitle(getResources()));
97769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        } else if (mTile.intent != null) {
982ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk            int numUserHandles = mTile.userHandle.size();
992ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk            if (numUserHandles > 1) {
1002ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk                ProfileSelectDialog.show(((Activity) getContext()).getFragmentManager(), mTile);
1012ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk            } else if (numUserHandles == 1) {
1022ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk                getContext().startActivityAsUser(mTile.intent, mTile.userHandle.get(0));
1032ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk            } else {
1042ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk                getContext().startActivity(mTile.intent);
1052ebc8a01696c4e7dd29863b92a15ae0bbbbb254dJason Monk            }
106769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio        }
107769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio    }
108769630c8956fa844545d964166da90cc802fabacFabrice Di Meglio}
109