1bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell/* 2bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Copyright (C) 2012 The Android Open Source Project 3bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 4bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Licensed under the Apache License, Version 2.0 (the "License"); 5bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * you may not use this file except in compliance with the License. 6bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * You may obtain a copy of the License at 7bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 8bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * http://www.apache.org/licenses/LICENSE-2.0 9bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * 10bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * Unless required by applicable law or agreed to in writing, software 11bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * distributed under the License is distributed on an "AS IS" BASIS, 12bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * See the License for the specific language governing permissions and 14bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell * limitations under the License. 15bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */ 16bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 17da10fdd1400ecfd8d7f2e55651dd528d0614dfc5Jeff Brownpackage android.support.v7.internal.view; 18bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 19bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.content.Context; 20bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.content.res.Resources; 21bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellimport android.content.res.TypedArray; 2289208232f3b5d1451408d787872504a190bc7ee0Chris Banesimport android.os.Build; 23da10fdd1400ecfd8d7f2e55651dd528d0614dfc5Jeff Brownimport android.support.v7.appcompat.R; 24bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 25bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell/** 2620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * Allows components to query for various configuration policy decisions about how the action bar 2720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns * should lay out and behave on the current device. 2889208232f3b5d1451408d787872504a190bc7ee0Chris Banes * 2989208232f3b5d1451408d787872504a190bc7ee0Chris Banes * @hide 30bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell */ 31bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powellpublic class ActionBarPolicy { 32bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 3320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns private Context mContext; 34bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 3520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public static ActionBarPolicy get(Context context) { 3620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns return new ActionBarPolicy(context); 3720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 38bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 3920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns private ActionBarPolicy(Context context) { 4020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns mContext = context; 4120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 42bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 4320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public int getMaxActionButtons() { 4407a07ce59efb770e9fb9ca53a0133e5e64a63bbcChris Banes return mContext.getResources().getInteger(R.integer.abc_max_action_buttons); 4520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 46bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 4720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public boolean showsOverflowMenuButton() { 4889208232f3b5d1451408d787872504a190bc7ee0Chris Banes // Only show overflow on HC+ devices 4989208232f3b5d1451408d787872504a190bc7ee0Chris Banes return Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB; 5020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 51bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 5220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public int getEmbeddedMenuWidthLimit() { 5320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns return mContext.getResources().getDisplayMetrics().widthPixels / 2; 5420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 55bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 5620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public boolean hasEmbeddedTabs() { 5720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns // The embedded tabs policy changed in Jellybean; give older apps the old policy 5820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns // so they get what they expect. 5907a07ce59efb770e9fb9ca53a0133e5e64a63bbcChris Banes return mContext.getResources().getBoolean(R.bool.abc_action_bar_embed_tabs_pre_jb); 60bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell } 61bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 6220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public int getTabContainerHeight() { 6320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns TypedArray a = mContext.obtainStyledAttributes(null, R.styleable.ActionBar, 6420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns R.attr.actionBarStyle, 0); 6520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns int height = a.getLayoutDimension(R.styleable.ActionBar_height, 0); 6620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns Resources r = mContext.getResources(); 6720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns if (!hasEmbeddedTabs()) { 6820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns // Stacked tabs; limit the height 6920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns height = Math.min(height, 7007a07ce59efb770e9fb9ca53a0133e5e64a63bbcChris Banes r.getDimensionPixelSize(R.dimen.abc_action_bar_stacked_max_height)); 7120ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 7220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns a.recycle(); 7320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns return height; 7420ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 7520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns 7620ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public boolean enableHomeButtonByDefault() { 7720ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns // Older apps get the home button interaction enabled by default. 7820ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns // Newer apps need to enable it explicitly. 7920ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns return mContext.getApplicationInfo().targetSdkVersion < 14; // ICE_CREAM_SANDWICH 8020ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 81bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell 8220ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns public int getStackedTabMaxWidth() { 8320ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns return mContext.getResources().getDimensionPixelSize( 8407a07ce59efb770e9fb9ca53a0133e5e64a63bbcChris Banes R.dimen.abc_action_bar_stacked_tab_max_width); 8520ac724a3a836bfd362c911f7dc55a61c02b4d44Trevor Johns } 86bbbb8f39d1b1d1b317c5f9237f20fe6b1d9eb17fAdam Powell} 87