diff options
author | leonid lokhmatov, Luxoft <zaqqqqqqqq@gmail.com> | 2020-12-18 02:25:19 +0200 |
---|---|---|
committer | leonid lokhmatov, Luxoft <zaqqqqqqqq@gmail.com> | 2020-12-18 02:25:19 +0200 |
commit | f0321a65df7ee69e0c626b97236eb1c1dfc5d278 (patch) | |
tree | 62331589025fa0cf1de64e06fab1ede83e4926d5 | |
parent | c3dded18f53910caf5d8f07fe00a4ce89ec3c80b (diff) | |
download | sdl_ios-f0321a65df7ee69e0c626b97236eb1c1dfc5d278.tar.gz |
SDL0238 'Keyboard Enhancements': implement proposal, add auto generated classes and methods, fix the code to compile in xcode with no issues.
18 files changed, 523 insertions, 3 deletions
diff --git a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj index 2773665f2..8669f69e2 100644 --- a/SmartDeviceLink-iOS.xcodeproj/project.pbxproj +++ b/SmartDeviceLink-iOS.xcodeproj/project.pbxproj @@ -1670,6 +1670,12 @@ B38D8E7E24A118BD00B977D0 /* SDLGearStatusSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B38D8E7D24A118BD00B977D0 /* SDLGearStatusSpec.m */; }; B38D8E8024A1E3D000B977D0 /* SDLTransmissionTypeSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B38D8E7F24A1E3D000B977D0 /* SDLTransmissionTypeSpec.m */; }; B38D8E8224A1F53500B977D0 /* SDLCapacityUnitSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = B38D8E8124A1F53500B977D0 /* SDLCapacityUnitSpec.m */; }; + B3992623258C1E490048F09B /* SDLKeyboardCapabilities.m in Sources */ = {isa = PBXBuildFile; fileRef = B3992621258C1E480048F09B /* SDLKeyboardCapabilities.m */; }; + B3992624258C1E490048F09B /* SDLKeyboardCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = B3992622258C1E480048F09B /* SDLKeyboardCapabilities.h */; }; + B3992629258C24130048F09B /* SDLKeyboardInputMask.h in Headers */ = {isa = PBXBuildFile; fileRef = B3992627258C24120048F09B /* SDLKeyboardInputMask.h */; }; + B399262A258C24130048F09B /* SDLKeyboardInputMask.m in Sources */ = {isa = PBXBuildFile; fileRef = B3992628258C24130048F09B /* SDLKeyboardInputMask.m */; }; + B3992633258C276B0048F09B /* SDLConfigurableKeyboards.m in Sources */ = {isa = PBXBuildFile; fileRef = B3992631258C276A0048F09B /* SDLConfigurableKeyboards.m */; }; + B3992634258C276B0048F09B /* SDLConfigurableKeyboards.h in Headers */ = {isa = PBXBuildFile; fileRef = B3992632258C276B0048F09B /* SDLConfigurableKeyboards.h */; }; B3F7918324E062C200DB5CAF /* SDLGetVehicleDataSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 162E824C1A9BDE8A00906325 /* SDLGetVehicleDataSpec.m */; }; DA4353DF1D271FD10099B8C4 /* CGPointUtilSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4353DE1D271FD10099B8C4 /* CGPointUtilSpec.m */; }; DA4353E31D2720A30099B8C4 /* SDLPinchGestureSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = DA4353E21D2720A30099B8C4 /* SDLPinchGestureSpec.m */; }; @@ -3498,6 +3504,12 @@ B38D8E7D24A118BD00B977D0 /* SDLGearStatusSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLGearStatusSpec.m; sourceTree = "<group>"; }; B38D8E7F24A1E3D000B977D0 /* SDLTransmissionTypeSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLTransmissionTypeSpec.m; sourceTree = "<group>"; }; B38D8E8124A1F53500B977D0 /* SDLCapacityUnitSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SDLCapacityUnitSpec.m; sourceTree = "<group>"; }; + B3992621258C1E480048F09B /* SDLKeyboardCapabilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLKeyboardCapabilities.m; path = public/SDLKeyboardCapabilities.m; sourceTree = "<group>"; }; + B3992622258C1E480048F09B /* SDLKeyboardCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLKeyboardCapabilities.h; path = public/SDLKeyboardCapabilities.h; sourceTree = "<group>"; }; + B3992627258C24120048F09B /* SDLKeyboardInputMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLKeyboardInputMask.h; path = public/SDLKeyboardInputMask.h; sourceTree = "<group>"; }; + B3992628258C24130048F09B /* SDLKeyboardInputMask.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLKeyboardInputMask.m; path = public/SDLKeyboardInputMask.m; sourceTree = "<group>"; }; + B3992631258C276A0048F09B /* SDLConfigurableKeyboards.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLConfigurableKeyboards.m; path = public/SDLConfigurableKeyboards.m; sourceTree = "<group>"; }; + B3992632258C276B0048F09B /* SDLConfigurableKeyboards.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLConfigurableKeyboards.h; path = public/SDLConfigurableKeyboards.h; sourceTree = "<group>"; }; BB3C600D221AEF37007DD4CA /* NSMutableDictionary+StoreSpec.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "NSMutableDictionary+StoreSpec.m"; path = "DevAPISpecs/NSMutableDictionary+StoreSpec.m"; sourceTree = "<group>"; }; DA4353DE1D271FD10099B8C4 /* CGPointUtilSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CGPointUtilSpec.m; path = UtilitiesSpecs/Touches/CGPointUtilSpec.m; sourceTree = "<group>"; }; DA4353E21D2720A30099B8C4 /* SDLPinchGestureSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SDLPinchGestureSpec.m; path = UtilitiesSpecs/Touches/SDLPinchGestureSpec.m; sourceTree = "<group>"; }; @@ -5016,6 +5028,8 @@ 4ABB2B2124F84EF00061BF55 /* SDLCloudAppProperties.m */, 4ABB2B3224F84EF30061BF55 /* SDLClusterModeStatus.h */, 4ABB2B3024F84EF30061BF55 /* SDLClusterModeStatus.m */, + B3992632258C276B0048F09B /* SDLConfigurableKeyboards.h */, + B3992631258C276A0048F09B /* SDLConfigurableKeyboards.m */, 4ABB2B2D24F84EF20061BF55 /* SDLDateTime.h */, 4ABB2B2324F84EF00061BF55 /* SDLDateTime.m */, 4ABB2B1F24F84EF00061BF55 /* SDLDeviceInfo.h */, @@ -5072,6 +5086,8 @@ 4ABB2B9724F850AD0061BF55 /* SDLLightControlData.m */, 4ABB2B9424F850AC0061BF55 /* SDLLightState.h */, 4ABB2B9A24F850AD0061BF55 /* SDLLightState.m */, + B3992622258C1E480048F09B /* SDLKeyboardCapabilities.h */, + B3992621258C1E480048F09B /* SDLKeyboardCapabilities.m */, 4A8BD22724F93132000945E3 /* SDLKeyboardProperties.h */, 4A8BD23A24F93135000945E3 /* SDLKeyboardProperties.m */, 4A8BD22824F93132000945E3 /* SDLLocationCoordinate.h */, @@ -5293,6 +5309,8 @@ 4ABB278224F7FF090061BF55 /* SDLInteractionMode.m */, 4ABB278624F7FF0A0061BF55 /* SDLKeyboardEvent.h */, 4ABB277E24F7FF090061BF55 /* SDLKeyboardEvent.m */, + B3992627258C24120048F09B /* SDLKeyboardInputMask.h */, + B3992628258C24130048F09B /* SDLKeyboardInputMask.m */, 4ABB278B24F7FF0B0061BF55 /* SDLKeyboardLayout.h */, 4ABB277F24F7FF090061BF55 /* SDLKeyboardLayout.m */, 4ABB278824F7FF0A0061BF55 /* SDLKeypressMode.h */, @@ -6922,6 +6940,7 @@ 4ABB2A5824F847B10061BF55 /* SDLGetInteriorVehicleDataConsentResponse.h in Headers */, 4ABB271824F7FC4E0061BF55 /* SDLCompassDirection.h in Headers */, 4ABB2B5924F84EF50061BF55 /* SDLDeviceStatus.h in Headers */, + B3992629258C24130048F09B /* SDLKeyboardInputMask.h in Headers */, 4A8BD2CF24F93803000945E3 /* SDLTouchEvent.h in Headers */, 4ABB264B24F7F5580061BF55 /* SDLManagerDelegate.h in Headers */, 4A8BD28B24F934F3000945E3 /* SDLRGBColor.h in Headers */, @@ -6945,6 +6964,7 @@ 4ABB2AB524F847F40061BF55 /* SDLShowAppMenuResponse.h in Headers */, 4A8BD3C724F998A8000945E3 /* SDLWindowState.h in Headers */, 4ABB286424F828E00061BF55 /* SDLVehicleDataNotificationStatus.h in Headers */, + B3992624258C1E490048F09B /* SDLKeyboardCapabilities.h in Headers */, 4ABB287C24F8294A0061BF55 /* SDLVentilationMode.h in Headers */, 4ABB292F24F842A00061BF55 /* SDLDeleteFile.h in Headers */, 4ABB294924F843440061BF55 /* SDLEncodedSyncPData.h in Headers */, @@ -7177,6 +7197,7 @@ 4ABB2A3124F847980061BF55 /* SDLDeleteFileResponse.h in Headers */, 4ABB294C24F843440061BF55 /* SDLEndAudioPassThru.h in Headers */, 4ABB2AD524F848130061BF55 /* SDLSubscribeVehicleDataResponse.h in Headers */, + B3992634258C276B0048F09B /* SDLConfigurableKeyboards.h in Headers */, 4ABB251224F7E3A30061BF55 /* SDLLifecycleConfiguration.h in Headers */, 4ABB25F624F7E7EF0061BF55 /* SDLTouch.h in Headers */, 4ABB2A8324F847DF0061BF55 /* SDLResetGlobalPropertiesResponse.h in Headers */, @@ -7750,6 +7771,7 @@ 4ABB2AD224F848130061BF55 /* SDLSubscribeWayPointsResponse.m in Sources */, 4ABB286224F828E00061BF55 /* SDLVehicleDataResultCode.m in Sources */, 4ABB2B8A24F8504A0061BF55 /* SDLHMISettingsControlCapabilities.m in Sources */, + B3992623258C1E490048F09B /* SDLKeyboardCapabilities.m in Sources */, 4ABB257A24F7E5FF0061BF55 /* SDLPresentKeyboardOperation.m in Sources */, 4ABB27CA24F8006D0061BF55 /* SDLMediaType.m in Sources */, 4ABB264524F7F5340061BF55 /* SDLSystemCapabilityManager.m in Sources */, @@ -7762,6 +7784,7 @@ 4ABB25A324F7E6CE0061BF55 /* SDLDynamicMenuUpdateAlgorithm.m in Sources */, 4A8BD30C24F938D6000945E3 /* SDLWeatherAlert.m in Sources */, 4ABB250924F596920061BF55 /* SDLFileWrapper.m in Sources */, + B399262A258C24130048F09B /* SDLKeyboardInputMask.m in Sources */, 4ABB24E324F5948D0061BF55 /* SDLEncryptionConfiguration.m in Sources */, 4ABB273D24F7FD1D0061BF55 /* SDLDimension.m in Sources */, 4ABB267B24F7F6840061BF55 /* SDLIconArchiveFile.m in Sources */, @@ -8078,6 +8101,7 @@ 4ABB251724F7E3AC0061BF55 /* SDLLifecycleConfigurationUpdate.m in Sources */, 4ABB24F824F5959E0061BF55 /* SDLAsynchronousOperation.m in Sources */, 4A8BD37624F9465E000945E3 /* SDLProtocol.m in Sources */, + B3992633258C276B0048F09B /* SDLConfigurableKeyboards.m in Sources */, 4A8BD34D24F945E8000945E3 /* SDLControlFramePayloadRPCStartService.m in Sources */, 4A8BD36524F9461A000945E3 /* SDLV2ProtocolMessage.m in Sources */, 4ABB29BE24F845DB0061BF55 /* SDLSlider.m in Sources */, diff --git a/SmartDeviceLink/private/SDLRPCParameterNames.h b/SmartDeviceLink/private/SDLRPCParameterNames.h index 7222039de..0f198bc81 100644 --- a/SmartDeviceLink/private/SDLRPCParameterNames.h +++ b/SmartDeviceLink/private/SDLRPCParameterNames.h @@ -148,6 +148,8 @@ extern SDLRPCParameterName const SDLRPCParameterNameClusterModeStatus; extern SDLRPCParameterName const SDLRPCParameterNameCommandIcon; extern SDLRPCParameterName const SDLRPCParameterNameCommandId; extern SDLRPCParameterName const SDLRPCParameterNameCompassDirection; +extern SDLRPCParameterName const SDLRPCParameterNameConfigurableKeyboards; +extern SDLRPCParameterName const SDLRPCParameterNameConfigurableKeys; extern SDLRPCParameterName const SDLRPCParameterNameCorrelationId; extern SDLRPCParameterName const SDLRPCParameterNameCountryCode; extern SDLRPCParameterName const SDLRPCParameterNameCountryName; @@ -161,6 +163,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameCurrentTemperature; extern SDLRPCParameterName const SDLRPCParameterNameCushion; extern SDLRPCParameterName const SDLRPCParameterNameCustomButtonId; extern SDLRPCParameterName const SDLRPCParameterNameCustomPresets; +extern SDLRPCParameterName const SDLRPCParameterNameCustomizeKeys; extern SDLRPCParameterName const SDLRPCParameterNameOEMCustomDataType; extern SDLRPCParameterName const SDLRPCParameterNameData; extern SDLRPCParameterName const SDLRPCParameterNameDataResult; @@ -345,6 +348,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameIsSubscribed; extern SDLRPCParameterName const SDLRPCParameterNameJunctionType; extern SDLRPCParameterName const SDLRPCParameterNameKeepContext; extern SDLRPCParameterName const SDLRPCParameterNameKeepContextAvailable; +extern SDLRPCParameterName const SDLRPCParameterNameKeyboardCapabilities; extern SDLRPCParameterName const SDLRPCParameterNameKeyboardLayout; extern SDLRPCParameterName const SDLRPCParameterNameKeyboardProperties; extern SDLRPCParameterName const SDLRPCParameterNameKeypressMode; @@ -391,6 +395,8 @@ extern SDLRPCParameterName const SDLRPCParameterNameMajorVersion; extern SDLRPCParameterName const SDLRPCParameterNameMake; extern SDLRPCParameterName const SDLRPCParameterNameManeuverComplete; extern SDLRPCParameterName const SDLRPCParameterNameManualTextEntry; +extern SDLRPCParameterName const SDLRPCParameterNameMaskInputCharacters; +extern SDLRPCParameterName const SDLRPCParameterNameMaskInputCharactersSupported; extern SDLRPCParameterName const SDLRPCParameterNameMassageCushionFirmness; extern SDLRPCParameterName const SDLRPCParameterNameMassageCushionFirmnessAvailable; extern SDLRPCParameterName const SDLRPCParameterNameMassageEnabled; @@ -472,6 +478,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameNextTurnIcon; extern SDLRPCParameterName const SDLRPCParameterNameNGNMediaScreenAppName; extern SDLRPCParameterName const SDLRPCParameterNameNicknames; extern SDLRPCParameterName const SDLRPCParameterNameNightColorScheme; +extern SDLRPCParameterName const SDLRPCParameterNameNumConfigurableKeys; extern SDLRPCParameterName const SDLRPCParameterNameNotification; extern SDLRPCParameterName const SDLRPCParameterNameNumber; extern SDLRPCParameterName const SDLRPCParameterNameNumberCustomPresetsAvailable; @@ -660,6 +667,7 @@ extern SDLRPCParameterName const SDLRPCParameterNameSupportedDiagnosticModes; extern SDLRPCParameterName const SDLRPCParameterNameSupportedDynamicImageFieldNames; extern SDLRPCParameterName const SDLRPCParameterNameSupportsDynamicSubMenus; extern SDLRPCParameterName const SDLRPCParameterNameSupportedFormats; +extern SDLRPCParameterName const SDLRPCParameterNameSupportedKeyboardLayouts; extern SDLRPCParameterName const SDLRPCParameterNameSupportedLights; extern SDLRPCParameterName const SDLRPCParameterNameSyncFileName; extern SDLRPCParameterName const SDLRPCParameterNameSyncMessageVersion; diff --git a/SmartDeviceLink/private/SDLRPCParameterNames.m b/SmartDeviceLink/private/SDLRPCParameterNames.m index 353b4d779..755a29988 100644 --- a/SmartDeviceLink/private/SDLRPCParameterNames.m +++ b/SmartDeviceLink/private/SDLRPCParameterNames.m @@ -147,6 +147,8 @@ SDLRPCParameterName const SDLRPCParameterNameColumns = @"columns"; SDLRPCParameterName const SDLRPCParameterNameCommandIcon = @"cmdIcon"; SDLRPCParameterName const SDLRPCParameterNameCommandId = @"cmdID"; SDLRPCParameterName const SDLRPCParameterNameCompassDirection = @"compassDirection"; +SDLRPCParameterName const SDLRPCParameterNameConfigurableKeyboards = @"ConfigurableKeyboards"; +SDLRPCParameterName const SDLRPCParameterNameConfigurableKeys = @"configurableKeys"; SDLRPCParameterName const SDLRPCParameterNameCorrelationId = @"correlationID"; SDLRPCParameterName const SDLRPCParameterNameCountryCode = @"countryCode"; SDLRPCParameterName const SDLRPCParameterNameCountryName = @"countryName"; @@ -160,6 +162,7 @@ SDLRPCParameterName const SDLRPCParameterNameCurrentTemperature = @"currentTempe SDLRPCParameterName const SDLRPCParameterNameCushion = @"cushion"; SDLRPCParameterName const SDLRPCParameterNameCustomButtonId = @"customButtonID"; SDLRPCParameterName const SDLRPCParameterNameCustomPresets = @"customPresets"; +SDLRPCParameterName const SDLRPCParameterNameCustomizeKeys = @"customizeKeys"; SDLRPCParameterName const SDLRPCParameterNameData = @"data"; SDLRPCParameterName const SDLRPCParameterNameDataResult = @"dataResult"; SDLRPCParameterName const SDLRPCParameterNameDataType = @"dataType"; @@ -344,6 +347,7 @@ SDLRPCParameterName const SDLRPCParameterNameIsSubscribed = @"isSubscribed"; SDLRPCParameterName const SDLRPCParameterNameJunctionType = @"junctionType"; SDLRPCParameterName const SDLRPCParameterNameKeepContext = @"keepContext"; SDLRPCParameterName const SDLRPCParameterNameKeepContextAvailable = @"keepContextAvailable"; +SDLRPCParameterName const SDLRPCParameterNameKeyboardCapabilities = @"keyboardCapabilities"; SDLRPCParameterName const SDLRPCParameterNameKeyboardLayout = @"keyboardLayout"; SDLRPCParameterName const SDLRPCParameterNameKeyboardProperties = @"keyboardProperties"; SDLRPCParameterName const SDLRPCParameterNameKeypressMode = @"keypressMode"; @@ -386,6 +390,8 @@ SDLRPCParameterName const SDLRPCParameterNameMajorVersion = @"majorVersion"; SDLRPCParameterName const SDLRPCParameterNameMake = @"make"; SDLRPCParameterName const SDLRPCParameterNameManeuverComplete = @"maneuverComplete"; SDLRPCParameterName const SDLRPCParameterNameManualTextEntry = @"manualTextEntry"; +SDLRPCParameterName const SDLRPCParameterNameMaskInputCharacters = @"maskInputCharacters"; +SDLRPCParameterName const SDLRPCParameterNameMaskInputCharactersSupported = @"maskInputCharactersSupported"; SDLRPCParameterName const SDLRPCParameterNameMassageCushionFirmness = @"massageCushionFirmness"; SDLRPCParameterName const SDLRPCParameterNameMassageCushionFirmnessAvailable = @"massageCushionFirmnessAvailable"; SDLRPCParameterName const SDLRPCParameterNameMassageEnabled = @"massageEnabled"; @@ -467,6 +473,7 @@ SDLRPCParameterName const SDLRPCParameterNameNextTurnIcon = @"nextTurnIcon"; SDLRPCParameterName const SDLRPCParameterNameNGNMediaScreenAppName = @"ngnMediaScreenAppName"; SDLRPCParameterName const SDLRPCParameterNameNicknames = @"nicknames"; SDLRPCParameterName const SDLRPCParameterNameNightColorScheme = @"nightColorScheme"; +SDLRPCParameterName const SDLRPCParameterNameNumConfigurableKeys = @"numConfigurableKeys"; SDLRPCParameterName const SDLRPCParameterNameNotification = @"notification"; SDLRPCParameterName const SDLRPCParameterNameNumber = @"number"; SDLRPCParameterName const SDLRPCParameterNameNumberCustomPresetsAvailable = @"numCustomPresetsAvailable"; @@ -656,6 +663,7 @@ SDLRPCParameterName const SDLRPCParameterNameSupportedDiagnosticModes = @"suppor SDLRPCParameterName const SDLRPCParameterNameSupportedDynamicImageFieldNames = @"supportedDynamicImageFieldNames"; SDLRPCParameterName const SDLRPCParameterNameSupportsDynamicSubMenus = @"supportsDynamicSubMenus"; SDLRPCParameterName const SDLRPCParameterNameSupportedFormats = @"supportedFormats"; +SDLRPCParameterName const SDLRPCParameterNameSupportedKeyboardLayouts = @"supportedKeyboardLayouts"; SDLRPCParameterName const SDLRPCParameterNameSupportedLights = @"supportedLights"; SDLRPCParameterName const SDLRPCParameterNameSyncFileName = @"syncFileName"; SDLRPCParameterName const SDLRPCParameterNameSyncMessageVersion = @"syncMsgVersion"; diff --git a/SmartDeviceLink/public/SDLConfigurableKeyboards.h b/SmartDeviceLink/public/SDLConfigurableKeyboards.h new file mode 100644 index 000000000..1a5e9e370 --- /dev/null +++ b/SmartDeviceLink/public/SDLConfigurableKeyboards.h @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2020, SmartDeviceLink Consortium, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "SDLKeyboardLayout.h" +#import "SDLRPCStruct.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Describes number of configurable Keys for Special characters. + * + * @added in SmartDeviceLink 7.1.0 + */ +@interface SDLConfigurableKeyboards : SDLRPCStruct + +/** + * @param keyboardLayout - keyboardLayout + * @param numConfigurableKeys - @(numConfigurableKeys) + * @return A SDLConfigurableKeyboards object + */ +- (instancetype)initWithKeyboardLayout:(SDLKeyboardLayout)keyboardLayout numConfigurableKeys:(UInt32)numConfigurableKeys; + +@property (strong, nonatomic) SDLKeyboardLayout keyboardLayout; + +/** + * {"num_min_value": null, "num_max_value": null} + */ +@property (strong, nonatomic) NSNumber<SDLInt> *numConfigurableKeys; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/public/SDLConfigurableKeyboards.m b/SmartDeviceLink/public/SDLConfigurableKeyboards.m new file mode 100644 index 000000000..339cbd7ca --- /dev/null +++ b/SmartDeviceLink/public/SDLConfigurableKeyboards.m @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2020, SmartDeviceLink Consortium, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "NSMutableDictionary+Store.h" +#import "SDLConfigurableKeyboards.h" +#import "SDLKeyboardLayout.h" +#import "SDLRPCParameterNames.h" + +NS_ASSUME_NONNULL_BEGIN +@implementation SDLConfigurableKeyboards + +- (instancetype)initWithKeyboardLayout:(SDLKeyboardLayout)keyboardLayout numConfigurableKeys:(UInt32)numConfigurableKeys { + self = [self init]; + if (!self) { + return nil; + } + self.keyboardLayout = keyboardLayout; + self.numConfigurableKeys = @(numConfigurableKeys); + return self; +} + +- (void)setKeyboardLayout:(SDLKeyboardLayout)keyboardLayout { + [self.store sdl_setObject:keyboardLayout forName:SDLRPCParameterNameKeyboardLayout]; +} + +- (SDLKeyboardLayout)keyboardLayout { + NSError *error = nil; + return [self.store sdl_enumForName:SDLRPCParameterNameKeyboardLayout error:&error]; +} + +- (void)setNumConfigurableKeys:(NSNumber<SDLInt> *)numConfigurableKeys { + [self.store sdl_setObject:numConfigurableKeys forName:SDLRPCParameterNameNumConfigurableKeys]; +} + +- (NSNumber<SDLInt> *)numConfigurableKeys { + NSError *error = nil; + return [self.store sdl_objectForName:SDLRPCParameterNameNumConfigurableKeys ofClass:NSNumber.class error:&error]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/public/SDLKeyboardCapabilities.h b/SmartDeviceLink/public/SDLKeyboardCapabilities.h new file mode 100644 index 000000000..d4a5e0b56 --- /dev/null +++ b/SmartDeviceLink/public/SDLKeyboardCapabilities.h @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2020, SmartDeviceLink Consortium, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "SDLKeyboardLayout.h" +#import "SDLRPCStruct.h" + +@class SDLConfigurableKeyboards; + +NS_ASSUME_NONNULL_BEGIN + +/** + * @added in SmartDeviceLink 7.1.0 + */ +@interface SDLKeyboardCapabilities : SDLRPCStruct + +/** + * @param maskInputCharactersSupported - maskInputCharactersSupported + * @param supportedKeyboardLayouts - supportedKeyboardLayouts + * @param configurableKeys - configurableKeys + * @return A SDLKeyboardCapabilities object + */ +- (instancetype)initWithMaskInputCharactersSupported:(nullable NSNumber<SDLBool> *)maskInputCharactersSupported supportedKeyboardLayouts:(nullable NSArray<SDLKeyboardLayout> *)supportedKeyboardLayouts configurableKeys:(nullable NSArray<SDLConfigurableKeyboards *> *)configurableKeys; + +/** + * Availability of capability to mask input characters using keyboard. True: Available, False: Not Available + * + * @added in SmartDeviceLink 7.1.0 + */ +@property (nullable, strong, nonatomic) NSNumber<SDLBool> *maskInputCharactersSupported; + +/** + * Supported keyboard layouts by HMI. + * {"array_min_size": 1, "array_max_size": 1000} + * + * @added in SmartDeviceLink 7.1.0 + */ +@property (nullable, strong, nonatomic) NSArray<SDLKeyboardLayout> *supportedKeyboardLayouts; + +/** + * Get Number of Keys for Special characters, App can customize as per their needs. + * {"array_min_size": 1, "array_max_size": 1000} + * + * @added in SmartDeviceLink 7.1.0 + */ +@property (nullable, strong, nonatomic) NSArray<SDLConfigurableKeyboards *> *configurableKeys; + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/public/SDLKeyboardCapabilities.m b/SmartDeviceLink/public/SDLKeyboardCapabilities.m new file mode 100644 index 000000000..08f7a7816 --- /dev/null +++ b/SmartDeviceLink/public/SDLKeyboardCapabilities.m @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2020, SmartDeviceLink Consortium, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "NSMutableDictionary+Store.h" +#import "SDLConfigurableKeyboards.h" +#import "SDLKeyboardCapabilities.h" +#import "SDLKeyboardLayout.h" +#import "SDLRPCParameterNames.h" + +NS_ASSUME_NONNULL_BEGIN +@implementation SDLKeyboardCapabilities + +- (instancetype)initWithMaskInputCharactersSupported:(nullable NSNumber<SDLBool> *)maskInputCharactersSupported supportedKeyboardLayouts:(nullable NSArray<SDLKeyboardLayout> *)supportedKeyboardLayouts configurableKeys:(nullable NSArray<SDLConfigurableKeyboards *> *)configurableKeys { + self = [self init]; + if (!self) { + return nil; + } + self.maskInputCharactersSupported = maskInputCharactersSupported; + self.supportedKeyboardLayouts = supportedKeyboardLayouts; + self.configurableKeys = configurableKeys; + return self; +} + +- (void)setMaskInputCharactersSupported:(nullable NSNumber<SDLBool> *)maskInputCharactersSupported { + [self.store sdl_setObject:maskInputCharactersSupported forName:SDLRPCParameterNameMaskInputCharactersSupported]; +} + +- (nullable NSNumber<SDLBool> *)maskInputCharactersSupported { + return [self.store sdl_objectForName:SDLRPCParameterNameMaskInputCharactersSupported ofClass:NSNumber.class error:nil]; +} + +- (void)setSupportedKeyboardLayouts:(nullable NSArray<SDLKeyboardLayout> *)supportedKeyboardLayouts { + [self.store sdl_setObject:supportedKeyboardLayouts forName:SDLRPCParameterNameSupportedKeyboardLayouts]; +} + +- (nullable NSArray<SDLKeyboardLayout> *)supportedKeyboardLayouts { + return [self.store sdl_enumsForName:SDLRPCParameterNameSupportedKeyboardLayouts error:nil]; +} + +- (void)setConfigurableKeys:(nullable NSArray<SDLConfigurableKeyboards *> *)configurableKeys { + [self.store sdl_setObject:configurableKeys forName:SDLRPCParameterNameConfigurableKeys]; +} + +- (nullable NSArray<SDLConfigurableKeyboards *> *)configurableKeys { + return [self.store sdl_objectsForName:SDLRPCParameterNameConfigurableKeys ofClass:SDLConfigurableKeyboards.class error:nil]; +} + +@end + +NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/public/SDLKeyboardEvent.h b/SmartDeviceLink/public/SDLKeyboardEvent.h index 1ac7b67e4..9e017c8d6 100644 --- a/SmartDeviceLink/public/SDLKeyboardEvent.h +++ b/SmartDeviceLink/public/SDLKeyboardEvent.h @@ -37,3 +37,13 @@ extern SDLKeyboardEvent const SDLKeyboardEventAborted; @since SDL 4.0 */ extern SDLKeyboardEvent const SDLKeyboardEventVoice; + +/** + * @added in SmartDeviceLink 7.1.0 + */ +extern SDLKeyboardEvent const SDLKeyboardEventInputKeyMaskEnabled; + +/** + * @added in SmartDeviceLink 7.1.0 + */ +extern SDLKeyboardEvent const SDLKeyboardEventInputKeyMaskDisabled; diff --git a/SmartDeviceLink/public/SDLKeyboardEvent.m b/SmartDeviceLink/public/SDLKeyboardEvent.m index 67f4e60f2..f55ac3597 100644 --- a/SmartDeviceLink/public/SDLKeyboardEvent.m +++ b/SmartDeviceLink/public/SDLKeyboardEvent.m @@ -9,3 +9,5 @@ SDLKeyboardEvent const SDLKeyboardEventSubmitted = @"ENTRY_SUBMITTED"; SDLKeyboardEvent const SDLKeyboardEventCancelled = @"ENTRY_CANCELLED"; SDLKeyboardEvent const SDLKeyboardEventAborted = @"ENTRY_ABORTED"; SDLKeyboardEvent const SDLKeyboardEventVoice = @"ENTRY_VOICE"; +SDLKeyboardEvent const SDLKeyboardEventInputKeyMaskEnabled = @"INPUT_KEY_MASK_ENABLED"; +SDLKeyboardEvent const SDLKeyboardEventInputKeyMaskDisabled = @"INPUT_KEY_MASK_DISABLED"; diff --git a/SmartDeviceLink/public/SDLKeyboardInputMask.h b/SmartDeviceLink/public/SDLKeyboardInputMask.h new file mode 100644 index 000000000..89eb5d191 --- /dev/null +++ b/SmartDeviceLink/public/SDLKeyboardInputMask.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2020, SmartDeviceLink Consortium, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "SDLEnum.h" + +/** + * Enumeration listing possible input character masking. + * + * @added in SmartDeviceLink 7.1.0 + */ +typedef SDLEnum SDLKeyboardInputMask NS_TYPED_ENUM; +extern SDLKeyboardInputMask const SDLKeyboardInputMaskEnableInputKeyMask; + +extern SDLKeyboardInputMask const SDLKeyboardInputMaskDisableInputKeyMask; + +extern SDLKeyboardInputMask const SDLKeyboardInputMaskUserChoiceInputKeyMask; diff --git a/SmartDeviceLink/public/SDLKeyboardInputMask.m b/SmartDeviceLink/public/SDLKeyboardInputMask.m new file mode 100644 index 000000000..ac87ac149 --- /dev/null +++ b/SmartDeviceLink/public/SDLKeyboardInputMask.m @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2020, SmartDeviceLink Consortium, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following + * disclaimer in the documentation and/or other materials provided with the + * distribution. + * + * Neither the name of the SmartDeviceLink Consortium Inc. nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#import "SDLKeyboardInputMask.h" + +SDLKeyboardInputMask const SDLKeyboardInputMaskEnableInputKeyMask = @"ENABLE_INPUT_KEY_MASK"; +SDLKeyboardInputMask const SDLKeyboardInputMaskDisableInputKeyMask = @"DISABLE_INPUT_KEY_MASK"; +SDLKeyboardInputMask const SDLKeyboardInputMaskUserChoiceInputKeyMask = @"USER_CHOICE_INPUT_KEY_MASK"; diff --git a/SmartDeviceLink/public/SDLKeyboardLayout.h b/SmartDeviceLink/public/SDLKeyboardLayout.h index 4b4e97550..181836146 100644 --- a/SmartDeviceLink/public/SDLKeyboardLayout.h +++ b/SmartDeviceLink/public/SDLKeyboardLayout.h @@ -25,3 +25,8 @@ extern SDLKeyboardLayout const SDLKeyboardLayoutQWERTZ; AZERTY layout (the name comes from the first six keys<br> appearing on the top left letter row of the keyboard and read from left to right) */ extern SDLKeyboardLayout const SDLKeyboardLayoutAZERTY; + +/** + * @added in SmartDeviceLink 7.1.0 + */ +extern SDLKeyboardLayout const SDLKeyboardLayoutNumeric; diff --git a/SmartDeviceLink/public/SDLKeyboardLayout.m b/SmartDeviceLink/public/SDLKeyboardLayout.m index 7fa8e1958..0bc5ecc3b 100644 --- a/SmartDeviceLink/public/SDLKeyboardLayout.m +++ b/SmartDeviceLink/public/SDLKeyboardLayout.m @@ -7,3 +7,4 @@ SDLKeyboardLayout const SDLKeyboardLayoutQWERTY = @"QWERTY"; SDLKeyboardLayout const SDLKeyboardLayoutQWERTZ = @"QWERTZ"; SDLKeyboardLayout const SDLKeyboardLayoutAZERTY = @"AZERTY"; +SDLKeyboardLayout const SDLKeyboardLayoutNumeric = @"NUMERIC"; diff --git a/SmartDeviceLink/public/SDLKeyboardProperties.h b/SmartDeviceLink/public/SDLKeyboardProperties.h index a538b52bd..575994ae5 100644 --- a/SmartDeviceLink/public/SDLKeyboardProperties.h +++ b/SmartDeviceLink/public/SDLKeyboardProperties.h @@ -3,6 +3,7 @@ #import "SDLRPCMessage.h" +#import "SDLKeyboardInputMask.h" #import "SDLKeyboardLayout.h" #import "SDLKeypressMode.h" #import "SDLLanguage.h" @@ -40,6 +41,18 @@ NS_ASSUME_NONNULL_BEGIN - (instancetype)initWithLanguage:(nullable SDLLanguage)language keyboardLayout:(nullable SDLKeyboardLayout)keyboardLayout keypressMode:(nullable SDLKeypressMode)keypressMode limitedCharacterList:(nullable NSArray<NSString *> *)limitedCharacterList autoCompleteList:(nullable NSArray<NSString *> *)autoCompleteList; /** + * @param language - language + * @param keyboardLayout - keyboardLayout + * @param keypressMode - keypressMode + * @param limitedCharacterList - limitedCharacterList + * @param autoCompleteList - autoCompleteList + * @param maskInputCharacters - maskInputCharacters + * @param customizeKeys - customizeKeys + * @return A SDLKeyboardProperties object + */ +- (instancetype)initWithLanguage:(nullable SDLLanguage)language keyboardLayout:(nullable SDLKeyboardLayout)keyboardLayout keypressMode:(nullable SDLKeypressMode)keypressMode limitedCharacterList:(nullable NSArray<NSString *> *)limitedCharacterList autoCompleteList:(nullable NSArray<NSString *> *)autoCompleteList maskInputCharacters:(nullable SDLKeyboardInputMask)maskInputCharacters customizeKeys:(nullable NSArray<NSString *> *)customizeKeys; + +/** The keyboard language Optional @@ -85,6 +98,21 @@ NS_ASSUME_NONNULL_BEGIN */ @property (nullable, strong, nonatomic) NSArray<NSString *> *autoCompleteList; +/** + * Allows an app to mask entered characters on HMI + * + * @added in SmartDeviceLink 7.1.0 + */ +@property (nullable, strong, nonatomic) SDLKeyboardInputMask maskInputCharacters; + +/** + * Array of special characters to show in customizable Keys. If omitted, keyboard will show default special characters + * {"array_min_size": 1, "array_max_size": 10, "string_min_length": 1, "string_max_length": 1} + * + * @added in SmartDeviceLink 7.1.0 + */ +@property (nullable, strong, nonatomic) NSArray<NSString *> *customizeKeys; + @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/public/SDLKeyboardProperties.m b/SmartDeviceLink/public/SDLKeyboardProperties.m index c21c91bc7..b6e5090c8 100644 --- a/SmartDeviceLink/public/SDLKeyboardProperties.m +++ b/SmartDeviceLink/public/SDLKeyboardProperties.m @@ -19,17 +19,22 @@ NS_ASSUME_NONNULL_BEGIN } - (instancetype)initWithLanguage:(nullable SDLLanguage)language keyboardLayout:(nullable SDLKeyboardLayout)keyboardLayout keypressMode:(nullable SDLKeypressMode)keypressMode limitedCharacterList:(nullable NSArray<NSString *> *)limitedCharacterList autoCompleteList:(nullable NSArray<NSString *> *)autoCompleteList { + self = [self initWithLanguage:language keyboardLayout:keyboardLayout keypressMode:keypressMode limitedCharacterList:limitedCharacterList autoCompleteList:autoCompleteList maskInputCharacters:nil customizeKeys:nil]; + return self; +} + +- (instancetype)initWithLanguage:(nullable SDLLanguage)language keyboardLayout:(nullable SDLKeyboardLayout)keyboardLayout keypressMode:(nullable SDLKeypressMode)keypressMode limitedCharacterList:(nullable NSArray<NSString *> *)limitedCharacterList autoCompleteList:(nullable NSArray<NSString *> *)autoCompleteList maskInputCharacters:(nullable SDLKeyboardInputMask)maskInputCharacters customizeKeys:(nullable NSArray<NSString *> *)customizeKeys { self = [self init]; if (!self) { return nil; } - self.language = language; self.keyboardLayout = keyboardLayout; self.keypressMode = keypressMode; self.limitedCharacterList = limitedCharacterList; self.autoCompleteList = autoCompleteList; - + self.maskInputCharacters = maskInputCharacters; + self.customizeKeys = customizeKeys; return self; } @@ -81,6 +86,22 @@ NS_ASSUME_NONNULL_BEGIN return [self.store sdl_objectsForName:SDLRPCParameterNameAutoCompleteList ofClass:NSString.class error:nil]; } +- (void)setMaskInputCharacters:(nullable SDLKeyboardInputMask)maskInputCharacters { + [self.store sdl_setObject:maskInputCharacters forName:SDLRPCParameterNameMaskInputCharacters]; +} + +- (nullable SDLKeyboardInputMask)maskInputCharacters { + return [self.store sdl_enumForName:SDLRPCParameterNameMaskInputCharacters error:nil]; +} + +- (void)setCustomizeKeys:(nullable NSArray<NSString *> *)customizeKeys { + [self.store sdl_setObject:customizeKeys forName:SDLRPCParameterNameCustomizeKeys]; +} + +- (nullable NSArray<NSString *> *)customizeKeys { + return [self.store sdl_objectsForName:SDLRPCParameterNameCustomizeKeys ofClass:NSString.class error:nil]; +} + @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/public/SDLWindowCapability.h b/SmartDeviceLink/public/SDLWindowCapability.h index 4795e667b..ff85a680b 100644 --- a/SmartDeviceLink/public/SDLWindowCapability.h +++ b/SmartDeviceLink/public/SDLWindowCapability.h @@ -38,6 +38,7 @@ @class SDLButtonCapabilities; @class SDLDynamicUpdateCapabilities; @class SDLImageField; +@class SDLKeyboardCapabilities; @class SDLSoftButtonCapabilities; @class SDLTextField; @@ -62,6 +63,22 @@ NS_ASSUME_NONNULL_BEGIN * @param softButtonCapabilities - softButtonCapabilities * @param menuLayoutsAvailable - menuLayoutsAvailable * @param dynamicUpdateCapabilities - dynamicUpdateCapabilities + * @param keyboardCapabilities - keyboardCapabilities + * @return A SDLWindowCapability object + */ +- (instancetype)initWithWindowID:(nullable NSNumber<SDLInt> *)windowID textFields:(nullable NSArray<SDLTextField *> *)textFields imageFields:(nullable NSArray<SDLImageField *> *)imageFields imageTypeSupported:(nullable NSArray<SDLImageType> *)imageTypeSupported templatesAvailable:(nullable NSArray<NSString *> *)templatesAvailable numCustomPresetsAvailable:(nullable NSNumber<SDLUInt> *)numCustomPresetsAvailable buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities softButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities menuLayoutsAvailable:(nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable dynamicUpdateCapabilities:(nullable SDLDynamicUpdateCapabilities *)dynamicUpdateCapabilities keyboardCapabilities:(nullable SDLKeyboardCapabilities *)keyboardCapabilities; + +/** + * @param windowID - windowID + * @param textFields - textFields + * @param imageFields - imageFields + * @param imageTypeSupported - imageTypeSupported + * @param templatesAvailable - templatesAvailable + * @param numCustomPresetsAvailable - numCustomPresetsAvailable + * @param buttonCapabilities - buttonCapabilities + * @param softButtonCapabilities - softButtonCapabilities + * @param menuLayoutsAvailable - menuLayoutsAvailable + * @param dynamicUpdateCapabilities - dynamicUpdateCapabilities * @return A SDLWindowCapability object */ - (instancetype)initWithWindowID:(nullable NSNumber<SDLInt> *)windowID textFields:(nullable NSArray<SDLTextField *> *)textFields imageFields:(nullable NSArray<SDLImageField *> *)imageFields imageTypeSupported:(nullable NSArray<SDLImageType> *)imageTypeSupported templatesAvailable:(nullable NSArray<NSString *> *)templatesAvailable numCustomPresetsAvailable:(nullable NSNumber<SDLUInt> *)numCustomPresetsAvailable buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities softButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities menuLayoutsAvailable:(nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable dynamicUpdateCapabilities:(nullable SDLDynamicUpdateCapabilities *)dynamicUpdateCapabilities; @@ -136,6 +153,13 @@ NS_ASSUME_NONNULL_BEGIN */ @property (nullable, strong, nonatomic) SDLDynamicUpdateCapabilities *dynamicUpdateCapabilities; +/** + * See KeyboardCapabilities + * + * @added in SmartDeviceLink 7.1.0 + */ +@property (nullable, strong, nonatomic) SDLKeyboardCapabilities *keyboardCapabilities; + @end NS_ASSUME_NONNULL_END diff --git a/SmartDeviceLink/public/SDLWindowCapability.m b/SmartDeviceLink/public/SDLWindowCapability.m index 9c3ebe7e2..5402cb2fa 100644 --- a/SmartDeviceLink/public/SDLWindowCapability.m +++ b/SmartDeviceLink/public/SDLWindowCapability.m @@ -36,13 +36,14 @@ #import "SDLButtonCapabilities.h" #import "SDLDynamicUpdateCapabilities.h" #import "SDLImageField.h" +#import "SDLKeyboardCapabilities.h" #import "SDLRPCParameterNames.h" #import "SDLSoftButtonCapabilities.h" #import "SDLTextField.h" @implementation SDLWindowCapability -- (instancetype)initWithWindowID:(nullable NSNumber<SDLInt> *)windowID textFields:(nullable NSArray<SDLTextField *> *)textFields imageFields:(nullable NSArray<SDLImageField *> *)imageFields imageTypeSupported:(nullable NSArray<SDLImageType> *)imageTypeSupported templatesAvailable:(nullable NSArray<NSString *> *)templatesAvailable numCustomPresetsAvailable:(nullable NSNumber<SDLUInt> *)numCustomPresetsAvailable buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities softButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities menuLayoutsAvailable:(nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable dynamicUpdateCapabilities:(nullable SDLDynamicUpdateCapabilities *)dynamicUpdateCapabilities { +- (instancetype)initWithWindowID:(nullable NSNumber<SDLInt> *)windowID textFields:(nullable NSArray<SDLTextField *> *)textFields imageFields:(nullable NSArray<SDLImageField *> *)imageFields imageTypeSupported:(nullable NSArray<SDLImageType> *)imageTypeSupported templatesAvailable:(nullable NSArray<NSString *> *)templatesAvailable numCustomPresetsAvailable:(nullable NSNumber<SDLUInt> *)numCustomPresetsAvailable buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities softButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities menuLayoutsAvailable:(nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable dynamicUpdateCapabilities:(nullable SDLDynamicUpdateCapabilities *)dynamicUpdateCapabilities keyboardCapabilities:(nullable SDLKeyboardCapabilities *)keyboardCapabilities { self = [super init]; if (!self) { return nil; @@ -57,6 +58,12 @@ self.softButtonCapabilities = softButtonCapabilities; self.menuLayoutsAvailable = menuLayoutsAvailable; self.dynamicUpdateCapabilities = dynamicUpdateCapabilities; + self.keyboardCapabilities = keyboardCapabilities; + return self; +} + +- (instancetype)initWithWindowID:(nullable NSNumber<SDLInt> *)windowID textFields:(nullable NSArray<SDLTextField *> *)textFields imageFields:(nullable NSArray<SDLImageField *> *)imageFields imageTypeSupported:(nullable NSArray<SDLImageType> *)imageTypeSupported templatesAvailable:(nullable NSArray<NSString *> *)templatesAvailable numCustomPresetsAvailable:(nullable NSNumber<SDLUInt> *)numCustomPresetsAvailable buttonCapabilities:(nullable NSArray<SDLButtonCapabilities *> *)buttonCapabilities softButtonCapabilities:(nullable NSArray<SDLSoftButtonCapabilities *> *)softButtonCapabilities menuLayoutsAvailable:(nullable NSArray<SDLMenuLayout> *)menuLayoutsAvailable dynamicUpdateCapabilities:(nullable SDLDynamicUpdateCapabilities *)dynamicUpdateCapabilities { + self = [self initWithWindowID:windowID textFields:textFields imageFields:imageFields imageTypeSupported:imageTypeSupported templatesAvailable:templatesAvailable numCustomPresetsAvailable:numCustomPresetsAvailable buttonCapabilities:buttonCapabilities softButtonCapabilities:softButtonCapabilities menuLayoutsAvailable:menuLayoutsAvailable dynamicUpdateCapabilities:dynamicUpdateCapabilities keyboardCapabilities:nil]; return self; } @@ -141,4 +148,12 @@ return [self.store sdl_objectForName:SDLRPCParameterNameDynamicUpdateCapabilities ofClass:SDLDynamicUpdateCapabilities.class error:nil]; } +- (void)setKeyboardCapabilities:(nullable SDLKeyboardCapabilities *)keyboardCapabilities { + [self.store sdl_setObject:keyboardCapabilities forName:SDLRPCParameterNameKeyboardCapabilities]; +} + +- (nullable SDLKeyboardCapabilities *)keyboardCapabilities { + return [self.store sdl_objectForName:SDLRPCParameterNameKeyboardCapabilities ofClass:SDLKeyboardCapabilities.class error:nil]; +} + @end diff --git a/SmartDeviceLink/public/SmartDeviceLink.h b/SmartDeviceLink/public/SmartDeviceLink.h index 197e01b4c..498a865df 100644 --- a/SmartDeviceLink/public/SmartDeviceLink.h +++ b/SmartDeviceLink/public/SmartDeviceLink.h @@ -197,6 +197,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLClimateControlCapabilities.h" #import "SDLClimateControlData.h" #import "SDLCloudAppProperties.h" +#import "SDLConfigurableKeyboards.h" #import "SDLDIDResult.h" #import "SDLDateTime.h" #import "SDLDeviceInfo.h" @@ -221,6 +222,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLImage.h" #import "SDLImageField.h" #import "SDLImageResolution.h" +#import "SDLKeyboardCapabilities.h" #import "SDLKeyboardProperties.h" #import "SDLLightCapabilities.h" #import "SDLLightControlCapabilities.h" @@ -333,6 +335,7 @@ FOUNDATION_EXPORT const unsigned char SmartDeviceLinkVersionString[]; #import "SDLImageType.h" #import "SDLInteractionMode.h" #import "SDLKeyboardEvent.h" +#import "SDLKeyboardInputMask.h" #import "SDLKeyboardLayout.h" #import "SDLKeypressMode.h" #import "SDLLanguage.h" |