diff --git a/examples/DemoRunner/DemoRunner.jucer b/examples/DemoRunner/DemoRunner.jucer index 69f758807e..d17dd6f695 100644 --- a/examples/DemoRunner/DemoRunner.jucer +++ b/examples/DemoRunner/DemoRunner.jucer @@ -33,7 +33,7 @@ + microphonePermissionNeeded="1" cameraPermissionNeeded="1" applicationCategory="public.app-category.developer-tools"> diff --git a/extras/AudioPluginHost/AudioPluginHost.jucer b/extras/AudioPluginHost/AudioPluginHost.jucer index d46374c5ff..e47f643c61 100644 --- a/extras/AudioPluginHost/AudioPluginHost.jucer +++ b/extras/AudioPluginHost/AudioPluginHost.jucer @@ -9,7 +9,7 @@ + customXcodeResourceFolders="../../examples/Assets" applicationCategory="public.app-category.developer-tools"> + objCExtraSuffix="OeJtJb" applicationCategory="public.app-category.developer-tools"> diff --git a/extras/Build/juce_build_tools/utils/juce_PlistOptions.cpp b/extras/Build/juce_build_tools/utils/juce_PlistOptions.cpp index 8cd8a7adc5..9658777846 100644 --- a/extras/Build/juce_build_tools/utils/juce_PlistOptions.cpp +++ b/extras/Build/juce_build_tools/utils/juce_PlistOptions.cpp @@ -162,6 +162,9 @@ namespace build_tools addPlistDictionaryKey (*dict, "NSHumanReadableCopyright", companyCopyright); addPlistDictionaryKey (*dict, "NSHighResolutionCapable", true); + if (applicationCategory.isNotEmpty()) + addPlistDictionaryKey (*dict, "LSApplicationCategoryType", applicationCategory); + auto replacedDocExtensions = StringArray::fromTokens (replacePreprocessorDefs (allPreprocessorDefs, documentExtensions), ",", {}); replacedDocExtensions.trim(); diff --git a/extras/Build/juce_build_tools/utils/juce_PlistOptions.h b/extras/Build/juce_build_tools/utils/juce_PlistOptions.h index 1247a43570..27fbef60ce 100644 --- a/extras/Build/juce_build_tools/utils/juce_PlistOptions.h +++ b/extras/Build/juce_build_tools/utils/juce_PlistOptions.h @@ -62,6 +62,8 @@ namespace build_tools String version; String companyCopyright; + String applicationCategory; + StringPairArray allPreprocessorDefs; String documentExtensions; diff --git a/extras/NetworkGraphicsDemo/NetworkGraphicsDemo.jucer b/extras/NetworkGraphicsDemo/NetworkGraphicsDemo.jucer index 929a883b11..52a3b5a6fd 100644 --- a/extras/NetworkGraphicsDemo/NetworkGraphicsDemo.jucer +++ b/extras/NetworkGraphicsDemo/NetworkGraphicsDemo.jucer @@ -17,7 +17,7 @@ - + diff --git a/extras/Projucer/Projucer.jucer b/extras/Projucer/Projucer.jucer index 3bb89f5990..6438920436 100644 --- a/extras/Projucer/Projucer.jucer +++ b/extras/Projucer/Projucer.jucer @@ -9,7 +9,8 @@ + microphonePermissionNeeded="1" cameraPermissionNeeded="1" smallIcon="Zrx1Gl" + applicationCategory="public.app-category.developer-tools"> @@ -290,8 +291,8 @@ file="Source/BinaryData/colourscheme_dark.xml"/> - + > appCategories + { + { "None", "" }, + { "Business", "business" }, + { "Developer Tools", "developer-tools" }, + { "Education", "education" }, + { "Entertainment", "entertainment" }, + { "Finace", "finance" }, + { "Games", "games" }, + { "Games - Action", "action-games" }, + { "Games - Adventure", "adventure-games" }, + { "Games - Arcade", "arcade-games" }, + { "Games - Board", "board-games" }, + { "Games - Card", "card-games" }, + { "Games - Casino", "casino-games" }, + { "Games - Dice", "dice-games" }, + { "Games - Educational", "educational-games" }, + { "Games - Family", "family-games" }, + { "Games - Kids", "kids-games" }, + { "Games - Music", "music-games" }, + { "Games - Puzzle", "puzzle-games" }, + { "Games - Racing", "racing-games" }, + { "Games - Role Playing", "role-playing-games" }, + { "Games - Simulation", "simulation-games" }, + { "Games - Sports", "sports-games" }, + { "Games - Strategy", "strategy-games" }, + { "Games - Trivia", "trivia-games" }, + { "Games - Word", "word-games" }, + { "Graphics Design", "graphics-design" }, + { "Healthcare & Fitness", "healthcare-fitness" }, + { "Lifestyle", "lifestyle" }, + { "Medial", "medical" }, + { "Music", "music" }, + { "News", "news" }, + { "Photography", "photography" }, + { "Productivity", "productivity" }, + { "Reference", "reference" }, + { "Social Networking", "social-networking" }, + { "Sports", "sports" }, + { "Travel", "travel" }, + { "Utilities", "utilities" }, + { "Video", "video" }, + { "Weather" , "weather" } + }; + + StringArray appCategoryKeys; + Array appCategoryValues; + + for (auto& opt : appCategories) + { + appCategoryKeys.add (opt.first); + + if (opt.second.isNotEmpty()) + appCategoryValues.add ("public.app-category." + opt.second); + else + appCategoryValues.add (""); + } + + props.add (new ChoicePropertyComponent (applicationCategoryValue, + "App Category", + appCategoryKeys, + appCategoryValues), + "The application category."); + props.add (new MultiChoicePropertyComponent (validArchsValue, "Valid Architectures", getAllArchs(), getAllArchs()), "The full set of architectures which this project may target. " "Each configuration will build for the intersection of this property, and the per-configuration macOS Architecture property"); @@ -1739,6 +1806,7 @@ public: options.type = type; options.executableName = "${EXECUTABLE_NAME}"; options.bundleIdentifier = getBundleIdentifier(); + options.applicationCategory = owner.getApplicationCategoryString(); options.plistToMerge = owner.getPListToMergeString(); options.iOS = owner.iOS; options.microphonePermissionEnabled = owner.isMicrophonePermissionEnabled(); @@ -3488,7 +3556,8 @@ private: const bool iOS; - ValueWithDefault customPListValue, pListPrefixHeaderValue, pListPreprocessValue, + ValueWithDefault applicationCategoryValue, + customPListValue, pListPrefixHeaderValue, pListPreprocessValue, subprojectsValue, validArchsValue, extraFrameworksValue, frameworkSearchPathsValue, extraCustomFrameworksValue, embeddedFrameworksValue, diff --git a/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h b/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h index 85fb22506d..2ac035f59d 100644 --- a/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h +++ b/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h @@ -103,6 +103,7 @@ namespace Ids DECLARE_ID (customLaunchStoryboard); DECLARE_ID (customXcodeResourceFolders); DECLARE_ID (plistPreprocessorDefinitions); + DECLARE_ID (applicationCategory); DECLARE_ID (customPList); DECLARE_ID (pListPrefixHeader); DECLARE_ID (pListPreprocess); diff --git a/extras/UnitTestRunner/UnitTestRunner.jucer b/extras/UnitTestRunner/UnitTestRunner.jucer index 973f7418dc..0737f0e4cc 100644 --- a/extras/UnitTestRunner/UnitTestRunner.jucer +++ b/extras/UnitTestRunner/UnitTestRunner.jucer @@ -10,7 +10,7 @@ - +