// // Icon.swift // Adwaita // // Created by david-swift on 21.01.24. // import Foundation // swiftlint:disable type_body_length file_length /// An icon. public enum Icon { /// A preinstalled icon. /// - Parameter icon: The default icon. case `default`(icon: DefaultIcon) /// A custom icon. /// - Parameter name: The icon's name. case custom(name: String) /// A string representation of the icon. public var string: String { switch self { case let .default(icon): return icon.string case let .custom(name): return name } } /// A preinstalled icon. public enum DefaultIcon: String, CaseIterable { // swiftlint:disable missing_docs identifier_name case acAdapter case accessoriesCalculator case accessoriesCharacterMap case accessoriesDictionary case accessoriesTextEditor case actionUnavailable case addressBookNew case airplaneMode case alarm case appletsScreenshooter case applicationCertificate case applicationExitRtl case applicationExit case applicationRss_plus_xml case applicationXAddon case applicationXAppliance case applicationXExecutable case applicationXFirmware case applicationXSharedlib case applicationsEngineering case applicationsGames case applicationsGraphics case applicationsMultimedia case applicationsScience case applicationsSystem case applicationsUtilities case appointmentMissed case appointmentNew case appointmentSoon case audioCard case audioHeadphones case audioHeadset case audioInputMicrophone case audioSpeakersRtl case audioSpeakers case audioVolumeHighRtl case audioVolumeHigh case audioVolumeLowRtl case audioVolumeLow case audioVolumeMediumRtl case audioVolumeMedium case audioVolumeMutedRtl case audioVolumeMuted case audioVolumeOveramplifiedRtl case audioVolumeOveramplified case audioXGeneric case authFace case authFingerprint case authSimLocked case authSimMissing case authSim case authSmartcard case avatarDefault case batteryAction case batteryCautionCharging case batteryCaution case batteryEmptyCharging case batteryEmpty case batteryFullCharged case batteryFullCharging case batteryFull case batteryGoodCharging case batteryGood case batteryLevel_0Charging case batteryLevel_0 case batteryLevel_10Charging case batteryLevel_10 case batteryLevel_100Charged case batteryLevel_100 case batteryLevel_20Charging case batteryLevel_20 case batteryLevel_30Charging case batteryLevel_30 case batteryLevel_40Charging case batteryLevel_40 case batteryLevel_50Charging case batteryLevel_50 case batteryLevel_60Charging case batteryLevel_60 case batteryLevel_70Charging case batteryLevel_70 case batteryLevel_80Charging case batteryLevel_80 case batteryLevel_90Charging case batteryLevel_90 case batteryLowCharging case batteryLow case batteryMissing case battery case bluetoothAcquiring case bluetoothActive case bluetoothDisabled case bluetoothDisconnected case bluetoothHardwareDisabled case bluetooth case bookmarkNew case callIncoming case callMissed case callOutgoing case callStart case callStop case cameraDisabled case cameraHardwareDisabled case cameraPhoto case cameraSwitch case cameraVideo case cameraWeb case capsLock case changesAllow case changesPrevent case channelInsecure case channelSecure case chatMessageNew case checkboxChecked case checkboxMixed case checkbox case colorSelect case colorimeterColorhug case completionSnippet case completionWord case computerAppleIpad case computerFail case computer case contactNew case contentLoading case daytimeSunrise case daytimeSunset case dialogError case dialogInformation case dialogPassword case dialogQuestion case dialogWarning case displayBrightness case displayProjector case documentEdit case documentNew case documentOpenRecent case documentOpen case documentPageSetup case documentPrintPreview case documentPrint case documentProperties case documentRevertRtl case documentRevert case documentSaveAs case documentSave case documentSend case driveHarddiskIeee1394 case driveHarddiskSolidstate case driveHarddisk case driveHarddiskSystem case driveHarddiskUsb case driveMultidisk case driveOptical case driveRemovableMedia case editClearAll case editClearRtl case editClear case editCopy case editCut case editDelete case editFindReplace case editFind case editPaste case editRedo case editSelectAll case editSelect case editUndo case emblemDefault case emblemDocuments case emblemFavorite case emblemImportant case emblemMusic case emblemOk case emblemPhotos case emblemShared case emblemSynchronizing case emblemSystem case emblemVideos case emojiActivities case emojiBody case emojiFlags case emojiFood case emojiNature case emojiObjects case emojiPeople case emojiRecent case emojiSymbols case emojiTravel case emoteLove case errorCorrect case faceAngel case faceAngry case faceConfused case faceCool case faceCrying case faceDevilish case faceEmbarrassed case faceGlasses case faceKiss case faceLaugh case faceMonkey case facePlain case faceRaspberry case faceSad case faceShutmouth case faceSick case faceSmileBig case faceSmile case faceSmirk case faceSurprise case faceTired case faceUncertain case faceWink case faceWorried case faceYawn case findLocation case focusLegacySystray case focusTopBar case focusWindows case folderDocuments case folderDownload case folderDragAccept case folderMusic case folderNew case folderOpen case folderPictures case folderPublicshare case folderRemote case folderSavedSearch case folder case folderTemplates case folderVideos case folderVisiting case fontSelect case fontXGeneric case formatIndentLessRtl case formatIndentLess case formatIndentMoreRtl case formatIndentMore case formatJustifyCenter case formatJustifyFill case formatJustifyLeft case formatJustifyRight case formatTextBold case formatTextDirectionLtr case formatTextDirectionRtl case formatTextDirection case formatTextItalic case formatTextPlaintext case formatTextRich case formatTextStrikethrough case formatTextUnderline case functionLinear case gestureSwipeLeft case gestureSwipeRight case gnomePowerManager case goBottom case goDown case goFirst case goHome case goJumpRtl case goJump case goLast case goNext case goPrevious case goTop case goUp case goaPanel case gtk3Demo case gtk3WidgetFactory case helpAbout case helpBrowser case helpContents case helpFaq case imageLoading case imageMissing case imageXGeneric case inodeDirectory case inputDialpad case inputGaming case inputKeyboard case inputMouse case inputTablet case inputTouchpad case insertImage case insertLink case insertObject case insertText case keyboardBrightness case langClass case langDefine case langEnum case langEnumValue case langFunction case langInclude case langMethod case langNamespace case langStructField case langStruct case langTypedef case langUnion case langVariable case listAdd case listDragHandle case listRemoveAll case listRemove case locationServicesActive case locationServicesDisabled case mailAttachment case mailForward case mailMarkImportant case mailMarkJunk case mailMarkNotjunk case mailMessageNew case mailRead case mailRepliedRtl case mailReplied case mailReplyAllRtl case mailReplyAll case mailReplySender case mailSendReceive case mailSend case mailUnread case markLocation case mediaEject case mediaFlash case mediaFloppy case mediaOpticalBd case mediaOpticalCdAudio case mediaOpticalCd case mediaOpticalDvd case mediaOptical case mediaPlaybackPause case mediaPlaybackStart case mediaPlaybackStop case mediaPlaylistConsecutive case mediaPlaylistRepeatSong case mediaPlaylistRepeat case mediaPlaylistShuffle case mediaRecord case mediaRemovable case mediaSeekBackward case mediaSeekForward case mediaSkipBackward case mediaSkipForward case mediaTape case mediaViewSubtitles case mediaZip case microphoneDisabled case microphoneHardwareDisabled case microphoneSensitivityHigh case microphoneSensitivityLow case microphoneSensitivityMedium case microphoneSensitivityMuted case modem case multimediaPlayerAppleIpodTouch case multimediaPlayer case multimediaVolumeControl case networkCellular_2g case networkCellular_3g case networkCellular_4g case networkCellular_5g case networkCellularAcquiringRtl case networkCellularAcquiring case networkCellularConnected case networkCellularDisabledRtl case networkCellularDisabled case networkCellularEdge case networkCellularGprs case networkCellularHardwareDisabledRtl case networkCellularHardwareDisabled case networkCellularHspa case networkCellularNoRouteRtl case networkCellularNoRoute case networkCellularOfflineRtl case networkCellularOffline case networkCellularSignalExcellentRtl case networkCellularSignalExcellent case networkCellularSignalGoodRtl case networkCellularSignalGood case networkCellularSignalNoneRtl case networkCellularSignalNone case networkCellularSignalOkRtl case networkCellularSignalOk case networkCellularSignalWeakRtl case networkCellularSignalWeak case networkCellular case networkError case networkIdle case networkNoRoute case networkOffline case networkReceive case networkServer case networkTransmitReceive case networkTransmit case networkVpnAcquiring case networkVpnDisabled case networkVpnDisconnected case networkVpnNoRoute case networkVpn case networkWiredAcquiring case networkWiredDisconnected case networkWiredNoRoute case networkWired case networkWirelessAcquiring case networkWirelessConnected case networkWirelessDisabled case networkWirelessEncrypted case networkWirelessHardwareDisabled case networkWirelessHotspot case networkWirelessNoRoute case networkWirelessOffline case networkWirelessSignalExcellent case networkWirelessSignalGood case networkWirelessSignalNone case networkWirelessSignalOk case networkWirelessSignalWeak case networkWireless case networkWorkgroup case nightLightDisabled case nightLight case nonStarred case notificationsDisabled case objectFlipHorizontal case objectFlipVertical case objectRotateLeft case objectRotateRight case objectSelect case openMenu case gtkDemo4 = "org.gtk.Demo4" case gtkIconBrowser4 = "org.gtk.IconBrowser4" case gtkPrintEditor4 = "org.gtk.PrintEditor4" case gtkWidgetFactory4 = "org.gtk.WidgetFactory4" case gtkGtk4NodeEditor = "org.gtk.gtk4.NodeEditor" case orientationLandscapeInverse case orientationLandscape case orientationPortraitInverse case orientationPortraitLeft case orientationPortraitRight case orientationPortrait case packageXGeneric case panDown case panEnd case panStart case panUp case pda case phoneAppleIphone case phoneOld case phone case powerProfileBalancedRtl case powerProfileBalanced case powerProfilePerformanceRtl case powerProfilePerformance case powerProfilePowerSaverRtl case powerProfilePowerSaver case preferencesColor case preferencesDesktopAccessibility case preferencesDesktopAppearance case preferencesDesktopApps case preferencesDesktopDisplay case preferencesDesktopFont case preferencesDesktopKeyboardShortcuts case preferencesDesktopKeyboard case preferencesDesktopLocale case preferencesDesktopMultitasking case preferencesDesktopRemoteDesktop case preferencesDesktopScreensaver case preferencesDesktopWallpaper case preferencesOther case preferencesSystemDetails case preferencesSystemDevices case preferencesSystemNetworkProxy case preferencesSystemNetwork case preferencesSystemNotifications case preferencesSystemParentalControls case preferencesSystemPrivacy case preferencesSystemSearch case preferencesSystemSharing case preferencesSystem case preferencesSystemTime case printerError case printerNetwork case printerPrinting case printer case printerWarning case processStop case processWorking case radioChecked case radioMixed case radio case rotationAllowed case rotationLocked case scanner case screenShared case securityHigh case securityLow case securityMediumRtl case securityMedium case selectionEnd case selectionMode case selectionStart case semiStarredRtl case semiStarred case sendTo case sidebarShowRight case sidebarShow case softwareUpdateAvailable case softwareUpdateUrgent case starNew case starred case startHere case switchOff case switchOn case systemFileManager case systemHelp case systemLockScreen case systemLogOutRtl case systemLogOut case systemReboot case systemRun case systemSearch case systemShutdown case systemSoftwareInstall case systemSwitchUserRtl case systemSwitchUser case systemUsers case tabNew case tablet case taskDue case taskPastDue case textEditor case textXGeneric case thunderboltAcquiring case thunderbolt case toolsCheckSpelling case touchDisabled case touchpadDisabled case tv case uninterruptiblePowerSupply case userAvailable case userAway case userBookmarks case userBusy case userDesktop case userHome case userIdle case userInfo case userInvisible case userNotTracked case userOffline case userStatusPending case userTrashFull case userTrash case utilitiesTerminal case valueDecrease case valueIncrease case videoDisplay case videoJoinedDisplays case videoSingleDisplay case videoXGeneric case viewAppGrid case viewConceal case viewContinuous case viewDual case viewFullscreen case viewGrid case viewListBulletRtl case viewListBullet case viewListOrderedRtl case viewListOrdered case viewListRtl case viewList case viewMirror case viewMoreHorizontal case viewMore case viewPagedRtl case viewPaged case viewPin case viewRefresh case viewRestore case viewReveal case viewSortAscendingRtl case viewSortAscending case viewSortDescendingRtl case viewSortDescending case viewWrappedRtl case viewWrapped case weatherClearNight case weatherClear case weatherFewCloudsNight case weatherFewClouds case weatherFog case weatherOvercast case weatherSevereAlert case weatherShowersScattered case weatherShowers case weatherSnow case weatherStorm case weatherTornado case weatherWindy case webBrowser case windowClose case windowMaximize case windowMinimize case windowNew case windowRestore case xOfficeAddressBook case xOfficeCalendar case xOfficeDocument case xOfficeDrawing case xOfficePresentation case xOfficeSpreadsheet case zoomFitBest case zoomIn case zoomOriginal case zoomOut // swiftlint:enable missing_docs identifier_name /// A string representation of the icon. public var string: String { var string = rawValue if !string.hasPrefix("org.") { let result = string .map { letter in if letter.isUppercase { return "-\(letter)" } else { return "\(letter)" } } .joined() string = result.lowercased() } string = string.replacingOccurrences(of: "_plus_", with: "+") string = string.replacingOccurrences(of: "_", with: "-") return string + "-symbolic" } } } // swiftlint:enable type_body_length file_length