Merge pull request #1005 from NativeScript/ActivityIndicator-color

ActivityIndicator CSS color support fixed
This commit is contained in:
Vladimir Enchev
2015-11-02 11:54:23 +02:00
3 changed files with 56 additions and 0 deletions

View File

@@ -2,6 +2,8 @@
import helper = require("../helper");
import viewModule = require("ui/core/view");
import imageModule = require("ui/image");
import platform = require("platform");
import color = require("color");
// <snippet module="ui/activity-indicator" title="activity-indicator">
// # ActivityIndicator
@@ -55,6 +57,20 @@ export function test_set_TNS_value_updates_native_value() {
helper.buildUIAndRunTest(indicator, 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 ai = new activityIndicatorModule.ActivityIndicator();
ai.color = new color.Color("red");
function testAction(views: Array<viewModule.View>) {
TKUnit.assertEqual(ai.color.ios.CGColor, ai.ios.color.CGColor, "ai.color");
};
helper.buildUIAndRunTest(ai, testAction);
}
}
// This method is only for the code snippet
/* tslint:disable:no-unused-variable */
function binding_busy_to_image() {

View File

@@ -444,6 +444,16 @@ export class TextViewStyler implements definition.stylers.Styler {
}
export class ActivityIndicatorStyler implements definition.stylers.Styler {
private static setColorProperty(view: view.View, newValue: any) {
var bar = <android.widget.ProgressBar>view._nativeView;
bar.getIndeterminateDrawable().setColorFilter(newValue, android.graphics.PorterDuff.Mode.SRC_IN);
}
private static resetColorProperty(view: view.View, nativeValue: number) {
var bar = <android.widget.ProgressBar>view._nativeView;
bar.getIndeterminateDrawable().clearColorFilter();
}
//Visibility methods
public static setActivityIndicatorVisibilityProperty(view: view.View, newValue: any) {
ActivityIndicatorStyler.setIndicatorVisibility((<any>view).busy, newValue, view._nativeView);
@@ -463,6 +473,10 @@ export class ActivityIndicatorStyler implements definition.stylers.Styler {
}
public static registerHandlers() {
style.registerHandler(style.colorProperty, new stylersCommon.StylePropertyChangedHandler(
ActivityIndicatorStyler.setColorProperty,
ActivityIndicatorStyler.resetColorProperty), "ActivityIndicator");
style.registerHandler(style.visibilityProperty, new stylersCommon.StylePropertyChangedHandler(
ActivityIndicatorStyler.setActivityIndicatorVisibilityProperty,
ActivityIndicatorStyler.resetActivityIndicatorVisibilityProperty), "ActivityIndicator");

View File

@@ -499,6 +499,31 @@ export class SegmentedBarStyler implements definition.stylers.Styler {
}
}
export class ActivityIndicatorStyler implements definition.stylers.Styler {
//Text color methods
private static setColorProperty(view: view.View, newValue: any) {
var bar = <UIActivityIndicatorView>view.ios;
bar.color = newValue;
}
private static resetColorProperty(view: view.View, nativeValue: any) {
var bar = <UIActivityIndicatorView>view.ios;
bar.color = nativeValue;
}
private static getNativeColorValue(view: view.View): any {
var bar = <UIActivityIndicatorView>view.ios;
return bar.color;
}
public static registerHandlers() {
style.registerHandler(style.colorProperty, new stylersCommon.StylePropertyChangedHandler(
ActivityIndicatorStyler.setColorProperty,
ActivityIndicatorStyler.resetColorProperty,
ActivityIndicatorStyler.getNativeColorValue), "ActivityIndicator");
}
}
export class ProgressStyler implements definition.stylers.Styler {
//Text color methods
private static setColorProperty(view: view.View, newValue: any) {
@@ -774,4 +799,5 @@ export function _registerDefaultStylers() {
ProgressStyler.registerHandlers();
SwitchStyler.registerHandlers();
TextFieldStyler.registerHandlers();
ActivityIndicatorStyler.registerHandlers();
}