From 716ea68035619e8eb3bd88e04638bb9166eec0a8 Mon Sep 17 00:00:00 2001 From: Vladimir Enchev Date: Fri, 30 Oct 2015 16:30:52 +0200 Subject: [PATCH 1/2] ActivityIndicator CSS color support fixed --- ui/styling/stylers.android.ts | 14 ++++++++++++++ ui/styling/stylers.ios.ts | 26 ++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/ui/styling/stylers.android.ts b/ui/styling/stylers.android.ts index 265b2f356..147f9bf8c 100644 --- a/ui/styling/stylers.android.ts +++ b/ui/styling/stylers.android.ts @@ -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 = view._nativeView; + bar.getIndeterminateDrawable().setColorFilter(newValue, android.graphics.PorterDuff.Mode.SRC_IN); + } + + private static resetColorProperty(view: view.View, nativeValue: number) { + var bar = view._nativeView; + bar.getIndeterminateDrawable().clearColorFilter(); + } + //Visibility methods public static setActivityIndicatorVisibilityProperty(view: view.View, newValue: any) { ActivityIndicatorStyler.setIndicatorVisibility((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"); diff --git a/ui/styling/stylers.ios.ts b/ui/styling/stylers.ios.ts index 0ded477d7..3009aa246 100644 --- a/ui/styling/stylers.ios.ts +++ b/ui/styling/stylers.ios.ts @@ -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 = view.ios; + bar.color = newValue; + } + + private static resetColorProperty(view: view.View, nativeValue: any) { + var bar = view.ios; + bar.color = nativeValue; + } + + private static getNativeColorValue(view: view.View): any { + var bar = 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(); } From c47b53847e90fb0e1667dcf05ca029dbf5cc8186 Mon Sep 17 00:00:00 2001 From: Vladimir Enchev Date: Mon, 2 Nov 2015 08:50:21 +0200 Subject: [PATCH 2/2] test added --- .../activity-indicator-tests.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/apps/tests/ui/activity-indicator/activity-indicator-tests.ts b/apps/tests/ui/activity-indicator/activity-indicator-tests.ts index 60bf47216..ced172153 100644 --- a/apps/tests/ui/activity-indicator/activity-indicator-tests.ts +++ b/apps/tests/ui/activity-indicator/activity-indicator-tests.ts @@ -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"); //  // # 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) { + 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() {