aboutsummaryrefslogtreecommitdiff
path: root/src/com/android/tv/search/TvProviderSearch.java
diff options
context:
space:
mode:
authorChulwoo Lee <chulwoo@google.com>2014-06-07 18:44:19 +0900
committerChulwoo Lee <chulwoo@google.com>2014-06-09 10:49:33 +0900
commita4e80f54bf945b6601982ee2a74f44fa3f132889 (patch)
tree0cd35c4419b0cdb59e7292a26b9acf80ce9453a7 /src/com/android/tv/search/TvProviderSearch.java
parenta676c4113118e0c662a72c84de944384c569f032 (diff)
downloadTV-a4e80f54bf945b6601982ee2a74f44fa3f132889.tar.gz
Apply query limit in local search
Change-Id: I71e5a53462aa27fe1d9f996f4b5d1bf0d9bfab31
Diffstat (limited to 'src/com/android/tv/search/TvProviderSearch.java')
-rw-r--r--src/com/android/tv/search/TvProviderSearch.java30
1 files changed, 21 insertions, 9 deletions
diff --git a/src/com/android/tv/search/TvProviderSearch.java b/src/com/android/tv/search/TvProviderSearch.java
index 718de28c..0027dac2 100644
--- a/src/com/android/tv/search/TvProviderSearch.java
+++ b/src/com/android/tv/search/TvProviderSearch.java
@@ -28,43 +28,50 @@ import java.util.ArrayList;
import java.util.List;
public class TvProviderSearch {
- public static List<SearchResult> search(Context context, String query) {
+ public static List<SearchResult> search(Context context, String query, int limit) {
List<SearchResult> results = new ArrayList<SearchResult>();
results.addAll(searchChannels(context, query, new String[] {
Channels.COLUMN_DISPLAY_NAME,
Channels.COLUMN_DESCRIPTION
- }));
+ }, limit));
+ if (results.size() >= limit) {
+ return results;
+ }
+
+ limit -= results.size();
results.addAll(searchPrograms(context, query, new String[] {
Programs.COLUMN_TITLE,
Programs.COLUMN_SHORT_DESCRIPTION
- }));
+ }, limit));
return results;
}
private static List<SearchResult> searchChannels(Context context, String query,
- String[] columnNames) {
+ String[] columnNames, int limit) {
String[] projection = {
Channels._ID,
Channels.COLUMN_DISPLAY_NAME,
Channels.COLUMN_DESCRIPTION,
};
- return search(context, Channels.CONTENT_URI, projection, query, columnNames);
+
+ return search(context, Channels.CONTENT_URI, projection, query, columnNames, limit);
}
// TODO: Consider the case when the searched programs are already ended or the user select a
// searched program which doesn't air right now.
private static List<SearchResult> searchPrograms(Context context, String query,
- String[] columnNames) {
+ String[] columnNames, final int limit) {
String[] projection = {
Programs.COLUMN_CHANNEL_ID,
Programs.COLUMN_TITLE,
Programs.COLUMN_SHORT_DESCRIPTION,
};
- return search(context, Programs.CONTENT_URI, projection, query, columnNames);
+
+ return search(context, Programs.CONTENT_URI, projection, query, columnNames, limit);
}
private static List<SearchResult> search(Context context, Uri uri, String[] projection,
- String query, String[] columnNames) {
+ String query, String[] columnNames, int limit) {
List<SearchResult> results = new ArrayList<SearchResult>();
StringBuilder sb = new StringBuilder("1=0");
@@ -84,8 +91,9 @@ public class TvProviderSearch {
null);
if (cursor != null) {
// TODO: Need to add image when available.
+ int count = 0;
while (cursor.moveToNext()) {
- int id = cursor.getInt(0);
+ long id = cursor.getLong(0);
String title = cursor.getString(1);
String description = cursor.getString(2);
@@ -97,6 +105,10 @@ public class TvProviderSearch {
.toString())
.build();
results.add(result);
+
+ if (++count >= limit) {
+ break;
+ }
}
}
} finally {