mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-03 10:40:35 +02:00
Cocoa/ListView: vsList supported
This commit is contained in:
parent
0e9c598529
commit
061384d7fe
@ -79,6 +79,12 @@ const
|
||||
NSCollectionViewScrollPositionNearestVerticalEdge: NSUInteger = 1 shl 8;
|
||||
NSCollectionViewScrollPositionNearestHorizontalEdge: NSUInteger = 1 shl 9;
|
||||
|
||||
type
|
||||
NSCollectionViewScrollDirection = NSInteger; { available in 10_11 }
|
||||
const
|
||||
NSCollectionViewScrollDirectionVertical: NSInteger = 0;
|
||||
NSCollectionViewScrollDirectionHorizontal: NSInteger = 1;
|
||||
|
||||
type
|
||||
NSUserInterfaceItemIdentifier = NSString; { available in 10_12 }
|
||||
NSCollectionViewSupplementaryElementKind = NSString; { available in 10_11 }
|
||||
@ -95,6 +101,10 @@ type
|
||||
function itemSize: NSSize; message 'itemSize'; { available in 10_11 }
|
||||
procedure setItemSize( newValue:NSSize );
|
||||
message 'setItemSize:'; { available in 10_11 }
|
||||
function scrollDirection: NSCollectionViewScrollDirection;
|
||||
message 'scrollDirection'; { available in 10_11 }
|
||||
procedure setScrollDirection( newValue: NSCollectionViewScrollDirection );
|
||||
message 'setScrollDirection:'; { available in 10_11 }
|
||||
end;
|
||||
|
||||
NSCollectionViewGridLayout = objcclass external (NSCollectionViewLayout)
|
||||
|
@ -146,6 +146,14 @@ type
|
||||
procedure onAdjustTextEditorRect( var aFrame: NSRect ); override;
|
||||
end;
|
||||
|
||||
{ TCocoaListView_CollectionView_ListHandler }
|
||||
TCocoaListView_CollectionView_ListHandler = class(TCocoaListView_CollectionView_StyleHandler)
|
||||
procedure onInit; override;
|
||||
procedure onUpdateItemValue(indexPath: NSIndexPath; cocoaItem: NSCollectionViewItem); override;
|
||||
procedure onUpdateItemSize( baseSize: NSSize ); override;
|
||||
procedure onUpdateItemLayout(item: NSCollectionViewItem); override;
|
||||
procedure onAdjustTextEditorRect( var aFrame: NSRect ); override;
|
||||
end;
|
||||
|
||||
function AllocCocoaCollectionView( style: TViewStyle ): TCocoaCollectionView;
|
||||
var
|
||||
@ -159,7 +167,7 @@ begin
|
||||
vsSmallIcon:
|
||||
styleHandler:= TCocoaListView_CollectionView_SmallIconHandler.Create( Result );
|
||||
vsList:
|
||||
styleHandler:= TCocoaListView_CollectionView_LargeIconHandler.Create( Result );
|
||||
styleHandler:= TCocoaListView_CollectionView_ListHandler.Create( Result );
|
||||
end;
|
||||
|
||||
Result.styleHandler:= styleHandler;
|
||||
@ -359,6 +367,69 @@ begin
|
||||
aFrame.size.height:= aFrame.size.height + 8;
|
||||
end;
|
||||
|
||||
{ TCocoaListView_CollectionView_ListHandler }
|
||||
|
||||
procedure TCocoaListView_CollectionView_ListHandler.onInit;
|
||||
var
|
||||
layout: NSCollectionViewFlowLayout;
|
||||
minSize: NSSize;
|
||||
begin
|
||||
layout:= NSCollectionViewFlowLayout(_collectionView.collectionViewLayout);
|
||||
minSize.width:= 146;
|
||||
minSize.height:= 24;
|
||||
layout.setItemSize( minSize );
|
||||
layout.setMinimumInteritemSpacing( 0 );
|
||||
layout.setMinimumLineSpacing( 10 );
|
||||
|
||||
layout.setScrollDirection( NSCollectionViewScrollDirectionHorizontal );
|
||||
end;
|
||||
|
||||
procedure TCocoaListView_CollectionView_ListHandler.onUpdateItemValue(
|
||||
indexPath: NSIndexPath; cocoaItem: NSCollectionViewItem);
|
||||
var
|
||||
cv: TCocoaCollectionView;
|
||||
cocoaImage: NSImage;
|
||||
lclImageIndex: Integer;
|
||||
lclText: String;
|
||||
begin
|
||||
cv:= TCocoaCollectionView(_collectionView);
|
||||
cv.callback.GetItemTextAt( indexPath.item, 0, lclText );
|
||||
cocoaItem.textField.setStringValue( StrToNSString(lclText) );
|
||||
end;
|
||||
|
||||
procedure TCocoaListView_CollectionView_ListHandler.onUpdateItemSize(
|
||||
baseSize: NSSize);
|
||||
var
|
||||
cv: TCocoaCollectionView;
|
||||
begin
|
||||
cv:= TCocoaCollectionView(_collectionView);
|
||||
cv.itemSize.Width:= 146;
|
||||
cv.itemSize.Height:= 24;
|
||||
end;
|
||||
|
||||
procedure TCocoaListView_CollectionView_ListHandler.onUpdateItemLayout(
|
||||
item: NSCollectionViewItem);
|
||||
var
|
||||
cv: TCocoaCollectionView;
|
||||
aFrame: NSRect;
|
||||
begin
|
||||
cv:= TCocoaCollectionView(_collectionView);
|
||||
aFrame.origin.x:= 4;
|
||||
aFrame.origin.y:= (cv.itemSize.Height - 15) / 2;
|
||||
aFrame.size.width:= 138;
|
||||
aFrame.size.height:= 15;
|
||||
item.textField.setFrame( aFrame );
|
||||
end;
|
||||
|
||||
procedure TCocoaListView_CollectionView_ListHandler.onAdjustTextEditorRect(
|
||||
var aFrame: NSRect);
|
||||
begin
|
||||
aFrame.origin.x:= aFrame.origin.x - 3;
|
||||
aFrame.origin.y:= aFrame.origin.y - 3;
|
||||
aFrame.size.width:= aFrame.size.width + 6;
|
||||
aFrame.size.height:= aFrame.size.height + 6;
|
||||
end;
|
||||
|
||||
{ TCocoaCollectionItem }
|
||||
|
||||
procedure TCocoaCollectionItem.loadView;
|
||||
|
Loading…
Reference in New Issue
Block a user