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