1185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert/*
2185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * Copyright (C) 2009 The Android Open Source Project
3185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert *
4185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
5185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * you may not use this file except in compliance with the License.
6185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * You may obtain a copy of the License at
7185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert *
8185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert *      http://www.apache.org/licenses/LICENSE-2.0
9185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert *
10185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * Unless required by applicable law or agreed to in writing, software
11185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
12185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * See the License for the specific language governing permissions and
14185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * limitations under the License.
15185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert */
16185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
17185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringertpackage com.android.quicksearchbox.ui;
18185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
19185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringertimport com.android.quicksearchbox.R;
20185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
21185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringertimport android.content.Context;
22185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringertimport android.graphics.drawable.Drawable;
23185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringertimport android.util.AttributeSet;
248b2936607176720172aee068abc5631bdf77e843Bjorn Bringertimport android.view.ViewDebug;
258b2936607176720172aee068abc5631bdf77e843Bjorn Bringertimport android.widget.Checkable;
26185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringertimport android.widget.ImageView;
27185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringertimport android.widget.RelativeLayout;
28713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringertimport android.widget.TextView;
29713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert
30185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
31185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert/**
32fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert * A corpus in the corpus selection list.
33185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert */
348b2936607176720172aee068abc5631bdf77e843Bjorn Bringertpublic class CorpusView extends RelativeLayout implements Checkable {
35185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
36713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert    private ImageView mIcon;
37713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert    private TextView mLabel;
388b2936607176720172aee068abc5631bdf77e843Bjorn Bringert    private boolean mChecked;
398b2936607176720172aee068abc5631bdf77e843Bjorn Bringert
408b2936607176720172aee068abc5631bdf77e843Bjorn Bringert    private static final int[] CHECKED_STATE_SET = {
418b2936607176720172aee068abc5631bdf77e843Bjorn Bringert        android.R.attr.state_checked
428b2936607176720172aee068abc5631bdf77e843Bjorn Bringert    };
43713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert
44fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public CorpusView(Context context, AttributeSet attrs) {
45185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert        super(context, attrs);
46185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert    }
47185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
48fde948e69f59589cf0d217ea414af7947de600bbBjorn Bringert    public CorpusView(Context context) {
49185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert        super(context);
50185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert    }
51185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
52713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert    @Override
53713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert    protected void onFinishInflate() {
54713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert        super.onFinishInflate();
55713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert        mIcon = (ImageView) findViewById(R.id.source_icon);
56713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert        mLabel = (TextView) findViewById(R.id.source_label);
57185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert    }
58185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
59713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert    public void setLabel(CharSequence label) {
60713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert        mLabel.setText(label);
61713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert    }
62713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert
63713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert    public void setIcon(Drawable icon) {
64713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert        mIcon.setImageDrawable(icon);
65713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert    }
668b2936607176720172aee068abc5631bdf77e843Bjorn Bringert
67ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwood    @Override
688b2936607176720172aee068abc5631bdf77e843Bjorn Bringert    @ViewDebug.ExportedProperty
698b2936607176720172aee068abc5631bdf77e843Bjorn Bringert    public boolean isChecked() {
708b2936607176720172aee068abc5631bdf77e843Bjorn Bringert        return mChecked;
718b2936607176720172aee068abc5631bdf77e843Bjorn Bringert    }
728b2936607176720172aee068abc5631bdf77e843Bjorn Bringert
73ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwood    @Override
748b2936607176720172aee068abc5631bdf77e843Bjorn Bringert    public void setChecked(boolean checked) {
758b2936607176720172aee068abc5631bdf77e843Bjorn Bringert        if (mChecked != checked) {
768b2936607176720172aee068abc5631bdf77e843Bjorn Bringert            mChecked = checked;
778b2936607176720172aee068abc5631bdf77e843Bjorn Bringert            refreshDrawableState();
788b2936607176720172aee068abc5631bdf77e843Bjorn Bringert        }
798b2936607176720172aee068abc5631bdf77e843Bjorn Bringert    }
808b2936607176720172aee068abc5631bdf77e843Bjorn Bringert
81ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwood    @Override
828b2936607176720172aee068abc5631bdf77e843Bjorn Bringert    public void toggle() {
838b2936607176720172aee068abc5631bdf77e843Bjorn Bringert        setChecked(!mChecked);
848b2936607176720172aee068abc5631bdf77e843Bjorn Bringert    }
858b2936607176720172aee068abc5631bdf77e843Bjorn Bringert
868b2936607176720172aee068abc5631bdf77e843Bjorn Bringert    @Override
878b2936607176720172aee068abc5631bdf77e843Bjorn Bringert    protected int[] onCreateDrawableState(int extraSpace) {
888b2936607176720172aee068abc5631bdf77e843Bjorn Bringert        final int[] drawableState = super.onCreateDrawableState(extraSpace + 1);
898b2936607176720172aee068abc5631bdf77e843Bjorn Bringert        if (isChecked()) {
908b2936607176720172aee068abc5631bdf77e843Bjorn Bringert            mergeDrawableStates(drawableState, CHECKED_STATE_SET);
918b2936607176720172aee068abc5631bdf77e843Bjorn Bringert        }
928b2936607176720172aee068abc5631bdf77e843Bjorn Bringert        return drawableState;
938b2936607176720172aee068abc5631bdf77e843Bjorn Bringert    }
948b2936607176720172aee068abc5631bdf77e843Bjorn Bringert
95185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert}
96