mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
ADD: Modern Form Style - Quick Look Panel Control for macOS 11+
This commit is contained in:
parent
29cc734aaa
commit
35ff5616f3
2 changed files with 80 additions and 1 deletions
|
|
@ -73,6 +73,11 @@ begin
|
|||
performMacOSService( 'Finder/Show Info' );
|
||||
end;
|
||||
|
||||
procedure quickLookAction( const Sender: id );
|
||||
begin
|
||||
showQuickLookPanel;
|
||||
end;
|
||||
|
||||
function onGetMainFormMenu: TMenuItem;
|
||||
var
|
||||
menu: TMenuItem;
|
||||
|
|
@ -236,6 +241,17 @@ const
|
|||
onAction: @finderInfoAction;
|
||||
);
|
||||
|
||||
quickLookItemConfig: TCocoaConfigToolBarItem = (
|
||||
identifier: 'MainForm.QuickLook';
|
||||
priority: NSToolbarItemVisibilityPriorityStandard;
|
||||
navigational: False;
|
||||
iconName: 'eye';
|
||||
title: 'Preview';
|
||||
tips: 'Preview...';
|
||||
bordered: True;
|
||||
onAction: @quickLookAction;
|
||||
);
|
||||
|
||||
|
||||
menuItemConfig: TCocoaConfigToolBarItemMenu = (
|
||||
identifier: 'MainForm.Menu';
|
||||
|
|
@ -315,6 +331,7 @@ const
|
|||
'NSToolbarFlexibleSpaceItem',
|
||||
'MainForm.FinderReveal',
|
||||
'MainForm.FinderInfo',
|
||||
'MainForm.QuickLook',
|
||||
'NSToolbarFlexibleSpaceItem',
|
||||
'MainForm.Menu',
|
||||
'NSToolbarFlexibleSpaceItem',
|
||||
|
|
@ -331,6 +348,7 @@ const
|
|||
'MainForm.AirDrop',
|
||||
'MainForm.FinderReveal',
|
||||
'MainForm.FinderInfo',
|
||||
'MainForm.QuickLook',
|
||||
'MainForm.Menu',
|
||||
'MainForm.Refresh',
|
||||
'MainForm.MultiRename',
|
||||
|
|
@ -358,6 +376,7 @@ begin
|
|||
TCocoaToolBarUtils.toClass(menuItemConfig),
|
||||
TCocoaToolBarUtils.toClass(finderRevealItemConfig),
|
||||
TCocoaToolBarUtils.toClass(finderInfoItemConfig),
|
||||
TCocoaToolBarUtils.toClass(quickLookItemConfig),
|
||||
TCocoaToolBarUtils.toClass(refreshItemConfig),
|
||||
TCocoaToolBarUtils.toClass(multiRenameItemConfig),
|
||||
TCocoaToolBarUtils.toClass(swapPanelsItemConfig)
|
||||
|
|
|
|||
|
|
@ -35,7 +35,8 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, UnixType,
|
||||
Cocoa_Extra, MacOSAll, CocoaAll, CocoaUtils, CocoaInt, CocoaConst, CocoaMenus,
|
||||
Cocoa_Extra, MacOSAll, CocoaAll, QuickLookUI,
|
||||
CocoaUtils, CocoaInt, CocoaConst, CocoaMenus,
|
||||
InterfaceBase, Menus, Controls, Forms,
|
||||
uDarwinFSWatch;
|
||||
|
||||
|
|
@ -155,6 +156,8 @@ procedure InitNSServiceProvider(
|
|||
|
||||
procedure performMacOSService( serviceName: String );
|
||||
|
||||
procedure showQuickLookPanel;
|
||||
|
||||
// MacOS Sharing
|
||||
procedure showMacOSSharingServiceMenu;
|
||||
procedure showMacOSAirDropDialog;
|
||||
|
|
@ -646,6 +649,63 @@ begin
|
|||
FreeAndNil( MacosServiceMenuHelper );
|
||||
end;
|
||||
|
||||
type
|
||||
|
||||
{ TDCQLPreviewPanelMate }
|
||||
|
||||
TDCQLPreviewPanelMate = objcclass( NSObject, QLPreviewPanelDataSourceProtocol )
|
||||
private
|
||||
_urlArray: NSArray;
|
||||
public
|
||||
function numberOfPreviewItemsInPreviewPanel (panel: QLPreviewPanel): NSInteger;
|
||||
function previewPanel_previewItemAtIndex (panel: QLPreviewPanel; index: NSInteger): QLPreviewItemProtocol;
|
||||
public
|
||||
function initWithItems( urlArray: NSArray ): id; message 'setUrlArray:';
|
||||
procedure dealloc; override;
|
||||
end;
|
||||
|
||||
function TDCQLPreviewPanelMate.numberOfPreviewItemsInPreviewPanel(
|
||||
panel: QLPreviewPanel): NSInteger;
|
||||
begin
|
||||
Result:= _urlArray.count;
|
||||
end;
|
||||
|
||||
function TDCQLPreviewPanelMate.previewPanel_previewItemAtIndex(panel: QLPreviewPanel;
|
||||
index: NSInteger): QLPreviewItemProtocol;
|
||||
begin
|
||||
Result:= QLPreviewItemProtocol( _urlArray.objectAtIndex(index) );
|
||||
end;
|
||||
|
||||
function TDCQLPreviewPanelMate.initWithItems(urlArray: NSArray): id;
|
||||
begin
|
||||
Result:= Inherited init;
|
||||
_urlArray:= urlArray;
|
||||
_urlArray.retain;
|
||||
end;
|
||||
|
||||
procedure TDCQLPreviewPanelMate.dealloc;
|
||||
begin
|
||||
_urlArray.release;
|
||||
Inherited;
|
||||
end;
|
||||
|
||||
procedure showQuickLookPanel;
|
||||
var
|
||||
lclArray: TStringArray;
|
||||
mate: TDCQLPreviewPanelMate;
|
||||
panel: QLPreviewPanel;
|
||||
begin
|
||||
lclArray:= TDCCocoaApplication(NSApp).serviceMenuGetFilenames;
|
||||
if lclArray = nil then
|
||||
Exit;
|
||||
|
||||
mate:= TDCQLPreviewPanelMate.alloc.initWithItems( UrlArrayFromLCLToNS(lclArray) );
|
||||
panel:= QLPreviewPanel.sharedPreviewPanel;
|
||||
panel.setDataSource( mate );
|
||||
panel.makeKeyAndOrderFront( nil );
|
||||
mate.release;
|
||||
end;
|
||||
|
||||
initialization
|
||||
Initialize;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue