• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2014 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.tv.settings;
18 
19 import android.content.Context;
20 import android.content.Intent;
21 
22 import com.android.tv.settings.util.UriUtils;
23 
24 /**
25  * Represents a Menu Item
26  */
27 public class MenuItem {
28 
29     public interface UriGetter {
getUri()30         String getUri();
31     }
32 
33     public interface TextGetter {
getText()34         String getText();
35     }
36 
37     public static class Builder {
38         private int mId;
39         private String mTitle;
40         private TextGetter mDescriptionGetter;
41         private UriGetter mImageUriGetter;
42         private Intent mIntent;
43 
id(int id)44         public Builder id(int id) {
45             mId = id;
46             return this;
47         }
48 
title(String title)49         public Builder title(String title) {
50             mTitle = title;
51             return this;
52         }
53 
descriptionGetter(TextGetter descriptionGetter)54         public Builder descriptionGetter(TextGetter descriptionGetter) {
55             mDescriptionGetter = descriptionGetter;
56             return this;
57         }
58 
description(String description)59         public Builder description(String description) {
60             return descriptionGetter(new MenuItem.ConstantTextGetter(description));
61         }
62 
imageUriGetter(UriGetter imageUriGetter)63         public Builder imageUriGetter(UriGetter imageUriGetter) {
64             mImageUriGetter = imageUriGetter;
65             return this;
66         }
67 
imageResourceId(Context context, int imageResourceId)68         public Builder imageResourceId(Context context, int imageResourceId) {
69             return imageUri(
70                     UriUtils.getAndroidResourceUri(context.getResources(), imageResourceId));
71         }
72 
imageUri(String uri)73         public Builder imageUri(String uri) {
74             return imageUriGetter(new MenuItem.ConstantUriGetter(uri));
75         }
76 
intent(Intent intent)77         public Builder intent(Intent intent) {
78             mIntent = intent;
79             return this;
80         }
81 
build()82         public MenuItem build() {
83             return new MenuItem(mId, mTitle, mDescriptionGetter, mImageUriGetter,
84                     mIntent);
85         }
86     }
87 
88     private static class ConstantUriGetter implements MenuItem.UriGetter {
89 
90         private final String mUri;
91 
ConstantUriGetter(String uri)92         public ConstantUriGetter(String uri) {
93             mUri = uri;
94         }
95 
96         @Override
getUri()97         public String getUri() {
98             return mUri;
99         }
100     }
101 
102     private static class ConstantTextGetter implements MenuItem.TextGetter {
103 
104         private final String mText;
105 
ConstantTextGetter(String text)106         public ConstantTextGetter(String text) {
107             mText = text;
108         }
109 
110         @Override
getText()111         public String getText() {
112             return mText;
113         }
114     }
115 
116     private final int mId;
117     private final String mDisplayName;
118     private final TextGetter mDisplayDescriptionTextGetter;
119     private final UriGetter mImageUriGetter;
120     private final Intent mIntent;
121 
MenuItem(int id, String displayName, TextGetter displayDescriptionTextGetter, UriGetter imageUriGetter, Intent intent)122     private MenuItem(int id, String displayName,
123             TextGetter displayDescriptionTextGetter, UriGetter imageUriGetter,
124             Intent intent) {
125         mId = id;
126         mDisplayName = displayName;
127         mDisplayDescriptionTextGetter = displayDescriptionTextGetter;
128         mImageUriGetter = imageUriGetter;
129         mIntent = intent;
130     }
131 
getId()132     public long getId() {
133         return mId;
134     }
135 
getTitle()136     public String getTitle() {
137         return mDisplayName;
138     }
139 
getDescriptionGetter()140     public TextGetter getDescriptionGetter() {
141         return mDisplayDescriptionTextGetter;
142     }
143 
getImageUriGetter()144     public UriGetter getImageUriGetter() {
145         return mImageUriGetter;
146     }
147 
getIntent()148     public Intent getIntent() {
149         return mIntent;
150     }
151 }
152