mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
ADD: iCloud.json for iCloudDriver configuration
This commit is contained in:
parent
c73ca8d67e
commit
e692f4ae02
4 changed files with 144 additions and 51 deletions
|
|
@ -311,7 +311,7 @@ end;"/>
|
|||
<PackageName Value="Image32"/>
|
||||
</Item13>
|
||||
</RequiredPackages>
|
||||
<Units Count="284">
|
||||
<Units Count="286">
|
||||
<Unit0>
|
||||
<Filename Value="doublecmd.lpr"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
|
|
@ -2052,6 +2052,16 @@ end;"/>
|
|||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uDarwinUtil"/>
|
||||
</Unit283>
|
||||
<Unit284>
|
||||
<Filename Value="platform\unix\darwin\uiclouddriverconfig.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uiCloudDriverConfig"/>
|
||||
</Unit284>
|
||||
<Unit285>
|
||||
<Filename Value="platform\unix\darwin\udarwinfileview.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="uDarwinFileView"/>
|
||||
</Unit285>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ uses
|
|||
{$IFDEF darwin}
|
||||
uAppleMagnifiedModeFix,
|
||||
uMyDarwin,
|
||||
uiCloudDriverConfig,
|
||||
{$ENDIF}
|
||||
{$IFDEF LCLWIN32}
|
||||
uDClass,
|
||||
|
|
@ -228,6 +229,7 @@ begin
|
|||
LoadPixMapManager;
|
||||
{$IF DEFINED(DARWIN)}
|
||||
initCocoaModernFormConfig;
|
||||
loadiCloudConfig;
|
||||
{$ENDIF}
|
||||
Application.CreateForm(TfrmMain, frmMain); // main form
|
||||
Application.CreateForm(TdmComData, dmComData); // common data
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ interface
|
|||
uses
|
||||
Classes, SysUtils, syncobjs, fgl, LazMethodList,
|
||||
Menus, Forms, Dialogs, System.UITypes,
|
||||
uiCloudDriverConfig,
|
||||
uFile, uDisplayFile,
|
||||
uFileSource, uFileSourceOperationTypes, uFileSourceManager,
|
||||
uFileSourceWatcher, uMountedFileSource, uVfsModule,
|
||||
|
|
@ -16,28 +17,6 @@ uses
|
|||
CocoaAll, CocoaUtils;
|
||||
|
||||
type
|
||||
TiCloudDriverConfigPath = record
|
||||
base: String;
|
||||
driver: String;
|
||||
container: String;
|
||||
end;
|
||||
|
||||
TiCloudDriverConfigIcon = record
|
||||
main: String;
|
||||
download: String;
|
||||
end;
|
||||
|
||||
TiCloudDriverConfigAppItem = record
|
||||
name: String;
|
||||
app: String;
|
||||
end;
|
||||
|
||||
TiCloudDriverConfig = record
|
||||
scheme: String;
|
||||
path: TiCloudDriverConfigPath;
|
||||
icon: TiCloudDriverConfigIcon;
|
||||
apps: Array of TiCloudDriverConfigAppItem;
|
||||
end;
|
||||
|
||||
{ TiCloudDriverFileSource }
|
||||
|
||||
|
|
@ -71,35 +50,8 @@ type
|
|||
function QueryContextMenu(AFiles: TFiles; var AMenu: TPopupMenu): Boolean; override;
|
||||
end;
|
||||
|
||||
var
|
||||
iCloudDriverConfig: TiCloudDriverConfig;
|
||||
|
||||
implementation
|
||||
|
||||
const
|
||||
defaultiCloudDriverConfig: TiCloudDriverConfig = (
|
||||
scheme: 'iCloud://';
|
||||
path: (
|
||||
base: '~/Library/Mobile Documents';
|
||||
driver: '~/Library/Mobile Documents/com~apple~CloudDocs';
|
||||
container: '~/Library/Application Support/CloudDocs/session/containers'
|
||||
);
|
||||
icon: (
|
||||
main: '$COMMANDER_PATH/pixmaps/macOS/cloud.fill.png';
|
||||
download: '$COMMANDER_PATH/pixmaps/macOS/icloud.and.arrow.down.png'
|
||||
);
|
||||
apps: (
|
||||
( name: 'Pages'; app: 'com~apple~Pages' ),
|
||||
( name: 'Numbers'; app: 'com~apple~Numbers' ),
|
||||
( name: 'Keynote'; app: 'com~apple~Keynote' ),
|
||||
( name: 'ScriptEditor'; app: 'com~apple~ScriptEditor2' ),
|
||||
( name: 'workflows'; app: 'iCloud~is~workflow~my~workflows' ),
|
||||
( name: 'Playgrounds'; app: 'iCloud~com~apple~Playgrounds' ),
|
||||
( name: 'iThoughts'; app: 'iCloud~com~toketaware~ios~ithoughts' ),
|
||||
( name: 'xmind'; app: 'iCloud~net~xmind~brownieapp' )
|
||||
);
|
||||
);
|
||||
|
||||
type
|
||||
|
||||
TWatcherItem = class
|
||||
|
|
@ -823,7 +775,6 @@ begin
|
|||
end;
|
||||
|
||||
initialization
|
||||
iCloudDriverConfig:= defaultiCloudDriverConfig;
|
||||
iCloudDriverWatcher:= TiCloudDriverWatcher.Create;
|
||||
iCloudDriverProcessor:= TiCloudDriverProcessor.Create;
|
||||
iCloudDriverUIProcessor:= TiCloudDriverUIHandler.Create;
|
||||
|
|
|
|||
130
src/platform/unix/darwin/uiclouddriverconfig.pas
Normal file
130
src/platform/unix/darwin/uiclouddriverconfig.pas
Normal file
|
|
@ -0,0 +1,130 @@
|
|||
unit uiCloudDriverConfig;
|
||||
|
||||
{$mode ObjFPC}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, fpjson, Dialogs,
|
||||
uGlobsPaths, uLng, DCJsonConfig, uDebug;
|
||||
|
||||
procedure loadiCloudConfig;
|
||||
|
||||
type
|
||||
TiCloudDriverConfigPath = record
|
||||
base: String;
|
||||
driver: String;
|
||||
container: String;
|
||||
end;
|
||||
|
||||
TiCloudDriverConfigIcon = record
|
||||
main: String;
|
||||
download: String;
|
||||
end;
|
||||
|
||||
TiCloudDriverConfigAppItem = record
|
||||
name: String;
|
||||
app: String;
|
||||
end;
|
||||
|
||||
TiCloudDriverConfig = record
|
||||
scheme: String;
|
||||
path: TiCloudDriverConfigPath;
|
||||
icon: TiCloudDriverConfigIcon;
|
||||
apps: Array of TiCloudDriverConfigAppItem;
|
||||
end;
|
||||
|
||||
var
|
||||
iCloudDriverConfig: TiCloudDriverConfig;
|
||||
|
||||
implementation
|
||||
|
||||
const
|
||||
defaultiCloudDriverConfig: TiCloudDriverConfig = (
|
||||
scheme: 'iCloud://';
|
||||
path: (
|
||||
base: '~/Library/Mobile Documents';
|
||||
driver: '~/Library/Mobile Documents/com~apple~CloudDocs';
|
||||
container: '~/Library/Application Support/CloudDocs/session/containers'
|
||||
);
|
||||
icon: (
|
||||
main: '$COMMANDER_PATH/pixmaps/macOS/cloud.fill.png';
|
||||
download: '$COMMANDER_PATH/pixmaps/macOS/icloud.and.arrow.down.png'
|
||||
);
|
||||
apps: (
|
||||
( name: 'Pages'; app: 'com~apple~Pages' ),
|
||||
( name: 'Numbers'; app: 'com~apple~Numbers' ),
|
||||
( name: 'Keynote'; app: 'com~apple~Keynote' ),
|
||||
( name: 'ScriptEditor'; app: 'com~apple~ScriptEditor2' ),
|
||||
( name: 'workflows'; app: 'iCloud~is~workflow~my~workflows' ),
|
||||
( name: 'Playgrounds'; app: 'iCloud~com~apple~Playgrounds' ),
|
||||
( name: 'iThoughts'; app: 'iCloud~com~toketaware~ios~ithoughts' ),
|
||||
( name: 'xmind'; app: 'iCloud~net~xmind~brownieapp' )
|
||||
);
|
||||
);
|
||||
|
||||
const
|
||||
JSON_FILENAME = 'iCloud.json';
|
||||
|
||||
function getJsonPath: String;
|
||||
begin
|
||||
Result:= gpCfgDir + JSON_FILENAME;
|
||||
end;
|
||||
|
||||
procedure loadiCloudConfigFromJson( json: TJSONObject );
|
||||
var
|
||||
jsonPath: TJSONObject;
|
||||
jsonIcon: TJSONObject;
|
||||
jsonApps: TJSONArray;
|
||||
jsonApp: TJSONObject;
|
||||
i: Integer;
|
||||
begin
|
||||
iCloudDriverConfig.scheme:= json.Get( 'scheme', iCloudDriverConfig.scheme );
|
||||
|
||||
jsonPath:= json.Get( 'path', TJSONObject(nil) );
|
||||
if jsonPath <> nil then begin
|
||||
iCloudDriverConfig.path.base:= jsonPath.Get( 'base', iCloudDriverConfig.path.base );
|
||||
iCloudDriverConfig.path.driver:= jsonPath.Get( 'driver', iCloudDriverConfig.path.driver );
|
||||
iCloudDriverConfig.path.container:= jsonPath.Get( 'container', iCloudDriverConfig.path.container );
|
||||
end;
|
||||
|
||||
jsonIcon:= json.Get( 'icon', TJSONObject(nil) );
|
||||
if jsonIcon <> nil then begin
|
||||
iCloudDriverConfig.icon.main:= jsonIcon.Get( 'main', iCloudDriverConfig.icon.main );
|
||||
iCloudDriverConfig.icon.download:= jsonIcon.Get( 'download', iCloudDriverConfig.icon.download );
|
||||
end;
|
||||
|
||||
jsonApps:= json.Get( 'apps', TJSONArray(nil) );
|
||||
if jsonApps <> nil then begin
|
||||
SetLength( iCloudDriverConfig.apps, jsonApps.Count );
|
||||
for i:=0 to jsonApps.Count -1 do begin
|
||||
jsonApp:= TJSONObject( jsonApps[i] );
|
||||
iCloudDriverConfig.apps[i].name:= jsonApp.Get( 'name', '' );
|
||||
iCloudDriverConfig.apps[i].app:= jsonApp.Get( 'app', '' );
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure loadiCloudConfig;
|
||||
var
|
||||
config: TJsonConfig;
|
||||
begin
|
||||
iCloudDriverConfig:= defaultiCloudDriverConfig;
|
||||
|
||||
config:= TJsonConfig.Create;
|
||||
try
|
||||
try
|
||||
config.LoadFromFile( getJsonPath );
|
||||
if config.Root = nil then
|
||||
Exit;
|
||||
|
||||
loadiCloudConfigFromJson( config.Root );
|
||||
except
|
||||
end;
|
||||
finally
|
||||
FreeAndNil( config );
|
||||
end;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue