1 /* 2 ============================================================================== 3 4 This file is part of the JUCE library. 5 Copyright (c) 2020 - Raw Material Software Limited 6 7 JUCE is an open source library subject to commercial or open-source 8 licensing. 9 10 By using JUCE, you agree to the terms of both the JUCE 6 End-User License 11 Agreement and JUCE Privacy Policy (both effective as of the 16th June 2020). 12 13 End User License Agreement: www.juce.com/juce-6-licence 14 Privacy Policy: www.juce.com/juce-privacy-policy 15 16 Or: You may also use this code under the terms of the GPL v3 (see 17 www.gnu.org/licenses). 18 19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER 20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE 21 DISCLAIMED. 22 23 ============================================================================== 24 */ 25 26 namespace juce 27 { 28 namespace build_tools 29 { 30 class PlistOptions final 31 { 32 public: 33 void write (const File& infoPlistFile) const; 34 35 //============================================================================== 36 ProjectType::Target::Type type = ProjectType::Target::Type::GUIApp; 37 38 String executableName; 39 String bundleIdentifier; 40 41 String plistToMerge; 42 43 bool iOS = false; 44 45 bool microphonePermissionEnabled = false; 46 String microphonePermissionText; 47 48 bool cameraPermissionEnabled = false; 49 String cameraPermissionText; 50 51 bool bluetoothPermissionEnabled = false; 52 String bluetoothPermissionText; 53 54 bool sendAppleEventsPermissionEnabled = false; 55 String sendAppleEventsPermissionText; 56 57 bool shouldAddStoryboardToProject = false; 58 String storyboardName; 59 60 File iconFile; 61 String projectName; 62 String version; 63 String companyCopyright; 64 65 StringPairArray allPreprocessorDefs; 66 String documentExtensions; 67 68 bool fileSharingEnabled = false; 69 bool documentBrowserEnabled = false; 70 bool statusBarHidden = false; 71 bool requiresFullScreen = false; 72 bool backgroundAudioEnabled = false; 73 bool backgroundBleEnabled = false; 74 bool pushNotificationsEnabled = false; 75 76 bool enableIAA = false; 77 String IAAPluginName; 78 String pluginManufacturerCode; 79 String IAATypeCode; 80 String pluginCode; 81 int versionAsHex = 0; 82 83 StringArray iPhoneScreenOrientations; 84 StringArray iPadScreenOrientations; 85 86 String pluginName; 87 String pluginManufacturer; 88 String pluginDescription; 89 String pluginAUExportPrefix; 90 String auMainType; 91 bool isAuSandboxSafe = false; 92 bool isPluginSynth = false; 93 bool suppressResourceUsage = false; 94 95 private: 96 void write (MemoryOutputStream&) const; 97 std::unique_ptr<XmlElement> createXML() const; 98 void addIosScreenOrientations (XmlElement&) const; 99 void addIosBackgroundModes (XmlElement&) const; 100 Array<XmlElement> createExtraAudioUnitTargetPlistOptions() const; 101 Array<XmlElement> createExtraAudioUnitV3TargetPlistOptions() const; 102 }; 103 } 104 } 105