• 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 
from(MenuItem item)44         public Builder from(MenuItem item) {
45             mId = item.mId;
46             mTitle = item.mDisplayName;
47             mDescriptionGetter = item.mDisplayDescriptionTextGetter;
48             mImageUriGetter = item.mImageUriGetter;
49             mIntent = item.mIntent;
50             return this;
51         }
52 
id(int id)53         public Builder id(int id) {
54             mId = id;
55             return this;
56         }
57 
title(String title)58         public Builder title(String title) {
59             mTitle = title;
60             return this;
61         }
62 
descriptionGetter(TextGetter descriptionGetter)63         public Builder descriptionGetter(TextGetter descriptionGetter) {
64             mDescriptionGetter = descriptionGetter;
65             return this;
66         }
67 
description(String description)68         public Builder description(String description) {
69             return descriptionGetter(new MenuItem.ConstantTextGetter(description));
70         }
71 
imageUriGetter(UriGetter imageUriGetter)72         public Builder imageUriGetter(UriGetter imageUriGetter) {
73             mImageUriGetter = imageUriGetter;
74             return this;
75         }
76 
imageResourceId(Context context, int imageResourceId)77         public Builder imageResourceId(Context context, int imageResourceId) {
78             return imageUri(
79                     UriUtils.getAndroidResourceUri(context.getResources(), imageResourceId));
80         }
81 
imageUri(String uri)82         public Builder imageUri(String uri) {
83             return imageUriGetter(new MenuItem.ConstantUriGetter(uri));
84         }
85 
intent(Intent intent)86         public Builder intent(Intent intent) {
87             mIntent = intent;
88             return this;
89         }
90 
build()91         public MenuItem build() {
92             return new MenuItem(mId, mTitle, mDescriptionGetter, mImageUriGetter,
93                     mIntent);
94         }
95     }
96 
97     private static class ConstantUriGetter implements MenuItem.UriGetter {
98 
99         private final String mUri;
100 
ConstantUriGetter(String uri)101         public ConstantUriGetter(String uri) {
102             mUri = uri;
103         }
104 
105         @Override
getUri()106         public String getUri() {
107             return mUri;
108         }
109     }
110 
111     private static class ConstantTextGetter implements MenuItem.TextGetter {
112 
113         private final String mText;
114 
ConstantTextGetter(String text)115         public ConstantTextGetter(String text) {
116             mText = text;
117         }
118 
119         @Override
getText()120         public String getText() {
121             return mText;
122         }
123     }
124 
125     private final int mId;
126     private final String mDisplayName;
127     private final TextGetter mDisplayDescriptionTextGetter;
128     private final UriGetter mImageUriGetter;
129     private final Intent mIntent;
130 
MenuItem(int id, String displayName, TextGetter displayDescriptionTextGetter, UriGetter imageUriGetter, Intent intent)131     private MenuItem(int id, String displayName,
132             TextGetter displayDescriptionTextGetter, UriGetter imageUriGetter,
133             Intent intent) {
134         mId = id;
135         mDisplayName = displayName;
136         mDisplayDescriptionTextGetter = displayDescriptionTextGetter;
137         mImageUriGetter = imageUriGetter;
138         mIntent = intent;
139     }
140 
getId()141     public int getId() {
142         return mId;
143     }
144 
getTitle()145     public String getTitle() {
146         return mDisplayName;
147     }
148 
getDescriptionGetter()149     public TextGetter getDescriptionGetter() {
150         return mDisplayDescriptionTextGetter;
151     }
152 
getImageUriGetter()153     public UriGetter getImageUriGetter() {
154         return mImageUriGetter;
155     }
156 
getIntent()157     public Intent getIntent() {
158         return mIntent;
159     }
160 }
161