Skip to content

Commit dc21d7c

Browse files
committed
updated for {N} 1.6
1 parent 5b5dc5b commit dc21d7c

File tree

9 files changed

+328
-215
lines changed

9 files changed

+328
-215
lines changed

_references.d.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@
6969
/// <reference path="node_modules/tns-core-modules/ui/styling/css-selector.d.ts" />
7070
/// <reference path="node_modules/tns-core-modules/ui/styling/style-property.d.ts" />
7171
/// <reference path="node_modules/tns-core-modules/ui/switch/switch.d.ts" />
72-
/// <reference path="node_modules/tns-core-modules/ui/styling/stylers.d.ts" />
7372
/// <reference path="node_modules/tns-core-modules/ui/styling/styling.d.ts" />
7473
/// <reference path="node_modules/tns-core-modules/ui/styling/visual-state-constants.d.ts" />
7574
/// <reference path="node_modules/tns-core-modules/ui/styling/style.d.ts" />
@@ -92,3 +91,5 @@
9291
/// <reference path="node_modules/tns-core-modules/ui/animation/animation.d.ts" />
9392
/// <reference path="node_modules/tns-core-modules/ui/styling/style-scope.d.ts" />
9493
/// <reference path="node_modules/tns-core-modules/css/reworkcss.d.ts" />
94+
/// <reference path="node_modules/tns-core-modules/module.d.ts" />
95+
/// <reference path="node_modules/tns-core-modules/ui/transition/transition.d.ts" />

grid-view-common.ts

+18-16
Original file line numberDiff line numberDiff line change
@@ -72,18 +72,6 @@ function onSpacingPropertyChanged(data: dependencyObservable.PropertyChangeData)
7272
gridView.refresh();
7373
}
7474

75-
function getExports(instance: view.View): any
76-
{
77-
let parent = instance.parent;
78-
79-
while (parent && (<any>parent).exports === undefined)
80-
{
81-
parent = parent.parent;
82-
}
83-
84-
return parent ? (<any>parent).exports : undefined;
85-
}
86-
8775
export abstract class GridView extends view.View implements definition.GridView
8876
{
8977
public static itemLoadingEvent = "itemLoading";
@@ -167,11 +155,11 @@ export abstract class GridView extends view.View implements definition.GridView
167155
this._setValue(GridView.itemsProperty, value);
168156
}
169157

170-
get itemTemplate(): string
158+
get itemTemplate(): string | view.Template
171159
{
172160
return this._getValue(GridView.itemTemplateProperty);
173161
}
174-
set itemTemplate(value: string)
162+
set itemTemplate(value: string | view.Template)
175163
{
176164
this._setValue(GridView.itemTemplateProperty, value);
177165
}
@@ -220,7 +208,7 @@ export abstract class GridView extends view.View implements definition.GridView
220208

221209
if (this.itemTemplate && this.items)
222210
{
223-
v = builder.parse(this.itemTemplate, getExports(this));
211+
v = builder.parse(this.itemTemplate, this);
224212
}
225213

226214
return v;
@@ -230,12 +218,26 @@ export abstract class GridView extends view.View implements definition.GridView
230218
{
231219
if (item)
232220
{
233-
item.bindingContext = this._getDataItem(index);
221+
let dataItem = this._getDataItem(index);
222+
if (!(dataItem instanceof observable.Observable))
223+
{
224+
item.bindingContext = null;
225+
}
226+
item.bindingContext = dataItem;
227+
item._inheritProperties(this);
234228
}
235229
}
236230

237231
private _getDataItem(index: number): any
238232
{
239233
return this.items.getItem ? this.items.getItem(index) : this.items[index];
240234
}
235+
}
236+
237+
export interface Padding
238+
{
239+
top?: number;
240+
right?: number;
241+
bottom?: number;
242+
left?: number;
241243
}

grid-view.android.ts

+99-86
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,10 @@ import observable = require("data/observable");
1818
import definition = require("nativescript-grid-view");
1919
import common = require("./grid-view-common");
2020
import utils = require("utils/utils");
21-
import layout = require("ui/layouts/layout");
21+
import layoutBase = require("ui/layouts/layout-base");
2222
import stackLayout = require("ui/layouts/stack-layout");
2323
import view = require("ui/core/view");
24-
import style = require("ui/styling");
25-
import stylingStyle = require("ui/styling/style");
24+
import style = require("ui/styling/style");
2625

2726
const ITEMLOADING = common.GridView.itemLoadingEvent;
2827
const LOADMOREITEMS = common.GridView.loadMoreItemsEvent;
@@ -71,7 +70,7 @@ export class GridView extends common.GridView
7170

7271
let that = new WeakRef(this);
7372

