This commit is contained in:
2014-01-29 18:19:32 +04:00
parent 35798d1982
commit fde2420c6e
8 changed files with 50 additions and 19 deletions

View File

@@ -119,10 +119,15 @@ class TextView extends SpriteView implements ITextView<Sprite, TextField> {
return fontSize; return fontSize;
} }
private function currentText():String {
return _text;
}
override public function update():Void { override public function update():Void {
textField.defaultTextFormat = textFormat; textField.defaultTextFormat = textFormat;
textField.autoSize = fill ? TextFieldAutoSize.NONE : TextFieldAutoSize.LEFT; textField.autoSize = fill ? TextFieldAutoSize.NONE : TextFieldAutoSize.LEFT;
if (_text != null) textField.text = _text; var t:String = currentText();
if (t != null) textField.text = t;
if (contentSize && !Std.is(skin, ISize)) { if (contentSize && !Std.is(skin, ISize)) {
width = textField.width; width = textField.width;
height = textField.height; height = textField.height;

View File

@@ -8,6 +8,8 @@ class ToggleButtonView extends ButtonView {
public var on(default, set):Bool; public var on(default, set):Bool;
public var onSkin(default, set):ISkin<Sprite, IView<Sprite>>; public var onSkin(default, set):ISkin<Sprite, IView<Sprite>>;
public var onText(default, set):String;
public function new() { public function new() {
super(); super();
} }
@@ -27,4 +29,16 @@ class ToggleButtonView extends ButtonView {
override private function currentSkin():ISkin<Sprite, IView<Sprite>> { override private function currentSkin():ISkin<Sprite, IView<Sprite>> {
return on ? onSkin : skin; return on ? onSkin : skin;
} }
private function set_onText(value:String):String {
if (onText != value) {
onText = value;
invalidate;
}
return onText;
}
override private function currentText():String {
return on && onText != null ? onText : super.currentText();
}
} }

View File

@@ -17,14 +17,15 @@ class HListView<V:View<Dynamic>, D> extends ListView<V, D> {
override private function recalcSize(item:ListItem<V, D>):Void { override private function recalcSize(item:ListItem<V, D>):Void {
var view:IView<Dynamic> = item.view; var view:IView<Dynamic> = item.view;
itemSize = view.width + view.leftMargin + view.rightMargin + layoutMargin; itemSize = view.width + view.leftMargin + view.rightMargin + container.layoutMargin;
size = Math.round(Math.max(0, width / itemSize)) + 2; size = Math.ceil(Math.max(0, width / itemSize)) + 2;
sizeDiff = size - (width / itemSize);
} }
override private function set_diff(value:Float):Float { override private function set_offsetDiff(value:Float):Float {
container.leftPadding = -value * itemSize; container.leftPadding = -value * itemSize;
mask.leftMargin = -container.leftPadding; mask.leftMargin = -container.leftPadding;
return super.set_diff(value); return super.set_offsetDiff(value);
} }
override private function onMouseWheel(value:Int):Void { override private function onMouseWheel(value:Int):Void {

View File

@@ -16,7 +16,12 @@ class ListView<V:View<Dynamic>, D> extends GroupView implements ScrollListener {
public var data(default, set):Array<D>; public var data(default, set):Array<D>;
public var renderer(null, set):IRenderer<Dynamic, V, D>; public var renderer(null, set):IRenderer<Dynamic, V, D>;
public var offset(default, set):Int; public var offset(default, set):Int;
private var offsetDiff(default, set):Float;
private var size(default, set):Int;
private var sizeDiff:Float;
public var dispatcher(default, null):IDispatcher<ListViewListener<V, D>>; public var dispatcher(default, null):IDispatcher<ListViewListener<V, D>>;
public var scroll(default, set):ScrollView; public var scroll(default, set):ScrollView;
@@ -24,8 +29,6 @@ class ListView<V:View<Dynamic>, D> extends GroupView implements ScrollListener {
private var container:GroupView; private var container:GroupView;
private var mask:SpriteView; private var mask:SpriteView;
private var itemSize:Float; private var itemSize:Float;
private var diff(default, set):Float;
private var size(default, set):Int;
private var items:Array<ListItem<V, D>>; private var items:Array<ListItem<V, D>>;
private var itemsListeners:Map<ListItem<V, D>, MouseEvent->Void>; private var itemsListeners:Map<ListItem<V, D>, MouseEvent->Void>;
@@ -46,7 +49,8 @@ class ListView<V:View<Dynamic>, D> extends GroupView implements ScrollListener {
dispatcher = new Dispatcher<ListViewListener<V, D>>(); dispatcher = new Dispatcher<ListViewListener<V, D>>();
itemSize = 0; itemSize = 0;
offset = 0; offset = 0;
diff = 0; offsetDiff = 0;
sizeDiff = 0;
items = new Array<ListItem<V, D>>(); items = new Array<ListItem<V, D>>();
itemsListeners = new Map<ListItem<V, D>, MouseEvent->Void>(); itemsListeners = new Map<ListItem<V, D>, MouseEvent->Void>();
content.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheelEvent); content.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheelEvent);
@@ -69,11 +73,12 @@ class ListView<V:View<Dynamic>, D> extends GroupView implements ScrollListener {
public function onScroll(position:Float):Void { public function onScroll(position:Float):Void {
var x:Float = data.length * position; var x:Float = data.length * position;
offset = Math.round(x) - 1; offset = Math.round(x) - 1;
diff = (x - offset); offsetDiff = (x - offset);
} }
private function onMouseWheelEvent(event:MouseEvent):Void { private function onMouseWheelEvent(event:MouseEvent):Void {
diff = 0; event.preventDefault();
offsetDiff = 0;
onMouseWheel(event.delta); onMouseWheel(event.delta);
} }
@@ -102,7 +107,7 @@ class ListView<V:View<Dynamic>, D> extends GroupView implements ScrollListener {
private function render():Void { private function render():Void {
if (data != null && renderer != null) { if (data != null && renderer != null) {
scroll.ratio = Math.min(1.0, size / data.length); scroll.ratio = Math.min(1.0, (size - sizeDiff) / data.length);
scroll.position = (offset / data.length); scroll.position = (offset / data.length);
for (i in 0...size) { for (i in 0...size) {
var item:ListItem<V, D> = items[i]; var item:ListItem<V, D> = items[i];
@@ -145,9 +150,9 @@ class ListView<V:View<Dynamic>, D> extends GroupView implements ScrollListener {
return size; return size;
} }
private function set_diff(value:Float):Float { private function set_offsetDiff(value:Float):Float {
diff = value; offsetDiff = value;
return diff; return offsetDiff;
} }
private function setClickListener(item:ListItem<V, D>):Void { private function setClickListener(item:ListItem<V, D>):Void {

View File

@@ -17,14 +17,15 @@ class VListView<V:View<Dynamic>, D> extends ListView<V, D> {
override private function recalcSize(item:ListItem<V, D>):Void { override private function recalcSize(item:ListItem<V, D>):Void {
var view:IView<Dynamic> = item.view; var view:IView<Dynamic> = item.view;
itemSize = view.height + view.topMargin + view.bottomMargin + layoutMargin; itemSize = view.height + view.topMargin + view.bottomMargin + container.layoutMargin;
size = Math.round(Math.max(0, height / itemSize)) + 1; size = Math.ceil(Math.max(0, height / itemSize)) + 2;
sizeDiff = size - (height / itemSize);
} }
override private function set_diff(value:Float):Float { override private function set_offsetDiff(value:Float):Float {
container.topPadding = -value * itemSize; container.topPadding = -value * itemSize;
mask.topMargin = -container.topPadding; mask.topMargin = -container.topPadding;
return super.set_diff(value); return super.set_offsetDiff(value);
} }
override private function onMouseWheel(value:Int):Void { override private function onMouseWheel(value:Int):Void {

View File

@@ -46,11 +46,14 @@ class BaseLoader<T> implements ILoader<T> {
//L.d(TAG, "Request: " + prepareUrl(url)); //L.d(TAG, "Request: " + prepareUrl(url));
//internalRequest(prepareUrl(url)); //internalRequest(prepareUrl(url));
Provider.get(ILoaderManager).add(this); Provider.get(ILoaderManager).add(this);
return callback;
}
private function cockTimeout():Void {
if (timeout > 0) { if (timeout > 0) {
timer = new Timer(timeout); timer = new Timer(timeout);
timer.run = callTimeout; timer.run = callTimeout;
} }
return callback;
} }
public function fromBytes(data:ByteArray):ICallback<T> { public function fromBytes(data:ByteArray):ICallback<T> {

View File

@@ -41,6 +41,7 @@ class BaseMediaLoader<T> extends BaseLoader<T> {
}*/ }*/
override private function internalRequest(url:String):Void { override private function internalRequest(url:String):Void {
cockTimeout();
loader = buildLoader(); loader = buildLoader();
loader.load(new URLRequest(url), buildLoaderContext()); loader.load(new URLRequest(url), buildLoaderContext());
} }

View File

@@ -25,6 +25,7 @@ class BaseURLLoader<T> extends BaseLoader<T> {
} }
override private function internalRequest(url:String):Void { override private function internalRequest(url:String):Void {
cockTimeout();
loader = buildLoader(); loader = buildLoader();
var request:URLRequest = new URLRequest(url); var request:URLRequest = new URLRequest(url);
if (method != URLRequestMethod.POST && method != URLRequestMethod.GET) { if (method != URLRequestMethod.POST && method != URLRequestMethod.GET) {