Merge pull request #974 from NativeScript/switch-css

Switch color and background-color css support added
This commit is contained in:
Vladimir Enchev
2015-10-22 13:14:18 +03:00
8 changed files with 137 additions and 5 deletions

View File

@@ -71,6 +71,7 @@ declare module "ui/styling/style" {
public _syncNativeProperties(): void;
public _inheritStyleProperty(property: Property): void;
public _inheritStyleProperties(): void;
public _boundsChanged(): void;
}
export function registerHandler(property: Property, handler: styling.stylers.StylePropertyChangedHandler, className?: string);

View File

@@ -600,6 +600,10 @@ export class Style extends DependencyObservable implements styling.Style {
});
}
public _boundsChanged() {
this._applyProperty(backgroundInternalProperty, this._getValue(backgroundInternalProperty));
}
private _applyProperty(property: Property, newValue: any) {
this._applyStyleProperty(property, newValue);

View File

@@ -550,6 +550,52 @@ export class ProgressStyler implements definition.stylers.Styler {
}
}
export class SwitchStyler implements definition.stylers.Styler {
private static setColorProperty(view: view.View, newValue: any) {
var sw = <android.widget.Switch>view._nativeView;
var drawable = <android.graphics.drawable.StateListDrawable>sw.getThumbDrawable();
if (drawable) {
drawable.setColorFilter(newValue, android.graphics.PorterDuff.Mode.SRC_IN);
}
}
private static resetColorProperty(view: view.View, nativeValue: number) {
var sw = <android.widget.Switch>view._nativeView;
// Do nothing.
}
private static setBackgroundAndBorderProperty(view: view.View, newValue: any) {
var sw = <android.widget.Switch>view._nativeView;
var drawable = <android.graphics.drawable.StateListDrawable>sw.getTrackDrawable();
if (drawable) {
drawable.setColorFilter(newValue, android.graphics.PorterDuff.Mode.SRC_IN);
}
}
private static resetBackgroundAndBorderProperty(view: view.View, nativeValue: number) {
var sw = <android.widget.Switch>view._nativeView;
// Do nothing.
}
public static registerHandlers() {
style.registerHandler(style.colorProperty, new stylersCommon.StylePropertyChangedHandler(
SwitchStyler.setColorProperty,
SwitchStyler.resetColorProperty), "Switch");
var borderHandler = new stylersCommon.StylePropertyChangedHandler(
SwitchStyler.setBackgroundAndBorderProperty,
SwitchStyler.resetBackgroundAndBorderProperty);
style.registerHandler(style.backgroundColorProperty, borderHandler, "Switch");
style.registerHandler(style.borderWidthProperty, borderHandler, "Switch");
style.registerHandler(style.borderColorProperty, borderHandler, "Switch");
style.registerHandler(style.borderRadiusProperty, borderHandler, "Switch");
style.registerHandler(style.backgroundInternalProperty, borderHandler, "Switch");
}
}
export class SearchBarStyler implements definition.stylers.Styler {
private static getBackgroundColorProperty(view: view.View): any {
@@ -749,4 +795,5 @@ export function _registerDefaultStylers() {
ActionBarStyler.registerHandlers();
TabViewStyler.registerHandlers();
ProgressStyler.registerHandlers();
SwitchStyler.registerHandlers();
}

View File

@@ -439,6 +439,53 @@ export class ProgressStyler implements definition.stylers.Styler {
}
}
export class SwitchStyler implements definition.stylers.Styler {
private static setColorProperty(view: view.View, newValue: any) {
var sw = <UISwitch>view.ios;
sw.thumbTintColor = newValue;
}
private static resetColorProperty(view: view.View, nativeValue: any) {
var sw = <UISwitch>view.ios;
sw.thumbTintColor = nativeValue;
}
private static getNativeColorValue(view: view.View): any {
var sw = <UISwitch>view.ios;
return sw.thumbTintColor;
}
private static setBackgroundColorProperty(view: view.View, newValue: any) {
var sw = <UISwitch>view.ios;
sw.onTintColor = view.backgroundColor.ios;
}
private static resetBackgroundColorProperty(view: view.View, nativeValue: any) {
var sw = <UISwitch>view.ios;
sw.onTintColor = nativeValue;
}
private static getBackgroundColorProperty(view: view.View): any {
var sw = <UISwitch>view.ios;
return sw.onTintColor;
}
public static registerHandlers() {
style.registerHandler(style.colorProperty, new stylersCommon.StylePropertyChangedHandler(
SwitchStyler.setColorProperty,
SwitchStyler.resetColorProperty,
SwitchStyler.getNativeColorValue), "Switch");
var bkgHandler = new stylersCommon.StylePropertyChangedHandler(
SwitchStyler.setBackgroundColorProperty,
SwitchStyler.resetBackgroundColorProperty,
SwitchStyler.getBackgroundColorProperty);
style.registerHandler(style.backgroundColorProperty, bkgHandler, "Switch");
style.registerHandler(style.backgroundInternalProperty, bkgHandler, "Switch");
}
}
export class SearchBarStyler implements definition.stylers.Styler {
private static setBackgroundColorProperty(view: view.View, newValue: any) {
@@ -593,4 +640,5 @@ export function _registerDefaultStylers() {
ActionBarStyler.registerHandlers();
TabViewStyler.registerHandlers();
ProgressStyler.registerHandlers();
SwitchStyler.registerHandlers();
}