├── .gitignore ├── .gitlab-ci.yml ├── .nuke ├── build.schema.json └── parameters.json ├── GitVersion.yml ├── README.md ├── build.cmd ├── build.ps1 ├── build.sh ├── build ├── .editorconfig ├── ApiProject.cs ├── Build.Analyze.cs ├── Build.Documentation.cs ├── Build.IntegrationTest.cs ├── Build.cs ├── Configuration.cs ├── Directory.Build.props ├── Directory.Build.targets ├── DocFX │ ├── CustomDocFx.cs │ └── CustomTocWriter.cs ├── GhprSettings.cs ├── SonarQube │ ├── SonarBeginSettings.cs │ └── SonarQubeBeginSettingsExtensions.cs ├── _build.csproj ├── _build.csproj.DotSettings ├── _docfx.json ├── docfx.json └── toc.yml ├── build_publish.cmd ├── docfx_project ├── .gitignore ├── articles │ ├── intro.md │ └── toc.yml ├── docfx.json ├── docfx.template.json ├── index.md ├── projects.yml ├── template │ ├── dashboard.html.liquid │ ├── index.html.tmpl │ ├── partials │ │ ├── class.tmpl.partial │ │ └── li.tmpl.partial │ └── styles │ │ ├── docfx.css │ │ ├── docfx.js │ │ ├── main.css │ │ ├── main.js │ │ └── search-worker.js ├── toc.template.yml └── toc.yml ├── global.json ├── nuget ├── AimpSDK-x64.nuspec ├── AimpSDK.nuspec ├── AimpSDK.sources.nuspec ├── AimpSDK.symbols.nuspec └── tools │ ├── CopyPlugin.ps1 │ └── commands.json ├── nunit ├── nunit.framework.dll └── nunit.framework.xml ├── nunit3-junit.xslt └── src ├── .editorconfig ├── AssemblyInfo.cs ├── Plugins ├── dotnet_AppDomain │ ├── AppDomainPlugin.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── dotnet_AppDomain.csproj │ ├── gulpfile.js │ └── package.json ├── dotnet_CustomFileSystem │ ├── CustomFileSystem.cs │ ├── ExtensionFileInfo.cs │ ├── Plugin.cs │ ├── Properties │ │ └── PluginAssemblyInfo.cs │ ├── commands.json │ └── dotnet_CustomFileSystem.csproj ├── dotnet_ExtendDialogWindow │ ├── OptionsFrame.cs │ ├── Plugin.cs │ ├── Properties │ │ └── PluginAssemblyInfo.cs │ ├── SettingsForm.Designer.cs │ ├── SettingsForm.cs │ ├── SettingsForm.resx │ ├── commands.json │ └── dotnet_ExtendDialogWindow.csproj ├── dotnet_SmartPlaylist │ ├── FrmTestPreimage.Designer.cs │ ├── FrmTestPreimage.cs │ ├── FrmTestPreimage.resx │ ├── Plugin.cs │ ├── Properties │ │ └── PluginAssemblyInfo.cs │ ├── TestPreimage.cs │ ├── TestPreimageFactory.cs │ ├── commands.json │ └── dotnet_SmartPlaylist.csproj ├── dotnet_albumart │ ├── AimpExtensionAlbumArtCatalog.cs │ ├── AimpExtensionAlbumArtProvider.cs │ ├── Directory.Build.targets │ ├── Plugin.cs │ ├── Properties │ │ ├── PluginAssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── Resources │ │ └── 1451438429_lastfm.png │ ├── commands.json │ ├── dotnet_albumart.csproj │ └── front.jpg ├── dotnet_demo │ ├── AIMPStream.cs │ ├── App.config │ ├── Directory.Build.targets │ ├── Extension │ │ └── ExtensionPlaybackQueue.cs │ ├── Logger.cs │ ├── LoggerForm.Designer.cs │ ├── LoggerForm.cs │ ├── LoggerForm.resx │ ├── OptionsFrame │ │ ├── AimpOptionsDialogFrame.cs │ │ ├── SettingsForm.Designer.cs │ │ └── SettingsForm.cs │ ├── PlayListControl.Designer.cs │ ├── PlayListControl.cs │ ├── PlayListControl.resx │ ├── PlayerForm.Designer.cs │ ├── PlayerForm.cs │ ├── PlayerForm.resx │ ├── Plugin.cs │ ├── Properties │ │ ├── PluginAssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ ├── TagEditControl.Designer.cs │ ├── TagEditControl.cs │ ├── TagEditorForm.Designer.cs │ ├── TagEditorForm.cs │ ├── TagEditorForm.resx │ ├── UI │ │ ├── PlayListEditor.Designer.cs │ │ ├── PlayListEditor.cs │ │ └── PlayListEditor.resx │ ├── Utils.cs │ ├── commands.json │ └── dotnet_demo.csproj ├── dotnet_hooks │ ├── HooksPlugin.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ └── dotnet_hooks.csproj ├── dotnet_menu │ └── Properties │ │ └── launchSettings.json ├── dotnet_musiclibrary │ ├── AimpExtensionFileInfoProvider.cs │ ├── DemoExtensionFileSystem.cs │ ├── DemoMusicLibrary.cs │ ├── Directory.Build.targets │ ├── ExplorerGroupingProvider │ │ ├── DataProviderGroupingTree.cs │ │ ├── DataProviderGroupingTreeData.cs │ │ ├── DataProviderGroupingTreeSelection.cs │ │ └── RootDataProviderSelection.cs │ ├── ExplorerMusicProvider │ │ ├── CustomAimpGroupingTreeDataProvider.cs │ │ ├── CustomAimpGroupingTreeDataProviderSelection.cs │ │ ├── DemoMusicLibrary.cs │ │ └── TDemoExplorerViewAbstractDataProviderSelection.cs │ ├── MyExtensionFileInfoProvider.cs │ ├── Plugin.cs │ ├── Preimage │ │ ├── MediaLibraryPreimageFactory.cs │ │ ├── PlaylistManagerListener.cs │ │ └── TestMediaLibraryPreimage.cs │ ├── Properties │ │ └── PluginAssemblyInfo.cs │ ├── commands.json │ └── dotnet_musiclibrary.csproj ├── dotnet_threading │ ├── Plugin.cs │ ├── Properties │ │ └── PluginAssemblyInfo.cs │ ├── TestTask.cs │ ├── commands.json │ └── dotnet_threading.csproj ├── dotnet_visual │ ├── App.config │ ├── CustomVisualization.cs │ ├── EmbeddedVisualization.cs │ ├── Plugin.cs │ ├── Properties │ │ └── PluginAssemblyInfo.cs │ ├── commands.json │ └── dotnet_visual.csproj └── native_plugin │ ├── AIMPExports.def │ ├── AIMPSDK │ ├── AIMP400 │ │ ├── apiActions.h │ │ ├── apiAlbumArt.h │ │ ├── apiCore.h │ │ ├── apiDecoders.h │ │ ├── apiDepricated.h │ │ ├── apiFileManager.h │ │ ├── apiGUI.h │ │ ├── apiInternet.h │ │ ├── apiLyrics.h │ │ ├── apiMUI.h │ │ ├── apiMenu.h │ │ ├── apiMessages.h │ │ ├── apiMusicLibrary.h │ │ ├── apiObjects.h │ │ ├── apiOptions.h │ │ ├── apiPlayer.h │ │ ├── apiPlaylists.h │ │ ├── apiPlugin.h │ │ ├── apiRemote.h │ │ ├── apiScheduler.h │ │ ├── apiSkins.h │ │ ├── apiTagEditor.h │ │ ├── apiThreading.h │ │ └── apiVisuals.h │ └── AIMPSDK.h │ ├── AimpDotnetPlugin.cpp │ ├── IUnknownInterfaceImpl.h │ ├── native_plugin.vcxproj │ ├── native_plugin.vcxproj.filters │ └── plugin.h ├── SDK ├── AIMP.SDK │ ├── AIMP.SDK.csproj │ ├── AIMPPluginAttribute.cs │ ├── AimpDotNetPlugin.cs │ ├── AimpInternalLogger.cs │ ├── AimpPlugin.cs │ ├── Loader │ │ ├── AimpDotNetPlugin.cs │ │ ├── AssemblyScanPluginLoadStrategy.cs │ │ ├── CustomAssemblyResolver.cs │ │ ├── DotNetPluginInfo.cs │ │ ├── PluginInfoLoader.cs │ │ ├── PluginInformation.cs │ │ ├── PluginLoadingStrategy.cs │ │ └── PluginShortInfoForLoad.cs │ ├── Logger │ │ ├── IAimpLogger.cs │ │ └── InternalLogger.cs │ ├── Properties │ │ ├── Annotations.cs │ │ └── PluginAssemblyInfo.cs │ ├── SDK │ │ ├── Actions │ │ │ ├── IAimpServiceActionManager.cs │ │ │ └── Objects │ │ │ │ ├── IAimpAction.cs │ │ │ │ └── IAimpActionEvent.cs │ │ ├── AimpActionException.cs │ │ ├── AimpActionResult.cs │ │ ├── AimpObjectType.cs │ │ ├── AlbumArt │ │ │ ├── AimpFindCovertArtType.cs │ │ │ ├── AimpGetAlbumArtEventArgs.cs │ │ │ ├── Extensions │ │ │ │ ├── AimpAlbumArtProviderCategory.cs │ │ │ │ ├── IAimpExtensionAlbumArtCatalog.cs │ │ │ │ ├── IAimpExtensionAlbumArtCatalog2.cs │ │ │ │ ├── IAimpExtensionAlbumArtProvider.cs │ │ │ │ ├── IAimpExtensionAlbumArtProvider2.cs │ │ │ │ └── IAimpExtensionAlbumArtProvider3.cs │ │ │ ├── IAimpAlbumArtRequest.cs │ │ │ ├── IAimpAlbumArtSearchOptions.cs │ │ │ └── Services │ │ │ │ ├── IAimpServiceAlbumArt.cs │ │ │ │ └── IAimpServiceAlbumArtCache.cs │ │ ├── Configuration │ │ │ └── IAimpServiceConfig.cs │ │ ├── Core │ │ │ ├── IAimpServiceShutdown.cs │ │ │ └── IAimpServiceVersionInfo.cs │ │ ├── Enums.cs │ │ ├── Extensions.cs │ │ ├── FileManager │ │ │ ├── AimpFileAttributes.cs │ │ │ ├── Commands │ │ │ │ ├── IAimpFileSystemCommand.cs │ │ │ │ ├── IAimpFileSystemCommandCopyToClipboard.cs │ │ │ │ ├── IAimpFileSystemCommandDelete.cs │ │ │ │ ├── IAimpFileSystemCommandDropSource.cs │ │ │ │ ├── IAimpFileSystemCommandFileInfo.cs │ │ │ │ ├── IAimpFileSystemCommandOpenFileFolder.cs │ │ │ │ ├── IAimpFileSystemCommandStreaming.cs │ │ │ │ └── IAimpFileSystemCustomFileCommand.cs │ │ │ ├── Extensions │ │ │ │ ├── IAimpExtensionFileExpander.cs │ │ │ │ ├── IAimpExtensionFileFormat.cs │ │ │ │ ├── IAimpExtensionFileInfoProvider.cs │ │ │ │ └── IAimpExtensionFileSystem.cs │ │ │ ├── FileCommandType.cs │ │ │ ├── IAIMPServiceFileSystems.cs │ │ │ ├── IAimpServiceFileFormats.cs │ │ │ ├── IAimpServiceFileInfo.cs │ │ │ ├── IAimpServiceFileInfoFormatter.cs │ │ │ ├── IAimpServiceFileInfoFormatterUtils.cs │ │ │ ├── IAimpServiceFileManager.cs │ │ │ ├── IAimpServiceFileStreaming.cs │ │ │ ├── IAimpServiceFileURI.cs │ │ │ ├── IAimpServiceFileURI2.cs │ │ │ └── Objects │ │ │ │ ├── IAimpFileInfo.cs │ │ │ │ └── IAimpVirtualFile.cs │ │ ├── IAimpConfig.cs │ │ ├── IAimpCore.cs │ │ ├── IAimpDPIAware.cs │ │ ├── IAimpErrorInfo.cs │ │ ├── IAimpExtension.cs │ │ ├── IAimpExternalSettingsDialog.cs │ │ ├── IAimpObject.cs │ │ ├── IAimpObjectList.cs │ │ ├── IAimpPlayer.cs │ │ ├── IAimpProgressCallback.cs │ │ ├── IAimpService.cs │ │ ├── Internet │ │ │ └── IAimpServiceConnectionSettings.cs │ │ ├── Lyrics │ │ │ ├── Extensions │ │ │ │ └── IAimpExtensionLyricsProvider.cs │ │ │ ├── IAimpServiceLyrics.cs │ │ │ └── Objects │ │ │ │ └── IAimpLyrics.cs │ │ ├── MUIManager │ │ │ └── IAimpMUIManager.cs │ │ ├── MenuManager │ │ │ ├── IAimpServiceMenuManager.cs │ │ │ └── Objects │ │ │ │ └── IAimpMenuItem.cs │ │ ├── MessageDispatcher │ │ │ ├── AimpMessages.cs │ │ │ ├── AimpQuickFileInfoParams.cs │ │ │ ├── IAimpMessageHook.cs │ │ │ ├── IAimpServiceMessageDispatcher.cs │ │ │ └── PointerExtension.cs │ │ ├── MusicLibrary │ │ │ ├── DataFilter │ │ │ │ ├── IAimpDataFieldFilter.cs │ │ │ │ ├── IAimpDataFieldFilterByArray.cs │ │ │ │ └── IAimpDataFilterGroup.cs │ │ │ ├── DataStorage │ │ │ │ ├── AimpDataField.cs │ │ │ │ ├── IAimpDataField.cs │ │ │ │ ├── IAimpDataFieldDisplayValue.cs │ │ │ │ ├── IAimpDataProvider.cs │ │ │ │ ├── IAimpDataProvider2.cs │ │ │ │ ├── IAimpDataStorage.cs │ │ │ │ ├── IAimpDataStorage2.cs │ │ │ │ ├── IAimpGroupingTreeDataProvider.cs │ │ │ │ ├── IAimpGroupingTreeDataProviderSelection.cs │ │ │ │ └── IAimpGroupingTreeSelection.cs │ │ │ ├── Extension │ │ │ │ ├── Command │ │ │ │ │ ├── IAimpDataStorageCommandAddFiles.cs │ │ │ │ │ ├── IAimpDataStorageCommandAddFilesDialog.cs │ │ │ │ │ ├── IAimpDataStorageCommandDeleteFiles.cs │ │ │ │ │ ├── IAimpDataStorageCommandDeleteFiles2.cs │ │ │ │ │ ├── IAimpDataStorageCommandDropData.cs │ │ │ │ │ ├── IAimpDataStorageCommandFindInLibrary.cs │ │ │ │ │ ├── IAimpDataStorageCommandReloadTags.cs │ │ │ │ │ ├── IAimpDataStorageCommandReportDialog.cs │ │ │ │ │ └── IAimpDataStorageCommandUserMark.cs │ │ │ │ ├── IAimpAlbumArtProvider.cs │ │ │ │ ├── IAimpAlbumArtProvider2.cs │ │ │ │ └── IAimpExtensionDataStorage.cs │ │ │ ├── IAimpDataFilter.cs │ │ │ ├── IAimpDataProviderSelection.cs │ │ │ ├── IAimpDataStorageManager.cs │ │ │ ├── IAimpFileList.cs │ │ │ ├── IAimpLocalDataStorage.cs │ │ │ ├── IAimpMusicLibraryPlaylistPreimage.cs │ │ │ ├── IAimpServiceMusicLibrary.cs │ │ │ ├── IAimpServiceMusicLibraryUI.cs │ │ │ ├── IAimpSortDirection.cs │ │ │ ├── Presets │ │ │ │ ├── IAimpGroupingPreset.cs │ │ │ │ ├── IAimpGroupingPresetStandard.cs │ │ │ │ └── IAimpGroupingPresets.cs │ │ │ └── SortDirectionType.cs │ │ ├── Objects │ │ │ ├── IAimpFileStream.cs │ │ │ ├── IAimpHashCode.cs │ │ │ ├── IAimpImage.cs │ │ │ ├── IAimpImage2.cs │ │ │ ├── IAimpImageContainer.cs │ │ │ ├── IAimpMemoryStream.cs │ │ │ ├── IAimpPropertyList2.cs │ │ │ ├── IAimpStream.cs │ │ │ └── IAimpString.cs │ │ ├── Options │ │ │ ├── IAimpOptionsDialogFrame.cs │ │ │ ├── IAimpOptionsDialogFrameKeyboardHelper.cs │ │ │ ├── IAimpOptionsDialogFrameKeyboardHelper2.cs │ │ │ └── IAimpServiceOptionsDialog.cs │ │ ├── PlayList │ │ │ ├── AimpPlayListEventArgs.cs │ │ │ ├── Constants.cs │ │ │ ├── Extensions │ │ │ │ ├── IAimpExtensionPlaylistManagerListener.cs │ │ │ │ └── IAimpExtensionPlaylistPreimageFactory.cs │ │ │ ├── IAimpPlayListManager.cs │ │ │ ├── IAimpPlaylistListener.cs │ │ │ ├── IAimpPlaylistManager2.cs │ │ │ ├── IAimpPlaylistPreimageDataProvider.cs │ │ │ ├── IAimpPlaylistPreimageFolders.cs │ │ │ ├── IAimpPlaylistPreimageListener.cs │ │ │ ├── IAimpPlaylistQueue.cs │ │ │ ├── IAimpPlaylistQueueListener.cs │ │ │ └── Objects │ │ │ │ ├── IAIMPPlaylistPreimage.cs │ │ │ │ ├── IAimpPlayListGroup.cs │ │ │ │ ├── IAimpPlayListItem.cs │ │ │ │ └── IAimpPlaylist.cs │ │ ├── Player │ │ │ ├── Extensions │ │ │ │ ├── IAimpExtensionPlaybackQueue.cs │ │ │ │ ├── IAimpExtensionPlaybackQueue2.cs │ │ │ │ ├── IAimpExtensionPlayerHook.cs │ │ │ │ ├── IAimpExtensionWaveFormProvider.cs │ │ │ │ ├── PlaybackQueueFlags.cs │ │ │ │ └── PlaybackQueueInfo.cs │ │ │ ├── IAimpPlaybackQueueService.cs │ │ │ ├── IAimpServicePlaybackQueue2.cs │ │ │ ├── IAimpServicePlayer.cs │ │ │ ├── IAimpServicePlayer2.cs │ │ │ ├── IAimpServicePlayerEqualizer.cs │ │ │ ├── IAimpServicePlayerEqualizerPresets.cs │ │ │ ├── IAimpServiceWaveform.cs │ │ │ ├── Objects │ │ │ │ ├── IAimpEqualizerBands.cs │ │ │ │ ├── IAimpEqualizerPreset.cs │ │ │ │ ├── IAimpPlaybackQueueItem.cs │ │ │ │ └── IAimpWaveformPeakInfo.cs │ │ │ └── PlayFlags.cs │ │ ├── TagEditor │ │ │ ├── Extensions │ │ │ │ └── IAimpExtensionTagsProvider.cs │ │ │ ├── IAimpFileTag.cs │ │ │ ├── IAimpFileTagEditor.cs │ │ │ ├── IAimpServiceFileTagEditor.cs │ │ │ └── IAimpServiceFindTagsOnline.cs │ │ ├── Threading │ │ │ ├── IAimpServiceSynchronizer.cs │ │ │ ├── IAimpServiceThreadPool.cs │ │ │ ├── IAimpServiceThreads.cs │ │ │ ├── IAimpTask.cs │ │ │ ├── IAimpTaskOwner.cs │ │ │ └── IAimpTaskPriority.cs │ │ └── Visuals │ │ │ ├── AimpVisualData.cs │ │ │ ├── AimpVisualFlags.cs │ │ │ ├── IAimpExtensionCustomVisualization.cs │ │ │ ├── IAimpExtensionEmbeddedVisualization.cs │ │ │ └── IAimpServiceVisualizations.cs │ └── Win32 │ │ └── IWin32Manager.cs └── aimp_dotnet │ ├── AIMPSDK │ ├── AIMP400 │ │ ├── apiActions.h │ │ ├── apiAlbumArt.h │ │ ├── apiCore.h │ │ ├── apiDecoders.h │ │ ├── apiDepricated.h │ │ ├── apiFileManager.h │ │ ├── apiGUI.h │ │ ├── apiInternet.h │ │ ├── apiLyrics.h │ │ ├── apiMUI.h │ │ ├── apiMenu.h │ │ ├── apiMessages.h │ │ ├── apiMusicLibrary.h │ │ ├── apiObjects.h │ │ ├── apiOptions.h │ │ ├── apiPlayer.h │ │ ├── apiPlaylists.h │ │ ├── apiPlugin.h │ │ ├── apiRemote.h │ │ ├── apiScheduler.h │ │ ├── apiSkins.h │ │ ├── apiTagEditor.h │ │ ├── apiThreading.h │ │ └── apiVisuals.h │ └── AIMPSDK.h │ ├── AIMP_Exports.def │ ├── AimpDotnetPlugin.cpp │ ├── AimpLogger.h │ ├── AimpMemoryManager.cpp │ ├── AimpMemoryManager.h │ ├── AimpSdk.h │ ├── Aimp_DotNetPlugin.vcxproj │ ├── Aimp_DotNetPlugin.vcxproj.filters │ ├── DotNetPlugin.cpp │ ├── DotNetPlugin.h │ ├── IUnknownInterfaceImpl.h │ ├── Langs │ ├── english.lng │ └── russian.lng │ ├── SDK │ ├── Action │ │ ├── AimpAction.cpp │ │ ├── AimpAction.h │ │ ├── AimpActionEvent.cpp │ │ ├── AimpActionEvent.h │ │ ├── AimpServiceActionManager.cpp │ │ └── AimpServiceActionManager.h │ ├── AimpConfig.cpp │ ├── AimpConfig.h │ ├── AimpConverter.cpp │ ├── AimpConverter.h │ ├── AimpCore.h │ ├── AimpDPIAware.cpp │ ├── AimpDPIAware.h │ ├── AimpErrorInfo.cpp │ ├── AimpErrorInfo.h │ ├── AimpObject.h │ ├── AimpObjectList.cpp │ ├── AimpObjectList.h │ ├── AimpPlayer.cpp │ ├── AimpPlayer.h │ ├── AimpProgressCallback.cpp │ ├── AimpProgressCallback.h │ ├── AimpPropertyList.h │ ├── AlbumArt │ │ ├── AimpAlbumArtRequest.cpp │ │ ├── AimpAlbumArtRequest.h │ │ ├── AimpAlbumArtSearchOptions.cpp │ │ ├── AimpAlbumArtSearchOptions.h │ │ ├── AimpExtensionAlbumArtCatalog.cpp │ │ ├── AimpExtensionAlbumArtCatalog.h │ │ ├── AimpExtensionAlbumArtProvider.cpp │ │ ├── AimpExtensionAlbumArtProvider.h │ │ ├── AimpExtensionAlbumArtProvider3.cpp │ │ ├── AimpExtensionAlbumArtProvider3.h │ │ ├── AimpServiceAlbumArt.cpp │ │ ├── AimpServiceAlbumArt.h │ │ ├── AimpServiceAlbumArtCache.cpp │ │ └── AimpServiceAlbumArtCache.h │ ├── BaseAimpService.h │ ├── Configuration │ │ ├── AimpConfigurationManager.cpp │ │ └── AimpConfigurationManager.h │ ├── Core │ │ ├── AimpServiceShutdown.cpp │ │ ├── AimpServiceShutdown.h │ │ ├── AimpServiceVersionInfo.cpp │ │ └── AimpServiceVersionInfo.h │ ├── CustomUserData.h │ ├── FileManager │ │ ├── AimpFileInfo.cpp │ │ ├── AimpFileInfo.h │ │ ├── AimpServiceFileFormats.cpp │ │ ├── AimpServiceFileFormats.h │ │ ├── AimpServiceFileInfo.cpp │ │ ├── AimpServiceFileInfo.h │ │ ├── AimpServiceFileInfoFormatter.cpp │ │ ├── AimpServiceFileInfoFormatter.h │ │ ├── AimpServiceFileInfoFormatterUtils.cpp │ │ ├── AimpServiceFileInfoFormatterUtils.h │ │ ├── AimpServiceFileStreaming.cpp │ │ ├── AimpServiceFileStreaming.h │ │ ├── AimpServiceFileSystems.cpp │ │ ├── AimpServiceFileSystems.h │ │ ├── AimpVirtualFile.cpp │ │ ├── AimpVirtualFile.h │ │ ├── Commands │ │ │ ├── AimpFileSystemCommandCopyToClipboard.cpp │ │ │ ├── AimpFileSystemCommandCopyToClipboard.h │ │ │ ├── AimpFileSystemCommandDelete.cpp │ │ │ ├── AimpFileSystemCommandDelete.h │ │ │ ├── AimpFileSystemCommandDropSource.cpp │ │ │ ├── AimpFileSystemCommandDropSource.h │ │ │ ├── AimpFileSystemCommandFileInfo.cpp │ │ │ ├── AimpFileSystemCommandFileInfo.h │ │ │ ├── AimpFileSystemCommandOpenFileFolder.cpp │ │ │ ├── AimpFileSystemCommandOpenFileFolder.h │ │ │ ├── AimpFileSystemCommandStreaming.cpp │ │ │ ├── AimpFileSystemCommandStreaming.h │ │ │ ├── Internal │ │ │ │ ├── InternalAimpFileSystemCommandCopyToClipboard.cpp │ │ │ │ ├── InternalAimpFileSystemCommandCopyToClipboard.h │ │ │ │ ├── InternalAimpFileSystemCommandDelete.cpp │ │ │ │ ├── InternalAimpFileSystemCommandDelete.h │ │ │ │ ├── InternalAimpFileSystemCommandDropSource.cpp │ │ │ │ ├── InternalAimpFileSystemCommandDropSource.h │ │ │ │ ├── InternalAimpFileSystemCommandFileInfo.cpp │ │ │ │ ├── InternalAimpFileSystemCommandFileInfo.h │ │ │ │ ├── InternalAimpFileSystemCommandOpenFileFolder.cpp │ │ │ │ ├── InternalAimpFileSystemCommandOpenFileFolder.h │ │ │ │ ├── InternalAimpFileSystemCommandStreaming.cpp │ │ │ │ ├── InternalAimpFileSystemCommandStreaming.h │ │ │ │ ├── InternalAimpFileSystemCustomFileCommand.cpp │ │ │ │ ├── InternalAimpFileSystemCustomFileCommand.h │ │ │ │ └── Stdafx.h │ │ │ └── Stdafx.h │ │ ├── Extensions │ │ │ ├── InternalAimpExtensionFileExpander.cpp │ │ │ ├── InternalAimpExtensionFileExpander.h │ │ │ ├── InternalAimpExtensionFileFormat.cpp │ │ │ ├── InternalAimpExtensionFileFormat.h │ │ │ ├── InternalAimpExtensionFileInfoProvider.cpp │ │ │ ├── InternalAimpExtensionFileInfoProvider.h │ │ │ ├── InternalAimpExtensionFileSystem.cpp │ │ │ └── InternalAimpExtensionFileSystem.h │ │ ├── InternalAimpVirtualFile.cpp │ │ ├── InternalAimpVirtualFile.h │ │ └── Services │ │ │ ├── AimpServiceFileURI.cpp │ │ │ ├── AimpServiceFileURI.h │ │ │ ├── AimpServiceFileURI2.cpp │ │ │ └── AimpServiceFileURI2.h │ ├── Internet │ │ ├── AimpServiceConnectionSettings.cpp │ │ └── AimpServiceConnectionSettings.h │ ├── Lyrics │ │ ├── AimpExtensionLyricsProvider.cpp │ │ ├── AimpExtensionLyricsProvider.h │ │ ├── AimpLyrics.cpp │ │ ├── AimpLyrics.h │ │ ├── AimpServiceLyrics.cpp │ │ └── AimpServiceLyrics.h │ ├── MUI │ │ ├── AimpMIUManager.h │ │ ├── AimpServiceMUI.cpp │ │ └── AimpServiceMUI.h │ ├── ManagedAimpCore.cpp │ ├── ManagedAimpCore.h │ ├── Menu │ │ ├── AimpMenuItem.cpp │ │ ├── AimpMenuItem.h │ │ ├── AimpServiceMenuManager.cpp │ │ └── AimpServiceMenuManager.h │ ├── MessageDispatcher │ │ ├── AimpServiceMessageDispatcher.cpp │ │ ├── AimpServiceMessageDispatcher.h │ │ ├── InternalAimpMessageHook.cpp │ │ └── InternalAimpMessageHook.h │ ├── MusicLibrary │ │ ├── AimpDataStorage2.h │ │ ├── AimpDataStorageManager.cpp │ │ ├── AimpDataStorageManager.h │ │ ├── AimpFileList.cpp │ │ ├── AimpFileList.h │ │ ├── AimpGroupingTreeSelection.cpp │ │ ├── AimpGroupingTreeSelection.h │ │ ├── AimpLocalDataStorage.cpp │ │ ├── AimpLocalDataStorage.h │ │ ├── AimpServiceMusicLibrary.cpp │ │ ├── AimpServiceMusicLibrary.h │ │ ├── AimpServiceMusicLibraryUI.cpp │ │ ├── AimpServiceMusicLibraryUI.h │ │ ├── DataFilter │ │ │ ├── AimpDataFieldFilter.cpp │ │ │ ├── AimpDataFieldFilter.h │ │ │ ├── AimpDataFieldFilterByArray.cpp │ │ │ ├── AimpDataFieldFilterByArray.h │ │ │ ├── AimpDataFilter.cpp │ │ │ ├── AimpDataFilter.h │ │ │ ├── AimpDataFilterGroup.cpp │ │ │ ├── AimpDataFilterGroup.h │ │ │ └── InternalAimpDataFieldFilterByArray.h │ │ ├── DataStorage │ │ │ ├── AimpDataField.cpp │ │ │ ├── AimpDataField.h │ │ │ ├── AimpDataStorage.cpp │ │ │ ├── AimpDataStorage.h │ │ │ ├── AimpDataStorage2.h │ │ │ └── BaseAimpDataStorage.h │ │ ├── Extension │ │ │ ├── AimpExtensionDataStorage.cpp │ │ │ ├── AimpExtensionDataStorage.h │ │ │ ├── Command │ │ │ │ ├── AimpDataStorageCommandAddFiles.cpp │ │ │ │ ├── AimpDataStorageCommandAddFiles.h │ │ │ │ ├── AimpDataStorageCommandAddFilesDialog.cpp │ │ │ │ ├── AimpDataStorageCommandAddFilesDialog.h │ │ │ │ ├── AimpDataStorageCommandDeleteFiles.cpp │ │ │ │ ├── AimpDataStorageCommandDeleteFiles.h │ │ │ │ ├── AimpDataStorageCommandDeleteFiles2.cpp │ │ │ │ ├── AimpDataStorageCommandDeleteFiles2.h │ │ │ │ ├── AimpDataStorageCommandDropData.cpp │ │ │ │ ├── AimpDataStorageCommandDropData.h │ │ │ │ ├── AimpDataStorageCommandFindInLibrary.cpp │ │ │ │ ├── AimpDataStorageCommandFindInLibrary.h │ │ │ │ ├── AimpDataStorageCommandReloadTags.cpp │ │ │ │ ├── AimpDataStorageCommandReloadTags.h │ │ │ │ ├── AimpDataStorageCommandReportDialog.cpp │ │ │ │ ├── AimpDataStorageCommandReportDialog.h │ │ │ │ ├── AimpDataStorageCommandUserMark.cpp │ │ │ │ └── AimpDataStorageCommandUserMark.h │ │ │ ├── InternalAimpAlbumArtProvider.cpp │ │ │ ├── InternalAimpAlbumArtProvider.h │ │ │ ├── InternalAimpAlbumArtProvider2.cpp │ │ │ └── InternalAimpAlbumArtProvider2.h │ │ ├── InternalAimpDataFilter.cpp │ │ ├── InternalAimpDataFilter.h │ │ ├── InternalAimpDataFilterGroup.cpp │ │ ├── InternalAimpDataFilterGroup.h │ │ ├── InternalAimpDataProviderSelection.cpp │ │ ├── InternalAimpDataProviderSelection.h │ │ ├── InternalAimpGroupingTreeDataProvider.cpp │ │ ├── InternalAimpGroupingTreeDataProvider.h │ │ ├── InternalAimpGroupingTreeDataProviderSelection.cpp │ │ ├── InternalAimpGroupingTreeDataProviderSelection.h │ │ ├── InternalAimpMusicLibraryPlaylistPreimage.cpp │ │ ├── InternalAimpMusicLibraryPlaylistPreimage.h │ │ ├── InternalDataFieldFilter.cpp │ │ ├── InternalDataFieldFilter.h │ │ └── Presets │ │ │ ├── AimpGroupingPreset.cpp │ │ │ ├── AimpGroupingPreset.h │ │ │ ├── AimpGroupingPresetStandard.cpp │ │ │ ├── AimpGroupingPresetStandard.h │ │ │ ├── AimpGroupingPresets.cpp │ │ │ └── AimpGroupingPresets.h │ ├── Objects │ │ ├── AimpFileStream.cpp │ │ ├── AimpFileStream.h │ │ ├── AimpImage.cpp │ │ ├── AimpImage.h │ │ ├── AimpImageContainer.cpp │ │ ├── AimpImageContainer.h │ │ ├── AimpMemoryStream.cpp │ │ ├── AimpMemoryStream.h │ │ ├── AimpStream.cpp │ │ ├── AimpStream.h │ │ ├── AimpString.cpp │ │ ├── AimpString.h │ │ └── Collections │ │ │ ├── AimpOrderedObjectList.cpp │ │ │ ├── AimpOrderedObjectList.h │ │ │ ├── InternalOrderedListItem.cpp │ │ │ ├── InternalOrderedListItem.h │ │ │ ├── OrderedListItem.cpp │ │ │ └── OrderedListItem.h │ ├── Options │ │ ├── AimpServiceOptionsDialog.cpp │ │ ├── AimpServiceOptionsDialog.h │ │ ├── OptionsDialogFrameExtension.cpp │ │ └── OptionsDialogFrameExtension.h │ ├── PlayList │ │ ├── AimpExtensionPlaylistManagerListener.cpp │ │ ├── AimpExtensionPlaylistManagerListener.h │ │ ├── AimpExtensionPlaylistPreimageFactory.cpp │ │ ├── AimpExtensionPlaylistPreimageFactory.h │ │ ├── AimpPlayList.cpp │ │ ├── AimpPlayList.h │ │ ├── AimpPlayListGroup.cpp │ │ ├── AimpPlayListGroup.h │ │ ├── AimpPlayListItem.cpp │ │ ├── AimpPlayListItem.h │ │ ├── AimpPlayListQueue.cpp │ │ ├── AimpPlayListQueue.h │ │ ├── AimpPlaylistPreimage.cpp │ │ ├── AimpPlaylistPreimage.h │ │ ├── AimpPlaylistPreimageFactory.cpp │ │ ├── AimpPlaylistPreimageFactory.h │ │ ├── AimpPlaylistPreimageFolders.cpp │ │ ├── AimpPlaylistPreimageFolders.h │ │ ├── AimpPlaylistPreimageListener.cpp │ │ ├── AimpPlaylistPreimageListener.h │ │ ├── AimpPlaylistQueueListener.cpp │ │ ├── AimpPlaylistQueueListener.h │ │ ├── AimpServicePlaylistManager.cpp │ │ ├── AimpServicePlaylistManager.h │ │ ├── IPlayListQueueEventExecutor.h │ │ └── Internal │ │ │ ├── InternalAimpExtensionPlaylistPreimageFactory.cpp │ │ │ ├── InternalAimpExtensionPlaylistPreimageFactory.h │ │ │ ├── InternalAimpMLPlaylistPreimage.cpp │ │ │ ├── InternalAimpMLPlaylistPreimage.h │ │ │ ├── InternalAimpPlaylistPreimage.cpp │ │ │ └── InternalAimpPlaylistPreimage.h │ ├── Playback │ │ ├── AimpExtensionPlayerHook.cpp │ │ ├── AimpExtensionPlayerHook.h │ │ ├── AimpPlaybackQueueItem.cpp │ │ ├── AimpPlaybackQueueItem.h │ │ ├── AimpServicePlaybackQueue.cpp │ │ └── AimpServicePlaybackQueue.h │ ├── Player │ │ ├── AimpEqualizerBands.cpp │ │ ├── AimpEqualizerBands.h │ │ ├── AimpEqualizerPreset.cpp │ │ ├── AimpEqualizerPreset.h │ │ ├── AimpServicePlayer.cpp │ │ ├── AimpServicePlayer.h │ │ ├── AimpServicePlayerEqualizer.cpp │ │ ├── AimpServicePlayerEqualizer.h │ │ ├── AimpServicePlayerEqualizerPresets.cpp │ │ ├── AimpServicePlayerEqualizerPresets.h │ │ ├── AimpServiceWaveform.cpp │ │ ├── AimpServiceWaveform.h │ │ ├── Extensions │ │ │ ├── AimpExtensionPlaybackQueue.cpp │ │ │ ├── AimpExtensionPlaybackQueue.h │ │ │ ├── AimpExtensionPlaybackQueue2.cpp │ │ │ ├── AimpExtensionPlaybackQueue2.h │ │ │ ├── InternalAimpExtensionWaveFormProvider.cpp │ │ │ └── InternalAimpExtensionWaveFormProvider.h │ │ └── Primitives │ │ │ └── AimpWaveformPeakInfo.h │ ├── PropertyListHelper.cpp │ ├── PropertyListHelper.h │ ├── TagEditor │ │ ├── AimpFileTag.cpp │ │ ├── AimpFileTag.h │ │ ├── AimpFileTagEditor.cpp │ │ ├── AimpFileTagEditor.h │ │ ├── AimpServiceFileTagEditor.cpp │ │ ├── AimpServiceFileTagEditor.h │ │ ├── InternalExtensionTagsProvider.cpp │ │ └── InternalExtensionTagsProvider.h │ ├── Threading │ │ ├── AimpServiceSynchronizer.cpp │ │ ├── AimpServiceSynchronizer.h │ │ ├── AimpServiceThreadPool.cpp │ │ ├── AimpServiceThreadPool.h │ │ ├── AimpServiceThreads.cpp │ │ ├── AimpServiceThreads.h │ │ ├── AimpTaskOwner.cpp │ │ ├── AimpTaskOwner.h │ │ ├── InternalAimpTask.cpp │ │ └── InternalAimpTask.h │ ├── Visuals │ │ ├── AimpExtensionCustomVisualization.cpp │ │ ├── AimpExtensionCustomVisualization.h │ │ ├── AimpExtensionEmbeddedVisualization.cpp │ │ ├── AimpExtensionEmbeddedVisualization.h │ │ ├── AimpServiceVisualizations.cpp │ │ └── AimpServiceVisualizations.h │ └── Win32 │ │ ├── Win32Manager.cpp │ │ └── Win32Manager.h │ ├── Stdafx.cpp │ ├── Stdafx.h │ ├── Utils.h │ ├── aimp_dotnet.aps │ ├── aimp_dotnet.rc │ └── resource.h ├── Tests ├── IntegrationTests │ ├── AimpTestRunner.cs │ ├── AimpTestRunner.csproj │ ├── Directory.Build.targets │ ├── Engine │ │ ├── AimpNUnit3FrameworkDriver.cs │ │ ├── AimpNUnitFrameworkDriver.cs │ │ ├── ColorStyle.cs │ │ ├── ConsoleTestResult.cs │ │ ├── ExtendedTextWrapper.cs │ │ ├── ExtendedTextWriter.cs │ │ ├── ResultReporter.cs │ │ └── ResultSummary.cs │ ├── Issues │ │ ├── Issue_19.cs │ │ └── Issue_37.cs │ ├── Properties │ │ └── PluginAssemblyInfo.cs │ ├── TestFramework │ │ ├── AimpIntegrationTest.cs │ │ ├── Assert │ │ │ ├── EqualAssert.cs │ │ │ ├── FalseAssert.cs │ │ │ ├── MemberAssert.cs │ │ │ ├── NotEqualAssert.cs │ │ │ ├── NotNullAssert.cs │ │ │ ├── NullAssert.cs │ │ │ ├── ThrowAssert.cs │ │ │ └── TrueAssert.cs │ │ └── IntegrationTestExtension.cs │ ├── UnitTests │ │ ├── ActionManager │ │ │ └── AimpServiceActionManagerTests.cs │ │ ├── AimpCoreTests.cs │ │ ├── AimpErrorInfoTests.cs │ │ ├── AimpServiceConfig │ │ │ └── AimpServiceConfigTests.cs │ │ ├── AimpTestContext.cs │ │ ├── AlbumArtManager │ │ │ ├── AimpServiceAlbumArtCacheTests.cs │ │ │ ├── AimpServiceAlbumArtTests.cs │ │ │ └── Extension │ │ │ │ └── AimpExtensionAlbumArtProviderTests.cs │ │ ├── Core │ │ │ └── AimpServiceVersionInfoTests.cs │ │ ├── FileManager │ │ │ ├── AimpFileInfoUnitTests.cs │ │ │ ├── AimpServiceFileStreamingUnitTests.cs │ │ │ ├── Extensions │ │ │ │ ├── AimpExtensionFileExpanderUnitTests.cs │ │ │ │ └── AimpExtensionFileFormatUnitTests.cs │ │ │ ├── IAimpServiceFileURI2UnitTests.cs │ │ │ └── IAimpServiceFileURIUnitTests.cs │ │ ├── Internet │ │ │ └── IAimpServiceConnectionSettingsUnitTests.cs │ │ ├── Lyrics │ │ │ ├── AimpLyricsTests.cs │ │ │ └── AimpServiceLyricsTests.cs │ │ ├── MenuManager │ │ │ ├── AimpMenuItemTests.cs │ │ │ └── AimpServiceMenuManagerTests.cs │ │ ├── MessageDispatcher │ │ │ └── AimpServiceMessageDispatcherTests.cs │ │ ├── MusicLibrary │ │ │ └── AimpServiceMusicLibraryTests.cs │ │ ├── Objects │ │ │ ├── AimpFileStreamUnitTests.cs │ │ │ ├── AimpImageUnitTests.cs │ │ │ ├── AimpOrderedListTests.cs │ │ │ ├── AimpStreamUnitTests.cs │ │ │ └── AimpStringUnitTests.cs │ │ ├── Playback │ │ │ ├── AimpPlaybackQueueServiceTests.cs │ │ │ └── PlayerHookTests.cs │ │ ├── Player │ │ │ ├── AimpEqualizerPresetTests.cs │ │ │ ├── AimpExtensionPlaybackQueue2Tests.cs │ │ │ ├── AimpExtensionPlaybackQueueTests.cs │ │ │ ├── AimpExtensionWaveFormProviderTests.cs │ │ │ ├── AimpPlayerTests.cs │ │ │ ├── AimpServicePlayerEqualizerPresetsTests.cs │ │ │ ├── AimpServicePlayerEqualizerTests.cs │ │ │ └── AimpServicePlayerTests.cs │ │ ├── Playlist │ │ │ ├── AimpPlaylistManagerTests.cs │ │ │ ├── AimpPlaylistQueueTests.cs │ │ │ └── AimpPlaylistTests.cs │ │ ├── TagEditor │ │ │ └── AimpServiceFileTagEditorTests.cs │ │ └── Threading │ │ │ └── AimpServiceThreadsTests.cs │ ├── app.config │ ├── commands.json │ ├── nunit.engine.addins │ └── packages.config ├── Resources │ ├── Profile │ │ └── AudioLibrary │ │ │ └── Local.adb │ └── integrationTests │ │ ├── 01_atmosphere.mp3 │ │ ├── 02_loop-mix.mp3 │ │ ├── 03_atmosphere.mp3 │ │ ├── 04_loop-mix.mp3 │ │ ├── IntegrationTests.aimppl4 │ │ ├── img1.jpg │ │ ├── img2.bmp │ │ └── issue_19 │ │ └── issue_19.aimppl4 └── nunit │ └── nunit.framework.dll ├── aimp_dotnet.sln └── tests └── nunit └── nunit.framework.dll /.gitignore: -------------------------------------------------------------------------------- 1 | # Compiled Object files 2 | *.slo 3 | *.lo 4 | *.o 5 | *.obj 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | ipch 11 | 12 | # Compiled Dynamic libraries 13 | *.so 14 | *.dylib 15 | *.dll 16 | 17 | # Fortran module files 18 | *.mod 19 | 20 | # Compiled Static libraries 21 | *.lai 22 | *.la 23 | *.a 24 | *.lib 25 | 26 | # Executables 27 | *.exe 28 | *.out 29 | *.app 30 | 31 | # Visual Studio Files 32 | *.suo 33 | *.opensdf 34 | *.sdf 35 | obj 36 | bin 37 | Debug 38 | CSDebug 39 | Release 40 | CSRelease 41 | .tmp 42 | 43 | include/boost/* 44 | *.opendb 45 | *.db 46 | .sonar/ 47 | *.user 48 | *.plog 49 | *.properties 50 | .vs 51 | bower_components 52 | apidoc 53 | node_modules 54 | docs/*.log 55 | .sonarqube 56 | *.log 57 | 58 | packages 59 | .integrationTests/* 60 | build/api/* 61 | tests/* 62 | /output/ 63 | /GitExtensions.* 64 | -------------------------------------------------------------------------------- /.nuke/parameters.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./build.schema.json", 3 | "Solution": "src/aimp_dotnet.sln" 4 | } -------------------------------------------------------------------------------- /GitVersion.yml: -------------------------------------------------------------------------------- 1 | assembly-versioning-scheme: MajorMinorPatchTag 2 | assembly-file-versioning-scheme: MajorMinorPatchTag 3 | continuous-delivery-fallback-tag: '' 4 | branches: 5 | develop: 6 | regex: ^develop 7 | mode: ContinuousDeployment 8 | tag: 'alpha' 9 | increment: None 10 | prevent-increment-of-merged-branch-version: true 11 | track-merge-target: false 12 | tracks-release-branches: false 13 | is-release-branch: false 14 | feature: 15 | regex: ^feature?[/] 16 | mode: ContinuousDeployment 17 | tag: 'debug' 18 | increment: None 19 | prevent-increment-of-merged-branch-version: false 20 | track-merge-target: false 21 | tracks-release-branches: false 22 | is-release-branch: false 23 | source-branches: ['develop'] 24 | release: 25 | regex: ^release?[/] 26 | mode: ContinuousDeployment 27 | tag: '' 28 | prevent-increment-of-merged-branch-version: true 29 | track-merge-target: false 30 | tracks-release-branches: false 31 | is-release-branch: true 32 | -------------------------------------------------------------------------------- /build.cmd: -------------------------------------------------------------------------------- 1 | :; set -eo pipefail 2 | :; SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd) 3 | :; ${SCRIPT_DIR}/build.sh "$@" 4 | :; exit $? 5 | 6 | @ECHO OFF 7 | powershell -ExecutionPolicy ByPass -NoProfile -File "%~dp0build.ps1" %* 8 | -------------------------------------------------------------------------------- /build/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.cs] 2 | dotnet_style_qualification_for_field = false:warning 3 | dotnet_style_qualification_for_property = false:warning 4 | dotnet_style_qualification_for_method = false:warning 5 | dotnet_style_qualification_for_event = false:warning 6 | dotnet_style_require_accessibility_modifiers = never:warning 7 | 8 | csharp_style_expression_bodied_methods = true:silent 9 | csharp_style_expression_bodied_properties = true:warning 10 | csharp_style_expression_bodied_indexers = true:warning 11 | csharp_style_expression_bodied_accessors = true:warning 12 | -------------------------------------------------------------------------------- /build/ApiProject.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using Nuke.Common.Git; 11 | 12 | internal class ApiProject 13 | { 14 | public string RepositoryUrl { get; set; } 15 | 16 | public string PackageId { get; set; } 17 | 18 | public GitRepository Repository => GitRepository.FromUrl(RepositoryUrl); 19 | } 20 | -------------------------------------------------------------------------------- /build/Configuration.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using System.ComponentModel; 12 | using System.Linq; 13 | using Nuke.Common.Tooling; 14 | 15 | [TypeConverter(typeof(TypeConverter))] 16 | public class Configuration : Enumeration 17 | { 18 | public static Configuration Debug = new Configuration { Value = nameof(Debug) }; 19 | public static Configuration Release = new Configuration { Value = nameof(Release) }; 20 | 21 | public static implicit operator string(Configuration configuration) 22 | { 23 | return configuration.Value; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /build/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /build/Directory.Build.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /build/toc.yml: -------------------------------------------------------------------------------- 1 | - name: Articles 2 | href: articles/ 3 | - name: Api Documentation 4 | href: api/ 5 | homepage: api/index.md 6 | -------------------------------------------------------------------------------- /build_publish.cmd: -------------------------------------------------------------------------------- 1 | :; set -eo pipefail 2 | :; SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd) 3 | :; ${SCRIPT_DIR}/build.sh "$@" 4 | :; exit $? 5 | 6 | @ECHO OFF 7 | powershell -ExecutionPolicy ByPass -NoProfile -File "%~dp0build.ps1" %* Compile --MsBuildPath '' 8 | -------------------------------------------------------------------------------- /docfx_project/.gitignore: -------------------------------------------------------------------------------- 1 | ############### 2 | # folder # 3 | ############### 4 | /**/DROP/ 5 | /**/TEMP/ 6 | /**/packages/ 7 | /**/bin/ 8 | /**/obj/ 9 | _site 10 | src/ 11 | api/ 12 | apidoc/ -------------------------------------------------------------------------------- /docfx_project/articles/intro.md: -------------------------------------------------------------------------------- 1 | # Add your introductions here! 2 | -------------------------------------------------------------------------------- /docfx_project/articles/toc.yml: -------------------------------------------------------------------------------- 1 | - name: Introduction 2 | href: intro.md 3 | -------------------------------------------------------------------------------- /docfx_project/docfx.template.json: -------------------------------------------------------------------------------- 1 | { 2 | "build": { 3 | "content": [ 4 | { 5 | "src": "source/api", 6 | "files": [ 7 | "**/*.yml" 8 | ], 9 | "dest": "api" 10 | }, 11 | { 12 | "src": "source", 13 | "files": [ 14 | "*.md", 15 | "toc.yml", 16 | "docs/**/*.md", 17 | "docs/**/toc.yml" 18 | ] 19 | } 20 | ], 21 | "resource": [ 22 | { 23 | "src": "source", 24 | "files": [ 25 | "images/**", 26 | "favicons/**" 27 | ] 28 | } 29 | ], 30 | 31 | "overwrite": { 32 | "src": "source", 33 | "files": [ 34 | "overwrites/**/*.md", 35 | "disclaimers/*.md" 36 | 37 | ] 38 | }, 39 | "template": [ 40 | "default", 41 | "source/template" 42 | ], 43 | "dest": "output/site", 44 | "globalMetadata": { 45 | "_appTitle": "NUKE", 46 | "_enableSearch": true, 47 | "_gitContribute": { 48 | "branch": "develop", 49 | "apiSpecFolder": "source/overwrites" 50 | } 51 | }, 52 | "noLangKeyword": false, 53 | "xrefService": [ "https://xref.docs.microsoft.com/query?uid={uid}" ] 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /docfx_project/index.md: -------------------------------------------------------------------------------- 1 | # This is the **HOMEPAGE**. 2 | Refer to [Markdown](http://daringfireball.net/projects/markdown/) for how to write markdown files. 3 | ## Quick Start Notes: 4 | 1. Add images to the *images* folder if the file is referencing an image. 5 | -------------------------------------------------------------------------------- /docfx_project/projects.yml: -------------------------------------------------------------------------------- 1 | - repositoryUrl: https://github.com/martin211/aimp_dotnet 2 | - repositoryUrl: https://github.com/martin211/aimp_dotnet_docs.git 3 | -------------------------------------------------------------------------------- /docfx_project/template/index.html.tmpl: -------------------------------------------------------------------------------- 1 | {{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}} 2 | {{!include(/^styles/.*/)}} 3 | {{!include(/^fonts/.*/)}} 4 | {{!include(favicon.ico)}} 5 | {{!include(logo.svg)}} 6 | 7 | 8 | 9 | {{>partials/head}} 10 | 11 |
12 |
13 | {{>partials/navbar}} 14 |
15 | {{{conceptual}}} 16 | {{>partials/footer}} 17 |
18 | {{>partials/scripts}} 19 | 20 | -------------------------------------------------------------------------------- /docfx_project/template/partials/li.tmpl.partial: -------------------------------------------------------------------------------- 1 | {{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}} 2 | 3 | 21 | -------------------------------------------------------------------------------- /docfx_project/template/styles/main.css: -------------------------------------------------------------------------------- 1 | .SubTopic { 2 | font-weight: bold; 3 | } 4 | 5 | .toc .nav > li { 6 | padding: 4px 0; 7 | } -------------------------------------------------------------------------------- /docfx_project/template/styles/main.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information. 2 | -------------------------------------------------------------------------------- /docfx_project/toc.yml: -------------------------------------------------------------------------------- 1 | - name: Api Documentation 2 | href: api/ 3 | homepage: api/AIMP.SDK.html 4 | -------------------------------------------------------------------------------- /global.json: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "8.0.100" 4 | } 5 | } -------------------------------------------------------------------------------- /nuget/tools/commands.json: -------------------------------------------------------------------------------- 1 | { 2 | "commands": { 3 | "CopyPlugin": { 4 | "fileName": "powershell.exe", 5 | "workingDirectory": ".", 6 | "arguments": "-ExecutionPolicy Bypass -NonInteractive -File ..\\..\\..\\Tools\\CopyPlugin.ps1 $(ConfigurationName) $(TargetName) $(TargetDir) $(SolutionDir) $(ProjectDir)" 7 | } 8 | }, 9 | "-vs-binding": { "AfterBuild": [ "CopyPlugin" ] } 10 | } -------------------------------------------------------------------------------- /nunit/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/nunit/nunit.framework.dll -------------------------------------------------------------------------------- /src/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System.Reflection; 11 | 12 | [assembly: AssemblyVersion(AIMP.SDK.AdditionalInfo.Version)] 13 | [assembly: AssemblyFileVersion(AIMP.SDK.AdditionalInfo.Version)] 14 | [assembly: AssemblyInformationalVersion("")] 15 | 16 | [assembly: AssemblyCompany("")] 17 | [assembly: AssemblyCopyright("Copyright © Evgeniy Bogdan 2023")] 18 | [assembly: AssemblyTrademark("")] 19 | [assembly: AssemblyCulture("")] 20 | 21 | namespace AIMP.SDK 22 | { 23 | internal static class AdditionalInfo 24 | { 25 | public const string Version = "1.0.0.0"; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_AppDomain/AppDomainPlugin.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using AIMP.SDK; 3 | 4 | namespace AIMP.DotNet.AppDomainPlugin 5 | { 6 | [AimpPlugin("dotnet_AppDomainDemo", "Evgeniy Bogdan", "1", AimpPluginType = AimpPluginType.Addons, RequireAppDomain = true)] 7 | public class AppDomainPlugin : AimpPlugin 8 | { 9 | public override void Initialize() 10 | { 11 | System.Diagnostics.Debug.WriteLine(AppDomain.CurrentDomain.BaseDirectory); 12 | System.Diagnostics.Debug.WriteLine(AppDomain.CurrentDomain.Id); 13 | } 14 | 15 | public override void Dispose() 16 | { 17 | 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_AppDomain/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0.0", 3 | "name": "aimp_plugin", 4 | "private": true, 5 | "devDependencies": { 6 | "gulp": "3.9.1", 7 | "gulp-rename": "^1.2.2", 8 | "gulp-copy": "^1.0.0", 9 | "gulp-concat": "^2.6.1", 10 | "gulp-clean": "0.3.2" 11 | } 12 | } -------------------------------------------------------------------------------- /src/Plugins/dotnet_CustomFileSystem/ExtensionFileInfo.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using AIMP.SDK.FileManager; 3 | using AIMP.SDK.FileManager.Extensions; 4 | using AIMP.SDK.Objects; 5 | 6 | namespace AIMP.SDK.CustomFileSystem 7 | { 8 | public class ExtensionFileInfo : IAimpExtension, IAimpExtensionFileInfoProvider 9 | { 10 | public AimpActionResult GetFileInfo(IAimpString fileUri, ref IAimpFileInfo fileInfo) 11 | { 12 | var file = fileUri.GetData().Replace(CustomFileSystem.sMySchemePrefix, string.Empty); 13 | if (File.Exists(file)) 14 | { 15 | fileInfo.Album = "test"; 16 | } 17 | 18 | return AimpActionResult.Ok; 19 | } 20 | 21 | public AimpActionResult GetFileInfo(Stream stream, ref IAimpFileInfo fileInfo) 22 | { 23 | throw new System.NotImplementedException(); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /src/Plugins/dotnet_CustomFileSystem/commands.json: -------------------------------------------------------------------------------- 1 | { 2 | "commands": { 3 | "CopyPlugin": { 4 | "fileName": "powershell.exe", 5 | "workingDirectory": ".", 6 | "arguments": 7 | "-ExecutionPolicy Bypass -NonInteractive -File ..\\..\\..\\Tools\\CopyPlugin.ps1 $(ConfigurationName) $(TargetName) $(TargetDir) $(SolutionDir) $(ProjectDir)" 8 | } 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /src/Plugins/dotnet_ExtendDialogWindow/Plugin.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using System.Windows.Forms; 12 | using AIMP; 13 | using AIMP.SDK; 14 | 15 | namespace dotnet_ExtendDialogWindow 16 | { 17 | [AimpPlugin("dotnet_ExtendDialogWindow", "Evgeniy Bogdan", AdditionalInfo.Version, AimpPluginType = AimpPluginType.Addons)] 18 | public class Plugin : AimpPlugin, IAimpExternalSettingsDialog 19 | { 20 | public void Show(IntPtr parentWindow) 21 | { 22 | MessageBox.Show("AimpExtendDialogWindowPlugin.Show"); 23 | } 24 | 25 | public override void Initialize() 26 | { 27 | var optionsForm = new OptionsFrame(Player); 28 | Player.Core.RegisterExtension(optionsForm); 29 | } 30 | 31 | public override void Dispose() 32 | { 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_ExtendDialogWindow/commands.json: -------------------------------------------------------------------------------- 1 | { 2 | "commands": { 3 | "CopyPlugin": { 4 | "fileName": "powershell.exe", 5 | "workingDirectory": ".", 6 | "arguments": 7 | "-ExecutionPolicy Bypass -NonInteractive -File ..\\..\\..\\Tools\\CopyPlugin.ps1 $(ConfigurationName) $(TargetName) $(TargetDir) $(SolutionDir) $(ProjectDir)" 8 | } 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /src/Plugins/dotnet_SmartPlaylist/Plugin.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using AIMP; 12 | using AIMP.SDK; 13 | 14 | namespace Aimp.DotNet.SmartPlaylist 15 | { 16 | [AimpPlugin("SmartPlaylistDemoPlugin", "Evgeniy Bogdan", AdditionalInfo.Version, AimpPluginType = AimpPluginType.Addons, 17 | FullDescription = "Smart Playlist demo plugin")] 18 | public class Plugin : AimpPlugin 19 | { 20 | public override void Initialize() 21 | { 22 | var listner = new FrmTestPreimage(Player.ServicePlaylistManager, Player.Core); 23 | listner.Show(); 24 | } 25 | 26 | public override void Dispose() 27 | { 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_SmartPlaylist/Properties/PluginAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System.Reflection; 11 | using System.Runtime.InteropServices; 12 | 13 | // General Information about an assembly is controlled through the following 14 | // set of attributes. Change these attribute values to modify the information 15 | // associated with an assembly. 16 | [assembly: AssemblyTitle("dotnet_SmartPlaylist")] 17 | [assembly: AssemblyDescription("")] 18 | [assembly: AssemblyConfiguration("")] 19 | [assembly: AssemblyProduct("dotnet_SmartPlaylist")] 20 | 21 | // Setting ComVisible to false makes the types in this assembly not visible 22 | // to COM components. If you need to access a type in this assembly from 23 | // COM, set the ComVisible attribute to true on that type. 24 | [assembly: ComVisible(false)] 25 | 26 | // The following GUID is for the ID of the typelib if this project is exposed to COM 27 | [assembly: Guid("2b1cd6ea-5b3b-44fe-a242-f06c1d6a41f9")] 28 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_SmartPlaylist/commands.json: -------------------------------------------------------------------------------- 1 | { 2 | "commands": { 3 | "CopyPlugin": { 4 | "fileName": "powershell.exe", 5 | "workingDirectory": ".", 6 | "arguments": 7 | "-ExecutionPolicy Bypass -NonInteractive -File ..\\..\\..\\Tools\\CopyPlugin.ps1 $(ConfigurationName) $(TargetName) $(TargetDir) $(SolutionDir) $(ProjectDir)" 8 | } 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /src/Plugins/dotnet_albumart/Properties/PluginAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System.Reflection; 11 | using System.Runtime.InteropServices; 12 | 13 | // General Information about an assembly is controlled through the following 14 | // set of attributes. Change these attribute values to modify the information 15 | // associated with an assembly. 16 | [assembly: AssemblyTitle("dotnet_albumart")] 17 | [assembly: AssemblyDescription("")] 18 | [assembly: AssemblyConfiguration("")] 19 | [assembly: AssemblyProduct("dotnet_albumart")] 20 | 21 | // Setting ComVisible to false makes the types in this assembly not visible 22 | // to COM components. If you need to access a type in this assembly from 23 | // COM, set the ComVisible attribute to true on that type. 24 | [assembly: ComVisible(false)] 25 | 26 | // The following GUID is for the ID of the typelib if this project is exposed to COM 27 | [assembly: Guid("6961d299-1d2b-435e-8222-a82ff8eeca1c")] 28 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_albumart/Resources/1451438429_lastfm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/src/Plugins/dotnet_albumart/Resources/1451438429_lastfm.png -------------------------------------------------------------------------------- /src/Plugins/dotnet_albumart/commands.json: -------------------------------------------------------------------------------- 1 | { 2 | "commands": { 3 | "CopyPlugin": { 4 | "fileName": "powershell.exe", 5 | "workingDirectory": ".", 6 | "arguments": 7 | "-ExecutionPolicy Bypass -NonInteractive -File ..\\..\\..\\Tools\\CopyPlugin.ps1 $(ConfigurationName) $(TargetName) $(TargetDir) $(SolutionDir) $(ProjectDir)" 8 | } 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /src/Plugins/dotnet_albumart/front.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/src/Plugins/dotnet_albumart/front.jpg -------------------------------------------------------------------------------- /src/Plugins/dotnet_demo/AIMPStream.cs: -------------------------------------------------------------------------------- 1 | namespace TestPlugin 2 | { 3 | public class AIMPStream 4 | { 5 | 6 | } 7 | } -------------------------------------------------------------------------------- /src/Plugins/dotnet_demo/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_demo/Logger.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using System.Collections.Generic; 12 | 13 | namespace DemoPlugin 14 | { 15 | public class Logger 16 | { 17 | private static Logger _instance; 18 | 19 | private List _items; 20 | 21 | public EventHandler OnLogChanged; 22 | 23 | public Logger() 24 | { 25 | _items = new List(); 26 | } 27 | 28 | public static Logger Instance => _instance ?? (_instance = new Logger()); 29 | 30 | public void AddInfoMessage(string message) 31 | { 32 | var msg = $"[Info]: {message}"; 33 | _items.Add(msg); 34 | OnLogChanged?.Invoke(this, msg); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_demo/LoggerForm.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using System.Windows.Forms; 12 | 13 | namespace DemoPlugin 14 | { 15 | public partial class LoggerForm : Form 16 | { 17 | public LoggerForm() 18 | { 19 | InitializeComponent(); 20 | Logger.Instance.OnLogChanged += (sender, s) => { textBox1.Text += $"{s}{Environment.NewLine}"; }; 21 | } 22 | 23 | public void WriteLog(string message) 24 | { 25 | textBox1.Text += $"{message}{Environment.NewLine}"; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_demo/OptionsFrame/SettingsForm.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using System.Collections.Generic; 12 | using System.ComponentModel; 13 | using System.Data; 14 | using System.Drawing; 15 | using System.Linq; 16 | using System.Runtime.InteropServices; 17 | using System.Text; 18 | using System.Threading.Tasks; 19 | using System.Windows.Forms; 20 | 21 | namespace DemoPlugin.OptionsFrame 22 | { 23 | public partial class SettingsForm : Form 24 | { 25 | [DllImport("user32.dll", SetLastError = true)] 26 | private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); 27 | 28 | public SettingsForm() 29 | { 30 | InitializeComponent(); 31 | } 32 | 33 | public void Show(IntPtr parent) 34 | { 35 | SetParent(Handle, parent); 36 | WindowState = FormWindowState.Maximized; 37 | Show(); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_demo/Properties/PluginAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System.Reflection; 11 | using System.Runtime.InteropServices; 12 | 13 | // General Information about an assembly is controlled through the following 14 | // set of attributes. Change these attribute values to modify the information 15 | // associated with an assembly. 16 | [assembly: AssemblyTitle("TestPlugin")] 17 | [assembly: AssemblyDescription("")] 18 | [assembly: AssemblyConfiguration("")] 19 | [assembly: AssemblyProduct("TestPlugin")] 20 | 21 | // Setting ComVisible to false makes the types in this assembly not visible 22 | // to COM components. If you need to access a type in this assembly from 23 | // COM, set the ComVisible attribute to true on that type. 24 | [assembly: ComVisible(false)] 25 | 26 | // The following GUID is for the ID of the typelib if this project is exposed to COM 27 | [assembly: Guid("fa07edc8-cb46-47db-b1d5-f2bf28bd7e0f")] 28 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_demo/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace DemoPlugin.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_demo/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_demo/TagEditControl.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using System.Collections.Generic; 12 | using System.ComponentModel; 13 | using System.Drawing; 14 | using System.Data; 15 | using System.Linq; 16 | using System.Text; 17 | using System.Threading.Tasks; 18 | using System.Windows.Forms; 19 | using AIMP.SDK.TagEditor; 20 | 21 | namespace DemoPlugin 22 | { 23 | public partial class TagEditControl : UserControl 24 | { 25 | public TagEditControl(IAimpFileTag tag) 26 | { 27 | InitializeComponent(); 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_demo/UI/PlayListEditor.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using System.Collections.Generic; 12 | using System.ComponentModel; 13 | using System.Data; 14 | using System.Drawing; 15 | using System.Linq; 16 | using System.Text; 17 | using System.Threading.Tasks; 18 | using System.Windows.Forms; 19 | 20 | namespace DemoPlugin.UI 21 | { 22 | public partial class PlaylistEditor : Form 23 | { 24 | public PlaylistEditor() 25 | { 26 | InitializeComponent(); 27 | } 28 | 29 | public string PlaylistName => textBox1.Text; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_demo/Utils.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using AIMP.SDK; 12 | 13 | namespace DemoPlugin 14 | { 15 | internal static class Utils 16 | { 17 | public static ActionResultType CheckResult(ActionResultType actionResult) 18 | { 19 | if (actionResult != ActionResultType.OK) 20 | { 21 | Logger.Instance.AddInfoMessage($"{Environment.StackTrace}: {actionResult}"); 22 | } 23 | 24 | return actionResult; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_demo/commands.json: -------------------------------------------------------------------------------- 1 | { 2 | "commands": { 3 | "CopyPlugin": { 4 | "fileName": "powershell.exe", 5 | "workingDirectory": ".", 6 | "arguments": 7 | "-ExecutionPolicy Bypass -NonInteractive -File ..\\..\\..\\Tools\\CopyPlugin.ps1 $(ConfigurationName) $(TargetName) $(TargetDir) $(SolutionDir) $(ProjectDir)" 8 | } 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /src/Plugins/dotnet_menu/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "profiles": { 3 | "AIMP5.10.2414": { 4 | "commandName": "Executable", 5 | "executablePath": "F:\\code\\aimp\\AIMP5.10.2414\\AIMP.exe", 6 | "workingDirectory": "F:\\code\\aimp\\AIMP5.10.2414\\" 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /src/Plugins/dotnet_musiclibrary/Preimage/PlaylistManagerListener.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using AIMP.SDK; 11 | using AIMP.SDK.Playlist; 12 | using AIMP.SDK.Playlist.Extensions; 13 | using AIMP.SDK.Playlist.Objects; 14 | 15 | namespace AIMP.DotNet.MusicLibrary.Preimage 16 | { 17 | public class PlaylistManagerListener : IAimpExtensionPlaylistManagerListener, IAimpExtension 18 | { 19 | public AimpActionResult OnPlaylistActivated(IAimpPlaylist playlist) 20 | { 21 | return new AimpActionResult(ActionResultType.OK); 22 | } 23 | 24 | public AimpActionResult OnPlaylistAdded(IAimpPlaylist playlist) 25 | { 26 | return new AimpActionResult(ActionResultType.OK); 27 | } 28 | 29 | public AimpActionResult OnPlaylistRemoved(IAimpPlaylist playlist) 30 | { 31 | return new AimpActionResult(ActionResultType.OK); 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_musiclibrary/Properties/PluginAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System.Reflection; 11 | using System.Runtime.InteropServices; 12 | 13 | // General Information about an assembly is controlled through the following 14 | // set of attributes. Change these attribute values to modify the information 15 | // associated with an assembly. 16 | [assembly: AssemblyTitle("dotnet_musiclibrary")] 17 | [assembly: AssemblyDescription("")] 18 | [assembly: AssemblyConfiguration("")] 19 | [assembly: AssemblyProduct("dotnet_musiclibrary")] 20 | 21 | // Setting ComVisible to false makes the types in this assembly not visible 22 | // to COM components. If you need to access a type in this assembly from 23 | // COM, set the ComVisible attribute to true on that type. 24 | [assembly: ComVisible(false)] 25 | 26 | // The following GUID is for the ID of the typelib if this project is exposed to COM 27 | [assembly: Guid("9c155223-d1c5-4943-a4e6-02131544e5fd")] 28 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_musiclibrary/commands.json: -------------------------------------------------------------------------------- 1 | { 2 | "commands": { 3 | "CopyPlugin": { 4 | "fileName": "powershell.exe", 5 | "workingDirectory": ".", 6 | "arguments": 7 | "-ExecutionPolicy Bypass -NonInteractive -File ..\\..\\..\\Tools\\CopyPlugin.ps1 $(ConfigurationName) $(TargetName) $(TargetDir) $(SolutionDir) $(ProjectDir)" 8 | } 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /src/Plugins/dotnet_threading/Plugin.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using AIMP.SDK; 12 | 13 | namespace dotnet_threading 14 | { 15 | [AimpPlugin("ThreadinDemoPlugin", "Evgeniy Bogdan", AdditionalInfo.Version, AimpPluginType = AimpPluginType.Addons, FullDescription = "Threading demo plugin")] 16 | public class Plugin : AimpPlugin 17 | { 18 | public override void Initialize() 19 | { 20 | var task = new TestTask(); 21 | UIntPtr taskThread; 22 | 23 | //Player.ServiceThreadPool.Execute(task, out taskThread); 24 | 25 | var task2 = new TestTask(); 26 | Player.ServiceSynchronizer.ExecuteInMainThread(task2, true); 27 | } 28 | 29 | public override void Dispose() 30 | { 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_threading/Properties/PluginAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System.Reflection; 11 | using System.Runtime.InteropServices; 12 | 13 | // General Information about an assembly is controlled through the following 14 | // set of attributes. Change these attribute values to modify the information 15 | // associated with an assembly. 16 | [assembly: AssemblyTitle("dotnet_threading")] 17 | [assembly: AssemblyDescription("")] 18 | [assembly: AssemblyConfiguration("")] 19 | [assembly: AssemblyProduct("dotnet_threading")] 20 | 21 | // Setting ComVisible to false makes the types in this assembly not visible 22 | // to COM components. If you need to access a type in this assembly from 23 | // COM, set the ComVisible attribute to true on that type. 24 | [assembly: ComVisible(false)] 25 | 26 | // The following GUID is for the ID of the typelib if this project is exposed to COM 27 | [assembly: Guid("e9d9e53d-40d5-4965-9770-faadf73ceeea")] 28 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_threading/TestTask.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using AIMP.SDK.Threading; 12 | 13 | namespace dotnet_threading 14 | { 15 | public class TestTask : IAimpTask 16 | { 17 | public void Execute(IAimpTaskOwner owner) 18 | { 19 | if (!owner.IsCanceled) 20 | { 21 | System.Diagnostics.Debug.WriteLine("TestTask:\tExecute"); 22 | } 23 | 24 | if (!owner.IsCanceled) 25 | { 26 | System.Threading.Thread.Sleep(TimeSpan.FromSeconds(10)); 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_threading/commands.json: -------------------------------------------------------------------------------- 1 | { 2 | "commands": { 3 | "CopyPlugin": { 4 | "fileName": "powershell.exe", 5 | "workingDirectory": ".", 6 | "arguments": 7 | "-ExecutionPolicy Bypass -NonInteractive -File ..\\..\\..\\Tools\\CopyPlugin.ps1 $(ConfigurationName) $(TargetName) $(TargetDir) $(SolutionDir) $(ProjectDir)" 8 | } 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /src/Plugins/dotnet_visual/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_visual/CustomVisualization.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System.Diagnostics; 11 | using AIMP.SDK.Visuals; 12 | 13 | namespace dotnet_visual 14 | { 15 | public class CustomVisualization : IAimpExtensionCustomVisualization 16 | { 17 | public AimpVisualFlags GetFlags() 18 | { 19 | return AimpVisualFlags.NotSuspend & AimpVisualFlags.RQDDataSpectrum & AimpVisualFlags.RQDDataWaveForm; 20 | } 21 | 22 | public void Draw(AimpVisualData data) 23 | { 24 | Debug.WriteLine("CustomVisualization:\tDraw"); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_visual/Plugin.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using AIMP; 11 | using AIMP.SDK; 12 | using AIMP.SDK.Visuals; 13 | 14 | namespace dotnet_visual 15 | { 16 | [AimpPlugin("dotnet_visual", "Evgeniy Bogdan", AdditionalInfo.Version, AimpPluginType = AimpPluginType.Visuals)] 17 | public class Plugin : AimpPlugin 18 | { 19 | private IAimpExtensionCustomVisualization _customVisualization; 20 | private IAimpExtensionEmbeddedVisualization _embeddedVisualization; 21 | 22 | public override void Initialize() 23 | { 24 | _embeddedVisualization = new EmbeddedVisualization(); 25 | //_customVisualization = new CustomVisualization(); 26 | 27 | Player.Core.RegisterExtension(_embeddedVisualization); 28 | } 29 | 30 | public override void Dispose() 31 | { 32 | Player.Core.UnregisterExtension(_embeddedVisualization); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_visual/Properties/PluginAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System.Reflection; 11 | using System.Runtime.InteropServices; 12 | 13 | // General Information about an assembly is controlled through the following 14 | // set of attributes. Change these attribute values to modify the information 15 | // associated with an assembly. 16 | [assembly: AssemblyTitle("dotnet_visual")] 17 | [assembly: AssemblyDescription("")] 18 | [assembly: AssemblyConfiguration("")] 19 | [assembly: AssemblyProduct("dotnet_visual")] 20 | 21 | // Setting ComVisible to false makes the types in this assembly not visible 22 | // to COM components. If you need to access a type in this assembly from 23 | // COM, set the ComVisible attribute to true on that type. 24 | [assembly: ComVisible(false)] 25 | 26 | // The following GUID is for the ID of the typelib if this project is exposed to COM 27 | [assembly: Guid("cb62443e-69b5-43b3-9785-647caa36d175")] 28 | -------------------------------------------------------------------------------- /src/Plugins/dotnet_visual/commands.json: -------------------------------------------------------------------------------- 1 | { 2 | "commands": { 3 | "CopyPlugin": { 4 | "fileName": "powershell.exe", 5 | "workingDirectory": ".", 6 | "arguments": 7 | "-ExecutionPolicy Bypass -NonInteractive -File ..\\..\\..\\Tools\\CopyPlugin.ps1 $(ConfigurationName) $(TargetName) $(TargetDir) $(SolutionDir) $(ProjectDir)" 8 | } 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /src/Plugins/native_plugin/AIMPExports.def: -------------------------------------------------------------------------------- 1 | LIBRARY "native_plugin" 2 | EXPORTS 3 | AIMPPluginGetHeader -------------------------------------------------------------------------------- /src/Plugins/native_plugin/AIMPSDK/AIMPSDK.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // Copyright (c) 2014 - 2020 Evgeniy Bogdan 4 | // https://github.com/martin211/aimp_dotnet 5 | // Mail: mail4evgeniy@gmail.com 6 | // ---------------------------------------------------- 7 | 8 | #pragma once 9 | 10 | #include "AIMPSDK\AIMP400\apiActions.h" 11 | #include "AIMPSDK\AIMP400\apiPlugin.h" 12 | #include "AIMPSDK\AIMP400\apiPlayer.h" 13 | #include "AIMPSDK\AIMP400\apiObjects.h" 14 | #include "AIMPSDK\AIMP400\apiFileManager.h" 15 | #include "AIMPSDK\AIMP400\apiMessages.h" 16 | #include "AIMPSDK\AIMP400\apiAlbumArt.h" 17 | #include "AIMPSDK\AIMP400\apiMenu.h" 18 | #include "AIMPSDK\AIMP400\apiPlaylists.h" 19 | #include "AIMPSDK\AIMP400\apiMenu.h" 20 | #include "AIMPSDK\AIMP400\apiMUI.h" 21 | #include "AIMPSDK\AIMP400\apiMenu.h" 22 | #include "AIMPSDK\AIMP400\apiOptions.h" 23 | #include "AIMPSDK\AIMP400\apiAlbumArt.h" 24 | #include "AIMPSDK\AIMP400\apiCore.h" 25 | #include "AIMPSDK\AIMP400\apiThreading.h" 26 | #include "AIMPSDK\AIMP400\apiVisuals.h" 27 | #include "AIMPSDK\AIMP400\apiMusicLibrary.h" 28 | #include "AIMPSDK\AIMP400\apiTagEditor.h" 29 | #include "AIMPSDK\AIMP400\apiDepricated.h" 30 | -------------------------------------------------------------------------------- /src/Plugins/native_plugin/AimpDotnetPlugin.cpp: -------------------------------------------------------------------------------- 1 | #include "plugin.h" 2 | 3 | BOOL WINAPI AIMPPluginGetHeader(IAIMPPlugin** Header) { 4 | *Header = new NativePlugin(); 5 | return true; 6 | } 7 | -------------------------------------------------------------------------------- /src/Plugins/native_plugin/IUnknownInterfaceImpl.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | template 4 | class IUnknownInterfaceImpl : public T { 5 | public: 6 | 7 | IUnknownInterfaceImpl() { 8 | _LinkCounter = 1; 9 | } 10 | 11 | virtual ~IUnknownInterfaceImpl() { 12 | } 13 | 14 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject) { 15 | if (riid == IID_IUnknown) { 16 | return S_OK; 17 | } 18 | return E_NOTIMPL; 19 | } 20 | 21 | virtual ULONG WINAPI AddRef(void) { 22 | _LinkCounter++; 23 | return _LinkCounter; 24 | } 25 | 26 | virtual ULONG WINAPI Release(void) { 27 | _LinkCounter--; 28 | 29 | if (_LinkCounter == 0) { 30 | delete this; 31 | return 0; 32 | } 33 | 34 | return _LinkCounter; 35 | } 36 | 37 | private: 38 | ULONG _LinkCounter; 39 | }; 40 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/Loader/PluginLoadingStrategy.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | 12 | namespace AIMP.Loader; 13 | 14 | /// 15 | /// Class PluginLoadingStrategy. 16 | /// Implements the 17 | /// 18 | /// 19 | public abstract class PluginLoadingStrategy : MarshalByRefObject 20 | { 21 | /// 22 | /// Loads the specified path. 23 | /// 24 | /// The path. 25 | /// PluginShortInfoForLoad. 26 | public abstract PluginShortInfoForLoad Load(string path); 27 | } 28 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Actions/Objects/IAimpActionEvent.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | 12 | namespace AIMP.SDK.Actions.Objects 13 | { 14 | /// 15 | /// This interface is simple event handler. 16 | /// 17 | public interface IAimpActionEvent 18 | { 19 | //todo: add Data parameter 20 | /// 21 | /// Occurs when action is executing. 22 | /// 23 | event EventHandler OnExecute; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/AimpObjectType.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK; 11 | 12 | public enum AimpObjectType 13 | { 14 | AimpStream, 15 | AimpString, 16 | AimpAction, 17 | AimpFileInfo, 18 | AimpLyrics, 19 | AimpMenuItem, 20 | AimpErrorInfo, 21 | AimpImage, 22 | AimpMemoryStream, 23 | AimpImageContainer, 24 | AimpAlbumArtRequest, 25 | AimpOrderedList 26 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/AlbumArt/AimpFindCovertArtType.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | 12 | namespace AIMP.SDK.AlbumArt 13 | { 14 | /// 15 | /// Enum AimpFindCovertArtType 16 | /// 17 | [Flags] 18 | public enum AimpFindCovertArtType 19 | { 20 | /// 21 | /// The none 22 | /// 23 | None = 0, 24 | 25 | /// 26 | /// The aimp service albumart flags ignorecache 27 | /// 28 | AIMP_SERVICE_ALBUMART_FLAGS_IGNORECACHE = 1, 29 | 30 | /// 31 | /// The aimp service albumart flags original 32 | /// 33 | AIMP_SERVICE_ALBUMART_FLAGS_ORIGINAL = 2, 34 | 35 | /// 36 | /// The aimp service albumart flags waitfor 37 | /// 38 | AIMP_SERVICE_ALBUMART_FLAGS_WAITFOR = 4 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/AlbumArt/Extensions/AimpAlbumArtProviderCategory.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.AlbumArt.Extensions; 11 | 12 | /// 13 | /// Enum AimpAlbumArtProviderCategory 14 | /// 15 | public enum AimpAlbumArtProviderCategory 16 | { 17 | /// 18 | /// The aimp albumart provider category tags 19 | /// 20 | Tags, 21 | 22 | /// 23 | /// The aimp albumart provider category file 24 | /// 25 | File, 26 | 27 | /// 28 | /// The aimp albumart provider category internet 29 | /// 30 | Internet 31 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/AlbumArt/Extensions/IAimpExtensionAlbumArtCatalog2.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System.Drawing; 11 | using AIMP.SDK.FileManager; 12 | using AIMP.SDK.FileManager.Objects; 13 | 14 | namespace AIMP.SDK.AlbumArt.Extensions 15 | { 16 | /// 17 | /// It is the second edition of the interface. 18 | /// 19 | public interface IAimpExtensionAlbumArtCatalog2 20 | { 21 | /// 22 | /// This method will be called on menu item click. 23 | /// 24 | /// The file information. 25 | /// AimpActionResult<Bitmap>. 26 | AimpActionResult Show(IAimpFileInfo fileInfo); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/AlbumArt/Extensions/IAimpExtensionAlbumArtProvider2.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using System.Drawing; 12 | using AIMP.SDK.FileManager.Objects; 13 | 14 | namespace AIMP.SDK.AlbumArt.Extensions 15 | { 16 | /// 17 | /// It is the second edition of the interface. 18 | /// 19 | public interface IAimpExtensionAlbumArtProvider2 20 | { 21 | /// 22 | /// Gets the album art image. 23 | /// 24 | /// The file information. 25 | /// The search options . 26 | /// AimpActionResult<Bitmap>. 27 | [Obsolete] 28 | AimpActionResult Get(IAimpFileInfo fileInfo, IAimpAlbumArtSearchOptions options); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/AlbumArt/Extensions/IAimpExtensionAlbumArtProvider3.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using AIMP.SDK.FileManager.Objects; 11 | using AIMP.SDK.Objects; 12 | 13 | namespace AIMP.SDK.AlbumArt.Extensions; 14 | 15 | /// 16 | /// 17 | /// 18 | /// 19 | public interface IAimpExtensionAlbumArtProvider3 : IAimpExtension 20 | { 21 | /// 22 | /// Gets the album art image. 23 | /// 24 | /// The file info. 25 | /// The request option. 26 | AimpActionResult Get(IAimpFileInfo file, IAimpAlbumArtRequest requestOption); 27 | 28 | AimpAlbumArtProviderCategory GetCategory(); 29 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Configuration/IAimpServiceConfig.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.Configuration 11 | { 12 | /// 13 | /// Configuration manager. 14 | /// Implements the 15 | /// Implements the 16 | /// 17 | /// 18 | /// 19 | public interface IAimpServiceConfig : IAimpConfig, IAimpService 20 | { 21 | /// 22 | /// Flushes the cache. 23 | /// 24 | /// AimpActionResult. 25 | AimpActionResult FlushCache(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/FileManager/Commands/IAimpFileSystemCommand.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.FileManager.Commands 11 | { 12 | /// 13 | /// Interface IAimpFileSystemCommand 14 | /// 15 | public interface IAimpFileSystemCommand 16 | { 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/FileManager/Commands/IAimpFileSystemCommandCopyToClipboard.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System.Collections.Generic; 11 | 12 | namespace AIMP.SDK.FileManager.Commands 13 | { 14 | /// 15 | /// Interface IAimpFileSystemCommandCopyToClipboard 16 | /// Implements the 17 | /// 18 | /// 19 | public interface IAimpFileSystemCommandCopyToClipboard : IAimpFileSystemCommand 20 | { 21 | /// 22 | /// Copies to clipboard. 23 | /// 24 | /// The files. 25 | /// AimpActionResult. 26 | AimpActionResult CopyToClipboard(List files); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/FileManager/Commands/IAimpFileSystemCommandDropSource.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using AIMP.SDK.Objects; 11 | 12 | namespace AIMP.SDK.FileManager.Commands 13 | { 14 | /// 15 | /// Interface IAimpFileSystemCommandDropSource 16 | /// Implements the 17 | /// 18 | /// 19 | public interface IAimpFileSystemCommandDropSource : IAimpFileSystemCommand 20 | { 21 | /// 22 | /// Creates the stream. 23 | /// 24 | /// Name of the file. 25 | /// AimpActionResult<IAimpStream>. 26 | AimpActionResult CreateStream(string fileName); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/FileManager/Commands/IAimpFileSystemCustomFileCommand.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.FileManager.Commands 11 | { 12 | /// 13 | /// Interface IAimpFileSystemCustomFileCommand 14 | /// Implements the 15 | /// 16 | /// 17 | public interface IAimpFileSystemCustomFileCommand : IAimpFileSystemCommand 18 | { 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/FileManager/Extensions/IAimpExtensionFileSystem.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.FileManager.Extensions 11 | { 12 | /// 13 | /// Extension for the IAIMPServiceFileSystems service. 14 | /// Must implement one or few file system commands(Refer to the children articles of the IAIMPServiceFileSystems 15 | /// chapter). 16 | /// 17 | public interface IAimpExtensionFileSystem : IAimpExtension 18 | { 19 | /// 20 | /// Gets the scheme filesystem paths. 21 | /// 22 | /// The schema. 23 | string Schema { get; } 24 | 25 | /// 26 | /// Returns false, if the file system does not support the modification of data. 27 | /// 28 | /// true if [read only]; otherwise, false. 29 | bool ReadOnly { get; } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/FileManager/IAimpServiceFileManager.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.FileManager 11 | { 12 | /// 13 | /// Interface IAimpServiceFileManager 14 | /// 15 | public interface IAimpServiceFileManager 16 | { 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/FileManager/IAimpServiceFileURI2.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.FileManager; 11 | 12 | public interface IAimpServiceFileURI2 : IAimpServiceFileURI 13 | { 14 | AimpActionResult GetScheme(string fileUri); 15 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/IAimpDPIAware.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK 11 | { 12 | public interface IAimpDPIAware : IAimpObject 13 | { 14 | /// 15 | /// Gets or sets the dpi. 16 | /// 17 | /// The dpi. 18 | int DPI { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/IAimpErrorInfo.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | 12 | namespace AIMP.SDK 13 | { 14 | public class ErrorInfo 15 | { 16 | public ErrorInfo(int errorCode, string message, string details) 17 | { 18 | ErrorCode = errorCode; 19 | Message = message; 20 | Details = details; 21 | } 22 | 23 | public int ErrorCode { get; set; } 24 | 25 | public string Message { get; set; } 26 | 27 | public string Details { get; set; } 28 | } 29 | 30 | public interface IAimpErrorInfo : IAimpObject 31 | { 32 | AimpActionResult GetInfo(); 33 | 34 | AimpActionResult GetInfoFormatted(); 35 | 36 | void SetInfo(int errorCode, string message, string details); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/IAimpExtension.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK 11 | { 12 | /// 13 | /// Interface IAimpExtension 14 | /// 15 | public interface IAimpExtension 16 | { 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/IAimpExternalSettingsDialog.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | 12 | namespace AIMP.SDK 13 | { 14 | /// 15 | /// If plugin has external settings dialog that not integrated in the application via Options Dialog API, it should 16 | /// implement this interface on same to interface level. 17 | /// 18 | public interface IAimpExternalSettingsDialog 19 | { 20 | /// 21 | /// Shows the modal dialog. 22 | /// 23 | /// Handle of calling window. 24 | void Show(IntPtr parentWindow); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/IAimpProgressCallback.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK 11 | { 12 | public interface IAimpProgressCallback 13 | { 14 | AimpActionResult Process(double progress, bool canceled); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/IAimpService.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK 11 | { 12 | /// 13 | /// Interface IAimpService. 14 | /// 15 | public interface IAimpService 16 | { 17 | /// 18 | /// Gets a value indicating whether this service is exists. 19 | /// 20 | bool IsExists { get; } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Internet/IAimpServiceConnectionSettings.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.Internet; 11 | 12 | public enum ConnectionType 13 | { 14 | Direct, 15 | Proxy, 16 | SystemDefaults 17 | } 18 | 19 | public interface IAimpServiceConnectionSettings 20 | { 21 | ConnectionType ConnectionType { get; set; } 22 | 23 | string ProxyServer { get; set; } 24 | 25 | string ProxyPort { get; set; } 26 | 27 | string ProxyUserName { get; set; } 28 | 29 | string ProxyUserPass { get; set; } 30 | 31 | int TimeOut { get; set; } 32 | 33 | string UserAgent { get; set; } 34 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MessageDispatcher/AimpQuickFileInfoParams.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using AIMP.SDK.FileManager.Objects; 11 | 12 | namespace AIMP.SDK.MessageDispatcher; 13 | 14 | public enum QfiCommandShow 15 | { 16 | Hide = 0, 17 | Show = 1 18 | } 19 | 20 | public enum QfiAnimationType 21 | { 22 | None = 0, 23 | Fade = 1 24 | } 25 | 26 | public struct AimpQuickFileInfoParams 27 | { 28 | public int Size { get; set; } 29 | 30 | public QfiCommandShow Animation { get; set; } 31 | 32 | public int AnimationTime { get; set; } 33 | 34 | public int DisplayTime { get; set; } 35 | 36 | public byte Opacity { get; set; } 37 | 38 | public IAimpFileInfo FileInfo { get; set; } 39 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MusicLibrary/DataStorage/IAimpDataFieldDisplayValue.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.MusicLibrary.DataStorage 11 | { 12 | /// 13 | /// Providers an ability to customize display value for specified field. 14 | /// 15 | public interface IAimpDataFieldDisplayValue 16 | { 17 | /// 18 | /// Gets the display value. 19 | /// 20 | /// The original value. 21 | /// Count of characters in result. 22 | /// System.String. 23 | string GetDisplayValue(object value, out int length); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MusicLibrary/DataStorage/IAimpDataStorage2.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.MusicLibrary.DataStorage; 11 | 12 | public interface IAimpDataStorage2 : IAimpDataStorage 13 | { 14 | /// 15 | /// Creates the object. 16 | /// Supports only . 17 | /// 18 | /// 19 | AimpActionResult CreateObject(); 20 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MusicLibrary/Extension/Command/IAimpDataStorageCommandAddFiles.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System.Collections.Generic; 11 | 12 | namespace AIMP.SDK.MusicLibrary.Extension.Command 13 | { 14 | /// 15 | /// Interface IAimpDataStorageCommandAddFiles 16 | /// 17 | public interface IAimpDataStorageCommandAddFiles 18 | { 19 | /// 20 | /// Adds the specified files. 21 | /// 22 | /// List of the file names. 23 | /// AimpActionResult. 24 | AimpActionResult Add(IList files); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MusicLibrary/Extension/Command/IAimpDataStorageCommandAddFilesDialog.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | 12 | namespace AIMP.SDK.MusicLibrary.Extension.Command 13 | { 14 | /// 15 | /// Interface IAimpDataStorageCommandAddFilesDialog 16 | /// 17 | public interface IAimpDataStorageCommandAddFilesDialog 18 | { 19 | /// 20 | /// Executes the specified owner handle. 21 | /// 22 | /// The owner window handle. 23 | /// AimpActionResult. 24 | AimpActionResult Execute(IntPtr ownerHandle); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MusicLibrary/Extension/Command/IAimpDataStorageCommandDeleteFiles2.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.MusicLibrary.Extension.Command; 11 | 12 | public interface IAimpDataStorageCommandDeleteFiles2 : IAimpDataStorageCommandDeleteFiles 13 | { 14 | AimpActionResult Delete2(IAimpDataFilter filter, bool physically); 15 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MusicLibrary/Extension/Command/IAimpDataStorageCommandDropData.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.MusicLibrary.Extension.Command 11 | { 12 | /// 13 | /// Interface IAimpDataStorageCommandDropData 14 | /// 15 | public interface IAimpDataStorageCommandDropData 16 | { 17 | /// 18 | /// Drops the data. 19 | /// 20 | /// AimpActionResult. 21 | AimpActionResult DropData(); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MusicLibrary/Extension/Command/IAimpDataStorageCommandFindInLibrary.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using AIMP.SDK.FileManager.Objects; 11 | using AIMP.SDK.MusicLibrary.DataStorage; 12 | using AIMP.SDK.Objects; 13 | 14 | namespace AIMP.SDK.MusicLibrary.Extension.Command; 15 | 16 | public class FindResult 17 | { 18 | public IAimpString GroupingPresetID { get; set; } 19 | 20 | public IAimpGroupingTreeSelection GroupingTreeSelection { get; set; } 21 | } 22 | 23 | public interface IAimpDataStorageCommandFindInLibrary 24 | { 25 | AimpActionResult Find(IAimpFileInfo fileInfo); 26 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MusicLibrary/Extension/Command/IAimpDataStorageCommandReloadTags.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.MusicLibrary.Extension.Command 11 | { 12 | /// 13 | /// Interface IAimpDataStorageCommandReloadTags 14 | /// 15 | public interface IAimpDataStorageCommandReloadTags 16 | { 17 | /// 18 | /// Reloads the tags. 19 | /// 20 | /// The files. 21 | /// AimpActionResult. 22 | AimpActionResult ReloadTags(IAimpFileList files); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MusicLibrary/Extension/Command/IAimpDataStorageCommandReportDialog.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | 12 | namespace AIMP.SDK.MusicLibrary.Extension.Command 13 | { 14 | /// 15 | /// Interface IAimpDataStorageCommandReportDialog 16 | /// 17 | public interface IAimpDataStorageCommandReportDialog 18 | { 19 | /// 20 | /// Executes the specified owner handle. 21 | /// 22 | /// The owner handle. 23 | /// AimpActionResult. 24 | AimpActionResult Execute(IntPtr ownerHandle); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MusicLibrary/Extension/Command/IAimpDataStorageCommandUserMark.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.MusicLibrary.Extension.Command 11 | { 12 | /// 13 | /// Interface IAimpDataStorageCommandUserMark 14 | /// 15 | public interface IAimpDataStorageCommandUserMark 16 | { 17 | /// 18 | /// Sets the mark. 19 | /// 20 | /// The identifier. 21 | /// The value. 22 | /// AimpActionResult. 23 | AimpActionResult SetMark(object id, double value); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MusicLibrary/Extension/IAimpAlbumArtProvider.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using AIMP.SDK.Objects; 11 | 12 | namespace AIMP.SDK.MusicLibrary.Extension; 13 | 14 | public interface IAimpAlbumArtProvider 15 | { 16 | AimpActionResult Get(IAimpObjectList fields, object[] values, IAimpPropertyList options); 17 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MusicLibrary/IAimpSortDirection.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.MusicLibrary; 11 | 12 | 13 | 14 | public interface IAimpSortDirection 15 | { 16 | SortDirectionType Value { get; set; } 17 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MusicLibrary/Presets/IAimpGroupingPreset.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.MusicLibrary.Presets 11 | { 12 | /// 13 | /// Allow access to grouping preset. 14 | /// 15 | public interface IAimpGroupingPreset 16 | { 17 | /// 18 | /// Gets or sets the user custom data. 19 | /// 20 | /// The custom. 21 | string Custom { get; set; } 22 | 23 | /// 24 | /// Gets or sets the preset identifier. 25 | /// 26 | /// The identifier. 27 | string Id { get; set; } 28 | 29 | /// 30 | /// Gets or sets the preset name. 31 | /// 32 | /// The name. 33 | string Name { get; set; } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/MusicLibrary/SortDirectionType.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.MusicLibrary; 11 | 12 | /// 13 | /// Enum SortDirectionType 14 | /// 15 | public enum SortDirectionType 16 | { 17 | Undefined = 0, 18 | 19 | /// 20 | /// The ascending 21 | /// 22 | Ascending = 1, 23 | 24 | /// 25 | /// The descending 26 | /// 27 | Descending = 2 28 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Objects/IAimpHashCode.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.Objects; 11 | 12 | /// 13 | /// 14 | /// 15 | public interface IAimpHashCode 16 | { 17 | /// 18 | /// Returns a hash code for this instance. 19 | /// 20 | /// 21 | /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. 22 | /// 23 | int GetAimpHashCode(); 24 | 25 | /// 26 | /// Recalculates the hash code. 27 | /// 28 | void Recalculate(); 29 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Objects/IAimpImage2.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using System.Runtime.InteropServices; 12 | 13 | namespace AIMP.SDK 14 | { 15 | [StructLayout(LayoutKind.Sequential, Pack = 1)] 16 | public struct RGBQuad 17 | { 18 | public byte rgbBlue; 19 | public byte rgbGreen; 20 | public byte rgbRed; 21 | public byte rgbReserved; 22 | } 23 | 24 | public interface IAimpImage2 25 | { 26 | AimpActionResult LoadFromResource(); 27 | 28 | AimpActionResult LoadFromBitmap(IntPtr bitmap); 29 | 30 | AimpActionResult LoadFromBits(RGBQuad bits, int width, int height); 31 | 32 | AimpActionResult CopyToClipboard(); 33 | 34 | AimpActionResult CanPasteFromClipboard(); 35 | 36 | AimpActionResult PasteFromClipboard(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Objects/IAimpMemoryStream.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using AIMP.SDK.Objects; 11 | 12 | namespace AIMP.SDK 13 | { 14 | /// 15 | /// Interface IAimpMemoryStream 16 | /// Implements the 17 | /// 18 | /// 19 | public interface IAimpMemoryStream : IAimpStream 20 | { 21 | /// 22 | /// Gets the data. 23 | /// 24 | /// AimpActionResult<System.Byte[]>. 25 | AimpActionResult GetData(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Objects/IAimpPropertyList2.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.Objects; 11 | 12 | public interface IAimpPropertyList 13 | { 14 | /// 15 | /// Begins the update. 16 | /// 17 | void BeginUpdate(); 18 | 19 | /// 20 | /// Ends the update. 21 | /// 22 | void EndUpdate(); 23 | } 24 | 25 | public interface IAimpPropertyList2 : IAimpPropertyList 26 | { 27 | 28 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Options/IAimpOptionsDialogFrameKeyboardHelper2.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.Options; 11 | 12 | public interface IAimpOptionsDialogFrameKeyboardHelper2 : IAimpOptionsDialogFrameKeyboardHelper 13 | { 14 | /// 15 | /// Selects the last control. 16 | /// 17 | /// 18 | bool SelectLastControl(); 19 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/PlayList/IAimpPlaylistPreimageListener.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.Playlist 11 | { 12 | /// 13 | /// Delegate AimpPlaylistPreimageListenerHandler 14 | /// 15 | public delegate void AimpPlaylistPreimageListenerHandler(); 16 | 17 | /// 18 | /// The interface provides an ability to notify playlist about the changes in preimage. 19 | /// 20 | public interface IAimpPlaylistPreimageListener 21 | { 22 | /// 23 | /// Occurs when data changed. 24 | /// 25 | event AimpPlaylistPreimageListenerHandler DataChanged; 26 | 27 | /// 28 | /// Occurs when settings changed. 29 | /// 30 | event AimpPlaylistPreimageListenerHandler SettingsChanged; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Player/Extensions/IAimpExtensionPlaybackQueue2.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using AIMP.SDK.Playlist.Objects; 11 | 12 | namespace AIMP.SDK.Player.Extensions; 13 | 14 | /// 15 | /// Extends an abilities of the . 16 | /// 17 | public interface IAimpExtensionPlaybackQueue2 : IAimpExtensionPlaybackQueue 18 | { 19 | /// 20 | /// Returns information about the queue size and position of the Current item in it. 21 | /// 22 | AimpActionResult GetInfo(IAimpPlaylistItem item); 23 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Player/Extensions/IAimpExtensionPlayerHook.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.Player.Extensions 11 | { 12 | /// 13 | /// Interface IAimpExtensionPlayerHook 14 | /// Implements the 15 | /// 16 | /// 17 | public interface IAimpExtensionPlayerHook : IAimpExtension 18 | { 19 | /// 20 | /// Called when [check URL]. 21 | /// 22 | /// The URL. 23 | /// true if XXXX, false otherwise. 24 | bool OnCheckURL(ref string url); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Player/Extensions/IAimpExtensionWaveFormProvider.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System.Collections.Generic; 11 | using AIMP.SDK.Player.Objects; 12 | using AIMP.SDK.Threading; 13 | 14 | namespace AIMP.SDK.Player.Extensions; 15 | 16 | public interface IAimpExtensionWaveFormProvider : IAimpExtension 17 | { 18 | AimpActionResult Calculate(string fileUri, IAimpTaskOwner owner, IList peaks); 19 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Player/Extensions/PlaybackQueueFlags.cs: -------------------------------------------------------------------------------- 1 | namespace AIMP.SDK.Player.Extensions; 2 | 3 | /// 4 | /// Enum PlaybackQueueFlags 5 | /// 6 | public enum PlaybackQueueFlags 7 | { 8 | /// 9 | /// The start from beginning 10 | /// 11 | StartFromBeginning = 1, 12 | 13 | /// 14 | /// The start from cursor 15 | /// 16 | StartFromCursor = 2, 17 | 18 | /// 19 | /// The start from item 20 | /// 21 | StartFromItem = 3 22 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Player/Extensions/PlaybackQueueInfo.cs: -------------------------------------------------------------------------------- 1 | namespace AIMP.SDK.Player.Extensions; 2 | 3 | public class PlaybackQueueInfo 4 | { 5 | public int Position { get; } 6 | 7 | public int Size { get; } 8 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Player/IAimpServicePlaybackQueue2.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.Player 11 | { 12 | public interface IAimpServicePlaybackQueue2 13 | { 14 | AimpActionResult NotifyChanged(); 15 | } 16 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Player/IAimpServiceWaveform.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.Player; 11 | 12 | /// 13 | /// Service provides an ability to register custom data provider for the waveform-navigator. 14 | /// 15 | public interface IAimpServiceWaveform : IAimpService 16 | { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Player/Objects/IAimpEqualizerPreset.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using AIMP.SDK.Objects; 11 | 12 | namespace AIMP.SDK.Player.Objects 13 | { 14 | /// 15 | /// Interface provides an access to the equalizer preset. 16 | /// 17 | public interface IAimpEqualizerPreset : IAimpEqualizerBands 18 | { 19 | /// 20 | /// Gets the name. 21 | /// 22 | /// 23 | StringActionResult GetName(); 24 | 25 | /// 26 | /// Sets the name. 27 | /// 28 | /// The value. 29 | /// 30 | AimpActionResult SetName(IAimpString value); 31 | } 32 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Player/Objects/IAimpPlaybackQueueItem.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using AIMP.SDK.Playlist.Objects; 11 | 12 | namespace AIMP.SDK.Player.Objects 13 | { 14 | /// 15 | /// Interface IAimpPlaybackQueueItem 16 | /// 17 | public interface IAimpPlaybackQueueItem 18 | { 19 | /// 20 | /// Gets or sets the user data. 21 | /// 22 | /// The user data. 23 | object UserData { get; set; } 24 | 25 | /// 26 | /// Gets or sets the playlist item. 27 | /// 28 | /// The playlist item. 29 | IAimpPlaylistItem PlaylistItem { get; set; } 30 | 31 | double Offset { get; set; } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Player/Objects/IAimpWaveformPeakInfo.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.Player.Objects; 11 | 12 | public interface IAimpWaveformPeakInfo 13 | { 14 | int MaxNegative { get; set; } 15 | 16 | int MaxPositive { get; set; } 17 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Player/PlayFlags.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.Player 11 | { 12 | public enum PlayFlags 13 | { 14 | /// 15 | /// Player will search file with this file name in all loaded playlists, if succeeded - will start play it. 16 | /// 17 | FromPlaylist = 1, 18 | 19 | /// 20 | /// This flag should be used with previous one, if file is not found in loaded playlists - it will be added to playlist (target playlist is chosen based on current settings). 21 | /// 22 | CanAdd = 2, 23 | 24 | /// 25 | /// Start file playback without adding it to playlist. 26 | /// 27 | WithoutAdding = 4, 28 | 29 | /// 30 | /// Pause playback on track beginning. 31 | /// 32 | Suspend = 8 33 | } 34 | } -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/TagEditor/IAimpFileTag.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using AIMP.SDK.FileManager.Objects; 11 | 12 | namespace AIMP.SDK.TagEditor 13 | { 14 | /// 15 | /// Interface IAimpFileTag 16 | /// Implements the 17 | /// 18 | /// 19 | public interface IAimpFileTag : IAimpFileInfo 20 | { 21 | /// 22 | /// Gets or sets the tag identifier. 23 | /// 24 | /// The tag identifier. 25 | TagType TagId { get; set; } 26 | 27 | /// 28 | /// Gets or sets a value indicating whether [delete on saving]. 29 | /// 30 | /// true if [delete on saving]; otherwise, false. 31 | bool DeleteOnSaving { get; set; } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/TagEditor/IAimpServiceFindTagsOnline.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.TagEditor; 11 | 12 | public interface IAimpServiceFindTagsOnline 13 | { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Threading/IAimpTask.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.Threading 11 | { 12 | /// 13 | /// Interface implementation must support asynchronous access. 14 | /// 15 | public interface IAimpTask 16 | { 17 | /// 18 | /// Executes the task. 19 | /// 20 | /// Owner provides an ability to know if user cancel the task. 21 | /// You must abort current operation as soon as possible. 22 | /// AimpActionResult. 23 | void Execute(IAimpTaskOwner owner); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Threading/IAimpTaskOwner.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.Threading 11 | { 12 | /// 13 | /// This is tool interface that provides an ability to plugin to be notified about canceling the operation. 14 | /// The instance of interface will be created by the application and will be sent to plugin as parameter of the 15 | /// method. 16 | /// 17 | public interface IAimpTaskOwner 18 | { 19 | /// 20 | /// Plugin must break the operation if the property is True. 21 | /// 22 | /// true if this instance is canceled; otherwise, false. 23 | bool IsCanceled { get; } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Visuals/AimpVisualFlags.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | 12 | namespace AIMP.SDK.Visuals 13 | { 14 | /// 15 | /// Enum AimpVisualFlags 16 | /// 17 | [Flags] 18 | public enum AimpVisualFlags 19 | { 20 | /// 21 | /// Plugin required WaveForm data for rendering. 22 | /// 23 | RQDDataWaveForm = 1, 24 | 25 | /// 26 | /// Plugin required Spectrum data for rendering. 27 | /// 28 | RQDDataSpectrum = 2, 29 | 30 | /// 31 | /// Rendering must not be suspended even if the VisualDisplay window is hidden or inaccessible. 32 | /// 33 | NotSuspend = 4 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/SDK/AIMP.SDK/SDK/Visuals/IAimpServiceVisualizations.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP.SDK.Visuals 11 | { 12 | /// 13 | /// Service have no any methods and properties. 14 | /// 15 | public interface IAimpServiceVisualizations 16 | { 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/AIMPSDK/AIMPSDK.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | #include "AIMPSDK\AIMP400\apiActions.h" 13 | #include "AIMPSDK\AIMP400\apiPlugin.h" 14 | #include "AIMPSDK\AIMP400\apiPlayer.h" 15 | #include "AIMPSDK\AIMP400\apiObjects.h" 16 | #include "AIMPSDK\AIMP400\apiFileManager.h" 17 | #include "AIMPSDK\AIMP400\apiMessages.h" 18 | #include "AIMPSDK\AIMP400\apiAlbumArt.h" 19 | #include "AIMPSDK\AIMP400\apiMenu.h" 20 | #include "AIMPSDK\AIMP400\apiPlaylists.h" 21 | #include "AIMPSDK\AIMP400\apiMenu.h" 22 | #include "AIMPSDK\AIMP400\apiMUI.h" 23 | #include "AIMPSDK\AIMP400\apiMenu.h" 24 | #include "AIMPSDK\AIMP400\apiOptions.h" 25 | #include "AIMPSDK\AIMP400\apiAlbumArt.h" 26 | #include "AIMPSDK\AIMP400\apiCore.h" 27 | #include "AIMPSDK\AIMP400\apiThreading.h" 28 | #include "AIMPSDK\AIMP400\apiVisuals.h" 29 | #include "AIMPSDK\AIMP400\apiMusicLibrary.h" 30 | #include "AIMPSDK\AIMP400\apiTagEditor.h" 31 | #include "AIMPSDK\AIMP400\apiDepricated.h" 32 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/AIMP_Exports.def: -------------------------------------------------------------------------------- 1 | LIBRARY "aimp_dotnet" 2 | EXPORTS 3 | AIMPPluginGetHeader -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/AimpLogger.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | public ref class AimpLogger { 12 | public: 13 | static Logger::IAimpLogger^ Logger; 14 | }; -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/AimpMemoryManager.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include 12 | #include 13 | 14 | class AimpMemoryManager 15 | { 16 | public: 17 | struct ObjectInfo 18 | { 19 | void* object; 20 | bool disposed; 21 | std::string name; 22 | }; 23 | private: 24 | static AimpMemoryManager* instance; 25 | protected: 26 | AimpMemoryManager(); 27 | public: 28 | std::map objects; 29 | static AimpMemoryManager& getInstance(); 30 | 31 | void AddObject(int key, void* obj, std::string name); 32 | 33 | void Release(int key); 34 | 35 | void ReleaseAll(); 36 | }; 37 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/AimpSdk.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | #include "AimpMemoryManager.h" 13 | #include "AIMPSDK\AIMPSDK.h" 14 | #include "SDK\AimpConverter.h" 15 | #include "SDK\PropertyListHelper.h" 16 | 17 | #include "Utils.h" 18 | #include "SDK\AimpObject.h" 19 | #include "IUnknownInterfaceImpl.h" 20 | #include "SDK/Objects/AimpStream.h" 21 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/IUnknownInterfaceImpl.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | template 13 | class IUnknownInterfaceImpl : public T 14 | { 15 | public: 16 | 17 | IUnknownInterfaceImpl() 18 | { 19 | _LinkCounter = 1; 20 | } 21 | 22 | virtual ~IUnknownInterfaceImpl() 23 | { 24 | } 25 | 26 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject) 27 | { 28 | return E_NOTIMPL; 29 | } 30 | 31 | virtual ULONG WINAPI AddRef(void) 32 | { 33 | _LinkCounter++; 34 | return _LinkCounter; 35 | } 36 | 37 | virtual ULONG WINAPI Release(void) 38 | { 39 | _LinkCounter--; 40 | 41 | if (_LinkCounter == 0) 42 | { 43 | delete this; 44 | return 0; 45 | } 46 | 47 | return _LinkCounter; 48 | } 49 | 50 | private: 51 | ULONG _LinkCounter; 52 | }; 53 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/Langs/english.lng: -------------------------------------------------------------------------------- 1 | [DotNet] 2 | 3 | 4 | [DotNet.Plugins] 5 | Caption=DotNet Plugins 6 | Plugins=Plugins 7 | Settings=Settings 8 | bSettings=Settings 9 | 10 | [DotNet.Settings] 11 | DebugMode=Enable debug mode -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/Langs/russian.lng: -------------------------------------------------------------------------------- 1 | [DotNet] 2 | 3 | 4 | [DotNet.Plugins] 5 | Caption=DotNet Плагины 6 | Plugins=Плагины 7 | Settings=Настройки 8 | bSettings=Настройки 9 | 10 | [DotNet.Settings] 11 | DebugMode=Включить режим отладки -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/AimpDPIAware.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "Stdafx.h" 11 | #include "AimpDPIAware.h" 12 | 13 | AimpDPIAware::AimpDPIAware(IAIMPDPIAware* obj) : AimpObject(obj) { 14 | } 15 | 16 | int AimpDPIAware::DPI::get() { 17 | return InternalAimpObject->GetDPI(); 18 | } 19 | 20 | void AimpDPIAware::DPI::set(int dpi) { 21 | InternalAimpObject->SetDPI(dpi); 22 | } 23 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/AimpDPIAware.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | namespace AIMP { 13 | namespace SDK { 14 | public ref class AimpDPIAware : 15 | public AimpObject, 16 | public IAimpDPIAware { 17 | 18 | public: 19 | explicit AimpDPIAware(IAIMPDPIAware* obj); 20 | 21 | property int DPI { 22 | virtual int get(); 23 | virtual void set(int dpi); 24 | } 25 | }; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/AimpErrorInfo.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | namespace AIMP { 13 | namespace SDK { 14 | using namespace AIMP::SDK; 15 | 16 | public ref class AimpErrorInfo : 17 | public AimpObject, 18 | public IAimpErrorInfo { 19 | public: 20 | explicit AimpErrorInfo(IAIMPErrorInfo* aimpObject); 21 | ~AimpErrorInfo(); 22 | !AimpErrorInfo(); 23 | virtual AimpActionResult^ GetInfo(); 24 | virtual AimpActionResult^ GetInfoFormatted(); 25 | virtual void SetInfo(int errorCode, String^ message, String^ details); 26 | }; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/AimpProgressCallback.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "stdafx.h" 11 | #include "AimpProgressCallback.h" 12 | 13 | AimpProgressCallback::AimpProgressCallback(IAIMPProgressCallback* aimpObject) 14 | : AimpObject(aimpObject) { 15 | } 16 | 17 | AimpActionResult^ AimpProgressCallback::Process(double progress, bool canceled) { 18 | InternalAimpObject->Process(progress, &canceled); 19 | return gcnew AimpActionResult(ActionResultType::OK); 20 | } 21 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/AimpProgressCallback.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | namespace AIMP { 13 | namespace SDK { 14 | using namespace AIMP::SDK; 15 | 16 | public ref class AimpProgressCallback : 17 | public AimpObject, 18 | public IAimpProgressCallback { 19 | public: 20 | explicit AimpProgressCallback(IAIMPProgressCallback* aimpObject); 21 | virtual AimpActionResult^ Process(double progress, bool canceled); 22 | }; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Core/AimpServiceShutdown.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK/BaseAimpService.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | namespace Core { 16 | public ref class AimpServiceShutdown : 17 | public BaseAimpService, 18 | public IAimpServiceShutdown { 19 | 20 | public: 21 | explicit AimpServiceShutdown(ManagedAimpCore^ core); 22 | virtual AimpActionResult^ Restart(String^ arguments); 23 | virtual AimpActionResult^ Shutdown(ShutdownType shutdownType); 24 | protected: 25 | IAIMPServiceShutdown* GetAimpService() override; 26 | }; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Core/AimpServiceVersionInfo.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK/BaseAimpService.h" 12 | 13 | public ref class AimpServiceVersionInfo : 14 | public BaseAimpService, 15 | public Core::IAimpServiceVersionInfo { 16 | 17 | public: 18 | explicit AimpServiceVersionInfo(ManagedAimpCore^ core); 19 | property String^ FormatInfo { virtual String^ get(); } 20 | property DateTime BuildDate { virtual DateTime get(); } 21 | property Core::BuildStateType BuildState { virtual Core::BuildStateType get(); } 22 | property int BuildNumber { virtual int get(); } 23 | property int VersionId { virtual int get(); } 24 | protected: 25 | IAIMPServiceVersionInfo* GetAimpService() override; 26 | }; 27 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/CustomUserData.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | public class CustomUserData : IUnknownInterfaceImpl { 13 | private: 14 | gcroot _customObjectHandle; 15 | public: 16 | gcroot CustomObject() { 17 | return _customObjectHandle; 18 | } 19 | 20 | explicit CustomUserData(gcroot data) 21 | : _customObjectHandle(data) { 22 | } 23 | 24 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject) { 25 | return IUnknownInterfaceImpl::QueryInterface(riid, ppvObject); 26 | } 27 | 28 | virtual ULONG WINAPI AddRef(void) { 29 | return IUnknownInterfaceImpl::AddRef(); 30 | } 31 | 32 | virtual ULONG WINAPI Release(void) { 33 | return IUnknownInterfaceImpl::Release(); 34 | } 35 | }; -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/AimpServiceFileFormats.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK\BaseAimpService.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace System; 16 | using namespace FileManager; 17 | 18 | public ref class AimpServiceFileFormats : public BaseAimpService, 19 | public IAimpServiceFileFormats { 20 | public: 21 | explicit AimpServiceFileFormats(ManagedAimpCore^ core); 22 | 23 | virtual StringResult GetFormats(FileFormats flags); 24 | 25 | virtual ActionResult IsSupported(String^ fileName, FileFormats flags); 26 | protected: 27 | IAIMPServiceFileFormats* GetAimpService() override; 28 | }; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/AimpServiceFileInfoFormatter.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK/BaseAimpService.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | public ref class AimpServiceFileInfoFormatter : public BaseAimpService, 16 | public IAimpServiceFileInfoFormatter { 17 | public: 18 | explicit AimpServiceFileInfoFormatter(ManagedAimpCore^ core); 19 | virtual StringResult Format(String^ tmpl, IAimpFileInfo^ fileInfo); 20 | protected: 21 | IAIMPServiceFileInfoFormatter* GetAimpService() override; 22 | }; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/AimpServiceFileInfoFormatterUtils.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK/BaseAimpService.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace Windows; 16 | using namespace Actions::Objects; 17 | 18 | public ref class AimpServiceFileInfoFormatterUtils : public BaseAimpService, 19 | public IAimpServiceFileInfoFormatterUtils { 20 | public: 21 | explicit AimpServiceFileInfoFormatterUtils(ManagedAimpCore^ core); 22 | virtual AimpActionResult^ ShowMacrosLegend(RectangleF screenTarget, IAimpActionEvent^ actionEvent); 23 | protected: 24 | IAIMPServiceFileInfoFormatterUtils* GetAimpService() override; 25 | }; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/AimpFileSystemCommandCopyToClipboard.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "Stdafx.h" 11 | #include "AimpFileSystemCommandCopyToClipboard.h" 12 | 13 | using namespace AIMP::SDK; 14 | 15 | AimpFileSystemCommandCopyToClipboard::AimpFileSystemCommandCopyToClipboard( 16 | IAIMPFileSystemCommandCopyToClipboard* aimpObject) : AimpObject(aimpObject) { 17 | } 18 | 19 | ActionResult AimpFileSystemCommandCopyToClipboard::CopyToClipboard(List^ files) { 20 | auto collection = AimpConverter::ToAimpObjectList(files); 21 | auto result = CheckResult(InternalAimpObject->CopyToClipboard(collection)); 22 | return ACTION_RESULT(result); 23 | } 24 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/AimpFileSystemCommandCopyToClipboard.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK\AimpObject.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace System; 16 | using namespace FileManager; 17 | using namespace Commands; 18 | 19 | public ref class AimpFileSystemCommandCopyToClipboard : AimpObject, 20 | IAimpFileSystemCommandCopyToClipboard { 21 | public: 22 | explicit AimpFileSystemCommandCopyToClipboard(IAIMPFileSystemCommandCopyToClipboard* aimpObject); 23 | 24 | virtual ActionResult CopyToClipboard(List^ files); 25 | }; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/AimpFileSystemCommandDelete.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "Stdafx.h" 11 | #include "AimpFileSystemCommandDelete.h" 12 | 13 | using namespace AIMP::SDK; 14 | 15 | AimpFileSystemCommandDelete:: 16 | AimpFileSystemCommandDelete(IAIMPFileSystemCommandDelete* aimpObject) : AimpObject(aimpObject) { 17 | } 18 | 19 | ActionResult AimpFileSystemCommandDelete::CanProcess(String^ file) { 20 | auto str = AimpConverter::ToAimpString(file); 21 | auto result = CheckResult(InternalAimpObject->CanProcess(str)); 22 | str->Release(); 23 | str = nullptr; 24 | return ACTION_RESULT(result); 25 | } 26 | 27 | ActionResult AimpFileSystemCommandDelete::Process(String^ file) { 28 | auto str = AimpConverter::ToAimpString(file); 29 | auto result = CheckResult(InternalAimpObject->Process(str)); 30 | str->Release(); 31 | str = nullptr; 32 | return ACTION_RESULT(result); 33 | } 34 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/AimpFileSystemCommandDelete.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK\AimpObject.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace System; 16 | using namespace FileManager; 17 | using namespace Commands; 18 | 19 | public ref class AimpFileSystemCommandDelete : AimpObject, 20 | IAimpFileSystemCommandDelete { 21 | public: 22 | explicit AimpFileSystemCommandDelete(IAIMPFileSystemCommandDelete* aimpObject); 23 | 24 | virtual ActionResult CanProcess(String^ file); 25 | 26 | virtual ActionResult Process(String^ file); 27 | }; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/AimpFileSystemCommandDropSource.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK\AimpObject.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace System; 16 | using namespace FileManager; 17 | using namespace Commands; 18 | 19 | public ref class AimpFileSystemCommandDropSource : AimpObject, 20 | IAimpFileSystemCommandDropSource { 21 | public: 22 | explicit AimpFileSystemCommandDropSource(IAIMPFileSystemCommandDropSource* aimpObject); 23 | 24 | virtual StreamResult CreateStream(String^ fileName); 25 | }; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/AimpFileSystemCommandFileInfo.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK\AimpObject.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace System; 16 | using namespace FileManager; 17 | using namespace Commands; 18 | 19 | public ref class AimpFileSystemCommandFileInfo : AimpObject, 20 | IAimpFileSystemCommandFileInfo { 21 | public: 22 | explicit AimpFileSystemCommandFileInfo(IAIMPFileSystemCommandFileInfo* aimpObject); 23 | 24 | virtual LongResult GetFileSize(String^ file); 25 | 26 | virtual ActionResult IsFileExists(String^ file); 27 | 28 | virtual AimpActionResult^ GetFileAttrs(String^ fileName); 29 | }; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/AimpFileSystemCommandOpenFileFolder.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "Stdafx.h" 11 | #include "AimpFileSystemCommandOpenFileFolder.h" 12 | 13 | using namespace AIMP::SDK; 14 | 15 | AimpFileSystemCommandOpenFileFolder::AimpFileSystemCommandOpenFileFolder( 16 | IAIMPFileSystemCommandOpenFileFolder* aimpObject) : AimpObject(aimpObject) { 17 | } 18 | 19 | ActionResult AimpFileSystemCommandOpenFileFolder::CanProcess(String^ file) { 20 | auto str = AimpConverter::ToAimpString(file); 21 | auto result = CheckResult(InternalAimpObject->CanProcess(str)); 22 | str->Release(); 23 | str = nullptr; 24 | return ACTION_RESULT(result); 25 | } 26 | 27 | ActionResult AimpFileSystemCommandOpenFileFolder::Process(String^ file) { 28 | auto str = AimpConverter::ToAimpString(file); 29 | auto result = CheckResult(InternalAimpObject->Process(str)); 30 | str->Release(); 31 | str = nullptr; 32 | return ACTION_RESULT(result); 33 | } 34 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/AimpFileSystemCommandOpenFileFolder.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK\AimpObject.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace System; 16 | using namespace FileManager; 17 | using namespace Commands; 18 | 19 | public ref class AimpFileSystemCommandOpenFileFolder : AimpObject, 20 | IAimpFileSystemCommandOpenFileFolder { 21 | public: 22 | explicit AimpFileSystemCommandOpenFileFolder(IAIMPFileSystemCommandOpenFileFolder* aimpObject); 23 | 24 | virtual ActionResult CanProcess(String^ file); 25 | 26 | virtual ActionResult Process(String^ file); 27 | }; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/AimpFileSystemCommandStreaming.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK\AimpObject.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace System; 16 | using namespace FileManager; 17 | using namespace Commands; 18 | 19 | public ref class AimpFileSystemCommandStreaming : AimpObject, 20 | IAimpFileSystemCommandStreaming { 21 | public: 22 | explicit AimpFileSystemCommandStreaming(IAIMPFileSystemCommandStreaming* aimpObject); 23 | 24 | virtual StreamResult CreateStream(String^ fileName, FileStreamingType flags, long long offset, 25 | long long size); 26 | }; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/Internal/InternalAimpFileSystemCommandCopyToClipboard.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | using namespace AIMP::SDK::FileManager::Commands; 13 | 14 | class InternalAimpFileSystemCommandCopyToClipboard : IUnknownInterfaceImpl { 15 | private: 16 | typedef IUnknownInterfaceImpl Base; 17 | gcroot _instance; 18 | 19 | public: 20 | InternalAimpFileSystemCommandCopyToClipboard(gcroot instance); 21 | 22 | virtual HRESULT WINAPI CopyToClipboard(IAIMPObjectList* Files); 23 | 24 | virtual ULONG WINAPI AddRef(void); 25 | 26 | virtual ULONG WINAPI Release(void); 27 | 28 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 29 | }; 30 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/Internal/InternalAimpFileSystemCommandDelete.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | using namespace AIMP::SDK::FileManager::Commands; 13 | 14 | class InternalAimpFileSystemCommandDelete : IUnknownInterfaceImpl { 15 | private: 16 | typedef IUnknownInterfaceImpl Base; 17 | gcroot _managedInstance; 18 | 19 | public: 20 | InternalAimpFileSystemCommandDelete(gcroot instance); 21 | 22 | virtual HRESULT WINAPI CanProcess(IAIMPString* fileName); 23 | 24 | virtual HRESULT WINAPI Process(IAIMPString* fileName); 25 | 26 | virtual ULONG WINAPI AddRef(void); 27 | 28 | virtual ULONG WINAPI Release(void); 29 | 30 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 31 | }; 32 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/Internal/InternalAimpFileSystemCommandDropSource.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | using namespace AIMP::SDK::FileManager::Commands; 13 | 14 | class InternalAimpFileSystemCommandDropSource : IUnknownInterfaceImpl { 15 | private: 16 | typedef IUnknownInterfaceImpl Base; 17 | gcroot _instance; 18 | 19 | public: 20 | InternalAimpFileSystemCommandDropSource(gcroot instance); 21 | 22 | virtual HRESULT WINAPI CreateStream(IAIMPString* fileName, IAIMPStream** stream); 23 | 24 | virtual ULONG WINAPI AddRef(void); 25 | 26 | virtual ULONG WINAPI Release(void); 27 | 28 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 29 | }; 30 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/Internal/InternalAimpFileSystemCommandOpenFileFolder.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | using namespace AIMP::SDK::FileManager::Commands; 13 | 14 | class InternalAimpFileSystemCommandOpenFileFolder : public IUnknownInterfaceImpl { 15 | private: 16 | typedef IUnknownInterfaceImpl Base; 17 | gcroot _instance; 18 | 19 | public: 20 | InternalAimpFileSystemCommandOpenFileFolder(gcroot instance); 21 | 22 | virtual HRESULT WINAPI CanProcess(IAIMPString* FileName); 23 | 24 | virtual HRESULT WINAPI Process(IAIMPString* FileName); 25 | 26 | virtual ULONG WINAPI AddRef(void); 27 | 28 | virtual ULONG WINAPI Release(void); 29 | 30 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 31 | }; 32 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/Internal/InternalAimpFileSystemCommandStreaming.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class InternalAimpFileSystemCommandStreaming : IUnknownInterfaceImpl { 13 | private: 14 | typedef IUnknownInterfaceImpl Base; 15 | gcroot _instance; 16 | 17 | public: 18 | InternalAimpFileSystemCommandStreaming( 19 | gcroot instance); 20 | 21 | virtual HRESULT WINAPI CreateStream(IAIMPString* fileName, const INT64 offset, const INT64 size, DWORD flags, 22 | IAIMPStream** stream); 23 | 24 | virtual ULONG WINAPI AddRef(void); 25 | 26 | virtual ULONG WINAPI Release(void); 27 | 28 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 29 | }; 30 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/Internal/InternalAimpFileSystemCustomFileCommand.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "Stdafx.h" 11 | #include "InternalAimpFileSystemCustomFileCommand.h" 12 | 13 | InternalAimpFileSystemCustomFileCommand::InternalAimpFileSystemCustomFileCommand( 14 | gcroot instance) { 15 | _instance = instance; 16 | } 17 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/Internal/InternalAimpFileSystemCustomFileCommand.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class InternalAimpFileSystemCustomFileCommand : IUnknownInterfaceImpl { 13 | private: 14 | gcroot _instance; 15 | 16 | public: 17 | InternalAimpFileSystemCustomFileCommand( 18 | gcroot instance); 19 | }; 20 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/Internal/Stdafx.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "Stdafx.h" 12 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Commands/Stdafx.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "Stdafx.h" 12 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Extensions/InternalAimpExtensionFileExpander.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class InternalAimpExtensionFileExpander : public IUnknownInterfaceImpl { 13 | private: 14 | gcroot _managedInstance; 15 | IAIMPCore* _core; 16 | 17 | public: 18 | typedef IUnknownInterfaceImpl Base; 19 | 20 | InternalAimpExtensionFileExpander(gcroot managedInstance, IAIMPCore* core); 21 | 22 | virtual HRESULT WINAPI Expand(IAIMPString* fileName, IAIMPObjectList** list, IAIMPProgressCallback* progressCallback); 23 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 24 | virtual ULONG WINAPI AddRef(void); 25 | virtual ULONG WINAPI Release(void); 26 | }; 27 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Extensions/InternalAimpExtensionFileFormat.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class InternalAimpExtensionFileFormat : 13 | public IUnknownInterfaceImpl { 14 | private: 15 | gcroot _managedInstance; 16 | 17 | public: 18 | typedef IUnknownInterfaceImpl Base; 19 | 20 | InternalAimpExtensionFileFormat( 21 | gcroot managedInstance) { 22 | _managedInstance = managedInstance; 23 | } 24 | 25 | virtual HRESULT WINAPI GetDescription(IAIMPString** s); 26 | virtual HRESULT WINAPI GetExtList(IAIMPString** s); 27 | virtual HRESULT WINAPI GetFlags(DWORD* s); 28 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 29 | virtual ULONG WINAPI AddRef(void); 30 | virtual ULONG WINAPI Release(void); 31 | }; 32 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/FileManager/Services/AimpServiceFileURI2.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "AimpServiceFileURI.h" 12 | #include "SDK/BaseAimpService.h" 13 | 14 | namespace AIMP { 15 | namespace SDK { 16 | public ref class AimpServiceFileURI2 : 17 | public AimpServiceFileURI, 18 | public IAimpServiceFileURI2 { 19 | public: 20 | explicit AimpServiceFileURI2(ManagedAimpCore^ core) 21 | : AimpServiceFileURI(core) { 22 | } 23 | 24 | virtual AimpActionResult^ GetScheme(String^ fileUri); 25 | }; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Lyrics/AimpExtensionLyricsProvider.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "AIMPSDK/AIMP400/apiLyrics.h" 12 | 13 | using namespace AIMP::SDK::Lyrics::Extensions; 14 | 15 | class AimpExtensionLyricsProvider : 16 | public IUnknownInterfaceImpl { 17 | private: 18 | gcroot _managedExtension; 19 | public: 20 | typedef IUnknownInterfaceImpl Base; 21 | 22 | explicit AimpExtensionLyricsProvider(gcroot extension); 23 | 24 | virtual HRESULT WINAPI Get(IAIMPTaskOwner* owner, IAIMPFileInfo* file_info, DWORD flags, IAIMPLyrics* lyrics); 25 | 26 | virtual DWORD WINAPI GetCategory(); 27 | 28 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 29 | 30 | virtual ULONG WINAPI AddRef(void); 31 | 32 | virtual ULONG WINAPI Release(void); 33 | }; 34 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MUI/AimpMIUManager.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | #include "SDK\BaseManager.h" 13 | 14 | namespace AIMP 15 | { 16 | namespace SDK 17 | { 18 | using namespace System; 19 | using namespace MUIManager; 20 | 21 | public ref class AimpServiceMUI : public BaseAimpService, public IAimpMUIManager 22 | { 23 | public: 24 | explicit AimpServiceMUI(ManagedAimpCore^ core); 25 | 26 | virtual String^ GetName(); 27 | 28 | virtual String^ GetValue(String^ key); 29 | 30 | virtual String^ GetValuePart(String^ key, int index); 31 | }; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MUI/AimpServiceMUI.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | #include "SDK\BaseAimpService.h" 13 | 14 | namespace AIMP { 15 | namespace SDK { 16 | using namespace System; 17 | using namespace MUIManager; 18 | 19 | public ref class AimpServiceMUI : public BaseAimpService, public IAimpServiceMUI { 20 | public: 21 | explicit AimpServiceMUI(ManagedAimpCore^ core); 22 | 23 | virtual String^ GetName(); 24 | 25 | virtual String^ GetValue(String^ key); 26 | 27 | virtual String^ GetValuePart(String^ key, int index); 28 | protected: 29 | IAIMPServiceMUI* GetAimpService() override; 30 | }; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MessageDispatcher/InternalAimpMessageHook.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | using namespace System; 13 | using namespace AIMP::SDK::MessageDispatcher; 14 | 15 | class InternalAimpMessageHook : public IUnknownInterfaceImpl { 16 | public: 17 | typedef IUnknownInterfaceImpl Base; 18 | 19 | InternalAimpMessageHook(gcroot managedCore); 20 | virtual void WINAPI CoreMessage(DWORD aMessage, int aParam1, void* aParam2, HRESULT* aResult); 21 | 22 | //virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 23 | //virtual ULONG WINAPI AddRef(void); 24 | //virtual ULONG WINAPI Release(void); 25 | private: 26 | gcroot _managedCore; 27 | }; 28 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/AimpDataStorageManager.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | namespace AIMP { 13 | namespace SDK { 14 | using namespace MusicLibrary; 15 | using namespace Actions; 16 | using namespace Actions::Objects; 17 | 18 | public ref class AimpDataStorageManager : 19 | public AimpObject, 20 | public IAimpDataStorageManager { 21 | public: 22 | explicit AimpDataStorageManager(IAIMPMLDataStorageManager* manager); 23 | 24 | virtual ActionResult BackgroundTaskStarted(int id, String^ caption, IAimpActionEvent^ cancelEvent); 25 | 26 | virtual ActionResult BackgroundTaskFinished(int id); 27 | 28 | virtual void Changed(); 29 | }; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/AimpGroupingTreeSelection.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | namespace AIMP { 13 | namespace SDK { 14 | using namespace SDK; 15 | using namespace MusicLibrary::DataFilter; 16 | using namespace MusicLibrary::DataStorage; 17 | 18 | public ref class AimpGroupingTreeSelection : 19 | public AimpObject, 20 | public IAimpGroupingTreeSelection { 21 | public: 22 | explicit AimpGroupingTreeSelection(IAIMPMLGroupingTreeSelection* aimpObject); 23 | 24 | virtual int GetCount(); 25 | 26 | virtual TYPED_RESULT_2(String, Object) GetValue(int index); 27 | }; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/AimpLocalDataStorage.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "stdafx.h" 11 | #include "AimpLocalDataStorage.h" 12 | 13 | AimpLocalDataStorage::AimpLocalDataStorage(IAIMPMLDataStorage2* obj) : AimpDataStorage2(obj) { 14 | } 15 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/AimpLocalDataStorage.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "DataStorage/AimpDataStorage2.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | 16 | public ref class AimpLocalDataStorage : public AimpDataStorage2, public IAimpLocalDataStorage { 17 | public: 18 | explicit AimpLocalDataStorage(IAIMPMLDataStorage2* obj); 19 | }; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/AimpServiceMusicLibraryUI.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK\BaseAimpService.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace System; 16 | using namespace MusicLibrary; 17 | 18 | public ref class AimpServiceMusicLibraryUI : 19 | public BaseAimpService, 20 | public IAimpServiceMusicLibraryUI { 21 | public: 22 | explicit AimpServiceMusicLibraryUI(ManagedAimpCore^ core); 23 | 24 | virtual TYPED_RESULT(IAimpFileList) GetFiles(FilesType flags); 25 | 26 | virtual TYPED_RESULT(IAimpDataFilter) GetGroupingFilter(); 27 | 28 | virtual StringResult GetGroupingFilterPath(); 29 | 30 | virtual ActionResult SetGroupingFilterPath(String^ path); 31 | protected: 32 | IAIMPServiceMusicLibraryUI* GetAimpService() override; 33 | }; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/DataFilter/AimpDataFieldFilterByArray.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | namespace AIMP { 13 | namespace SDK { 14 | using namespace System; 15 | using namespace Collections::Generic; 16 | using namespace MusicLibrary::DataFilter; 17 | 18 | public ref class AimpDataFieldFilterByArray : public IAimpDataFieldFilterByArray, 19 | public AimpObject { 20 | public: 21 | explicit AimpDataFieldFilterByArray(IAIMPMLDataFieldFilterByArray* aimpObject); 22 | virtual property String^ Field 23 | { 24 | String^ get(); 25 | void set(String^ value); 26 | } 27 | virtual ActionResult SetData(IList^ values); 28 | virtual AimpActionResult^>^ GetData(); 29 | }; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/DataStorage/AimpDataStorage.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "Stdafx.h" 11 | #include "AimpDataStorage.h" 12 | #include "BaseAimpDataStorage.h" 13 | 14 | using namespace AIMP::SDK; 15 | 16 | AimpDataStorage::AimpDataStorage(IAIMPMLDataStorage* aimpDataStorage) : BaseAimpDataStorage(aimpDataStorage) { 17 | } 18 | 19 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/DataStorage/AimpDataStorage.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "BaseAimpDataStorage.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace System; 16 | using namespace MusicLibrary::DataStorage; 17 | using namespace MusicLibrary::Presets; 18 | 19 | public ref class AimpDataStorage : public BaseAimpDataStorage, public IAimpDataStorage { 20 | public: 21 | explicit AimpDataStorage(IAIMPMLDataStorage* aimpDataStorage); 22 | }; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/Extension/Command/AimpDataStorageCommandAddFiles.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class AimpDataStorageCommandAddFiles : public IUnknownInterfaceImpl { 13 | private: 14 | gcroot _instance; 15 | public: 16 | typedef IUnknownInterfaceImpl Base; 17 | 18 | explicit AimpDataStorageCommandAddFiles( 19 | gcroot instance); 20 | 21 | virtual HRESULT WINAPI Add(IAIMPObjectList* Files); 22 | 23 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 24 | 25 | virtual ULONG WINAPI AddRef(void); 26 | 27 | virtual ULONG WINAPI Release(void); 28 | }; 29 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/Extension/Command/AimpDataStorageCommandAddFilesDialog.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class AimpDataStorageCommandAddFilesDialog : public IUnknownInterfaceImpl { 13 | private: 14 | gcroot _instance; 15 | public: 16 | typedef IUnknownInterfaceImpl Base; 17 | 18 | AimpDataStorageCommandAddFilesDialog( 19 | gcroot instance); 20 | 21 | virtual HRESULT WINAPI Execute(HWND OwnerHandle); 22 | 23 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 24 | 25 | virtual ULONG WINAPI AddRef(void); 26 | 27 | virtual ULONG WINAPI Release(void); 28 | }; 29 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/Extension/Command/AimpDataStorageCommandDeleteFiles.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class AimpDataStorageCommandDeleteFiles : public IUnknownInterfaceImpl { 13 | private: 14 | gcroot _instance; 15 | public: 16 | typedef IUnknownInterfaceImpl Base; 17 | 18 | AimpDataStorageCommandDeleteFiles(gcroot instance); 19 | 20 | virtual BOOL WINAPI CanDelete(BOOL Physically); 21 | 22 | virtual HRESULT WINAPI Delete(IAIMPMLFileList* Files, BOOL Physically); 23 | 24 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 25 | 26 | virtual ULONG WINAPI AddRef(void); 27 | 28 | virtual ULONG WINAPI Release(void); 29 | }; 30 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/Extension/Command/AimpDataStorageCommandDropData.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class AimpDataStorageCommandDropData : public IUnknownInterfaceImpl { 13 | private: 14 | gcroot _instance; 15 | public: 16 | typedef IUnknownInterfaceImpl Base; 17 | 18 | AimpDataStorageCommandDropData(gcroot instance); 19 | 20 | virtual HRESULT WINAPI DropData(); 21 | 22 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 23 | 24 | virtual ULONG WINAPI AddRef(void); 25 | 26 | virtual ULONG WINAPI Release(void); 27 | }; 28 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/Extension/Command/AimpDataStorageCommandFindInLibrary.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | using namespace AIMP::SDK::MusicLibrary::Extension::Command; 13 | 14 | class AimpDataStorageCommandFindInLibrary : IUnknownInterfaceImpl { 15 | private: 16 | gcroot _instance; 17 | public: 18 | typedef IUnknownInterfaceImpl Base; 19 | 20 | AimpDataStorageCommandFindInLibrary(gcroot instance); 21 | 22 | virtual HRESULT WINAPI Find(IAIMPFileInfo* FileInfo, IAIMPString** GroupingPresetID, IAIMPMLGroupingTreeSelection** GroupingTreeSelection); 23 | 24 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 25 | 26 | virtual ULONG WINAPI AddRef(void); 27 | 28 | virtual ULONG WINAPI Release(void); 29 | }; -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/Extension/Command/AimpDataStorageCommandReloadTags.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class AimpDataStorageCommandReloadTags : public IUnknownInterfaceImpl { 13 | private: 14 | gcroot _instance; 15 | public: 16 | typedef IUnknownInterfaceImpl Base; 17 | 18 | AimpDataStorageCommandReloadTags( 19 | gcroot instance); 20 | 21 | virtual HRESULT WINAPI ReloadTags(IAIMPMLFileList* Files); 22 | 23 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 24 | 25 | virtual ULONG WINAPI AddRef(void); 26 | 27 | virtual ULONG WINAPI Release(void); 28 | }; 29 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/Extension/Command/AimpDataStorageCommandReportDialog.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class AimpDataStorageCommandReportDialog : public IUnknownInterfaceImpl { 13 | private: 14 | gcroot _instance; 15 | 16 | public: 17 | typedef IUnknownInterfaceImpl Base; 18 | 19 | AimpDataStorageCommandReportDialog( 20 | gcroot instance); 21 | 22 | virtual HRESULT WINAPI Execute(HWND OwnerHandle); 23 | 24 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 25 | 26 | virtual ULONG WINAPI AddRef(void); 27 | 28 | virtual ULONG WINAPI Release(void); 29 | }; 30 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/Extension/Command/AimpDataStorageCommandUserMark.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class AimpDataStorageCommandUserMark : public IUnknownInterfaceImpl { 13 | private: 14 | gcroot _instance; 15 | 16 | public: 17 | typedef IUnknownInterfaceImpl Base; 18 | 19 | AimpDataStorageCommandUserMark(gcroot instance); 20 | 21 | virtual HRESULT WINAPI SetMark(VARIANT* ID, const DOUBLE Value); 22 | 23 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 24 | 25 | virtual ULONG WINAPI AddRef(void); 26 | 27 | virtual ULONG WINAPI Release(void); 28 | }; 29 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/Extension/InternalAimpAlbumArtProvider.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class InternalAimpAlbumArtProvider : public IUnknownInterfaceImpl { 13 | private: 14 | gcroot _instance; 15 | public: 16 | typedef IUnknownInterfaceImpl Base; 17 | 18 | explicit InternalAimpAlbumArtProvider(gcroot instance); 19 | 20 | virtual HRESULT WINAPI Get(IAIMPObjectList* Fields, VARIANT* Values, IAIMPPropertyList* Options, IAIMPImageContainer** Image); 21 | 22 | virtual ULONG WINAPI AddRef(void); 23 | 24 | virtual ULONG WINAPI Release(void); 25 | 26 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 27 | }; -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/Extension/InternalAimpAlbumArtProvider2.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class InternalAimpAlbumArtProvider2 : public IUnknownInterfaceImpl { 13 | private: 14 | gcroot _instance; 15 | public: 16 | typedef IUnknownInterfaceImpl Base; 17 | 18 | explicit InternalAimpAlbumArtProvider2(gcroot instance); 19 | 20 | virtual HRESULT WINAPI Get(IAIMPObjectList* Fields, VARIANT* Values, IAIMPAlbumArtRequest* Request, IAIMPImageContainer** Image); 21 | 22 | virtual ULONG WINAPI AddRef(void); 23 | 24 | virtual ULONG WINAPI Release(void); 25 | 26 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 27 | }; 28 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/InternalAimpDataProviderSelection.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class InternalAimpDataProviderSelection : public IUnknownInterfaceImpl { 13 | private: 14 | gcroot _instance; 15 | public: 16 | InternalAimpDataProviderSelection(gcroot managedInstance); 17 | 18 | virtual DOUBLE WINAPI GetValueAsFloat(int FieldIndex); 19 | 20 | virtual int WINAPI GetValueAsInt32(int FieldIndex); 21 | 22 | virtual INT64 WINAPI GetValueAsInt64(int FieldIndex); 23 | 24 | virtual WCHAR* WINAPI GetValueAsString(int FieldIndex, int* Length); 25 | 26 | virtual BOOL WINAPI NextRow(); 27 | 28 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 29 | }; 30 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/MusicLibrary/InternalDataFieldFilter.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "stdafx.h" 11 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Objects/AimpFileStream.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | namespace AIMP { 13 | namespace SDK { 14 | public ref class AimpFileStream : 15 | public AimpStream, 16 | public IAimpFileStream { 17 | public: 18 | explicit AimpFileStream(IAIMPFileStream* aimpObject); 19 | virtual AimpActionResult^ GetClipping(); 20 | virtual AimpActionResult^ GetFileName(); 21 | }; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Objects/AimpMemoryStream.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "Stdafx.h" 11 | #include "AimpMemoryStream.h" 12 | 13 | AimpMemoryStream::AimpMemoryStream(IAIMPMemoryStream* aimpObject) : AimpStream(static_cast(aimpObject)) { 14 | } 15 | 16 | AimpActionResult^>^ AimpMemoryStream::GetData() { 17 | const auto size = InternalAimpObject->GetSize(); 18 | array^ arr = gcnew array(size); 19 | IAIMPMemoryStream* stream = static_cast(InternalAimpObject); 20 | byte* pointer = static_cast(stream->GetData()); 21 | 22 | for (int i = 0; i < size; i++) { 23 | arr[i] = pointer[i]; 24 | } 25 | 26 | return gcnew AimpActionResult^>(ActionResultType::OK, arr); 27 | } 28 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Objects/AimpMemoryStream.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | namespace AIMP { 13 | namespace SDK { 14 | public ref class AimpMemoryStream : 15 | public AimpStream, 16 | public IAimpMemoryStream { 17 | public: 18 | AimpMemoryStream(IAIMPMemoryStream* aimpObject); 19 | virtual AimpActionResult^>^ GetData(); 20 | }; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Options/AimpServiceOptionsDialog.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK\BaseAimpService.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace SDK; 16 | using namespace Options; 17 | 18 | public ref class AimpServiceOptionsDialog : public BaseAimpService, 19 | public IAimpServiceOptionsDialog { 20 | public: 21 | explicit AimpServiceOptionsDialog(ManagedAimpCore^ core); 22 | 23 | virtual ActionResult FrameModified(IAimpOptionsDialogFrame^ frame); 24 | 25 | virtual ActionResult FrameShow(IAimpOptionsDialogFrame^ frame, bool forceShow); 26 | protected: 27 | IAIMPServiceOptionsDialog* GetAimpService() override; 28 | }; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/PlayList/AimpExtensionPlaylistPreimageFactory.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK\BaseAimpService.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace System; 16 | using namespace SDK; 17 | using namespace Playlist; 18 | using namespace Playlist::Objects; 19 | 20 | public ref class AimpExtensionPlaylistPreimageFactory : 21 | public AimpObject, 22 | public IAimpExtensionPlaylistPreimageFactory { 23 | public: 24 | explicit AimpExtensionPlaylistPreimageFactory(IAIMPExtensionPlaylistPreimageFactory* aimpObject); 25 | 26 | virtual TYPED_RESULT(IAimpPlaylistPreimage) CreatePreimage(); 27 | 28 | virtual TYPED_RESULT(String) GetName(); 29 | 30 | virtual TYPED_RESULT(String) GetId(); 31 | 32 | virtual PreimageFactoryFlags GetFlags(); 33 | }; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/PlayList/AimpPlaylistPreimageFolders.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "AimpPlaylistPreimage.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace System; 16 | using namespace AIMP::SDK::Playlist; 17 | 18 | public ref class AimpPlaylistPreimageFolders : 19 | public AimpPlaylistPreimage, 20 | public IAimpPlaylistPreimageFolders { 21 | public: 22 | explicit AimpPlaylistPreimageFolders(IAIMPPlaylistPreimageFolders* aimpObject); 23 | 24 | virtual ActionResult ItemsAdd(String^ path, bool recursive); 25 | 26 | virtual ActionResult ItemsDelete(int index); 27 | 28 | virtual ActionResult ItemsDeleteAll(); 29 | 30 | virtual AimpActionResult^ ItemsGet(int index); 31 | 32 | virtual int ItemsGetCount(); 33 | }; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/PlayList/IPlayListQueueEventExecutor.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | public interface class IPlayListQueueEventExecutor { 13 | virtual void OnContentChanged(); 14 | 15 | virtual void OnStateChanged(); 16 | }; 17 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Playback/AimpExtensionPlayerHook.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | using namespace Player::Extensions; 13 | 14 | class AimpExtensionPlayerHook : 15 | public IUnknownInterfaceImpl { 16 | private: 17 | gcroot _managed; 18 | public: 19 | explicit AimpExtensionPlayerHook(const gcroot managed) 20 | : _managed(managed) { 21 | } 22 | 23 | typedef IUnknownInterfaceImpl Base; 24 | 25 | virtual HRESULT WINAPI OnCheckURL(IAIMPString* url, BOOL* handled); 26 | 27 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 28 | 29 | virtual ULONG WINAPI AddRef(void); 30 | 31 | virtual ULONG WINAPI Release(void); 32 | }; 33 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Playback/AimpServicePlaybackQueue.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | #include "SDK\BaseAimpService.h" 13 | 14 | namespace AIMP { 15 | namespace SDK { 16 | using namespace Playlist; 17 | using namespace Player; 18 | using namespace Player::Objects; 19 | 20 | public ref class AimpServicePlaybackQueue : public BaseAimpService, 21 | public IAimpServicePlaybackQueue { 22 | public: 23 | explicit AimpServicePlaybackQueue(ManagedAimpCore^ core); 24 | 25 | virtual AimpActionResult^ GetNextTrack(); 26 | 27 | virtual AimpActionResult^ GetPrevTrack(); 28 | 29 | virtual AimpActionResult^ NotifyChanged(); 30 | protected: 31 | IAIMPServicePlaybackQueue* GetAimpService() override; 32 | }; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Player/AimpEqualizerBands.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | namespace AIMP { 13 | namespace SDK { 14 | using namespace Player::Objects; 15 | 16 | public ref class AimpEqualizerBands : 17 | public AimpObject, 18 | public IAimpEqualizerBands { 19 | public: 20 | explicit AimpEqualizerBands(IAIMPEqualizerBands* obj); 21 | virtual int GetBandCount(); 22 | virtual DoubleActionResult^ GetBandFrequency(int bandIndex); 23 | virtual DoubleActionResult^ GetBandGain(int bandIndex); 24 | virtual AimpActionResult^ SetBandGain(int index, double value); 25 | }; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Player/AimpEqualizerPreset.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "AimpEqualizerBands.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace Player::Objects; 16 | 17 | public ref class AimpEqualizerPreset : 18 | public AimpEqualizerBands, 19 | public IAimpEqualizerPreset 20 | { 21 | public: 22 | explicit AimpEqualizerPreset(IAIMPEqualizerPreset* obj); 23 | virtual StringActionResult^ GetName(); 24 | virtual AimpActionResult^ SetName(IAimpString^ value); 25 | }; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Player/AimpServiceWaveform.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "Stdafx.h" 11 | #include "AimpServiceWaveform.h" 12 | 13 | AimpServiceWaveform::AimpServiceWaveform(ManagedAimpCore^ core) : BaseAimpService(core) { 14 | } 15 | 16 | IAIMPServiceWaveform* AimpServiceWaveform::GetAimpService() { 17 | IAIMPServiceWaveform* service = nullptr; 18 | GetService(IID_IAIMPServiceWaveform, &service); 19 | return service; 20 | } 21 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Player/AimpServiceWaveform.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK/BaseAimpService.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace Player; 16 | 17 | public ref class AimpServiceWaveform : 18 | public BaseAimpService, 19 | public IAimpServiceWaveform { 20 | public: 21 | explicit AimpServiceWaveform(ManagedAimpCore^ core); 22 | 23 | protected: 24 | IAIMPServiceWaveform* GetAimpService() override; 25 | }; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Player/Primitives/AimpWaveformPeakInfo.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/TagEditor/AimpFileTag.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "Stdafx.h" 11 | #include "AimpFileTag.h" 12 | 13 | using namespace AIMP::SDK; 14 | 15 | AimpFileTag::AimpFileTag(IAIMPFileTag* aimpObject) : AimpFileInfo(aimpObject) { 16 | _fileTag = aimpObject; 17 | } 18 | 19 | TagType AimpFileTag::TagId::get() { 20 | return TagType(PropertyListExtension::GetInt32(InternalAimpObject, AIMP_FILETAG_PROPID_TAG_ID)); 21 | } 22 | 23 | void AimpFileTag::TagId::set(TagType value) { 24 | PropertyListExtension::SetInt32(InternalAimpObject, AIMP_FILETAG_PROPID_TAG_ID, int(value)); 25 | } 26 | 27 | bool AimpFileTag::DeleteOnSaving::get() { 28 | return PropertyListExtension::GetBool(InternalAimpObject, AIMP_FILETAG_PROPID_DELETE_ON_SAVING); 29 | } 30 | 31 | void AimpFileTag::DeleteOnSaving::set(bool value) { 32 | PropertyListExtension::SetBool(InternalAimpObject, AIMP_FILETAG_PROPID_DELETE_ON_SAVING, value); 33 | } 34 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/TagEditor/AimpFileTag.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK\FileManager\AimpFileInfo.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace TagEditor; 16 | 17 | public ref class AimpFileTag : public IAimpFileTag, public AimpFileInfo //, public AimpObject, 18 | { 19 | private: 20 | IAIMPFileTag* _fileTag; 21 | public: 22 | explicit AimpFileTag(IAIMPFileTag* aimpObject); 23 | 24 | virtual property TagType TagId 25 | { 26 | TagType get(); 27 | void set(TagType value); 28 | } 29 | 30 | virtual property bool DeleteOnSaving 31 | { 32 | bool get(); 33 | void set(bool value); 34 | } 35 | }; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/TagEditor/AimpFileTagEditor.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | namespace AIMP { 13 | namespace SDK { 14 | using namespace AIMP::SDK::FileManager; 15 | using namespace AIMP::SDK::TagEditor; 16 | 17 | public ref class AimpFileTagEditor : public IAimpFileTagEditor, public AimpObject { 18 | public: 19 | explicit AimpFileTagEditor(IAIMPFileTagEditor* aimpObject); 20 | 21 | virtual TYPED_RESULT(IAimpFileInfo) GetMixedInfo(); 22 | 23 | virtual TYPED_RESULT(IAimpFileTag) GetTag(int index); 24 | 25 | virtual int GetTagCount(); 26 | 27 | virtual ActionResult SetToAll(IAimpFileInfo^ fileInfo); 28 | 29 | virtual ActionResult Save(); 30 | }; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Threading/AimpServiceSynchronizer.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK\BaseAimpService.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace Threading; 16 | 17 | public ref class AimpServiceSynchronizer : 18 | public BaseAimpService, 19 | public IAimpServiceSynchronizer { 20 | public: 21 | explicit AimpServiceSynchronizer(ManagedAimpCore^ core); 22 | 23 | virtual ActionResult ExecuteInMainThread(IAimpTask^ task, bool executeNow); 24 | protected: 25 | IAIMPServiceSynchronizer* GetAimpService() override; 26 | }; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Threading/AimpServiceThreadPool.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "SDK\BaseAimpService.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace Threading; 16 | 17 | public ref class AimpServiceThreadPool : public BaseAimpService, 18 | public IAimpServiceThreadPool { 19 | public: 20 | explicit AimpServiceThreadPool(ManagedAimpCore^ core); 21 | 22 | virtual ActionResult Cancel(UIntPtr taskHandle, AimpServiceThreadPoolType flags); 23 | 24 | virtual AimpActionResult^ Execute(IAimpTask^ task); 25 | 26 | virtual ActionResult WaitFor(UIntPtr handle); 27 | protected: 28 | IAIMPServiceThreadPool* GetAimpService() override; 29 | }; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Threading/AimpTaskOwner.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "Stdafx.h" 11 | #include "AimpTaskOwner.h" 12 | 13 | using namespace AIMP::SDK; 14 | 15 | AimpTaskOwner::AimpTaskOwner(IAIMPTaskOwner* taskOwner) : AimpObject(taskOwner) { 16 | } 17 | 18 | void AimpTaskOwner::RegisterAtMemoryManager() { 19 | } 20 | 21 | void AimpTaskOwner::ReleaseFromMemoryManager() { 22 | } 23 | 24 | bool AimpTaskOwner::IsCanceled::get() { 25 | return InternalAimpObject->IsCanceled(); 26 | } 27 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Threading/AimpTaskOwner.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "AimpSdk.h" 12 | 13 | namespace AIMP { 14 | namespace SDK { 15 | using namespace SDK; 16 | using namespace Threading; 17 | 18 | public ref class AimpTaskOwner : public AimpObject, public IAimpTaskOwner { 19 | public: 20 | explicit AimpTaskOwner(IAIMPTaskOwner* taskOwner); 21 | protected: 22 | void RegisterAtMemoryManager() override; 23 | void ReleaseFromMemoryManager() override; 24 | public: 25 | virtual property bool IsCanceled 26 | { 27 | bool get(); 28 | } 29 | }; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Threading/InternalAimpTask.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "Stdafx.h" 11 | #include "InternalAimpTask.h" 12 | #include "AimpTaskOwner.h" 13 | 14 | InternalAimpTask::InternalAimpTask(gcroot instance) { 15 | _instance = instance; 16 | } 17 | 18 | void WINAPI InternalAimpTask::Execute(IAIMPTaskOwner* Owner) { 19 | AimpTaskOwner^ owner = gcnew AimpTaskOwner(Owner); 20 | _instance->Execute(owner); 21 | } 22 | 23 | ULONG WINAPI InternalAimpTask::AddRef(void) { 24 | return Base::AddRef(); 25 | } 26 | 27 | ULONG WINAPI InternalAimpTask::Release(void) { 28 | return Base::Release(); 29 | } 30 | 31 | HRESULT WINAPI InternalAimpTask::QueryInterface(REFIID riid, LPVOID* ppvObject) { 32 | const HRESULT res = Base::QueryInterface(riid, ppvObject); 33 | 34 | if (riid == IID_IAIMPTask) { 35 | *ppvObject = this; 36 | return S_OK; 37 | } 38 | 39 | *ppvObject = nullptr; 40 | return res; 41 | } 42 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Threading/InternalAimpTask.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | #include "AimpSdk.h" 12 | #include "AimpServiceSynchronizer.h" 13 | 14 | class InternalAimpTask : public IUnknownInterfaceImpl { 15 | private: 16 | gcroot _instance; 17 | public: 18 | typedef IUnknownInterfaceImpl Base; 19 | 20 | InternalAimpTask(gcroot instance); 21 | 22 | virtual void WINAPI Execute(IAIMPTaskOwner* Owner); 23 | 24 | virtual ULONG WINAPI AddRef(void); 25 | 26 | virtual ULONG WINAPI Release(void); 27 | 28 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 29 | }; 30 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Visuals/AimpExtensionCustomVisualization.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | using namespace AIMP::SDK; 13 | 14 | class AimpExtensionCustomVisualization : public IUnknownInterfaceImpl { 15 | private: 16 | gcroot _managedObject; 17 | IAIMPCore* _aimpCore; 18 | public: 19 | typedef IUnknownInterfaceImpl Base; 20 | 21 | AimpExtensionCustomVisualization(IAIMPCore* aimpCore, 22 | gcroot instance); 23 | 24 | virtual int WINAPI GetFlags(); 25 | 26 | virtual void WINAPI Draw(PAIMPVisualData Data); 27 | 28 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 29 | 30 | virtual ULONG WINAPI AddRef(void); 31 | 32 | virtual ULONG WINAPI Release(void); 33 | }; 34 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Visuals/AimpServiceVisualizations.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "Stdafx.h" 11 | #include "AimpServiceVisualizations.h" 12 | 13 | HRESULT WINAPI AimpServiceVisualizations::QueryInterface(REFIID riid, LPVOID* ppvObject) { 14 | HRESULT res = Base::QueryInterface(riid, ppvObject); 15 | 16 | if (riid == IID_IAIMPExtensionEmbeddedVisualization) { 17 | *ppvObject = this; 18 | AddRef(); 19 | return S_OK; 20 | } 21 | 22 | *ppvObject = nullptr; 23 | return res; 24 | } 25 | 26 | ULONG WINAPI AimpServiceVisualizations::AddRef(void) { 27 | return Base::AddRef(); 28 | } 29 | 30 | ULONG WINAPI AimpServiceVisualizations::Release(void) { 31 | return Base::Release(); 32 | } 33 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Visuals/AimpServiceVisualizations.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #pragma once 11 | 12 | class AimpServiceVisualizations : public IUnknownInterfaceImpl { 13 | public: 14 | typedef IUnknownInterfaceImpl Base; 15 | 16 | virtual HRESULT WINAPI QueryInterface(REFIID riid, LPVOID* ppvObject); 17 | 18 | virtual ULONG WINAPI AddRef(void); 19 | 20 | virtual ULONG WINAPI Release(void); 21 | }; 22 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Win32/Win32Manager.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "Stdafx.h" 11 | #include "Win32Manager.h" 12 | 13 | using namespace System; 14 | 15 | void AIMP::Win32::Win32Manager::SetParentWindow(IntPtr child, IntPtr parent) { 16 | SetParent((HWND)child.ToPointer(), (HWND)parent.ToPointer()); 17 | } 18 | 19 | System::Drawing::Point AIMP::Win32::Win32Manager::GetWindowPosition(IntPtr handle) { 20 | RECT rc; 21 | HWND hndl = FindWindow("TAIMPMainForm", 0); 22 | 23 | if (GetWindowRect(hndl, &rc)) { 24 | return System::Drawing::Point(rc.left, rc.top); 25 | } 26 | 27 | return System::Drawing::Point::Empty; 28 | } 29 | 30 | System::IntPtr AIMP::Win32::Win32Manager::GetAimpHandle() { 31 | HWND hndl = FindWindow("TAIMPMainForm", 0); 32 | return IntPtr(hndl); 33 | } 34 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/SDK/Win32/Win32Manager.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | namespace AIMP { 11 | namespace Win32 { 12 | using namespace System; 13 | 14 | using namespace Win32; 15 | 16 | public ref class Win32Manager : public IWin32Manager { 17 | public: 18 | virtual void SetParentWindow(IntPtr child, IntPtr parent); 19 | 20 | virtual Point GetWindowPosition(IntPtr handle); 21 | 22 | virtual IntPtr GetAimpHandle(); 23 | }; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/Stdafx.cpp: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #include "stdafx.h" 11 | -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/aimp_dotnet.aps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/src/SDK/aimp_dotnet/aimp_dotnet.aps -------------------------------------------------------------------------------- /src/SDK/aimp_dotnet/resource.h: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | #ifdef APSTUDIO_INVOKED 11 | #ifndef APSTUDIO_READONLY_SYMBOLS 12 | #define _APS_NEXT_RESOURCE_VALUE 101 13 | #define _APS_NEXT_COMMAND_VALUE 40001 14 | #define _APS_NEXT_CONTROL_VALUE 1001 15 | #define _APS_NEXT_SYMED_VALUE 101 16 | #endif 17 | #endif 18 | -------------------------------------------------------------------------------- /src/Tests/IntegrationTests/Properties/PluginAssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System.Reflection; 11 | using System.Runtime.InteropServices; 12 | 13 | [assembly: AssemblyTitle("AIMP IntegrationTest")] 14 | [assembly: AssemblyDescription("")] 15 | [assembly: AssemblyConfiguration("")] 16 | [assembly: AssemblyProduct("AIMP IntegrationTest")] 17 | [assembly: ComVisible(false)] 18 | [assembly: Guid("35dc3e20-ff8d-42b4-991a-85296a243fa1")] 19 | -------------------------------------------------------------------------------- /src/Tests/IntegrationTests/TestFramework/Assert/EqualAssert.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using NUnit.Framework; 11 | 12 | namespace Aimp.TestRunner.TestFramework.Assert; 13 | 14 | public class EqualAssert : MemberAssert 15 | { 16 | public EqualAssert(string name, object value, object expected, string message) 17 | : base(name, value, message) 18 | { 19 | Expected = expected; 20 | } 21 | 22 | public object Expected { get; } 23 | 24 | public override void Validate() 25 | { 26 | Validate(() => 27 | NUnit.Framework.Assert.That(Value, Is.EqualTo(Expected), 28 | Message ?? $"Expected '{Expected}' but was '{Value}'")); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/Tests/IntegrationTests/TestFramework/Assert/FalseAssert.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using NUnit.Framework; 11 | 12 | namespace Aimp.TestRunner.TestFramework.Assert; 13 | 14 | public class FalseAssert : MemberAssert 15 | { 16 | public FalseAssert(string name, bool value, string message) 17 | : base(name, value, message) 18 | { 19 | } 20 | 21 | public override void Validate() 22 | { 23 | Validate(() => NUnit.Framework.Assert.That(Value, Is.False)); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/Tests/IntegrationTests/TestFramework/Assert/NotEqualAssert.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using NUnit.Framework; 11 | 12 | namespace Aimp.TestRunner.TestFramework.Assert; 13 | 14 | public class NotEqualAssert : MemberAssert 15 | { 16 | public NotEqualAssert(string name, object value, object expected, string message) 17 | : base(name, value, message) 18 | { 19 | Expected = expected; 20 | } 21 | 22 | public object Expected { get; } 23 | 24 | public override void Validate() 25 | { 26 | Validate(() => 27 | NUnit.Framework.Assert.That(Value, Is.Not.EqualTo(Expected), Message ?? $"Expected '{Expected}' but was '{Value}'")); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/Tests/IntegrationTests/TestFramework/Assert/NotNullAssert.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using NUnit.Framework; 11 | 12 | namespace Aimp.TestRunner.TestFramework.Assert; 13 | 14 | public class NotNullAssert : MemberAssert 15 | { 16 | public NotNullAssert(string name, object value, string message) : base(name, value, message) 17 | { 18 | } 19 | 20 | public override void Validate() 21 | { 22 | Validate(() => NUnit.Framework.Assert.That(Value, Is.Not.Null)); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Tests/IntegrationTests/TestFramework/Assert/NullAssert.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using NUnit.Framework; 11 | 12 | namespace Aimp.TestRunner.TestFramework.Assert; 13 | 14 | public class NullAssert : MemberAssert 15 | { 16 | public NullAssert(string name, object value, string message) : base(name, value, message) 17 | { 18 | } 19 | 20 | public override void Validate() 21 | { 22 | Validate(() => NUnit.Framework.Assert.That(Value, Is.Null)); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Tests/IntegrationTests/TestFramework/Assert/ThrowAssert.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using NUnit.Framework; 12 | using NUnit.Framework.Constraints; 13 | 14 | namespace Aimp.TestRunner.TestFramework.Assert; 15 | 16 | public class ThrowAssert : MemberAssert where TException : Exception 17 | { 18 | public Exception CatchedException; 19 | 20 | public ThrowAssert(TestDelegate action) : base(string.Empty, string.Empty, string.Empty) 21 | { 22 | try 23 | { 24 | action(); 25 | } 26 | catch (Exception e) 27 | { 28 | CatchedException = e; 29 | } 30 | } 31 | 32 | public override void Validate() 33 | { 34 | Validate(() => 35 | { 36 | var expectedType = typeof(TException); 37 | NUnit.Framework.Assert.That(CatchedException, new ExceptionTypeConstraint(expectedType)); 38 | }); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/Tests/IntegrationTests/TestFramework/Assert/TrueAssert.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using NUnit.Framework; 11 | 12 | namespace Aimp.TestRunner.TestFramework.Assert; 13 | 14 | public class TrueAssert : MemberAssert 15 | { 16 | bool _val; 17 | public TrueAssert(string name, bool value, string message) 18 | : base(name, value, message) 19 | { 20 | _val = value; 21 | } 22 | 23 | public override void Validate() 24 | { 25 | Validate(() => NUnit.Framework.Assert.That(Value, Is.True)); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Tests/IntegrationTests/UnitTests/AimpTestContext.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using System; 11 | using AIMP.SDK; 12 | 13 | namespace Aimp.TestRunner.UnitTests; 14 | 15 | public class AimpTestContext : MarshalByRefObject 16 | { 17 | private static AimpTestContext _instance; 18 | public static AimpTestContext Instance => _instance ?? (_instance = new AimpTestContext()); 19 | 20 | public IAimpPlayer AimpPlayer { get; set; } 21 | } 22 | -------------------------------------------------------------------------------- /src/Tests/IntegrationTests/UnitTests/FileManager/IAimpServiceFileURI2UnitTests.cs: -------------------------------------------------------------------------------- 1 | // ---------------------------------------------------- 2 | // AIMP DotNet SDK 3 | // 4 | // Copyright (c) 2014 - 2023 Evgeniy Bogdan 5 | // https://github.com/martin211/aimp_dotnet 6 | // 7 | // Mail: mail4evgeniy@gmail.com 8 | // ---------------------------------------------------- 9 | 10 | using AIMP.SDK; 11 | using Aimp.TestRunner.TestFramework; 12 | using NUnit.Framework; 13 | 14 | namespace Aimp.TestRunner.UnitTests.FileManager; 15 | 16 | [TestFixture(Category = "IAimpServiceFileURI2")] 17 | public class IAimpServiceFileURI2UnitTests : AimpIntegrationTest 18 | { 19 | [Test] 20 | public void GetScheme_OK() 21 | { 22 | ExecuteInMainThread(() => 23 | { 24 | var result = Player.ServiceFileUri2.GetScheme("test://file.mp3"); 25 | AimpAssert.AreEqual(ActionResultType.OK, result.ResultType); 26 | AimpAssert.AreEqual("test", result.Result); 27 | }); 28 | } 29 | } -------------------------------------------------------------------------------- /src/Tests/IntegrationTests/app.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/Tests/IntegrationTests/commands.json: -------------------------------------------------------------------------------- 1 | { 2 | "commands": { 3 | "CopyPlugin": { 4 | "fileName": "powershell.exe", 5 | "workingDirectory": ".", 6 | "arguments": "-ExecutionPolicy Bypass -NonInteractive -File ..\\..\\..\\Tools\\CopyPlugin.ps1 copy $(ConfigurationName) $(TargetName) $(TargetDir) $(SolutionDir) $(ProjectDir) -AimpVersion AIMP5.00.2344" 7 | }, 8 | "ClearPlugin": { 9 | "fileName": "powershell.exe", 10 | "workingDirectory": ".", 11 | "arguments": "-ExecutionPolicy Bypass -NonInteractive -File ..\\..\\..\\Tools\\CopyPlugin.ps1 clean $(ConfigurationName) $(TargetName) $(TargetDir) $(SolutionDir) $(ProjectDir) -AimpVersion AIMP5.00.2344" 12 | } 13 | }, 14 | "-vs-binding": { 15 | "AfterBuild": [ "CopyPlugin" ], 16 | "Clean": [ "ClearPlugin" ] 17 | } 18 | } -------------------------------------------------------------------------------- /src/Tests/IntegrationTests/nunit.engine.addins: -------------------------------------------------------------------------------- 1 | AimpTestRunner_plugin.dll -------------------------------------------------------------------------------- /src/Tests/IntegrationTests/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/Tests/Resources/Profile/AudioLibrary/Local.adb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/src/Tests/Resources/Profile/AudioLibrary/Local.adb -------------------------------------------------------------------------------- /src/Tests/Resources/integrationTests/01_atmosphere.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/src/Tests/Resources/integrationTests/01_atmosphere.mp3 -------------------------------------------------------------------------------- /src/Tests/Resources/integrationTests/02_loop-mix.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/src/Tests/Resources/integrationTests/02_loop-mix.mp3 -------------------------------------------------------------------------------- /src/Tests/Resources/integrationTests/03_atmosphere.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/src/Tests/Resources/integrationTests/03_atmosphere.mp3 -------------------------------------------------------------------------------- /src/Tests/Resources/integrationTests/04_loop-mix.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/src/Tests/Resources/integrationTests/04_loop-mix.mp3 -------------------------------------------------------------------------------- /src/Tests/Resources/integrationTests/IntegrationTests.aimppl4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/src/Tests/Resources/integrationTests/IntegrationTests.aimppl4 -------------------------------------------------------------------------------- /src/Tests/Resources/integrationTests/img1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/src/Tests/Resources/integrationTests/img1.jpg -------------------------------------------------------------------------------- /src/Tests/Resources/integrationTests/img2.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/src/Tests/Resources/integrationTests/img2.bmp -------------------------------------------------------------------------------- /src/Tests/Resources/integrationTests/issue_19/issue_19.aimppl4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/src/Tests/Resources/integrationTests/issue_19/issue_19.aimppl4 -------------------------------------------------------------------------------- /src/Tests/nunit/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/src/Tests/nunit/nunit.framework.dll -------------------------------------------------------------------------------- /src/tests/nunit/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/martin211/aimp_dotnet/6715118ece36afd36d0ad0a5b5b7651fbbd8dd79/src/tests/nunit/nunit.framework.dll --------------------------------------------------------------------------------