74-
this.android.setOnScrollListener(new android.widget.AbsListView.OnScrollListener({
73+
this.android.setOnScrollListener(new android.widget.AbsListView.OnScrollListener(<utils.Owned & android.widget.AbsListView.IOnScrollListener>{
7574
onScrollStateChanged:
7675
function (view: android.widget.AbsListView, scrollState: number)
7776
{
@@ -92,7 +91,8 @@ export class GridView extends common.GridView
9291
{
9392
owner.notify(<observable.EventData>{ eventName: LOADMOREITEMS, object: owner });
9493
}
95-
}
94+
},
95+
get owner() { return that.get(); }
9696
}));
9797

9898
this.android.setOnItemClickListener(new android.widget.AdapterView.OnItemClickListener({
@@ -216,11 +216,13 @@ class GridViewAdapter extends android.widget.BaseAdapter
216216

217217
if (view)
218218
{
219+
this._gridView._prepareItem(view, index);
219220
if (!view.parent)
220221
{
221-
if (view instanceof layout.Layout)
222+
if (view instanceof layoutBase.LayoutBase)
222223
{
223-
(<layout.Layout>view).height = this._gridView.rowHeight;
224+
view.height = this._gridView.rowHeight;
225+
view.width = this._gridView.colWidth;
224226
this._gridView._addView(view);
225227
convertView = view.android;
226228
}
@@ -236,105 +238,116 @@ class GridViewAdapter extends android.widget.BaseAdapter
236238

237239
}
238240

239-
convertView.setLayoutParams(new android.widget.GridView.LayoutParams(this._gridView.colWidth * utils.layout.getDisplayDensity(), this._gridView.rowHeight * utils.layout.getDisplayDensity()));
240-
241241
this._gridView._realizedItems[convertView.hashCode()] = view;
242242
view[REALIZED_INDEX] = index;
243-
244-
this._gridView._prepareItem(view, index);
245243
}
246244

247245
return convertView;
248246
}
249247
}
250248

251249
//#region Styling
252-
interface Padding
253-
{
254-
top?: number;
255-
right?: number;
256-
bottom?: number;
257-
left?: number;
258-
}
259-
function setPadding(gridView: GridView, padding: Padding)
250+
export class GridViewStyler implements style.Styler
260251
{
261-
let finalPadding: Padding =
262-
{
252+
private static setPadding(gridView: GridView, padding: common.Padding)
253+
{
254+
let finalPadding: common.Padding = {
263255
top: padding.top !== undefined ? padding.top * utils.layout.getDisplayDensity() : gridView.android.getPaddingTop()
264256
, right: padding.right !== undefined ? padding.right * utils.layout.getDisplayDensity() : gridView.android.getPaddingRight()
265257
, bottom: padding.bottom !== undefined ? padding.bottom * utils.layout.getDisplayDensity() : gridView.android.getPaddingBottom()
266258
, left: padding.left !== undefined ? padding.left * utils.layout.getDisplayDensity() : gridView.android.getPaddingLeft()
267259
};
268260

269-
gridView.android.setPadding(finalPadding.left, finalPadding.top, finalPadding.right, finalPadding.bottom);
270-
}
261+
gridView.android.setPadding(finalPadding.left, finalPadding.top, finalPadding.right, finalPadding.bottom);
262+
}
271263

272-
//#region Padding Top Property
273-
function setPaddingTop(gridView: GridView, newValue: number)
274-
{
275-
setPadding(gridView, { top: newValue });
276-
}
277-
function resetPaddingTop(gridView: GridView, nativeValue: number)
278-
{
279-
setPaddingTop(gridView, nativeValue);
280-
}
281-
function getNativePaddingTopValue(gridView: GridView): any
282-
{
283-
return gridView.android.getPaddingTop();
284-
}
285-
let paddingTopChangedHandler = new style.stylers.StylePropertyChangedHandler(setPaddingTop, resetPaddingTop, getNativePaddingTopValue);
286-
style.stylers.registerHandler(stylingStyle.paddingTopProperty, paddingTopChangedHandler, "GridView");
287-
//#endregion
264+
//#region Padding Top Property
265+
private static setPaddingTop(gridView: GridView, newValue: number)
266+
{
267+
GridViewStyler.setPadding(gridView, { top: newValue });
268+
}
269+
private static resetPaddingTop(gridView: GridView, nativeValue: number)
270+
{
271+
GridViewStyler.setPaddingTop(gridView, nativeValue);
272+
}
273+
private static getNativePaddingTopValue(gridView: GridView): any
274+
{
275+
return gridView.android.getPaddingTop();
276+
}
277+
//#endregion
288278

289-
//#region Padding Right Property
290-
function setPaddingRight(gridView: GridView, newValue: number)
291-
{
292-
setPadding(gridView, { right: newValue });
293-
}
294-
function resetPaddingRight(gridView: GridView, nativeValue: number)
295-
{
296-
setPaddingRight(gridView, nativeValue);
297-
}
298-
function getNativePaddingRightValue(gridView: GridView): any
299-
{
300-
return gridView.android.getPaddingRight();
301-
}
302-
let paddingRightChangedHandler = new style.stylers.StylePropertyChangedHandler(setPaddingRight, resetPaddingRight, getNativePaddingRightValue);
303-
style.stylers.registerHandler(stylingStyle.paddingRightProperty, paddingRightChangedHandler, "GridView");
304-
//#endregion
279+
//#region Padding Right Property
280+
private static setPaddingRight(gridView: GridView, newValue: number)
281+
{
282+
GridViewStyler.setPadding(gridView, { right: newValue });
283+
}
284+
private static resetPaddingRight(gridView: GridView, nativeValue: number)
285+
{
286+
GridViewStyler.setPaddingRight(gridView, nativeValue);
287+
}
288+
private static getNativePaddingRightValue(gridView: GridView): any
289+
{
290+
return gridView.android.getPaddingRight();
291+
}
292+
//#endregion
305293

306-
//#region Padding Bottom Property
307-
function setPaddingBottom(gridView: GridView, newValue: number)
308-
{
309-
setPadding(gridView, { bottom: newValue });
310-
}
311-
function resetPaddingBottom(gridView: GridView, nativeValue: number)
312-
{
313-
setPaddingBottom(gridView, nativeValue);
314-
}
315-
function getNativePaddingBottomValue(gridView: GridView): any
316-
{
317-
return gridView.android.getPaddingBottom();
318-
}
319-
let paddingBottomChangedHandler = new style.stylers.StylePropertyChangedHandler(setPaddingBottom, resetPaddingBottom, getNativePaddingBottomValue);
320-
style.stylers.registerHandler(stylingStyle.paddingBottomProperty, paddingBottomChangedHandler, "GridView");
321-
//#endregion
294+
//#region Padding Bottom Property
295+
private static setPaddingBottom(gridView: GridView, newValue: number)
296+
{
297+
GridViewStyler.setPadding(gridView, { bottom: newValue });
298+
}
299+
private static resetPaddingBottom(gridView: GridView, nativeValue: number)
300+
{
301+
GridViewStyler.setPaddingBottom(gridView, nativeValue);
302+
}
303+
private static getNativePaddingBottomValue(gridView: GridView): any
304+
{
305+
return gridView.android.getPaddingBottom();
306+
}
307+
//#endregion
322308

323-
//#region Padding Left Property
324-
function setPaddingLeft(gridView: GridView, newValue: number)
325-
{
326-
setPadding(gridView, { left: newValue });
327-
}
328-
function resetPaddingLeft(gridView: GridView, nativeValue: number)
329-
{
330-
setPaddingLeft(gridView, nativeValue);
331-
}
332-
function getNativePaddingLeftValue(gridView: GridView): any
333-
{
334-
return gridView.android.getPaddingLeft();
309+
//#region Padding Left Property
310+
private static setPaddingLeft(gridView: GridView, newValue: number)
311+
{
312+
GridViewStyler.setPadding(gridView, { left: newValue });
313+
}
314+
private static resetPaddingLeft(gridView: GridView, nativeValue: number)
315+
{
316+
GridViewStyler.setPaddingLeft(gridView, nativeValue);
317+
}
318+
private static getNativePaddingLeftValue(gridView: GridView): any
319+
{
320+
return gridView.android.getPaddingLeft();
321+
}
322+
//#endregion
323+
324+
public static registerHandlers()
325+
{
326+
style.registerHandler(style.paddingTopProperty
327+
, new style.StylePropertyChangedHandler(GridViewStyler.setPaddingTop
328+
, GridViewStyler.resetPaddingTop
329+
, GridViewStyler.getNativePaddingTopValue)
330+
, "GridView");
331+
332+
style.registerHandler(style.paddingRightProperty
333+
, new style.StylePropertyChangedHandler(GridViewStyler.setPaddingRight
334+
, GridViewStyler.resetPaddingRight
335+
, GridViewStyler.getNativePaddingRightValue)
336+
, "GridView");
337+
338+
style.registerHandler(style.paddingBottomProperty
339+
, new style.StylePropertyChangedHandler(GridViewStyler.setPaddingBottom
340+
, GridViewStyler.resetPaddingBottom
341+
, GridViewStyler.getNativePaddingBottomValue)
342+
, "GridView");
343+
344+
style.registerHandler(style.paddingLeftProperty
345+
, new style.StylePropertyChangedHandler(GridViewStyler.setPaddingLeft
346+
, GridViewStyler.resetPaddingLeft
347+
, GridViewStyler.getNativePaddingLeftValue)
348+
, "GridView");
349+
}
335350
}
336-
let paddingLeftChangedHandler = new style.stylers.StylePropertyChangedHandler(setPaddingLeft, resetPaddingLeft, getNativePaddingLeftValue);
337-
style.stylers.registerHandler(stylingStyle.paddingLeftProperty, paddingLeftChangedHandler, "GridView");
338-
//#endregion
339351

352+
GridViewStyler.registerHandlers();
340353
//#endregion

grid-view.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ declare module "nativescript-grid-view"
3434
public static horizontalSpacingProperty: dependencyObservable.Property;
3535

3636
items: any;
37-
itemTemplate: string;
37+
itemTemplate: string | view.Template;
3838
rowHeight: number;
3939
colWidth: number;
4040
verticalSpacing: number;

0 commit comments

Comments
 (0)