aboutsummaryrefslogtreecommitdiff
path: root/src/com/android/tv/menu/MenuRow.java
blob: 6f98e6152acb3caf066607a92d55fd09fef4f6d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.tv.menu;

import android.content.Context;
import android.view.View;

/**
 * A base class of the item which will be displayed in the main menu.
 * It contains the data such as title to represent a row.
 * This is an abstract class and the sub-class could have it's own data for
 * the row.
 */
public abstract class MenuRow {
    private final Context mContext;
    private final String mTitle;
    private final int mHeight;
    private final Menu mMenu;

    private MenuRowView mMenuRowView;

    // TODO: Check if the heightResId is really necessary.
    public MenuRow(Context context, Menu menu, int titleResId, int heightResId) {
        this(context, menu, context.getString(titleResId), heightResId);
    }

    public MenuRow(Context context, Menu menu, String title, int heightResId) {
        mContext = context;
        mTitle = title;
        mMenu = menu;
        mHeight = context.getResources().getDimensionPixelSize(heightResId);
    }

    /**
     * Returns the context.
     */
    protected Context getContext() {
        return mContext;
    }

    /**
     * Returns the menu object.
     */
    public Menu getMenu() {
        return mMenu;
    }

    /**
     * Returns the title of this row.
     */
    public String getTitle() {
        return mTitle;
    }

    /**
     * Returns the height of this row.
     */
    public int getHeight() {
        return mHeight;
    }

    /**
     * Sets the menu row view.
     */
    public void setMenuRowView(MenuRowView menuRowView) {
        mMenuRowView = menuRowView;
    }

    /**
     * Returns the menu row view.
     */
    protected MenuRowView getMenuRowView() {
        return mMenuRowView;
    }

    /**
     * Updates the contents in this row.
     * This method is called only by the menu when necessary.
     */
    abstract public void update();

    /**
     * Indicates whether this row is shown in the menu.
     */
    public boolean isVisible() {
        return true;
    }

    /**
     * Releases all the resources which need to be released.
     * This method is called when the main menu is not available any more.
     */
    public void release() {
    }

    /**
     * Returns the ID of the layout resource for this row.
     */
    abstract public int getLayoutResId();

    /**
     * Returns the ID of this row. This ID is used to select the row in the main menu.
     */
    abstract public String getId();

    /**
     * This method is called when recent channels are changed.
     */
    public void onRecentChannelsChanged() { }

    /**
     * This method is called when stream information is changed.
     */
    public void onStreamInfoChanged() { }

    /**
     * Returns whether to hide the title when the row is selected.
     */
    public boolean hideTitleWhenSelected() {
        return false;
    }
}