138a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam/* 238a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * Copyright (C) 2015 The Android Open Source Project 338a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * 438a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * Licensed under the Apache License, Version 2.0 (the "License"); 538a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * you may not use this file except in compliance with the License. 638a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * You may obtain a copy of the License at 738a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * 838a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * http://www.apache.org/licenses/LICENSE-2.0 938a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * 1038a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * Unless required by applicable law or agreed to in writing, software 1138a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * distributed under the License is distributed on an "AS IS" BASIS, 1238a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIN'D, either express or implied. 1338a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * See the License for the specific language governing permissions and 1438a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * limitations under the License. 1538a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam */ 1638a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam 1738a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lampackage com.android.setupwizardlib.util; 1838a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam 1938a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lamimport android.content.Context; 2038a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lamimport android.content.res.TypedArray; 2138a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lamimport android.graphics.drawable.Drawable; 2238a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lamimport android.os.Bundle; 2338a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lamimport android.support.v7.widget.LinearLayoutManager; 2438a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lamimport android.support.v7.widget.RecyclerView; 2538a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lamimport android.view.LayoutInflater; 2638a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lamimport android.view.View; 2738a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lamimport android.view.ViewGroup; 2838a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lamimport android.widget.ImageView; 2938a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lamimport android.widget.TextView; 3038a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam 3138a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lamimport com.android.setupwizardlib.R; 3238a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lamimport com.android.setupwizardlib.view.HeaderRecyclerView; 3338a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam 3438a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam/** 3538a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * A helper delegate to integrate GLIF theme with PreferenceFragment v14. To use this, create an 3638a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * instance and delegate {@code PreferenceFragment#onCreateRecyclerView} to it. Then call 3738a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * {@code PreferenceFragment#setDivider} to {@link #getDividerDrawable(android.content.Context)} in 3838a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam * order to make sure the correct inset is applied to the dividers. 3984979a6b2874d09762404c3c8a902f4aad016d01Maurice Lam * 4084979a6b2874d09762404c3c8a902f4aad016d01Maurice Lam * @deprecated Use {@link com.android.setupwizardlib.GlifPreferenceLayout} 4138a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam */ 4284979a6b2874d09762404c3c8a902f4aad016d01Maurice Lam@Deprecated 4338a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lampublic class GlifPreferenceDelegate { 4438a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam 4538a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam public static final int[] ATTRS_LIST_DIVIDER = new int[]{ android.R.attr.listDivider }; 4638a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam 4738a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam private HeaderRecyclerView mRecyclerView; 4838a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam private boolean mHasIcons; 4938a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam 5038a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam public GlifPreferenceDelegate(boolean hasIcons) { 5138a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam mHasIcons = hasIcons; 5238a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam } 5338a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam 5438a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent, 5538a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam Bundle savedInstanceState) { 5638a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam final Context inflaterContext = inflater.getContext(); 5738a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam mRecyclerView = new HeaderRecyclerView(inflaterContext); 5838a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam mRecyclerView.setLayoutManager(new LinearLayoutManager(inflaterContext)); 5938a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam final View header = inflater.inflate(R.layout.suw_glif_header, mRecyclerView, false); 6038a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam mRecyclerView.setHeader(header); 6138a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam return mRecyclerView; 6238a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam } 6338a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam 6438a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam public Drawable getDividerDrawable(Context context) { 6538a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam final TypedArray a = context.obtainStyledAttributes(ATTRS_LIST_DIVIDER); 6638a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam final Drawable defaultDivider = a.getDrawable(0); 6738a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam a.recycle(); 6838a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam 6938a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam final int dividerInset = context.getResources().getDimensionPixelSize( 7015391fc05a0fc45e9af85b653abffa41df575e91Maurice Lam mHasIcons ? R.dimen.suw_items_glif_icon_divider_inset 7115391fc05a0fc45e9af85b653abffa41df575e91Maurice Lam : R.dimen.suw_items_glif_text_divider_inset); 7238a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam return DrawableLayoutDirectionHelper.createRelativeInsetDrawable(defaultDivider, 7338a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam dividerInset /* start */, 0 /* top */, 0 /* end */, 0 /* bottom */, 7438a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam context); 7538a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam } 7638a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam 7738a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam public void setHeaderText(CharSequence text) { 7838a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam final View header = mRecyclerView.getHeader(); 7938a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam 8038a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam final View titleView = header.findViewById(R.id.suw_layout_title); 8138a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam if (titleView instanceof TextView) { 8238a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam ((TextView) titleView).setText(text); 8338a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam } 8438a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam } 8538a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam 8638a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam public void setIcon(Drawable icon) { 8738a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam final View header = mRecyclerView.getHeader(); 8838a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam 8938a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam final View iconView = header.findViewById(R.id.suw_layout_icon); 9038a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam if (iconView instanceof ImageView) { 9138a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam ((ImageView) iconView).setImageDrawable(icon); 9238a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam } 9338a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam } 9438a3832bf55aeb5dc24904d4d1ddf391dffa7d7bMaurice Lam} 95