Total TextBase refactoring + several bug fixes.

This commit is contained in:
Rossen Hristov
2016-12-16 14:53:27 +02:00
parent c8e13c23f0
commit 93d4fa5d57
15 changed files with 434 additions and 653 deletions

View File

@@ -5,95 +5,6 @@ export * from "./utils-common";
// We are using "ad" here to avoid namespace collision with the global android object
export module ad {
export function setTextDecoration(view: android.widget.TextView, value: string) {
var flags = 0;
var values = (value + "").split(" ");
if (values.indexOf("underline") !== -1) {
flags = flags | android.graphics.Paint.UNDERLINE_TEXT_FLAG;
}
if (values.indexOf("line-through") !== -1) {
flags = flags | android.graphics.Paint.STRIKE_THRU_TEXT_FLAG;
}
if (values.indexOf("none") === -1) {
view.setPaintFlags(flags);
} else {
view.setPaintFlags(0);
}
}
export function setTextTransform(v, value: string) {
let view = v._nativeView;
let str = view.getText() + "";
let result = getTransformedString(value, view, str);
if (v.formattedText) {
for (var i = 0; i < v.formattedText.spans.length; i++) {
var span = v.formattedText.spans.getItem(i);
span.text = getTransformedString(value, view, span.text);
}
} else {
view.setText(result);
}
}
export function getTransformedString(textTransform: string, view, stringToTransform: string): string {
let result: string;
switch (textTransform) {
case "uppercase":
view.setTransformationMethod(null);
result = stringToTransform.toUpperCase();
break;
case "lowercase":
view.setTransformationMethod(null);
result = stringToTransform.toLowerCase();
break;
case "capitalize":
view.setTransformationMethod(null);
result = getCapitalizedString(stringToTransform);
break;
case "none":
default:
result = view["originalString"] || stringToTransform;
if (view["transformationMethod"]) {
view.setTransformationMethod(view["transformationMethod"]);
}
break;
}
if (!view["originalString"]) {
view["originalString"] = stringToTransform;
view["transformationMethod"] = view.getTransformationMethod();
}
return result;
}
function getCapitalizedString(str: string): string {
var words = str.split(" ");
var newWords = [];
for (let i = 0; i < words.length; i++) {
let word = words[i].toLowerCase();
newWords.push(word.substr(0, 1).toUpperCase() + word.substring(1));
}
return newWords.join(" ");
}
export function setWhiteSpace(view: android.widget.TextView, value: string) {
let nowrap = value === "nowrap";
view.setSingleLine(nowrap);
view.setEllipsize(nowrap ? android.text.TextUtils.TruncateAt.END : null);
}
let nativeApp: android.app.Application;
declare var com;
export function getApplication() {