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