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;
}
private function currentText():String {
return _text;
}
override public function update():Void {
textField.defaultTextFormat = textFormat;
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)) {
width = textField.width;
height = textField.height;

View File

@@ -8,6 +8,8 @@ class ToggleButtonView extends ButtonView {
public var on(default, set):Bool;
public var onSkin(default, set):ISkin<Sprite, IView<Sprite>>;
public var onText(default, set):String;
public function new() {
super();
}
@@ -27,4 +29,16 @@ class ToggleButtonView extends ButtonView {
override private function currentSkin():ISkin<Sprite, IView<Sprite>> {
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 {
var view:IView<Dynamic> = item.view;
itemSize = view.width + view.leftMargin + view.rightMargin + layoutMargin;
size = Math.round(Math.max(0, width / itemSize)) + 2;
itemSize = view.width + view.leftMargin + view.rightMargin + container.layoutMargin;
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;
mask.leftMargin = -container.leftPadding;
return super.set_diff(value);
return super.set_offsetDiff(value);
}
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 renderer(null, set):IRenderer<Dynamic, V, D>;
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 scroll(default, set):ScrollView;
@@ -24,8 +29,6 @@ class ListView<V:View<Dynamic>, D> extends GroupView implements ScrollListener {
private var container:GroupView;
private var mask:SpriteView;
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 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>>();
itemSize = 0;
offset = 0;
diff = 0;
offsetDiff = 0;
sizeDiff = 0;
items = new Array<ListItem<V, D>>();
itemsListeners = new Map<ListItem<V, D>, MouseEvent->Void>();
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 {
var x:Float = data.length * position;
offset = Math.round(x) - 1;
diff = (x - offset);
offsetDiff = (x - offset);
}
private function onMouseWheelEvent(event:MouseEvent):Void {
diff = 0;
event.preventDefault();
offsetDiff = 0;
onMouseWheel(event.delta);
}
@@ -102,7 +107,7 @@ class ListView<V:View<Dynamic>, D> extends GroupView implements ScrollListener {
private function render():Void {
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);
for (i in 0...size) {
var item:ListItem<V, D> = items[i];
@@ -145,9 +150,9 @@ class ListView<V:View<Dynamic>, D> extends GroupView implements ScrollListener {
return size;
}
private function set_diff(value:Float):Float {
diff = value;
return diff;
private function set_offsetDiff(value:Float):Float {
offsetDiff = value;
return offsetDiff;
}
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 {
var view:IView<Dynamic> = item.view;
itemSize = view.height + view.topMargin + view.bottomMargin + layoutMargin;
size = Math.round(Math.max(0, height / itemSize)) + 1;
itemSize = view.height + view.topMargin + view.bottomMargin + container.layoutMargin;
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;
mask.topMargin = -container.topPadding;
return super.set_diff(value);
return super.set_offsetDiff(value);
}
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));
//internalRequest(prepareUrl(url));
Provider.get(ILoaderManager).add(this);
return callback;
}
private function cockTimeout():Void {
if (timeout > 0) {
timer = new Timer(timeout);
timer.run = callTimeout;
}
return callback;
}
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 {
cockTimeout();
loader = buildLoader();
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 {
cockTimeout();
loader = buildLoader();
var request:URLRequest = new URLRequest(url);
if (method != URLRequestMethod.POST && method != URLRequestMethod.GET) {