Simplify the "layout computing" method and change its name

There is not need to use that much arguments because the result is stored in ivars.
CPCollectionViewItem -copy: set properties correctly even if the collectionView overrides them.
This commit is contained in:
cacaodev
2012-12-08 17:43:53 +01:00
parent 2ab1493d27
commit dd5bd17e2b
3 changed files with 26 additions and 50 deletions
+24 -48
View File
@@ -20,15 +20,17 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#import "../Foundation/Ref.h"
@import <Foundation/CPArray.j>
@import <Foundation/CPData.j>
@import <Foundation/CPIndexSet.j>
@import <Foundation/CPKeyedArchiver.j>
@import <Foundation/CPKeyedUnarchiver.j>
@import <AppKit/CPView.j>
@import <AppKit/CPCollectionViewItem.j>
@import <AppKit/CPCompatibility.j>
@import "CPView.j"
@import "CPCollectionViewItem.j"
@import "CPCompatibility.j"
/*!
@ingroup appkit
@@ -466,38 +468,31 @@
- (void)tileIfNeeded:(BOOL)lazyFlag
{
var frameSize = CGSizeMakeCopy([[self superview] frameSize]),
itemSize = CGSizeMakeZero(),
colsRowsCount = [];
oldNumberOfColumns = _numberOfColumns,
oldNumberOfRows = _numberOfRows,
oldItemSize = _itemSize,
storedFrameSize = _storedFrameSize;
var frameSize = [[self superview] frameSize],
count = 0,
oldNumberOfColumns = _numberOfColumns,
oldNumberOfRows = _numberOfRows,
oldItemSize = _itemSize,
storedFrameSize = _storedFrameSize;
[self _updateMinMaxItemSizeIfNeeded];
[self getFrameSize:frameSize itemSize:itemSize columnsRowsCount:colsRowsCount];
[self _computeGridWithSize:frameSize count:AT_REF(count)];
//CPLog.debug("frameSize="+CPStringFromSize(frameSize) + "itemSize="+CPStringFromSize(itemSize) + " ncols=" + colsRowsCount[0] +" nrows="+ colsRowsCount[1]+" displayCount="+ colsRowsCount[2]);
_numberOfColumns = colsRowsCount[0];
_numberOfRows = colsRowsCount[1];
_itemSize = itemSize;
_storedFrameSize = frameSize;
[self setFrameSize:frameSize];
[self setFrameSize:_storedFrameSize];
//CPLog.debug("OLD " + oldNumberOfColumns + " NEW " + _numberOfColumns);
if (!lazyFlag ||
_numberOfColumns !== oldNumberOfColumns ||
_numberOfRows !== oldNumberOfRows ||
_numberOfRows !== oldNumberOfRows ||
!CGSizeEqualToSize(_itemSize, oldItemSize))
[self displayItems:_items frameSize:frameSize itemSize:_itemSize columns:_numberOfColumns rows:_numberOfRows count:colsRowsCount[2]];
[self displayItems:_items frameSize:_storedFrameSize itemSize:_itemSize columns:_numberOfColumns rows:_numberOfRows count:count];
}
- (void)getFrameSize:({CGSize})aSuperviewSize itemSize:({CGSize})anItemSize columnsRowsCount:({CPArray})colsRowsCount
- (void)_computeGridWithSize:(CGSize)aSuperviewSize count:(Function)countRef
{
var width = aSuperviewSize.width,
height = aSuperviewSize.height,
@@ -537,14 +532,11 @@
if (maxItemSizeHeight > 0)
itemSizeHeight = MIN(itemSizeHeight, maxItemSizeHeight);
anItemSize.height = MAX(_minItemSize.height, itemSizeHeight);
anItemSize.width = MAX(_minItemSize.width, itemSize.width);
aSuperviewSize.width = MAX(width, _minItemSize.width);
aSuperviewSize.height = height;
colsRowsCount[0] = numberOfColumns;
colsRowsCount[1] = numberOfRows;
colsRowsCount[2] = MIN(itemsCount, numberOfColumns * numberOfRows);
_itemSize = CGSizeMake(MAX(_minItemSize.width, itemSize.width), MAX(_minItemSize.height, itemSizeHeight));
_storedFrameSize = CGSizeMake(MAX(width, _minItemSize.width), height);
_numberOfColumns = numberOfColumns;
_numberOfRows = numberOfRows;
countRef(MIN(itemsCount, numberOfColumns * numberOfRows));
}
- (void)displayItems:(CPArray)displayItems frameSize:(CGSize)aFrameSize itemSize:(CGSize)anItemSize columns:(CPInteger)numberOfColumns rows:(CPInteger)numberOfRows count:(CPInteger)displayCount
@@ -743,22 +735,6 @@
return _backgroundColors;
}
- (void)bind:(CPString)binding toObject:(id)observableController withKeyPath:(CPString)keyPath options:(CPDictionary )options
{
if (binding == CPContentBinding)
[observableController addObserver:self forKeyPath:keyPath options:CPKeyValueObservingOptionOld|CPKeyValueObservingOptionNew context:"content"];
[super bind:binding toObject:observableController withKeyPath:keyPath options:options];
}
- (void)observeValueForKeyPath:(CPString)keyPath ofObject:(id)object change:(CPDictionary)change context:(id)context
{
var newObjects = [change objectForKey:CPKeyValueChangeNewKey];
var kind = [change objectForKey:CPKeyValueChangeKindKey];
CPLog.debug("kind " + kind + " " + [newObjects description]);
}
- (void)mouseUp:(CPEvent)anEvent
{
if ([_selectionIndexes count] && [anEvent clickCount] == 2 && [_delegate respondsToSelector:@selector(collectionView:didDoubleClickOnItemAtIndex:)])
@@ -844,10 +820,10 @@
var dragTypes = [_delegate collectionView:self dragTypesForItemsAtIndexes:_selectionIndexes];
[[CPPasteboard pasteboardWithName:CPDragPboard] declareTypes:dragTypes owner:self];
var dragImageOffset = CGSizeMakeZero(),
view;
if ([_delegate respondsToSelector:@selector(collectionView:draggingViewForItemsAtIndexes:withEvent:offset:)])
view = [_delegate collectionView:self draggingViewForItemsAtIndexes:_selectionIndexes withEvent:_mouseDownEvent offset:dragImageOffset];
else
@@ -872,7 +848,7 @@
_itemForDragging = [self newItemForRepresentedObject:idx];
else
[_itemForDragging setRepresentedObject:idx];
return [_itemForDragging view];
}
+2 -1
View File
@@ -50,7 +50,8 @@
// copy connections
}
[copy setSelected:NO];
[copy setRepresentedObject:[self representedObject]];
[copy setSelected:_isSelected];
return copy;
}
@@ -7,7 +7,6 @@
*/
@import <Foundation/CPObject.j>
@import "CPCollectionView.j"
CPLogRegister(CPLogConsole);