Files
frameworks_base/packages/DocumentsUI/src/com/android/documentsui/MimePredicate.java
Jeff Sharkey ae9b51bfa3 Refactoring of DocumentsContract.
Combines related columns and constants onto the same class so they
are easier to discover.  Move back to surfacing roots with columns
so they are consistent with documents.

Advanced roots are represented with a flag instead of distinct
types.  Flags to indicate supporting of well-known media types,
instead of arbitrary an MIME filter.  Reintroduce well-formed rootId
to support recents.

Always use the expanded version of "documents" in constants, methods,
and argument names.

Refactor DocumentProvider method names to clearly distinguish if
a single item or multiple could be returned, and of which type.  Add
documentation to clearly define which methods have already been
overridden.

Bug: 10567506, 10567557
Change-Id: I981f26ab82f2b520a19aa1ce66f659de50d7fac0
2013-08-31 16:58:28 -07:00

65 lines
1.9 KiB
Java

/*
* Copyright (C) 2013 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.documentsui;
import com.android.documentsui.model.DocumentInfo;
import com.android.internal.util.Predicate;
public class MimePredicate implements Predicate<DocumentInfo> {
private final String[] mFilters;
public MimePredicate(String[] filters) {
mFilters = filters;
}
@Override
public boolean apply(DocumentInfo doc) {
if (doc.isDirectory()) {
return true;
}
for (String filter : mFilters) {
if (mimeMatches(filter, doc.mimeType)) {
return true;
}
}
return false;
}
public static boolean mimeMatches(String filter, String[] tests) {
for (String test : tests) {
if (mimeMatches(filter, test)) {
return true;
}
}
return false;
}
public static boolean mimeMatches(String filter, String test) {
if (test == null) {
return false;
} else if (filter.equals(test)) {
return true;
} else if ("*/*".equals(filter)) {
return true;
} else if (filter.endsWith("/*")) {
return filter.regionMatches(0, test, 0, filter.indexOf('/'));
} else {
return false;
}
}
}