165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko/*
265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Copyright (C) 2016 The Android Open Source Project
365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko *
465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Licensed under the Apache License, Version 2.0 (the "License");
565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * you may not use this file except in compliance with the License.
665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * You may obtain a copy of the License at
765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko *
865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko *      http://www.apache.org/licenses/LICENSE-2.0
965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko *
1065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Unless required by applicable law or agreed to in writing, software
1165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * distributed under the License is distributed on an "AS IS" BASIS,
1265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * See the License for the specific language governing permissions and
1465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * limitations under the License.
1565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko */
1665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko
1765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkopackage com.android.tv.ui;
1865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko
1965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.content.Context;
2065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.support.v17.leanback.app.GuidedStepFragment;
2165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.support.v17.leanback.widget.GuidedAction;
2265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport android.support.v17.leanback.widget.GuidedActionsStylist;
2365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko
2465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkoimport com.android.tv.R;
2565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko
2665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko/**
2765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko * Extended stylist class used for {@link GuidedStepFragment} with divider support.
2865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko */
2965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalkopublic class GuidedActionsStylistWithDivider extends GuidedActionsStylist {
3065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko    /**
3165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko     * ID used mark a divider.
3265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko     */
3365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko    public static final int ACTION_DIVIDER = -100;
3465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko    private static final int VIEW_TYPE_DIVIDER = 1;
3565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko
3665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko    @Override
3765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko    public int getItemViewType(GuidedAction action) {
3865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko        if (action.getId() == ACTION_DIVIDER) {
3965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko            return VIEW_TYPE_DIVIDER;
4065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko        }
4165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko        return super.getItemViewType(action);
4265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko    }
4365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko
4465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko    @Override
4565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko    public int onProvideItemLayoutId(int viewType) {
4665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko        if (viewType == VIEW_TYPE_DIVIDER) {
4765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko            return R.layout.guided_action_divider;
4865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko        }
4965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko        return super.onProvideItemLayoutId(viewType);
5065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko    }
5165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko
5265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko    /**
5365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko     * Creates a divider for {@link GuidedStepFragment}, targeted fragments must use
5465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko     * {@link GuidedActionsStylistWithDivider} as its actions' stylist for divider to work.
5565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko     */
5665fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko    public static GuidedAction createDividerAction(Context context) {
5765fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko        return new GuidedAction.Builder(context)
5865fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko                .id(ACTION_DIVIDER)
5965fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko                .title(null)
6065fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko                .description(null)
6165fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko                .focusable(false)
6265fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko                .infoOnly(true)
6365fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko                .build();
6465fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko    }
6565fda1eaa94968bb55d5ded10dcb0b3f37fb05f2Nick Chalko}
66