in designer/src/com/android/tools/idea/actions/ThemeSelectionPanel.java [235:356]
private List<String> getThemes(@Nullable ThemeCategory category) {
if (category == null) {
return Collections.emptyList();
}
List<String> themes = myThemeMap.get(category);
if (themes != null) {
return themes;
}
themes = new ArrayList<>(50);
switch (category) {
case RECENT:
if (ourRecent != null) {
themes.addAll(ourRecent);
}
break;
case HOLO:
for (String theme : myFrameworkThemes) {
if (theme.startsWith(HOLO_PREFIX) && !theme.startsWith(HOLO_LIGHT_PREFIX)) {
themes.add(theme);
}
}
break;
case HOLO_LIGHT:
for (String theme : myFrameworkThemes) {
if (theme.startsWith(HOLO_LIGHT_PREFIX)) {
themes.add(theme);
}
}
break;
case MATERIAL:
for (String theme : myFrameworkThemes) {
if (theme.startsWith(MATERIAL_PREFIX) && !theme.startsWith(MATERIAL_LIGHT_PREFIX)) {
themes.add(theme);
}
}
break;
case MATERIAL_LIGHT:
for (String theme : myFrameworkThemes) {
if (theme.startsWith(MATERIAL_LIGHT_PREFIX)) {
themes.add(theme);
}
}
break;
case PROJECT:
themes.addAll(myProjectThemes);
break;
case CLASSIC:
for (String theme : myFrameworkThemes) {
if (!theme.startsWith(HOLO_PREFIX) && !theme.startsWith(DEVICE_PREFIX)) {
themes.add(theme);
}
}
break;
case CLASSIC_LIGHT:
for (String theme : myFrameworkThemes) {
if (theme.startsWith(LIGHT_PREFIX)) {
themes.add(theme);
}
}
break;
case LIGHT:
for (String theme : myFrameworkThemes) {
if (theme.startsWith(HOLO_LIGHT_PREFIX) || theme.startsWith(LIGHT_PREFIX) || theme.startsWith(DEVICE_LIGHT_PREFIX)
|| theme.startsWith(MATERIAL_LIGHT_PREFIX)) {
themes.add(theme);
}
}
for (String theme : myLibraryThemes) {
if (theme.startsWith(HOLO_LIGHT_PREFIX) || theme.startsWith(LIGHT_PREFIX) || theme.startsWith(DEVICE_LIGHT_PREFIX)
|| theme.startsWith(MATERIAL_LIGHT_PREFIX)) {
themes.add(theme);
}
}
break;
case DEVICE:
for (String theme : myFrameworkThemes) {
if (theme.startsWith(DEVICE_PREFIX)) {
themes.add(theme);
}
}
break;
case DIALOGS:
for (String theme : myProjectThemes) {
if (theme.endsWith(DIALOG_SUFFIX) || theme.contains(DIALOG_PART)) {
themes.add(theme);
}
}
for (String theme : myFrameworkThemes) {
if (theme.endsWith(DIALOG_SUFFIX) || theme.contains(DIALOG_PART)) {
themes.add(theme);
}
}
for (String theme : myLibraryThemes) {
if (theme.endsWith(DIALOG_SUFFIX) || theme.contains(DIALOG_PART)) {
themes.add(theme);
}
}
break;
case MANIFEST: {
collectThemesFromManifest(myConfiguration.getConfigModule())
.sorted()
.map(ResolutionUtils::getQualifiedNameFromResourceUrl)
.forEach(themes::add);
break;
}
case ALL:
themes.addAll(myProjectThemes);
themes.addAll(myFrameworkThemes);
themes.addAll(myLibraryThemes);
break;
case ROOT:
default:
assert false : category;
break;
}
myThemeMap.put(category, themes);
return themes;
}