* @param colorModes The color mode bit mask.
* @param defaultColorMode The default color mode.
* @return This builder.
+ * <p>
+ * <strong>Note:</strong> On platform version 19 (Kitkat) specifying
+ * only PrintAttributes#COLOR_MODE_MONOCHROME leads to a print spooler
+ * crash. Hence, you should declare either both color modes or
+ * PrintAttributes#COLOR_MODE_COLOR.
+ * </p>
*
* @throws IllegalArgumentException If color modes contains an invalid
* mode bit or if the default color mode is invalid.
// Select the old color mode - nothing really changed.
setColorModeSpinnerSelectionNoCallback(oldColorModeNewIndex);
} else {
- final int selectedColorModeIndex = Integer.numberOfTrailingZeros(
- (colorModes & defaultAttributes.getColorMode()));
- setColorModeSpinnerSelectionNoCallback(selectedColorModeIndex);
- mCurrPrintAttributes.setColorMode(mColorModeSpinnerAdapter
- .getItem(selectedColorModeIndex).value);
- someAttributeSelectionChanged = true;
+ final int selectedColorMode = colorModes & defaultAttributes.getColorMode();
+ final int itemCount = mColorModeSpinnerAdapter.getCount();
+ for (int i = 0; i < itemCount; i++) {
+ SpinnerItem<Integer> item = mColorModeSpinnerAdapter.getItem(i);
+ if (selectedColorMode == item.value) {
+ setColorModeSpinnerSelectionNoCallback(i);
+ mCurrPrintAttributes.setColorMode(selectedColorMode);
+ someAttributeSelectionChanged = true;
+ }
+ }
}
}
mColorModeSpinner.setEnabled(true);