1716ba89e7f459f49ea85070d4710c1d79d715298George Mount/*
2716ba89e7f459f49ea85070d4710c1d79d715298George Mount * Copyright (C) 2015 The Android Open Source Project
3716ba89e7f459f49ea85070d4710c1d79d715298George Mount *
4716ba89e7f459f49ea85070d4710c1d79d715298George Mount * Licensed under the Apache License, Version 2.0 (the "License");
5716ba89e7f459f49ea85070d4710c1d79d715298George Mount * you may not use this file except in compliance with the License.
6716ba89e7f459f49ea85070d4710c1d79d715298George Mount * You may obtain a copy of the License at
7716ba89e7f459f49ea85070d4710c1d79d715298George Mount *
8716ba89e7f459f49ea85070d4710c1d79d715298George Mount *      http://www.apache.org/licenses/LICENSE-2.0
9716ba89e7f459f49ea85070d4710c1d79d715298George Mount *
10716ba89e7f459f49ea85070d4710c1d79d715298George Mount * Unless required by applicable law or agreed to in writing, software
11716ba89e7f459f49ea85070d4710c1d79d715298George Mount * distributed under the License is distributed on an "AS IS" BASIS,
12716ba89e7f459f49ea85070d4710c1d79d715298George Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13716ba89e7f459f49ea85070d4710c1d79d715298George Mount * See the License for the specific language governing permissions and
14716ba89e7f459f49ea85070d4710c1d79d715298George Mount * limitations under the License.
15716ba89e7f459f49ea85070d4710c1d79d715298George Mount */
16716ba89e7f459f49ea85070d4710c1d79d715298George Mountpackage android.databinding.adapters;
17716ba89e7f459f49ea85070d4710c1d79d715298George Mount
183b920788e90bb0abe615a5d5c899915f0014444bGeorge Mountimport android.databinding.BindingAdapter;
193b920788e90bb0abe615a5d5c899915f0014444bGeorge Mountimport android.databinding.InverseBindingAdapter;
203b920788e90bb0abe615a5d5c899915f0014444bGeorge Mountimport android.databinding.InverseBindingListener;
21716ba89e7f459f49ea85070d4710c1d79d715298George Mountimport android.widget.TabHost;
223b920788e90bb0abe615a5d5c899915f0014444bGeorge Mountimport android.widget.TabHost.OnTabChangeListener;
23716ba89e7f459f49ea85070d4710c1d79d715298George Mount
24716ba89e7f459f49ea85070d4710c1d79d715298George Mountpublic class TabHostBindingAdapter {
253b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount
263b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    @InverseBindingAdapter(attribute = "android:currentTab")
273b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    public static int getCurrentTab(TabHost view) {
283b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount        return view.getCurrentTab();
293b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    }
303b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount
313b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    @InverseBindingAdapter(attribute = "android:currentTab")
323b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    public static String getCurrentTabTag(TabHost view) {
333b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount        return view.getCurrentTabTag();
343b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    }
353b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount
363b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    @BindingAdapter("android:currentTab")
373b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    public static void setCurrentTab(TabHost view, int tab) {
383b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount        if (view.getCurrentTab() != tab) {
393b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount            view.setCurrentTab(tab);
403b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount        }
413b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    }
423b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount
433b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    @BindingAdapter("android:currentTab")
443b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    public static void setCurrentTabTag(TabHost view, String tabTag) {
453b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount        if (view.getCurrentTabTag() != tabTag) {
463b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount            view.setCurrentTabByTag(tabTag);
473b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount        }
483b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    }
493b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount
503b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    @BindingAdapter(value = {"android:onTabChanged", "android:currentTabAttrChanged"},
513b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount            requireAll = false)
523b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    public static void setListeners(TabHost view, final OnTabChangeListener listener,
533b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount            final InverseBindingListener attrChange) {
543b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount        if (attrChange == null) {
553b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount            view.setOnTabChangedListener(listener);
563b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount        } else {
573b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount            view.setOnTabChangedListener(new OnTabChangeListener() {
583b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount                @Override
593b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount                public void onTabChanged(String tabId) {
603b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount                    if (listener != null) {
613b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount                        listener.onTabChanged(tabId);
623b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount                    }
633b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount                    attrChange.onChange();
643b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount                }
653b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount            });
663b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount        }
673b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount    }
68716ba89e7f459f49ea85070d4710c1d79d715298George Mount}
69