progress css support for color and backgroundColor added

This commit is contained in:
Vladimir Enchev
2015-10-20 12:53:48 +03:00
parent 23fc515aad
commit 384ba9c965
3 changed files with 120 additions and 0 deletions

View File

@ -2,6 +2,9 @@
import helper = require("../helper");
import viewModule = require("ui/core/view");
import observable = require("data/observable");
import color = require("color");
import platform = require("platform");
// <snippet module="ui/progress" title="progress">
// # Progress
// Using the progress view requires the Progress module.
@ -70,6 +73,31 @@ export function test_set_value_greater_than_max_should_set_value_to_max() {
helper.buildUIAndRunTest(progress, testAction);
}
// Uncomment this when find way to check android Drawable color set by setColorFilter() method.
if (platform.device.os === platform.platformNames.ios) {
exports.test_set_color = function () {
var progress = new progressModule.Progress();
progress.color = new color.Color("red");
function testAction(views: Array<viewModule.View>) {
TKUnit.assertEqual(progress.color.ios.CGColor, progress.ios.progressTintColor.CGColor, "progress.color");
};
helper.buildUIAndRunTest(progress, testAction);
}
exports.test_set_backgroundColor = function () {
var progress = new progressModule.Progress();
progress.backgroundColor = new color.Color("red");
function testAction(views: Array<viewModule.View>) {
TKUnit.assertEqual(progress.backgroundColor.ios.CGColor, progress.ios.trackTintColor.CGColor, "progress.color");
};
helper.buildUIAndRunTest(progress, testAction);
}
}
export function test_set_maxValue_should_adjust_value() {
var progress = new progressModule.Progress();

View File

@ -505,6 +505,51 @@ export class SegmentedBarStyler implements definition.stylers.Styler {
}
}
export class ProgressStyler implements definition.stylers.Styler {
private static setColorProperty(view: view.View, newValue: any) {
var bar = <android.widget.ProgressBar>view._nativeView;
bar.getProgressDrawable().setColorFilter(newValue, android.graphics.PorterDuff.Mode.SRC_IN);
}
private static resetColorProperty(view: view.View, nativeValue: number) {
var bar = <android.widget.ProgressBar>view._nativeView;
bar.getProgressDrawable().clearColorFilter();
}
private static setBackgroundAndBorderProperty(view: view.View, newValue: any) {
var bar = <android.widget.ProgressBar>view._nativeView;
var progressDrawable = <android.graphics.drawable.LayerDrawable>bar.getProgressDrawable();
if (progressDrawable.getNumberOfLayers && progressDrawable.getNumberOfLayers() > 0) {
var backgroundDrawable = progressDrawable.getDrawable(0);
if (backgroundDrawable) {
backgroundDrawable.setColorFilter(newValue, android.graphics.PorterDuff.Mode.SRC_IN);
}
}
}
private static resetBackgroundAndBorderProperty(view: view.View, nativeValue: number) {
var bar = <android.widget.ProgressBar>view._nativeView;
// Do nothing.
}
public static registerHandlers() {
style.registerHandler(style.colorProperty, new stylersCommon.StylePropertyChangedHandler(
ProgressStyler.setColorProperty,
ProgressStyler.resetColorProperty), "Progress");
var borderHandler = new stylersCommon.StylePropertyChangedHandler(
ProgressStyler.setBackgroundAndBorderProperty,
ProgressStyler.resetBackgroundAndBorderProperty);
style.registerHandler(style.backgroundColorProperty, borderHandler, "Progress");
style.registerHandler(style.borderWidthProperty, borderHandler, "Progress");
style.registerHandler(style.borderColorProperty, borderHandler, "Progress");
style.registerHandler(style.borderRadiusProperty, borderHandler, "Progress");
style.registerHandler(style.backgroundInternalProperty, borderHandler, "Progress");
}
}
export class SearchBarStyler implements definition.stylers.Styler {
private static getBackgroundColorProperty(view: view.View): any {
@ -703,4 +748,5 @@ export function _registerDefaultStylers() {
SearchBarStyler.registerHandlers();
ActionBarStyler.registerHandlers();
TabViewStyler.registerHandlers();
ProgressStyler.registerHandlers();
}

View File

@ -394,6 +394,51 @@ export class SegmentedBarStyler implements definition.stylers.Styler {
}
}
export class ProgressStyler implements definition.stylers.Styler {
//Text color methods
private static setColorProperty(view: view.View, newValue: any) {
var bar = <UIProgressView>view.ios;
bar.progressTintColor = newValue;
}
private static resetColorProperty(view: view.View, nativeValue: any) {
var bar = <UIProgressView>view.ios;
bar.progressTintColor = nativeValue;
}
private static getNativeColorValue(view: view.View): any {
var bar = <UIProgressView>view.ios;
return bar.progressTintColor;
}
private static setBackgroundColorProperty(view: view.View, newValue: any) {
var bar = <UIProgressView>view.ios;
bar.trackTintColor = newValue;
}
private static resetBackgroundColorProperty(view: view.View, nativeValue: any) {
var bar = <UIProgressView>view.ios;
bar.trackTintColor = nativeValue;
}
private static getBackgroundColorProperty(view: view.View): any {
var bar = <UIProgressView>view.ios;
return bar.trackTintColor;
}
public static registerHandlers() {
style.registerHandler(style.colorProperty, new stylersCommon.StylePropertyChangedHandler(
ProgressStyler.setColorProperty,
ProgressStyler.resetColorProperty,
ProgressStyler.getNativeColorValue), "Progress");
style.registerHandler(style.backgroundColorProperty, new stylersCommon.StylePropertyChangedHandler(
ProgressStyler.setBackgroundColorProperty,
ProgressStyler.resetBackgroundColorProperty,
ProgressStyler.getBackgroundColorProperty), "Progress");
}
}
export class SearchBarStyler implements definition.stylers.Styler {
private static setBackgroundColorProperty(view: view.View, newValue: any) {
@ -547,4 +592,5 @@ export function _registerDefaultStylers() {
SearchBarStyler.registerHandlers();
ActionBarStyler.registerHandlers();
TabViewStyler.registerHandlers();
ProgressStyler.registerHandlers();
}