From 0bc498e913f0f07542786291cf6814a0705f9c23 Mon Sep 17 00:00:00 2001 From: Lukasz Kozakiewicz Date: Thu, 1 Feb 2018 16:25:10 +0100 Subject: [PATCH] Projucer: add option to customise activity base class in Android exporter. --- .../ProjectSaving/jucer_ProjectExport_Android.h | 12 ++++++++++-- .../Source/Utility/Helpers/jucer_PresetIDs.h | 1 + modules/juce_core/native/java/JuceAppActivity.java | 2 +- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h index 254f4a3cc6..e55ed133ce 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h @@ -101,7 +101,7 @@ public: //============================================================================== ValueWithDefault androidJavaLibs, androidRepositories, androidDependencies, androidScreenOrientation, androidActivityClass, - androidActivitySubClassName, androidManifestCustomXmlElements, androidVersionCode, + androidActivitySubClassName, androidActivityBaseClassName, androidManifestCustomXmlElements, androidVersionCode, androidMinimumSDK, androidTheme, androidSharedLibraries, androidStaticLibraries, androidExtraAssetsFolder, androidInternetNeeded, androidMicNeeded, androidBluetoothNeeded, androidExternalReadPermission, androidExternalWritePermission, androidInAppBillingPermission, androidVibratePermission,androidOtherPermissions, @@ -117,6 +117,7 @@ public: androidScreenOrientation (settings, Ids::androidScreenOrientation, getUndoManager(), "unspecified"), androidActivityClass (settings, Ids::androidActivityClass, getUndoManager(), createDefaultClassName()), androidActivitySubClassName (settings, Ids::androidActivitySubClassName, getUndoManager()), + androidActivityBaseClassName (settings, Ids::androidActivityBaseClassName, getUndoManager(), "Activity"), androidManifestCustomXmlElements (settings, Ids::androidManifestCustomXmlElements, getUndoManager()), androidVersionCode (settings, Ids::androidVersionCode, getUndoManager(), "1"), androidMinimumSDK (settings, Ids::androidMinimumSDK, getUndoManager(), "10"), @@ -850,6 +851,12 @@ private: "If not empty, specifies the Android Activity class name stored in the app's manifest. " "Use this if you would like to use your own Android Activity sub-class."); + props.add (new TextPropertyComponent (androidActivityBaseClassName, "Android Activity base class", 256, false), + "If not empty, specifies the base class to use for your activity. If custom base class is " + "specified, that base class should be a sub-class of android.app.Activity. When empty, Activity " + "(android.app.Activity) will be used as the base class. " + "Use this if you would like to use your own Android Activity base class."); + props.add (new TextPropertyComponent (androidVersionCode, "Android Version Code", 32, false), "An integer value that represents the version of the application code, relative to other versions."); @@ -1082,7 +1089,8 @@ private: else if (line.contains ("$$JuceAndroidWebViewCode$$")) newFile << juceWebViewCode; else - newFile << line.replace ("JuceAppActivity", className) + newFile << line.replace ("$$JuceAppActivityBaseClass$$", androidActivityBaseClassName.get().toString()) + .replace ("JuceAppActivity", className) .replace ("package com.juce;", "package " + package + ";") << newLine; } diff --git a/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h b/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h index f30862372e..79a1743f6a 100644 --- a/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h +++ b/extras/Projucer/Source/Utility/Helpers/jucer_PresetIDs.h @@ -184,6 +184,7 @@ namespace Ids DECLARE_ID (androidAdditionalRawValueResources); DECLARE_ID (androidActivityClass); DECLARE_ID (androidActivitySubClassName); + DECLARE_ID (androidActivityBaseClassName); DECLARE_ID (androidVersionCode); DECLARE_ID (androidSDKPath); DECLARE_ID (androidNDKPath); diff --git a/modules/juce_core/native/java/JuceAppActivity.java b/modules/juce_core/native/java/JuceAppActivity.java index 8f7181517d..a8f5fe3976 100644 --- a/modules/juce_core/native/java/JuceAppActivity.java +++ b/modules/juce_core/native/java/JuceAppActivity.java @@ -77,7 +77,7 @@ $$JuceAndroidMidiImports$$ // If you get an error here, you need to re-s //============================================================================== -public class JuceAppActivity extends Activity +public class JuceAppActivity extends $$JuceAppActivityBaseClass$$ { //============================================================================== static