diff --git a/AndroidDesignExtensions.xojo_project b/AndroidDesignExtensions.xojo_project index 80b11b4..ca27a6b 100644 --- a/AndroidDesignExtensions.xojo_project +++ b/AndroidDesignExtensions.xojo_project @@ -1,10 +1,11 @@ Type=Mobile -RBProjectVersion=2024.01 +RBProjectVersion=2024.02 MinIDEVersion=20190200 OrigIDEVersion=20230200 Class=App;App.xojo_code;&h000000001ED647FF;&h0000000000000000;false Folder=Screens;Screens;&h000000005B965FFF;&h0000000000000000;false MobileScreen=ActivityScreen;Screens/ActivityScreen.xojo_code;&h000000000C97E7FF;&h000000005B965FFF;false +MobileScreen=AppScreen;Screens/AppScreen.xojo_code;&h00000000757EBFFF;&h000000005B965FFF;false MobileScreen=ButtonScreen;Screens/ButtonScreen.xojo_code;&h0000000038D6FFFF;&h000000005B965FFF;false MobileScreen=ControlScreen;Screens/ControlScreen.xojo_code;&h000000001A116FFF;&h000000005B965FFF;false MobileScreen=FontScreen;Screens/FontScreen.xojo_code;&h000000002481CFFF;&h000000005B965FFF;false @@ -69,6 +70,7 @@ MobileContainer=TabPanelContainer;Containers/TabPanelContainer.xojo_code;&h00000 MobileContainer=TextAreaContainer;Containers/TextAreaContainer.xojo_code;&h000000006456FFFF;&h000000003BC167FF;false Class=TestButton;Controls/TestButton.xojo_code;&h000000003389C7FF;&h000000001E06E7FF;false MobileContainer=TextFieldContainer;Containers/TextFieldContainer.xojo_code;&h00000000121D0FFF;&h000000003BC167FF;false +Class=WindowInsetsCompatTypes;AndroidDesignExtensions/WindowInsetsCompatTypes.xojo_code;&h0000000003FD7FFF;&h000000004BEA7FFF;false DefaultMobileView=HomeScreen MajorVersion=1 MinorVersion=0 diff --git a/AndroidDesignExtensions/ApplicationXC.xojo_code b/AndroidDesignExtensions/ApplicationXC.xojo_code index 7148426..dbb973b 100644 --- a/AndroidDesignExtensions/ApplicationXC.xojo_code +++ b/AndroidDesignExtensions/ApplicationXC.xojo_code @@ -1,6 +1,6 @@ #tag Module Protected Module ApplicationXC - #tag CompatibilityFlags = (TargetAndroid and (Target64Bit)) + #tag CompatibilityFlags = ( TargetAndroid and ( Target64Bit ) ) #tag Method, Flags = &h0, Description = 436C61737320696D706C656D656E74696E6720746865204170706C69636174696F6E206F626A6563742E2046726F6D207468652022636C61737322206174747269627574652E Function ClassNameXC(Extends myApp As MobileApplication) As String #Pragma Unused myApp @@ -11,7 +11,7 @@ Protected Module ApplicationXC #Pragma Unused oCurrentScreen - Declare Function className Lib "Object:oCurrentScreen:MobileScreen" Alias "getWindow()!!.getContext()!!.getApplicationInfo().className()" As CString + Declare Function className Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationInfo().className" As CString Return className #EndIf @@ -28,7 +28,7 @@ Protected Module ApplicationXC #Pragma Unused oCurrentScreen - Declare Function dataDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getWindow()!!.getContext()!!.getApplicationInfo().dataDir()" As CString + Declare Function dataDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationInfo().dataDir" As CString Return dataDir #EndIf @@ -45,13 +45,149 @@ Protected Module ApplicationXC #Pragma Unused oCurrentScreen - Declare Function deviceProtectedDataDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getWindow()!!.getContext()!!.getApplicationInfo().deviceProtectedDataDir()" As CString + Declare Function deviceProtectedDataDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationInfo().deviceProtectedDataDir" As CString Return deviceProtectedDataDir #EndIf End Function #tag EndMethod + #tag Method, Flags = &h0, Description = 52657475726E7320746865206162736F6C757465207061746820746F20746865206170706C69636174696F6E207370656369666963206361636865206469726563746F7279206F6E207468652066696C6573797374656D2E0A0A5468652073797374656D2077696C6C206175746F6D61746963616C6C792064656C6574652066696C657320696E2074686973206469726563746F7279206173206469736B207370616365206973206E656564656420656C73657768657265206F6E20746865206465766963652E205468652073797374656D2077696C6C20616C776179732064656C657465206F6C6465722066696C65732066697273742C206173207265706F727465642062792046696C65236C6173744D6F64696669656428292E20496620646573697265642C20796F752063616E206578657274206D6F726520636F6E74726F6C206F76657220686F772066696C6573206172652064656C65746564207573696E672053746F726167654D616E616765722373657443616368654265686176696F7247726F75702846696C652C20626F6F6C65616E2920616E642053746F726167654D616E616765722373657443616368654265686176696F72546F6D6273746F6E652846696C652C20626F6F6C65616E292E0A0A4170707320617265207374726F6E676C7920656E636F75726167656420746F206B656570207468656972207573616765206F662063616368652073706163652062656C6F77207468652071756F74612072657475726E65642062792053746F726167654D616E6167657223676574436163686551756F74614279746573286A6176612E7574696C2E55554944292E20496620796F75722061707020676F65732061626F766520746869732071756F74612C20796F7572206361636865642066696C65732077696C6C20626520736F6D65206F662074686520666972737420746F2062652064656C65746564207768656E206164646974696F6E616C206469736B207370616365206973206E65656465642E20436F6E76657273656C792C20696620796F75722061707020737461797320756E64657220746869732071756F74612C20796F7572206361636865642066696C65732077696C6C20626520736F6D65206F6620746865206C61737420746F2062652064656C65746564207768656E206164646974696F6E616C206469736B207370616365206973206E65656465642E0A0A4E6F7465207468617420796F75722063616368652071756F74612077696C6C206368616E6765206F7665722074696D6520646570656E64696E67206F6E20686F77206672657175656E746C7920746865207573657220696E74657261637473207769746820796F7572206170702C20616E6420646570656E64696E67206F6E20686F77206D7563682073797374656D2D77696465206469736B20737061636520697320757365642E0A0A5468652072657475726E65642070617468206D6179206368616E6765206F7665722074696D65206966207468652063616C6C696E6720617070206973206D6F76656420746F20616E2061646F707465642073746F72616765206465766963652C20736F206F6E6C792072656C61746976652070617468732073686F756C64206265207065727369737465642E0A0A417070732072657175697265206E6F206578747261207065726D697373696F6E7320746F2072656164206F7220777269746520746F207468652072657475726E656420706174682C2073696E636520746869732070617468206C6976657320696E20746865697220707269766174652073746F726167652E + Function GetCacheDirXC(Extends myApp As MobileApplication) As String + #Pragma Unused myApp + + #If TargetAndroid + + Var oCurrentScreen As MobileScreen = myApp.CurrentScreen + + #Pragma Unused oCurrentScreen + + Declare Function getCacheDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationContext()!!.getCacheDir()!!.toString()" As CString + Return getCacheDir + + #EndIf + End Function + #tag EndMethod + + #tag Method, Flags = &h0, Description = 52657475726E7320746865206162736F6C757465207061746820746F20746865206170706C69636174696F6E207370656369666963206361636865206469726563746F7279206F6E207468652066696C6573797374656D2064657369676E656420666F722073746F72696E672063616368656420636F64652E0A0A5468652073797374656D2077696C6C2064656C65746520616E792066696C65732073746F72656420696E2074686973206C6F636174696F6E20626F7468207768656E20796F7572207370656369666963206170706C69636174696F6E2069732075706772616465642C20616E64207768656E2074686520656E7469726520706C6174666F726D2069732075706772616465642E0A0A54686973206C6F636174696F6E206973206F7074696D616C20666F722073746F72696E6720636F6D70696C6564206F72206F7074696D697A656420636F64652067656E65726174656420627920796F7572206170706C69636174696F6E2061742072756E74696D652E0A0A5468652072657475726E65642070617468206D6179206368616E6765206F7665722074696D65206966207468652063616C6C696E6720617070206973206D6F76656420746F20616E2061646F707465642073746F72616765206465766963652C20736F206F6E6C792072656C61746976652070617468732073686F756C64206265207065727369737465642E0A0A417070732072657175697265206E6F206578747261207065726D697373696F6E7320746F2072656164206F7220777269746520746F207468652072657475726E656420706174682C2073696E636520746869732070617468206C6976657320696E20746865697220707269766174652073746F726167652E + Function GetCodeCacheDirXC(Extends myApp As MobileApplication) As String + #Pragma Unused myApp + + #If TargetAndroid + + Var oCurrentScreen As MobileScreen = myApp.CurrentScreen + + #Pragma Unused oCurrentScreen + + Declare Function getCodeCacheDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationContext()!!.getCodeCacheDir()!!.toString()" As CString + Return getCodeCacheDir + + #EndIf + End Function + #tag EndMethod + + #tag Method, Flags = &h0, Description = 52657475726E7320746865206162736F6C757465207061746820746F20746865206469726563746F7279206F6E207468652066696C6573797374656D20776865726520616C6C20707269766174652066696C65732062656C6F6E67696E6720746F207468697320617070206172652073746F7265642E20417070732073686F756C64206E6F742075736520746869732070617468206469726563746C793B20746865792073686F756C6420696E7374656164207573652067657446696C657344697228292C20676574436163686544697228292C20676574446972286A6176612E6C616E672E537472696E672C696E74292C206F72206F746865722073746F726167652041504973206F6E207468697320636C6173732E0A0A5468652072657475726E65642070617468206D6179206368616E6765206F7665722074696D65206966207468652063616C6C696E6720617070206973206D6F76656420746F20616E2061646F707465642073746F72616765206465766963652C20736F206F6E6C792072656C61746976652070617468732073686F756C64206265207065727369737465642E0A0A4E6F206164646974696F6E616C207065726D697373696F6E732061726520726571756972656420666F72207468652063616C6C696E672061707020746F2072656164206F722077726974652066696C657320756E646572207468652072657475726E656420706174682E + Function GetDataDirXC(Extends myApp As MobileApplication) As String + #Pragma Unused myApp + + #If TargetAndroid + + Var oCurrentScreen As MobileScreen = myApp.CurrentScreen + + #Pragma Unused oCurrentScreen + + Declare Function getDataDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationContext()!!.getDataDir()!!.toString()" As CString + Return getDataDir + + #EndIf + End Function + #tag EndMethod + + #tag Method, Flags = &h0, Description = 52657475726E73206162736F6C757465207061746820746F206170706C69636174696F6E2D7370656369666963206469726563746F7279206F6E20746865207072696D617279207368617265642F65787465726E616C2073746F726167652064657669636520776865726520746865206170706C69636174696F6E2063616E20706C6163652063616368652066696C6573206974206F776E732E2054686573652066696C65732061726520696E7465726E616C20746F20746865206170706C69636174696F6E2C20616E64206E6F74207479706963616C6C792076697369626C6520746F207468652075736572206173206D656469612E + Function GetExternalCacheDirXC(Extends myApp As MobileApplication) As String + #Pragma Unused myApp + + #If TargetAndroid + + Var oCurrentScreen As MobileScreen = myApp.CurrentScreen + + #Pragma Unused oCurrentScreen + + Declare Function getExternalCacheDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationContext()!!.getExternalCacheDir()!!.toString()" As CString + Return getExternalCacheDir + + #EndIf + End Function + #tag EndMethod + + #tag Method, Flags = &h0, Description = 52657475726E7320746865206162736F6C757465207061746820746F20746865206469726563746F7279206F6E207468652066696C6573797374656D2077686572652066696C657320637265617465642077697468206F70656E46696C654F7574707574206172652073746F7265642E0A0A5468652072657475726E65642070617468206D6179206368616E6765206F7665722074696D65206966207468652063616C6C696E6720617070206973206D6F76656420746F20616E2061646F707465642073746F72616765206465766963652C20736F206F6E6C792072656C61746976652070617468732073686F756C64206265207065727369737465642E0A0A4E6F206164646974696F6E616C207065726D697373696F6E732061726520726571756972656420666F72207468652063616C6C696E672061707020746F2072656164206F722077726974652066696C657320756E646572207468652072657475726E656420706174682E + Function GetFilesDirXC(Extends myApp As MobileApplication) As String + #Pragma Unused myApp + + #If TargetAndroid + + Var oCurrentScreen As MobileScreen = myApp.CurrentScreen + + #Pragma Unused oCurrentScreen + + Declare Function getFilesDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationContext()!!.getFilesDir()!!.toString()" As CString + Return getFilesDir + + #EndIf + End Function + #tag EndMethod + + #tag Method, Flags = &h0, Description = 52657475726E2077686574686572207468652073637265656E20686173206120686967682064796E616D69632072616E67652E + Function IsScreenHdrXC(Extends myApp As MobileApplication) As Boolean + #Pragma Unused myApp + + #If TargetAndroid + + Var oCurrentScreen As MobileScreen = myApp.CurrentScreen + + #Pragma Unused oCurrentScreen + + Declare Function isScreenHdr Lib "Object:oCurrentScreen:MobileScreen" Alias "getResources().getConfiguration().isScreenHdr" As Boolean + Return isScreenHdr + + #EndIf + End Function + #tag EndMethod + + #tag Method, Flags = &h0, Description = 52657475726E2077686574686572207468652073637265656E20686173206120726F756E642073686170652E2041707073206D61792063686F6F736520746F206368616E6765207374796C696E67206261736564206F6E20746869732070726F70657274792C20737563682061732074686520616C69676E6D656E74206F72206C61796F7574206F662074657874206F7220696E666F726D6174696F6E616C2069636F6E732E + Function IsScreenRoundXC(Extends myApp As MobileApplication) As Boolean + #Pragma Unused myApp + + #If TargetAndroid + + Var oCurrentScreen As MobileScreen = myApp.CurrentScreen + + #Pragma Unused oCurrentScreen + + Declare Function isScreenRound Lib "Object:oCurrentScreen:MobileScreen" Alias "getResources().getConfiguration().isScreenRound" As Boolean + Return isScreenRound + + #EndIf + End Function + #tag EndMethod + + #tag Method, Flags = &h0, Description = 52657475726E732077686574686572206F72206E6F742074686973206170706C69636174696F6E2077617320696E7374616C6C65642061732061207669727475616C207072656C6F61642E + Function IsVirtualPreloadXC(Extends myApp As MobileApplication) As Boolean + #Pragma Unused myApp + + #If TargetAndroid + + Var oCurrentScreen As MobileScreen = myApp.CurrentScreen + + #Pragma Unused oCurrentScreen + + Declare Function isVirtualPreload Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationInfo().isVirtualPreload" As Boolean + Return isVirtualPreload + + #EndIf + End Function + #tag EndMethod + #tag Method, Flags = &h0, Description = 546865206D696E696D756D2053444B2076657273696F6E2074686973206170706C69636174696F6E2063616E2072756E206F6E2E2049742077696C6C206E6F742072756E206F6E206561726C6965722076657273696F6E732E Function MinSdkVersionXC(Extends myApp As MobileApplication) As Integer #Pragma Unused myApp @@ -62,7 +198,7 @@ Protected Module ApplicationXC #Pragma Unused oCurrentScreen - Declare Function minSdkVersion Lib "Object:oCurrentScreen:MobileScreen" Alias "getWindow()!!.getContext()!!.getApplicationInfo().minSdkVersion()" As Integer + Declare Function minSdkVersion Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationInfo().minSdkVersion" As Integer Return minSdkVersion #EndIf @@ -79,7 +215,7 @@ Protected Module ApplicationXC #Pragma Unused oCurrentScreen - Declare Function nativeLibraryDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getWindow()!!.getContext()!!.getApplicationInfo().nativeLibraryDir()" As CString + Declare Function nativeLibraryDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationInfo().nativeLibraryDir" As CString Return nativeLibraryDir #EndIf @@ -96,7 +232,7 @@ Protected Module ApplicationXC #Pragma Unused oCurrentScreen - Declare Function processName Lib "Object:oCurrentScreen:MobileScreen" Alias "getWindow()!!.getContext()!!.getApplicationInfo().processName()" As CString + Declare Function processName Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationInfo().processName" As CString Return processName #EndIf @@ -113,7 +249,7 @@ Protected Module ApplicationXC #Pragma Unused oCurrentScreen - Declare Function publicSourceDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getWindow()!!.getContext()!!.getApplicationInfo().publicSourceDir()" As CString + Declare Function publicSourceDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationInfo().publicSourceDir" As CString Return publicSourceDir #EndIf @@ -130,7 +266,7 @@ Protected Module ApplicationXC #Pragma Unused oCurrentScreen - Declare Function sourceDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getWindow()!!.getContext()!!.getApplicationInfo().sourceDir()" As CString + Declare Function sourceDir Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationInfo().sourceDir" As CString Return sourceDir #EndIf @@ -147,13 +283,30 @@ Protected Module ApplicationXC #Pragma Unused oCurrentScreen - Declare Function targetSdkVersion Lib "Object:oCurrentScreen:MobileScreen" Alias "getWindow()!!.getContext()!!.getApplicationInfo().targetSdkVersion()" As Integer + Declare Function targetSdkVersion Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationInfo().targetSdkVersion" As Integer Return targetSdkVersion #EndIf End Function #tag EndMethod + #tag Method, Flags = &h0, Description = 44656661756C74207461736B20616666696E697479206F6620616C6C206163746976697469657320696E2074686973206170706C69636174696F6E2E20536565204163746976697479496E666F237461736B416666696E69747920666F72206D6F726520696E666F726D6174696F6E2E205468697320636F6D65732066726F6D2074686520227461736B416666696E69747922206174747269627574652E + Function TaskAffinityXC(Extends myApp As MobileApplication) As String + #Pragma Unused myApp + + #If TargetAndroid + + Var oCurrentScreen As MobileScreen = myApp.CurrentScreen + + #Pragma Unused oCurrentScreen + + Declare Function taskAffinity Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationInfo().taskAffinity" As CString + Return taskAffinity + + #EndIf + End Function + #tag EndMethod + #tag Method, Flags = &h0, Description = 546865206B65726E656C20757365722D4944207468617420686173206265656E2061737369676E656420746F2074686973206170706C69636174696F6E3B2063757272656E746C792074686973206973206E6F74206120756E6971756520494420286D756C7469706C65206170706C69636174696F6E732063616E2068617665207468652073616D6520756964292E Function UidXC(Extends myApp As MobileApplication) As Integer #Pragma Unused myApp @@ -164,7 +317,7 @@ Protected Module ApplicationXC #Pragma Unused oCurrentScreen - Declare Function uid Lib "Object:oCurrentScreen:MobileScreen" Alias "getWindow()!!.getContext()!!.getApplicationInfo().uid()" As Integer + Declare Function uid Lib "Object:oCurrentScreen:MobileScreen" Alias "getApplicationInfo().uid" As Integer Return uid #EndIf @@ -172,6 +325,97 @@ Protected Module ApplicationXC #tag EndMethod + #tag ComputedProperty, Flags = &h0, CompatibilityFlags = (TargetAndroid and (Target64Bit)), Description = 546865207461726765742073637265656E2064656E73697479206265696E672072656E646572656420746F2C20636F72726573706F6E64696E6720746F2064656E73697479207265736F75726365207175616C69666965722E + #tag Getter + Get + #If TargetAndroid + + Var oCurrentScreen As MobileScreen = App.CurrentScreen + + #Pragma Unused oCurrentScreen + + Declare Function densityDpi Lib "Object:oCurrentScreen:MobileScreen" Alias "getResources().getConfiguration().densityDpi" As Single + Return densityDpi + + #EndIf + End Get + #tag EndGetter + DensityDpiXC As Single + #tag EndComputedProperty + + #tag ComputedProperty, Flags = &h0, CompatibilityFlags = (TargetAndroid and (Target64Bit)), Description = 43757272656E74207573657220707265666572656E636520666F7220746865207363616C696E6720666163746F7220666F7220666F6E74732C2072656C617469766520746F2074686520626173652064656E73697479207363616C696E672E0A0A4E6F74653A20506C6561736520646F206E6F7420757365207468697320746F2068617264636F646520666F6E742073697A65206571756174696F6E732E20546865206571756174696F6E20666F7220666F6E74207363616C696E67206973206E6F77206E6F6E2D6C696E6561723B207468697320636F656666696369656E74206973206E6F206C6F6E6765722075736564206173206120646972656374206D756C7469706C69657220746F2064657465726D696E6520666F6E742073697A652E2049742065786973747320666F7220696E666F726D6174696F6E616C20707572706F736573206F6E6C792E + #tag Getter + Get + #If TargetAndroid + + Var oCurrentScreen As MobileScreen = App.CurrentScreen + + #Pragma Unused oCurrentScreen + + Declare Function fontScale Lib "Object:oCurrentScreen:MobileScreen" Alias "getResources().getConfiguration().fontScale" As Single + Return fontScale + + #EndIf + End Get + #tag EndGetter + FontScaleXC As Single + #tag EndComputedProperty + + #tag ComputedProperty, Flags = &h0, CompatibilityFlags = (TargetAndroid and (Target64Bit)), Description = 54686520686569676874206F662074686520617661696C61626C652073637265656E20737061636520696E20647020756E6974732E + #tag Getter + Get + #If TargetAndroid + + Var oCurrentScreen As MobileScreen = App.CurrentScreen + + #Pragma Unused oCurrentScreen + + Declare Function screenHeightDp Lib "Object:oCurrentScreen:MobileScreen" Alias "getResources().getConfiguration().screenHeightDp" As Single + Return screenHeightDp + + #EndIf + End Get + #tag EndGetter + ScreenHeightDpXC As Integer + #tag EndComputedProperty + + #tag ComputedProperty, Flags = &h0, CompatibilityFlags = (TargetAndroid and (Target64Bit)), Description = 546865207769647468206F662074686520617661696C61626C652073637265656E20737061636520696E20647020756E6974732E + #tag Getter + Get + #If TargetAndroid + + Var oCurrentScreen As MobileScreen = App.CurrentScreen + + #Pragma Unused oCurrentScreen + + Declare Function screenWidthDp Lib "Object:oCurrentScreen:MobileScreen" Alias "getResources().getConfiguration().screenWidthDp" As Single + Return screenWidthDp + + #EndIf + End Get + #tag EndGetter + ScreenWidthDpXC As Integer + #tag EndComputedProperty + + #tag ComputedProperty, Flags = &h0, CompatibilityFlags = (TargetAndroid and (Target64Bit)), Description = 54686520736D616C6C6573742073637265656E2073697A6520616E206170706C69636174696F6E2077696C6C2073656520696E206E6F726D616C206F7065726174696F6E2E20436F72726573706F6E647320746F2074686520736D616C6C657374207769647468207265736F75726365207175616C69666965722E20546869732069732074686520736D616C6C6573742076616C7565206F662073637265656E5769647468447020616E642073637265656E486569676874447020696E20626F746820706F72747261697420616E64206C616E647363617065206F7269656E746174696F6E732E2044656661756C747320746F20534D414C4C4553545F53435245454E5F57494454485F44505F554E444546494E4544206966206E6F207769647468206973207370656369666965642E + #tag Getter + Get + #If TargetAndroid + + Var oCurrentScreen As MobileScreen = App.CurrentScreen + + #Pragma Unused oCurrentScreen + + Declare Function smallestScreenWidthDp Lib "Object:oCurrentScreen:MobileScreen" Alias "getResources().getConfiguration().smallestScreenWidthDp" As Single + Return smallestScreenWidthDp + + #EndIf + End Get + #tag EndGetter + SmallestScreenWidthDpXC As Integer + #tag EndComputedProperty + + #tag ViewBehavior #tag ViewProperty Name="Name" @@ -213,6 +457,46 @@ Protected Module ApplicationXC Type="Integer" EditorType="" #tag EndViewProperty + #tag ViewProperty + Name="DensityDpiXC" + Visible=false + Group="Behavior" + InitialValue="" + Type="Single" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="FontScaleXC" + Visible=false + Group="Behavior" + InitialValue="" + Type="Single" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="ScreenHeightDpXC" + Visible=false + Group="Behavior" + InitialValue="" + Type="Integer" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="ScreenWidthDpXC" + Visible=false + Group="Behavior" + InitialValue="" + Type="Integer" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="SmallestScreenWidthDpXC" + Visible=false + Group="Behavior" + InitialValue="" + Type="Integer" + EditorType="" + #tag EndViewProperty #tag EndViewBehavior End Module #tag EndModule diff --git a/AndroidDesignExtensions/ContainerXC.xojo_code b/AndroidDesignExtensions/ContainerXC.xojo_code index eb8ef37..59f00c9 100644 --- a/AndroidDesignExtensions/ContainerXC.xojo_code +++ b/AndroidDesignExtensions/ContainerXC.xojo_code @@ -37,7 +37,7 @@ Protected Module ContainerXC #If TargetAndroid - Declare Function getCurrentFocusID Lib "Object:myContainer:MobileContainer" Alias "getActivity()!!.getCurrentFocus()!!.getId()" As Integer + Declare Function getCurrentFocusID Lib "Object:myContainer:MobileContainer" Alias "getActivity()!!.getCurrentFocus()!!.getId" As Integer Try diff --git a/AndroidDesignExtensions/HTMLViewerXC.xojo_code b/AndroidDesignExtensions/HTMLViewerXC.xojo_code index da0443e..bc0d547 100644 --- a/AndroidDesignExtensions/HTMLViewerXC.xojo_code +++ b/AndroidDesignExtensions/HTMLViewerXC.xojo_code @@ -618,7 +618,7 @@ Protected Module HTMLViewerXC #If TargetAndroid - Declare Function getTextZoom Lib "Object:ctrl:MobileHTMLViewer" Alias "getSettings().getTextZoom()" As Integer + Declare Function getTextZoom Lib "Object:ctrl:MobileHTMLViewer" Alias "getSettings().getTextZoom" As Integer Return getTextZoom #EndIf diff --git a/AndroidDesignExtensions/ScreenXC.xojo_code b/AndroidDesignExtensions/ScreenXC.xojo_code index c7fe011..6538a21 100644 --- a/AndroidDesignExtensions/ScreenXC.xojo_code +++ b/AndroidDesignExtensions/ScreenXC.xojo_code @@ -1,6 +1,23 @@ #tag Module Protected Module ScreenXC #tag CompatibilityFlags = ( TargetAndroid and ( Target64Bit ) ) + #tag Method, Flags = &h0, Description = 52657475726E732074686520626F756E6473206F66207468652061726561206173736F636961746564207769746820746869732077696E646F77206F72205569436F6E746578742E0A0A4E6F74652074686174207468652073697A65206F6620746865207265706F7274656420626F756E64732063616E206861766520646966666572656E742073697A65207468616E20446973706C61792367657453697A6528506F696E74292E2054686973206D6574686F64207265706F727473207468652077696E646F772073697A6520696E636C7564696E6720616C6C2073797374656D206261722061726561732C207768696C6520446973706C61792367657453697A6528506F696E7429207265706F727473207468652061726561206578636C7564696E67206E617669676174696F6E206261727320616E6420646973706C6179206375746F75742061726561732E + Function GetBoundsXC(Extends myScreen As MobileScreen) As Rect + #Pragma Unused myScreen + + #If TargetAndroid + + Declare Function left Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getWindowManager().getCurrentWindowMetrics().getBounds().left" As Integer + Declare Function top Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getWindowManager().getCurrentWindowMetrics().getBounds().top" As Integer + Declare Function width Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getWindowManager().getCurrentWindowMetrics().getBounds().width()" As Integer + Declare Function height Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getWindowManager().getCurrentWindowMetrics().getBounds().height()" As Integer + + Return New Rect(left, top, width, height) + + #EndIf + End Function + #tag EndMethod + #tag Method, Flags = &h0 Function GetCurrentFocusedControlXC(Extends myScreen As MobileScreen) As MobileUIControl #Pragma Unused myScreen @@ -37,7 +54,7 @@ Protected Module ScreenXC #If TargetAndroid - Declare Function getCurrentFocusID Lib "Object:myScreen:MobileScreen" Alias "getCurrentFocus()!!.getId()" As Integer + Declare Function getCurrentFocusID Lib "Object:myScreen:MobileScreen" Alias "getCurrentFocus()!!.getId" As Integer Try @@ -53,13 +70,26 @@ Protected Module ScreenXC End Function #tag EndMethod + #tag Method, Flags = &h0, Description = 52657475726E73207468652064656E73697479206F66207468652061726561206173736F636961746564207769746820746869732077696E646F77206F72205569436F6E746578742C2077686963682075736573207468652073616D6520756E69747320617320446973706C61794D6574726963732E64656E736974792E + Function GetDensityXC(Extends myScreen As MobileScreen) As Single + #Pragma Unused myScreen + + #If TargetAndroid + + Declare Function getDensity Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getWindowManager().getCurrentWindowMetrics().getDensity()" As Single + Return getDensity + + #EndIf + End Function + #tag EndMethod + #tag Method, Flags = &h0, Description = 476574732074686520646973706C61792069642E0A0A45616368206C6F676963616C20646973706C617920686173206120756E697175652069642E205468652064656661756C7420646973706C6179206861732069642044454641554C545F444953504C41592E Function GetDisplayIDXC(Extends myScreen As MobileScreen) As Integer #Pragma Unused myScreen #If TargetAndroid - Declare Function getDisplayId Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getContext().getDisplay()!!.getDisplayId()" As Integer + Declare Function getDisplayId Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getContext().getDisplay()!!.getDisplayId" As Integer Return getDisplayId #EndIf @@ -72,7 +102,7 @@ Protected Module ScreenXC #If TargetAndroid - Declare Function getRotation Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getContext().getDisplay()!!.getRotation()" As Integer + Declare Function getRotation Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getContext().getDisplay()!!.getRotation" As Integer Return getRotation #EndIf @@ -85,7 +115,7 @@ Protected Module ScreenXC #If TargetAndroid - Declare Function getState Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getContext().getDisplay()!!.getState()" As Integer + Declare Function getState Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getContext().getDisplay()!!.getState" As Integer Return getState #EndIf @@ -98,7 +128,7 @@ Protected Module ScreenXC #If TargetAndroid - Declare Function getHeight Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getDecorView().getHeight()" As Integer + Declare Function getHeight Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getDecorView().getHeight" As Integer Return getHeight #EndIf @@ -150,8 +180,17 @@ Protected Module ScreenXC #If TargetAndroid - Declare Function getSystemBarsAppearance Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getInsetsController()!!.getSystemBarsAppearance()" As Integer - Return getSystemBarsAppearance + ' Working for API 30+ (Android 11+) + If System.Version.MajorVersion >= 11 Then + + Declare Function getSystemBarsAppearance Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getInsetsController()!!.getSystemBarsAppearance" As Integer + Return getSystemBarsAppearance + + Else + + Raise New AndroidException(CurrentMethodName + EndOfLine + "This is only working for API 30+ (Android 11+).") + + End If #EndIf End Function @@ -163,8 +202,17 @@ Protected Module ScreenXC #If TargetAndroid - Declare Function getSystemBarsBehavior Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getInsetsController()!!.getSystemBarsBehavior()" As Integer - Return getSystemBarsBehavior + ' Working for API 30+ (Android 11+) + If System.Version.MajorVersion >= 11 Then + + Declare Function getSystemBarsBehavior Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getInsetsController()!!.getSystemBarsBehavior" As Integer + Return getSystemBarsBehavior + + Else + + Raise New AndroidException(CurrentMethodName + EndOfLine + "This is only working for API 30+ (Android 11+).") + + End If #EndIf End Function @@ -189,7 +237,7 @@ Protected Module ScreenXC #If TargetAndroid - Declare Function getTransitionBackgroundFadeDuration Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getTransitionBackgroundFadeDuration()" As Int64 + Declare Function getTransitionBackgroundFadeDuration Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getTransitionBackgroundFadeDuration" As Int64 Return getTransitionBackgroundFadeDuration #EndIf @@ -202,7 +250,7 @@ Protected Module ScreenXC #If TargetAndroid - Declare Function getWidth Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getDecorView().getWidth()" As Integer + Declare Function getWidth Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getDecorView().getWidth" As Integer Return getWidth #EndIf @@ -215,7 +263,7 @@ Protected Module ScreenXC #If TargetAndroid - Declare Function isHdr Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getContext().getDisplay()!!.isHdr()" As Boolean + Declare Function isHdr Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getContext().getDisplay()!!.isHdr" As Boolean Return isHdr #EndIf @@ -527,8 +575,17 @@ Protected Module ScreenXC #If TargetAndroid - Declare Sub setSystemBarsAppearance Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getDecorView().getWindowInsetsController()!!.setSystemBarsAppearance" (myAppearance As Integer, myMask As Integer) - setSystemBarsAppearance(appearance, mask) + ' Working for API 30+ (Android 11+) + If System.Version.MajorVersion >= 11 Then + + Declare Sub setSystemBarsAppearance Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getDecorView().getWindowInsetsController()!!.setSystemBarsAppearance" (myAppearance As Integer, myMask As Integer) + setSystemBarsAppearance(appearance, mask) + + Else + + Raise New AndroidException(CurrentMethodName + EndOfLine + "This is only working for API 30+ (Android 11+).") + + End If #Else @@ -539,6 +596,32 @@ Protected Module ScreenXC End Sub #tag EndMethod + #tag Method, Flags = &h0, Description = 436F6E74726F6C7320746865206265686176696F72206F662073797374656D20626172732E + Sub SetSystemBarsBehaviorXC(Extends myScreen As MobileScreen, behavior As Integer) + #Pragma Unused myScreen + + #If TargetAndroid + + ' Working for API 30+ (Android 11+) + If System.Version.MajorVersion >= 11 Then + + Declare Sub setSystemBarsBehavior Lib "Object:myScreen:MobileScreen" Alias "getWindow()!!.getDecorView().getWindowInsetsController()!!.setSystemBarsBehavior" (myBehavior As Integer) + setSystemBarsBehavior(behavior) + + Else + + Raise New AndroidException(CurrentMethodName + EndOfLine + "This is only working for API 30+ (Android 11+).") + + End If + + #Else + + #Pragma Unused behavior + + #EndIf + End Sub + #tag EndMethod + #tag Method, Flags = &h0, Description = 52657175657374207468617420746865207669736962696C697479206F66207468652073746174757320626172206F72206F746865722073637265656E2F77696E646F77206465636F726174696F6E73206265206368616E6765642E0A0A54686973206D6574686F64206973207573656420746F2070757420746865206F7665722064657669636520554920696E746F2074656D706F72617279206D6F646573207768657265207468652075736572277320617474656E74696F6E20697320666F6375736564206D6F7265206F6E20746865206170706C69636174696F6E20636F6E74656E742C2062792064696D6D696E67206F7220686964696E6720737572726F756E64696E672073797374656D206166666F7264616E6365732E2054686973206973207479706963616C6C79207573656420696E20636F6E6A756E6374696F6E20776974682057696E646F772E464541545552455F414354494F4E5F4241525F4F5645524C41592C20616C6C6F77696E6720746865206170706C69636174696F6E7320636F6E74656E7420746F20626520706C6163656420626568696E642074686520616374696F6E206261722028616E64207769746820746865736520666C616773206F746865722073797374656D206166666F7264616E6365732920736F207468617420736D6F6F7468207472616E736974696F6E73206265747765656E20686964696E6720616E642073686F77696E67207468656D2063616E20626520646F6E652E Sub SetSystemUiVisibilityXC(Extends myScreen As MobileScreen, visibility As Integer) #Pragma Unused myScreen @@ -608,6 +691,58 @@ Protected Module ScreenXC End Sub #tag EndMethod + #tag Method, Flags = &h0, Description = 4D616B6573206120736574206F662077696E646F77732063617573696E6720696E73657473206469736170706561722E0A0A4E6F74652074686174206966207468652077696E646F772063757272656E746C7920646F65736E2774206861766520636F6E74726F6C206F7665722061206365727461696E20747970652C2069742077696C6C206170706C7920746865206368616E676520617320736F6F6E206173207468652077696E646F77206761696E7320636F6E74726F6C2E20546865206170702063616E206C697374656E20746F20746865206576656E74206279206F6273657276696E672056696577236F6E4170706C7957696E646F77496E7365747320616E6420636865636B696E67207669736962696C69747920776974682057696E646F77496E7365747323697356697369626C652E + Sub SetWindowInsetsTypeHideXC(Extends myScreen As MobileScreen, types As Integer) + #Pragma Unused myScreen + + #If TargetAndroid + + ' Working for API 30+ (Android 11+) + If System.Version.MajorVersion >= 11 Then + + Declare Sub hide Lib "Object:myScreen:MobileScreen:Kotlin" Alias "getWindow()!!.getDecorView().getWindowInsetsController()!!.hide(mytypes.toInt())" (myTypes As Integer) + hide(types) + + Else + + Raise New AndroidException(CurrentMethodName + EndOfLine + "This is only working for API 30+ (Android 11+).") + + End If + + #Else + + #Pragma Unused types + + #EndIf + End Sub + #tag EndMethod + + #tag Method, Flags = &h0, Description = 4D616B6573206120736574206F662077696E646F7773207468617420636175736520696E7365747320617070656172206F6E2073637265656E2E0A0A4E6F74652074686174206966207468652077696E646F772063757272656E746C7920646F65736E2774206861766520636F6E74726F6C206F7665722061206365727461696E20747970652C2069742077696C6C206170706C7920746865206368616E676520617320736F6F6E206173207468652077696E646F77206761696E7320636F6E74726F6C2E20546865206170702063616E206C697374656E20746F20746865206576656E74206279206F6273657276696E672056696577236F6E4170706C7957696E646F77496E7365747320616E6420636865636B696E67207669736962696C69747920776974682057696E646F77496E7365747323697356697369626C652E + Sub SetWindowInsetsTypeShowXC(Extends myScreen As MobileScreen, types As Integer) + #Pragma Unused myScreen + + #If TargetAndroid + + ' Working for API 30+ (Android 11+) + If System.Version.MajorVersion >= 11 Then + + Declare Sub show Lib "Object:myScreen:MobileScreen:Kotlin" Alias "getWindow()!!.getDecorView().getWindowInsetsController()!!.show(mytypes.toInt())" (myTypes As Integer) + show(types) + + Else + + Raise New AndroidException(CurrentMethodName + EndOfLine + "This is only working for API 30+ (Android 11+).") + + End If + + #Else + + #Pragma Unused types + + #EndIf + End Sub + #tag EndMethod + #tag Method, Flags = &h0, Description = 53686F7773207468652075736572207468652073797374656D20646566696E6564206D65737361676520666F722074656C6C696E6720746865207573657220686F7720746F2065786974206C6F636B207461736B206D6F64652E20546865207461736B20636F6E7461696E696E672074686973206163746976697479206D75737420626520696E206C6F636B207461736B206D6F6465206174207468652074696D65206F6620746869732063616C6C20666F7220746865206D65737361676520746F20626520646973706C617965642E Sub ShowLockTaskEscapeMessageXC(Extends myScreen As MobileScreen) #Pragma Unused myScreen diff --git a/AndroidDesignExtensions/TabPanelXC.xojo_code b/AndroidDesignExtensions/TabPanelXC.xojo_code index d475310..242d744 100644 --- a/AndroidDesignExtensions/TabPanelXC.xojo_code +++ b/AndroidDesignExtensions/TabPanelXC.xojo_code @@ -324,6 +324,45 @@ Protected Module TabPanelXC End Function #tag EndMethod + #tag Method, Flags = &h0, Description = 476574207468652063757272656E7420696E64696361746F7220616E696D6174696F6E206D6F6465207573656420746F20616E696D617465207468652073656C656374696F6E20696E64696361746F72206265747765656E2064657374696E6174696F6E732E + Function GetTabIndicatorAnimationModeXC(Extends ctrl As MobileTabPanel) As TabIndicatorAnimationModesXC + #Pragma Unused ctrl + + #If TargetAndroid + + Declare Function getTabIndicatorAnimationMode Lib "Object:ctrl:MobileTabPanel" As Integer + Return TabIndicatorAnimationModesXC(getTabIndicatorAnimationMode) + + #EndIf + End Function + #tag EndMethod + + #tag Method, Flags = &h0, Description = 476574207468652063757272656E7420696E64696361746F722067726176697479207573656420746F20616C69676E20746865207461622073656C656374696F6E20696E64696361746F7220696E20746865205461624C61796F75742E + Function GetTabIndicatorGravityXC(Extends ctrl As MobileTabPanel) As TabGravityXC + #Pragma Unused ctrl + + #If TargetAndroid + + Declare Function getTabIndicatorGravity Lib "Object:ctrl:MobileTabPanel" As Integer + Return TabGravityXC(getTabIndicatorGravity) + + #EndIf + End Function + #tag EndMethod + + #tag Method, Flags = &h0, Description = 52657475726E73207468652063757272656E74206D6F646520757365642062792074686973205461624C61796F75742E + Function GetTabModeXC(Extends ctrl As MobileTabPanel) As TabModesXC + #Pragma Unused ctrl + + #If TargetAndroid + + Declare Function getTabMode Lib "Object:ctrl:MobileTabPanel" As Integer + Return TabModesXC(getTabMode) + + #EndIf + End Function + #tag EndMethod + #tag Method, Flags = &h0, Description = 52657475726E73207768657468657220746869732062616467652077696C6C20646973706C61792061206E756D6265722E Function HasBadgeNumberAtXC(Extends ctrl As MobileTabPanel, index As Integer) As Boolean #Pragma Unused ctrl diff --git a/AndroidDesignExtensions/WindowInsetsCompatTypes.xojo_code b/AndroidDesignExtensions/WindowInsetsCompatTypes.xojo_code new file mode 100644 index 0000000..a1cac6b --- /dev/null +++ b/AndroidDesignExtensions/WindowInsetsCompatTypes.xojo_code @@ -0,0 +1,174 @@ +#tag Class +Protected Class WindowInsetsCompatTypes + #tag CompatibilityFlags = (TargetAndroid and (Target64Bit)) + #tag ComputedProperty, Flags = &h0, CompatibilityFlags = (TargetAndroid and (Target64Bit)), Description = 416E20696E73657473207479706520726570726573656E74696E67207468652077696E646F77206F6620612063617074696F6E206261722E + #tag Getter + Get + #If TargetAndroid + + Declare Function captionBar Lib "androidx.core.view" Alias "WindowInsetsCompat.Type.captionBar" As Integer + Return captionBar + + #EndIf + End Get + #tag EndGetter + Shared CaptionBar As Integer + #tag EndComputedProperty + + #tag ComputedProperty, Flags = &h0, CompatibilityFlags = (TargetAndroid and (Target64Bit)), Description = 52657475726E7320616E20696E73657473207479706520726570726573656E74696E672074686520617265612074686174207573656420627920446973706C61794375746F7574436F6D7061742E0A0A54686973206973206571756976616C656E7420746F20746865207361666520696E73657473206F6E20676574446973706C61794375746F75742E + #tag Getter + Get + #If TargetAndroid + + Declare Function displayCutout Lib "androidx.core.view" Alias "WindowInsetsCompat.Type.displayCutout" As Integer + Return displayCutout + + #EndIf + End Get + #tag EndGetter + Shared DisplayCutout As Integer + #tag EndComputedProperty + + #tag ComputedProperty, Flags = &h0, CompatibilityFlags = (TargetAndroid and (Target64Bit)), Description = 416E20696E73657473207479706520726570726573656E74696E67207468652077696E646F77206F6620616E20496E7075744D6574686F642E + #tag Getter + Get + #If TargetAndroid + + Declare Function ime Lib "androidx.core.view" Alias "WindowInsetsCompat.Type.ime" As Integer + Return ime + + #EndIf + End Get + #tag EndGetter + Shared Ime As Integer + #tag EndComputedProperty + + #tag ComputedProperty, Flags = &h0, CompatibilityFlags = (TargetAndroid and (Target64Bit)) + #tag Getter + Get + #If TargetAndroid + + Declare Function mandatorySystemGestures Lib "androidx.core.view" Alias "WindowInsetsCompat.Type.mandatorySystemGestures" As Integer + Return mandatorySystemGestures + + #EndIf + End Get + #tag EndGetter + Shared MandatorySystemGestures As Integer + #tag EndComputedProperty + + #tag ComputedProperty, Flags = &h0, CompatibilityFlags = (TargetAndroid and (Target64Bit)), Description = 416E20696E73657473207479706520726570726573656E74696E6720616E792073797374656D206261727320666F72206E617669676174696F6E2E + #tag Getter + Get + #If TargetAndroid + + Declare Function navigationBars Lib "androidx.core.view" Alias "WindowInsetsCompat.Type.navigationBars" As Integer + Return navigationBars + + #EndIf + End Get + #tag EndGetter + Shared NavigationBars As Integer + #tag EndComputedProperty + + #tag ComputedProperty, Flags = &h0, CompatibilityFlags = (TargetAndroid and (Target64Bit)), Description = 416E20696E73657473207479706520726570726573656E74696E6720616E792073797374656D206261727320666F7220646973706C6179696E67207374617475732E + #tag Getter + Get + #If TargetAndroid + + Declare Function statusBars Lib "androidx.core.view" Alias "WindowInsetsCompat.Type.statusBars" As Integer + Return statusBars + + #EndIf + End Get + #tag EndGetter + Shared StatusBars As Integer + #tag EndComputedProperty + + #tag ComputedProperty, Flags = &h0, CompatibilityFlags = (TargetAndroid and (Target64Bit)), Description = 416C6C2073797374656D20626172732E20496E636C7564657320737461747573426172732C2063617074696F6E4261722061732077656C6C206173206E617669676174696F6E426172732C20627574206E6F7420696D652E + #tag Getter + Get + #If TargetAndroid + + Declare Function systemBars Lib "androidx.core.view" Alias "WindowInsetsCompat.Type.systemBars" As Integer + Return systemBars + + #EndIf + End Get + #tag EndGetter + Shared SystemBars As Integer + #tag EndComputedProperty + + #tag ComputedProperty, Flags = &h0, CompatibilityFlags = (TargetAndroid and (Target64Bit)), Description = 52657475726E7320616E20696E73657473207479706520726570726573656E74696E67207468652073797374656D206765737475726520696E736574732E0A0A5468652073797374656D206765737475726520696E7365747320726570726573656E74207468652061726561206F6620612077696E646F772077686572652073797374656D2067657374757265732068617665207072696F7269747920616E64206D617920636F6E73756D6520736F6D65206F7220616C6C20746F75636820696E7075742C20652E672E2064756520746F2074686520612073797374656D20626172206F6363757079696E672069742C206F72206974206265696E6720726573657276656420666F7220746F7563682D6F6E6C792067657374757265732E0A0A53696D706C652074617073206172652067756172616E7465656420746F207265616368207468652077696E646F77206576656E2077697468696E207468652073797374656D206765737475726520696E736574732C206173206C6F6E67206173207468657920617265206F757473696465207468652073797374656D2077696E646F7720696E736574732E0A0A5768656E2053595354454D5F55495F464C41475F4C41594F55545F535441424C45206973207265717565737465642C20616E20696E7365742077696C6C2062652072657475726E6564206576656E207768656E207468652073797374656D2067657374757265732061726520696E6163746976652064756520746F2053595354454D5F55495F464C41475F4C41594F55545F46554C4C53435245454E206F722053595354454D5F55495F464C41475F4C41594F55545F484944455F4E415649474154494F4E2E + #tag Getter + Get + #If TargetAndroid + + Declare Function systemGestures Lib "androidx.core.view" Alias "WindowInsetsCompat.Type.systemGestures" As Integer + Return systemGestures + + #EndIf + End Get + #tag EndGetter + Shared SystemGestures As Integer + #tag EndComputedProperty + + #tag ComputedProperty, Flags = &h0, CompatibilityFlags = (TargetAndroid and (Target64Bit)) + #tag Getter + Get + #If TargetAndroid + + Declare Function tappableElement Lib "androidx.core.view" Alias "WindowInsetsCompat.Type.tappableElement" As Integer + Return tappableElement + + #EndIf + End Get + #tag EndGetter + Shared TappableElement As Integer + #tag EndComputedProperty + + + #tag ViewBehavior + #tag ViewProperty + Name="Name" + Visible=true + Group="ID" + InitialValue="" + Type="String" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="Index" + Visible=true + Group="ID" + InitialValue="-2147483648" + Type="Integer" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="Super" + Visible=true + Group="ID" + InitialValue="" + Type="String" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="Left" + Visible=true + Group="Position" + InitialValue="0" + Type="Integer" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="Top" + Visible=true + Group="Position" + InitialValue="0" + Type="Integer" + EditorType="" + #tag EndViewProperty + #tag EndViewBehavior +End Class +#tag EndClass diff --git a/AndroidDesignExtensions/XojoExtensionsXC.xojo_code b/AndroidDesignExtensions/XojoExtensionsXC.xojo_code index b377c78..b3ff2f8 100644 --- a/AndroidDesignExtensions/XojoExtensionsXC.xojo_code +++ b/AndroidDesignExtensions/XojoExtensionsXC.xojo_code @@ -1,5 +1,6 @@ #tag Module Protected Module XojoExtensionsXC + #tag CompatibilityFlags = (TargetAndroid and (Target64Bit)) #tag Method, Flags = &h0 Function SaveSystemImage(systemImage As String, size As Picture.SystemImageSizes = Picture.SystemImageSizes.dp48, c As Color = &c000000) As FolderItem Var oFile As FolderItem = SpecialFolder.Documents.Child(systemImage + c.ToString + ".png") diff --git a/App.xojo_code b/App.xojo_code index 463ab1f..7c40e18 100644 --- a/App.xojo_code +++ b/App.xojo_code @@ -28,10 +28,10 @@ Inherits MobileApplication #tag Constant, Name = kSystemImages, Type = String, Dynamic = False, Default = \"VECTOR_SQUARE\x2CACCESS_POINT\x2CACCESS_POINT_NETWORK\x2CACCOUNT\x2CACCOUNT_ALERT\x2CACCOUNT_BOX\x2CACCOUNT_BOX_OUTLINE\x2CACCOUNT_CHECK\x2CACCOUNT_CIRCLE\x2CACCOUNT_CONVERT\x2CACCOUNT_KEY\x2CACCOUNT_LOCATION\x2CACCOUNT_MINUS\x2CACCOUNT_MULTIPLE\x2CACCOUNT_MULTIPLE_OUTLINE\x2CACCOUNT_MULTIPLE_PLUS\x2CACCOUNT_NETWORK\x2CACCOUNT_OFF\x2CACCOUNT_OUTLINE\x2CACCOUNT_PLUS\x2CACCOUNT_REMOVE\x2CACCOUNT_SEARCH\x2CACCOUNT_STAR\x2CORBIT\x2CACCOUNT_SWITCH\x2CADJUST\x2CAIR_CONDITIONER\x2CAIRBALLOON\x2CAIRPLANE\x2CAIRPLANE_OFF\x2CAIRPLAY\x2CALARM\x2CALARM_CHECK\x2CALARM_MULTIPLE\x2CALARM_OFF\x2CALARM_PLUS\x2CALBUM\x2CALERT\x2CALERT_BOX\x2CALERT_CIRCLE\x2CALERT_OCTAGON\x2CALERT_OUTLINE\x2CALPHA\x2CALPHABETICAL\x2CAMAZON\x2CAMAZON_DRIVE\x2CAMBULANCE\x2CAMPLIFIER\x2CANCHOR\x2CANDROID\x2CANDROID_DEBUG_BRIDGE\x2CANDROID_STUDIO\x2CAPPLE\x2CAPPLE_FINDER\x2CAPPLE_IOS\x2CAPPLE_ICLOUD\x2CAPPLE_SAFARI\x2CFONT_AWESOME\x2CAPPS\x2CARCHIVE\x2CARRANGE_BRING_FORWARD\x2CARRANGE_BRING_TO_FRONT\x2CARRANGE_SEND_BACKWARD\x2CARRANGE_SEND_TO_BACK\x2CARROW_ALL\x2CARROW_BOTTOM_LEFT\x2CARROW_BOTTOM_RIGHT\x2CARROW_COLLAPSE_ALL\x2CARROW_DOWN\x2CARROW_DOWN_THICK\x2CARROW_DOWN_BOLD_CIRCLE\x2CARROW_DOWN_BOLD_CIRCLE_OUTLINE\x2CARROW_DOWN_BOLD_HEXAGON_OUTLINE\x2CARROW_DOWN_DROP_CIRCLE\x2CARROW_DOWN_DROP_CIRCLE_OUTLINE\x2CARROW_EXPAND_ALL\x2CARROW_LEFT\x2CARROW_LEFT_THICK\x2CARROW_LEFT_BOLD_CIRCLE\x2CARROW_LEFT_BOLD_CIRCLE_OUTLINE\x2CARROW_LEFT_BOLD_HEXAGON_OUTLINE\x2CARROW_LEFT_DROP_CIRCLE\x2CARROW_LEFT_DROP_CIRCLE_OUTLINE\x2CARROW_RIGHT\x2CARROW_RIGHT_THICK\x2CARROW_RIGHT_BOLD_CIRCLE\x2CARROW_RIGHT_BOLD_CIRCLE_OUTLINE\x2CARROW_RIGHT_BOLD_HEXAGON_OUTLINE\x2CARROW_RIGHT_DROP_CIRCLE\x2CARROW_RIGHT_DROP_CIRCLE_OUTLINE\x2CARROW_TOP_LEFT\x2CARROW_TOP_RIGHT\x2CARROW_UP\x2CARROW_UP_THICK\x2CARROW_UP_BOLD_CIRCLE\x2CARROW_UP_BOLD_CIRCLE_OUTLINE\x2CARROW_UP_BOLD_HEXAGON_OUTLINE\x2CARROW_UP_DROP_CIRCLE\x2CARROW_UP_DROP_CIRCLE_OUTLINE\x2CASSISTANT\x2CAT\x2CATTACHMENT\x2CAUDIOBOOK\x2CAUTO_FIX\x2CAUTO_UPLOAD\x2CAUTORENEW\x2CAV_TIMER\x2CBABY\x2CBACKBURGER\x2CBACKSPACE\x2CBACKUP_RESTORE\x2CBANK\x2CBARCODE\x2CBARCODE_SCAN\x2CBARLEY\x2CBARREL\x2CBASECAMP\x2CBASKET\x2CBASKET_FILL\x2CBASKET_UNFILL\x2CBATTERY\x2CBATTERY_10\x2CBATTERY_20\x2CBATTERY_30\x2CBATTERY_40\x2CBATTERY_50\x2CBATTERY_60\x2CBATTERY_70\x2CBATTERY_80\x2CBATTERY_90\x2CBATTERY_ALERT\x2CBATTERY_CHARGING\x2CBATTERY_CHARGING_100\x2CBATTERY_CHARGING_20\x2CBATTERY_CHARGING_30\x2CBATTERY_CHARGING_40\x2CBATTERY_CHARGING_60\x2CBATTERY_CHARGING_80\x2CBATTERY_CHARGING_90\x2CBATTERY_MINUS\x2CBATTERY_NEGATIVE\x2CBATTERY_OUTLINE\x2CBATTERY_PLUS\x2CBATTERY_POSITIVE\x2CBATTERY_UNKNOWN\x2CBEACH\x2CFLASK\x2CFLASK_EMPTY\x2CFLASK_EMPTY_OUTLINE\x2CFLASK_OUTLINE\x2CBEATS\x2CBEER\x2CBEHANCE\x2CBELL\x2CBELL_OFF\x2CBELL_OUTLINE\x2CBELL_PLUS\x2CBELL_RING\x2CBELL_RING_OUTLINE\x2CBELL_SLEEP\x2CBETA\x2CBIBLE\x2CBIKE\x2CBING\x2CBINOCULARS\x2CBIO\x2CBIOHAZARD\x2CBITBUCKET\x2CBLACK_MESA\x2CBLACKBERRY\x2CBLENDER\x2CBLINDS\x2CBLOCK_HELPER\x2CBLOGGER\x2CBLUETOOTH\x2CBLUETOOTH_AUDIO\x2CBLUETOOTH_CONNECT\x2CBLUETOOTH_OFF\x2CBLUETOOTH_SETTINGS\x2CBLUETOOTH_TRANSFER\x2CBLUR\x2CBLUR_LINEAR\x2CBLUR_OFF\x2CBLUR_RADIAL\x2CBONE\x2CBOOK\x2CBOOK_MULTIPLE\x2CBOOK_MULTIPLE_VARIANT\x2CBOOK_OPEN\x2CBOOK_OPEN_VARIANT\x2CBOOK_VARIANT\x2CBOOKMARK\x2CBOOKMARK_CHECK\x2CBOOKMARK_MUSIC\x2CBOOKMARK_OUTLINE\x2CBOOKMARK_PLUS_OUTLINE\x2CBOOKMARK_PLUS\x2CBOOKMARK_REMOVE\x2CBORDER_ALL\x2CBORDER_BOTTOM\x2CBORDER_COLOR\x2CBORDER_HORIZONTAL\x2CBORDER_INSIDE\x2CBORDER_LEFT\x2CBORDER_NONE\x2CBORDER_OUTSIDE\x2CBORDER_RIGHT\x2CBORDER_STYLE\x2CBORDER_TOP\x2CBORDER_VERTICAL\x2CBOWLING\x2CBOX\x2CBOX_CUTTER\x2CBRIEFCASE\x2CBRIEFCASE_CHECK\x2CBRIEFCASE_DOWNLOAD\x2CBRIEFCASE_UPLOAD\x2CBRIGHTNESS_1\x2CBRIGHTNESS_2\x2CBRIGHTNESS_3\x2CBRIGHTNESS_4\x2CBRIGHTNESS_5\x2CBRIGHTNESS_6\x2CBRIGHTNESS_7\x2CBRIGHTNESS_AUTO\x2CBROOM\x2CBRUSH\x2CBUG\x2CBULLETIN_BOARD\x2CBULLHORN\x2CBUS\x2CCACHED\x2CCAKE\x2CCAKE_LAYERED\x2CCAKE_VARIANT\x2CCALCULATOR\x2CCALENDAR\x2CCALENDAR_BLANK\x2CCALENDAR_CHECK\x2CCALENDAR_CLOCK\x2CCALENDAR_MULTIPLE\x2CCALENDAR_MULTIPLE_CHECK\x2CCALENDAR_PLUS\x2CCALENDAR_REMOVE\x2CCALENDAR_TEXT\x2CCALENDAR_TODAY\x2CCALL_MADE\x2CCALL_MERGE\x2CCALL_MISSED\x2CCALL_RECEIVED\x2CCALL_SPLIT\x2CCAMCORDER\x2CCAMCORDER_BOX\x2CCAMCORDER_BOX_OFF\x2CCAMCORDER_OFF\x2CCAMERA\x2CCAMERA_ENHANCE\x2CCAMERA_FRONT\x2CCAMERA_FRONT_VARIANT\x2CCAMERA_IRIS\x2CCAMERA_PARTY_MODE\x2CCAMERA_REAR\x2CCAMERA_REAR_VARIANT\x2CCAMERA_SWITCH\x2CCAMERA_TIMER\x2CCANDYCANE\x2CCAR\x2CCAR_BATTERY\x2CCAR_CONNECTED\x2CCAR_WASH\x2CCARROT\x2CCART\x2CCART_OUTLINE\x2CCART_PLUS\x2CCASE_SENSITIVE_ALT\x2CCASH\x2CCASH_100\x2CCASH_MULTIPLE\x2CCASH_USD\x2CCAST\x2CCAST_CONNECTED\x2CCASTLE\x2CCAT\x2CCELLPHONE\x2CCELLPHONE_ANDROID\x2CCELLPHONE_BASIC\x2CCELLPHONE_DOCK\x2CCELLPHONE_IPHONE\x2CCELLPHONE_LINK\x2CCELLPHONE_LINK_OFF\x2CCELLPHONE_SETTINGS\x2CCERTIFICATE\x2CCHAIR_SCHOOL\x2CCHART_ARC\x2CCHART_AREASPLINE\x2CCHART_BAR\x2CCHART_HISTOGRAM\x2CCHART_LINE\x2CCHART_PIE\x2CCHECK\x2CCHECK_ALL\x2CCHECKBOX_BLANK\x2CCHECKBOX_BLANK_CIRCLE\x2CCHECKBOX_BLANK_CIRCLE_OUTLINE\x2CCHECKBOX_BLANK_OUTLINE\x2CCHECKBOX_MARKED\x2CCHECKBOX_MARKED_CIRCLE\x2CCHECKBOX_MARKED_CIRCLE_OUTLINE\x2CCHECKBOX_MARKED_OUTLINE\x2CCHECKBOX_MULTIPLE_BLANK\x2CCHECKBOX_MULTIPLE_BLANK_OUTLINE\x2CCHECKBOX_MULTIPLE_MARKED\x2CCHECKBOX_MULTIPLE_MARKED_OUTLINE\x2CCHECKERBOARD\x2CCHEMICAL_WEAPON\x2CCHEVRON_DOUBLE_DOWN\x2CCHEVRON_DOUBLE_LEFT\x2CCHEVRON_DOUBLE_RIGHT\x2CCHEVRON_DOUBLE_UP\x2CCHEVRON_DOWN\x2CCHEVRON_LEFT\x2CCHEVRON_RIGHT\x2CCHEVRON_UP\x2CCHURCH\x2CCISCO_WEBEX\x2CCITY\x2CCLIPBOARD\x2CCLIPBOARD_ACCOUNT\x2CCLIPBOARD_ALERT\x2CCLIPBOARD_ARROW_DOWN\x2CCLIPBOARD_ARROW_LEFT\x2CCLIPBOARD_CHECK\x2CCLIPBOARD_OUTLINE\x2CCLIPBOARD_TEXT\x2CCLIPPY\x2CCLOCK\x2CCLOCK_END\x2CCLOCK_FAST\x2CCLOCK_IN\x2CCLOCK_OUT\x2CCLOCK_START\x2CCLOSE\x2CCLOSE_BOX\x2CCLOSE_BOX_OUTLINE\x2CCLOSE_CIRCLE\x2CCLOSE_CIRCLE_OUTLINE\x2CCLOSE_NETWORK\x2CCLOSE_OCTAGON\x2CCLOSE_OCTAGON_OUTLINE\x2CCLOSED_CAPTION\x2CCLOUD\x2CCLOUD_CHECK\x2CCLOUD_CIRCLE\x2CCLOUD_DOWNLOAD\x2CCLOUD_OUTLINE\x2CCLOUD_OFF_OUTLINE\x2CCLOUD_PRINT\x2CCLOUD_PRINT_OUTLINE\x2CCLOUD_UPLOAD\x2CCODE_ARRAY\x2CCODE_BRACES\x2CCODE_BRACKETS\x2CCODE_EQUAL\x2CCODE_GREATER_THAN\x2CCODE_GREATER_THAN_OR_EQUAL\x2CCODE_LESS_THAN\x2CCODE_LESS_THAN_OR_EQUAL\x2CCODE_NOT_EQUAL\x2CCODE_NOT_EQUAL_VARIANT\x2CCODE_PARENTHESES\x2CCODE_STRING\x2CCODE_TAGS\x2CCODEPEN\x2CCOFFEE\x2CCOFFEE_TO_GO\x2CCOIN\x2CCOLOR_HELPER\x2CCOMMENT\x2CCOMMENT_ACCOUNT\x2CCOMMENT_ACCOUNT_OUTLINE\x2CCOMMENT_ALERT\x2CCOMMENT_ALERT_OUTLINE\x2CCOMMENT_CHECK\x2CCOMMENT_CHECK_OUTLINE\x2CCOMMENT_MULTIPLE_OUTLINE\x2CCOMMENT_OUTLINE\x2CCOMMENT_PLUS_OUTLINE\x2CCOMMENT_PROCESSING\x2CCOMMENT_PROCESSING_OUTLINE\x2CCOMMENT_QUESTION_OUTLINE\x2CCOMMENT_REMOVE_OUTLINE\x2CCOMMENT_TEXT\x2CCOMMENT_TEXT_OUTLINE\x2CCOMPARE\x2CCOMPASS\x2CCOMPASS_OUTLINE\x2CCONSOLE\x2CCONTACT_MAIL\x2CCONTENT_COPY\x2CCONTENT_CUT\x2CCONTENT_DUPLICATE\x2CCONTENT_PASTE\x2CCONTENT_SAVE\x2CCONTENT_SAVE_ALL\x2CCONTRAST\x2CCONTRAST_BOX\x2CCONTRAST_CIRCLE\x2CCOOKIE\x2CCOUNTER\x2CCOW\x2CCREDIT_CARD\x2CCREDIT_CARD_MULTIPLE\x2CCREDIT_CARD_SCAN\x2CCROP\x2CCROP_FREE\x2CCROP_LANDSCAPE\x2CCROP_PORTRAIT\x2CCROP_SQUARE\x2CCROSSHAIRS\x2CCROSSHAIRS_GPS\x2CCROWN\x2CCUBE\x2CCUBE_OUTLINE\x2CCUBE_SEND\x2CCUBE_UNFOLDED\x2CCUP\x2CCUP_WATER\x2CCURRENCY_BTC\x2CCURRENCY_EUR\x2CCURRENCY_GBP\x2CCURRENCY_INR\x2CCURRENCY_NGN\x2CCURRENCY_RUB\x2CCURRENCY_TRY\x2CCURRENCY_USD\x2CCURSOR_DEFAULT\x2CCURSOR_DEFAULT_OUTLINE\x2CCURSOR_MOVE\x2CCURSOR_POINTER\x2CDATABASE\x2CDATABASE_MINUS\x2CDATABASE_PLUS\x2CDEBUG_STEP_INTO\x2CDEBUG_STEP_OUT\x2CDEBUG_STEP_OVER\x2CDECIMAL_DECREASE\x2CDECIMAL_INCREASE\x2CDELETE\x2CDELETE_VARIANT\x2CDELTA\x2CDESKPHONE\x2CDESKTOP_MAC\x2CDESKTOP_TOWER\x2CDETAILS\x2CDEVIANTART\x2CDIAMOND\x2CCREATION\x2CDICE_1\x2CDICE_2\x2CDICE_3\x2CDICE_4\x2CDICE_5\x2CDICE_6\x2CDIRECTIONS\x2CDISK_ALERT\x2CDISQUS\x2CDISQUS_OUTLINE\x2CDIVISION\x2CDIVISION_BOX\x2CDNS\x2CDOMAIN\x2CDOTS_HORIZONTAL\x2CDOTS_VERTICAL\x2CDOWNLOAD\x2CDRAG\x2CDRAG_HORIZONTAL\x2CDRAG_VERTICAL\x2CDRAWING\x2CDRAWING_BOX\x2CDRIBBBLE\x2CDRIBBBLE_BOX\x2CDRONE\x2CDROPBOX\x2CDRUPAL\x2CDUCK\x2CDUMBBELL\x2CEARTH\x2CEARTH_OFF\x2CEDGE\x2CEJECT\x2CELEVATION_DECLINE\x2CELEVATION_RISE\x2CELEVATOR\x2CEMAIL\x2CEMAIL_OPEN\x2CEMAIL_OUTLINE\x2CEMAIL_SECURE\x2CEMOTICON\x2CEMOTICON_COOL\x2CEMOTICON_DEVIL\x2CEMOTICON_HAPPY\x2CEMOTICON_NEUTRAL\x2CEMOTICON_POOP\x2CEMOTICON_SAD\x2CEMOTICON_TONGUE\x2CENGINE\x2CENGINE_OUTLINE\x2CEQUAL\x2CEQUAL_BOX\x2CERASER\x2CESCALATOR\x2CETHERNET\x2CETHERNET_CABLE\x2CETHERNET_CABLE_OFF\x2CETSY\x2CEVERNOTE\x2CEXCLAMATION\x2CEXIT_TO_APP\x2CEXPORT\x2CEYE\x2CEYE_OFF\x2CEYEDROPPER\x2CEYEDROPPER_VARIANT\x2CFACEBOOK\x2CFACEBOOK_BOX\x2CFACEBOOK_MESSENGER\x2CFACTORY\x2CFAN\x2CFAST_FORWARD\x2CFAX\x2CFERRY\x2CFILE\x2CFILE_CHART\x2CFILE_CHECK\x2CFILE_CLOUD\x2CFILE_DELIMITED\x2CFILE_DOCUMENT\x2CFILE_DOCUMENT_BOX\x2CFILE_EXCEL\x2CFILE_EXCEL_BOX\x2CFILE_EXPORT\x2CFILE_FIND\x2CFILE_IMAGE\x2CFILE_IMPORT\x2CFILE_LOCK\x2CFILE_MULTIPLE\x2CFILE_MUSIC\x2CFILE_OUTLINE\x2CFILE_PDF\x2CFILE_PDF_BOX\x2CFILE_POWERPOINT\x2CFILE_POWERPOINT_BOX\x2CFILE_PRESENTATION_BOX\x2CFILE_SEND\x2CFILE_VIDEO\x2CFILE_WORD\x2CFILE_WORD_BOX\x2CFILE_XML\x2CFILM\x2CFILMSTRIP\x2CFILMSTRIP_OFF\x2CFILTER\x2CFILTER_OUTLINE\x2CFILTER_REMOVE\x2CFILTER_REMOVE_OUTLINE\x2CFILTER_VARIANT\x2CFINGERPRINT\x2CFIRE\x2CFIREFOX\x2CFISH\x2CFLAG\x2CFLAG_CHECKERED\x2CFLAG_OUTLINE\x2CFLAG_VARIANT_OUTLINE\x2CFLAG_TRIANGLE\x2CFLAG_VARIANT\x2CFLASH\x2CFLASH_AUTO\x2CFLASH_OFF\x2CFLASHLIGHT\x2CFLASHLIGHT_OFF\x2CFLATTR\x2CFLIP_TO_BACK\x2CFLIP_TO_FRONT\x2CFLOPPY\x2CFLOWER\x2CFOLDER\x2CFOLDER_ACCOUNT\x2CFOLDER_DOWNLOAD\x2CFOLDER_GOOGLE_DRIVE\x2CFOLDER_IMAGE\x2CFOLDER_LOCK\x2CFOLDER_LOCK_OPEN\x2CFOLDER_MOVE\x2CFOLDER_MULTIPLE\x2CFOLDER_MULTIPLE_IMAGE\x2CFOLDER_MULTIPLE_OUTLINE\x2CFOLDER_OUTLINE\x2CFOLDER_PLUS\x2CFOLDER_REMOVE\x2CFOLDER_UPLOAD\x2CFOOD\x2CFOOD_APPLE\x2CFOOD_VARIANT\x2CFOOTBALL\x2CFOOTBALL_AUSTRALIAN\x2CFOOTBALL_HELMET\x2CFORMAT_ALIGN_CENTER\x2CFORMAT_ALIGN_JUSTIFY\x2CFORMAT_ALIGN_LEFT\x2CFORMAT_ALIGN_RIGHT\x2CFORMAT_BOLD\x2CFORMAT_CLEAR\x2CFORMAT_COLOR_FILL\x2CFORMAT_FLOAT_CENTER\x2CFORMAT_FLOAT_LEFT\x2CFORMAT_FLOAT_NONE\x2CFORMAT_FLOAT_RIGHT\x2CFORMAT_HEADER_1\x2CFORMAT_HEADER_2\x2CFORMAT_HEADER_3\x2CFORMAT_HEADER_4\x2CFORMAT_HEADER_5\x2CFORMAT_HEADER_6\x2CFORMAT_HEADER_DECREASE\x2CFORMAT_HEADER_EQUAL\x2CFORMAT_HEADER_INCREASE\x2CFORMAT_HEADER_POUND\x2CFORMAT_INDENT_DECREASE\x2CFORMAT_INDENT_INCREASE\x2CFORMAT_ITALIC\x2CFORMAT_LINE_SPACING\x2CFORMAT_LIST_BULLETED\x2CFORMAT_LIST_BULLETED_TYPE\x2CFORMAT_LIST_NUMBERS\x2CFORMAT_PAINT\x2CFORMAT_PARAGRAPH\x2CFORMAT_QUOTE_CLOSE\x2CFORMAT_SIZE\x2CFORMAT_STRIKETHROUGH\x2CFORMAT_STRIKETHROUGH_VARIANT\x2CFORMAT_SUBSCRIPT\x2CFORMAT_SUPERSCRIPT\x2CFORMAT_TEXT\x2CFORMAT_TEXTDIRECTION_L_TO_R\x2CFORMAT_TEXTDIRECTION_R_TO_L\x2CFORMAT_UNDERLINE\x2CFORMAT_WRAP_INLINE\x2CFORMAT_WRAP_SQUARE\x2CFORMAT_WRAP_TIGHT\x2CFORMAT_WRAP_TOP_BOTTOM\x2CFORUM\x2CFORWARD\x2CFOURSQUARE\x2CFRIDGE\x2CFRIDGE_FILLED\x2CFRIDGE_FILLED_BOTTOM\x2CFRIDGE_FILLED_TOP\x2CFULLSCREEN\x2CFULLSCREEN_EXIT\x2CFUNCTION\x2CGAMEPAD\x2CGAMEPAD_VARIANT\x2CGAS_STATION\x2CGATE\x2CGAUGE\x2CGAVEL\x2CGENDER_FEMALE\x2CGENDER_MALE\x2CGENDER_MALE_FEMALE\x2CGENDER_TRANSGENDER\x2CGHOST\x2CGIFT\x2CGIT\x2CGITHUB_BOX\x2CGITHUB_CIRCLE\x2CGLASS_FLUTE\x2CGLASS_MUG\x2CGLASS_STANGE\x2CGLASS_TULIP\x2CGLASSDOOR\x2CGLASSES\x2CGMAIL\x2CGNOME\x2CGOOGLE\x2CGOOGLE_CARDBOARD\x2CGOOGLE_CHROME\x2CGOOGLE_CIRCLES\x2CGOOGLE_CIRCLES_COMMUNITIES\x2CGOOGLE_CIRCLES_EXTENDED\x2CGOOGLE_CIRCLES_GROUP\x2CGOOGLE_CONTROLLER\x2CGOOGLE_CONTROLLER_OFF\x2CGOOGLE_DRIVE\x2CGOOGLE_EARTH\x2CGOOGLE_GLASS\x2CGOOGLE_NEARBY\x2CGOOGLE_PAGES\x2CGOOGLE_PHYSICAL_WEB\x2CGOOGLE_PLAY\x2CGOOGLE_PLUS\x2CGOOGLE_PLUS_BOX\x2CGOOGLE_TRANSLATE\x2CGOOGLE_WALLET\x2CGRID\x2CGRID_OFF\x2CGROUP\x2CGUITAR_ELECTRIC\x2CGUITAR_PICK\x2CGUITAR_PICK_OUTLINE\x2CHAND_POINTING_RIGHT\x2CHANGER\x2CGOOGLE_HANGOUTS\x2CHARDDISK\x2CHEADPHONES\x2CHEADPHONES_BOX\x2CHEADPHONES_SETTINGS\x2CHEADSET\x2CHEADSET_DOCK\x2CHEADSET_OFF\x2CHEART\x2CHEART_BOX\x2CHEART_BOX_OUTLINE\x2CHEART_BROKEN\x2CHEART_OUTLINE\x2CHELP\x2CHELP_CIRCLE\x2CHEXAGON\x2CHEXAGON_OUTLINE\x2CHISTORY\x2CHOLOLENS\x2CHOME\x2CHOME_MODERN\x2CHOME_VARIANT\x2CHOPS\x2CHOSPITAL\x2CHOSPITAL_BUILDING\x2CHOSPITAL_MARKER\x2CHOTEL\x2CHOUZZ\x2CHOUZZ_BOX\x2CHUMAN\x2CHUMAN_CHILD\x2CHUMAN_MALE_FEMALE\x2CIMAGE\x2CIMAGE_ALBUM\x2CIMAGE_AREA\x2CIMAGE_AREA_CLOSE\x2CIMAGE_BROKEN\x2CIMAGE_BROKEN_VARIANT\x2CIMAGE_FILTER\x2CIMAGE_FILTER_BLACK_WHITE\x2CIMAGE_FILTER_CENTER_FOCUS\x2CIMAGE_FILTER_CENTER_FOCUS_WEAK\x2CIMAGE_FILTER_DRAMA\x2CIMAGE_FILTER_FRAMES\x2CIMAGE_FILTER_HDR\x2CIMAGE_FILTER_NONE\x2CIMAGE_FILTER_TILT_SHIFT\x2CIMAGE_FILTER_VINTAGE\x2CIMAGE_MULTIPLE\x2CIMPORT_ICON\x2CINBOX_ARROW_DOWN\x2CINFORMATION\x2CINFORMATION_OUTLINE\x2CINSTAGRAM\x2CINSTAPAPER\x2CINTERNET_EXPLORER\x2CINVERT_COLORS\x2CJEEPNEY\x2CJIRA\x2CJSFIDDLE\x2CKEG\x2CKEY\x2CKEY_CHANGE\x2CKEY_MINUS\x2CKEY_PLUS\x2CKEY_REMOVE\x2CKEY_VARIANT\x2CKEYBOARD\x2CKEYBOARD_BACKSPACE\x2CKEYBOARD_CAPS\x2CKEYBOARD_CLOSE\x2CKEYBOARD_OFF\x2CKEYBOARD_RETURN\x2CKEYBOARD_TAB\x2CKEYBOARD_VARIANT\x2CKODI\x2CLABEL\x2CLABEL_OUTLINE\x2CLAN\x2CLAN_CONNECT\x2CLAN_DISCONNECT\x2CLAN_PENDING\x2CLANGUAGE_CSHARP\x2CLANGUAGE_CSS3\x2CLANGUAGE_HTML5\x2CLANGUAGE_JAVASCRIPT\x2CLANGUAGE_PHP\x2CLANGUAGE_PYTHON\x2CLANGUAGE_PYTHON_TEXT\x2CLAPTOP\x2CLAPTOP_CHROMEBOOK\x2CLAPTOP_MAC\x2CLAPTOP_WINDOWS\x2CLASTFM\x2CLAUNCH\x2CLAYERS\x2CLAYERS_OFF\x2CLEAF\x2CLED_OFF\x2CLED_ON\x2CLED_OUTLINE\x2CLED_VARIANT_OFF\x2CLED_VARIANT_ON\x2CLED_VARIANT_OUTLINE\x2CLIBRARY\x2CLIBRARY_BOOKS\x2CLIBRARY_MUSIC\x2CLIBRARY_PLUS\x2CLIGHTBULB\x2CLIGHTBULB_OUTLINE\x2CLINK\x2CLINK_OFF\x2CLINK_VARIANT\x2CLINK_VARIANT_OFF\x2CLINKEDIN\x2CLINKEDIN_BOX\x2CLINUX\x2CLOCK\x2CLOCK_OPEN\x2CLOCK_OPEN_OUTLINE\x2CLOCK_OUTLINE\x2CLOGIN\x2CLOGOUT\x2CLOOKS\x2CLOUPE\x2CLUMX\x2CMAGNET\x2CMAGNET_ON\x2CMAGNIFY\x2CMAGNIFY_MINUS\x2CMAGNIFY_PLUS\x2CMAIL_RU\x2CMAP\x2CMAP_MARKER\x2CMAP_MARKER_CIRCLE\x2CMAP_MARKER_MULTIPLE\x2CMAP_MARKER_OFF\x2CMAP_MARKER_RADIUS\x2CMARGIN\x2CMARKDOWN\x2CMARKER_CHECK\x2CGLASS_COCKTAIL\x2CMATERIAL_UI\x2CMATH_COMPASS\x2CMAXCDN\x2CMEDIUM\x2CMEMORY\x2CMENU\x2CMENU_DOWN\x2CMENU_LEFT\x2CMENU_RIGHT\x2CMENU_UP\x2CMESSAGE\x2CMESSAGE_ALERT\x2CMESSAGE_DRAW\x2CMESSAGE_IMAGE\x2CMESSAGE_OUTLINE\x2CMESSAGE_PROCESSING\x2CMESSAGE_REPLY\x2CMESSAGE_REPLY_TEXT\x2CMESSAGE_TEXT\x2CMESSAGE_TEXT_OUTLINE\x2CMESSAGE_VIDEO\x2CMICROPHONE\x2CMICROPHONE_OFF\x2CMICROPHONE_OUTLINE\x2CMICROPHONE_SETTINGS\x2CMICROPHONE_VARIANT\x2CMICROPHONE_VARIANT_OFF\x2CMICROSOFT\x2CMINECRAFT\x2CMINUS\x2CMINUS_BOX\x2CMINUS_CIRCLE\x2CMINUS_CIRCLE_OUTLINE\x2CMINUS_NETWORK\x2CMONITOR\x2CMONITOR_MULTIPLE\x2CMORE\x2CMOTORBIKE\x2CMOUSE\x2CMOUSE_OFF\x2CMOUSE_VARIANT\x2CMOUSE_VARIANT_OFF\x2CMOVIE\x2CMULTIPLICATION\x2CMULTIPLICATION_BOX\x2CMUSIC_BOX\x2CMUSIC_BOX_OUTLINE\x2CMUSIC_CIRCLE\x2CMUSIC_NOTE\x2CMUSIC_NOTE_EIGHTH\x2CMUSIC_NOTE_HALF\x2CMUSIC_NOTE_OFF\x2CMUSIC_NOTE_QUARTER\x2CMUSIC_NOTE_SIXTEENTH\x2CMUSIC_NOTE_WHOLE\x2CNATURE\x2CNATURE_PEOPLE\x2CNAVIGATION\x2CNEEDLE\x2CSMOKE_DETECTOR\x2CTHERMOSTAT\x2CNEW_BOX\x2CNEWSPAPER\x2CNFC\x2CNFC_TAP\x2CNFC_VARIANT\x2CNODEJS\x2CNOTE\x2CNOTE_OUTLINE\x2CNOTE_PLUS\x2CNOTE_PLUS_OUTLINE\x2CNOTE_TEXT\x2CNOTIFICATION_CLEAR_ALL\x2CNUMERIC\x2CNUMERIC_0_BOX\x2CNUMERIC_0_BOX_MULTIPLE_OUTLINE\x2CNUMERIC_0_BOX_OUTLINE\x2CNUMERIC_1_BOX\x2CNUMERIC_1_BOX_MULTIPLE_OUTLINE\x2CNUMERIC_1_BOX_OUTLINE\x2CNUMERIC_2_BOX\x2CNUMERIC_2_BOX_MULTIPLE_OUTLINE\x2CNUMERIC_2_BOX_OUTLINE\x2CNUMERIC_3_BOX\x2CNUMERIC_3_BOX_MULTIPLE_OUTLINE\x2CNUMERIC_3_BOX_OUTLINE\x2CNUMERIC_4_BOX\x2CNUMERIC_4_BOX_MULTIPLE_OUTLINE\x2CNUMERIC_4_BOX_OUTLINE\x2CNUMERIC_5_BOX\x2CNUMERIC_5_BOX_MULTIPLE_OUTLINE\x2CNUMERIC_5_BOX_OUTLINE\x2CNUMERIC_6_BOX\x2CNUMERIC_6_BOX_MULTIPLE_OUTLINE\x2CNUMERIC_6_BOX_OUTLINE\x2CNUMERIC_7_BOX\x2CNUMERIC_7_BOX_MULTIPLE_OUTLINE\x2CNUMERIC_7_BOX_OUTLINE\x2CNUMERIC_8_BOX\x2CNUMERIC_8_BOX_MULTIPLE_OUTLINE\x2CNUMERIC_8_BOX_OUTLINE\x2CNUMERIC_9_BOX\x2CNUMERIC_9_BOX_MULTIPLE_OUTLINE\x2CNUMERIC_9_BOX_OUTLINE\x2CNUMERIC_9_PLUS_BOX\x2CNUMERIC_9_PLUS_BOX_MULTIPLE_OUTLINE\x2CNUMERIC_9_PLUS_BOX_OUTLINE\x2CNUTRITION\x2COCTAGON\x2COCTAGON_OUTLINE\x2CODNOKLASSNIKI\x2COFFICE\x2COIL\x2COIL_TEMPERATURE\x2COMEGA\x2CONEDRIVE\x2COPEN_IN_APP\x2COPEN_IN_NEW\x2COPENID\x2COPERA\x2CORNAMENT\x2CORNAMENT_VARIANT\x2CINBOX_ARROW_UP\x2COWL\x2CPACKAGE_ICON\x2CPACKAGE_DOWN\x2CPACKAGE_UP\x2CPACKAGE_VARIANT\x2CPACKAGE_VARIANT_CLOSED\x2CPALETTE\x2CPALETTE_ADVANCED\x2CPANDA\x2CPANDORA\x2CPANORAMA\x2CPANORAMA_FISHEYE\x2CPANORAMA_HORIZONTAL\x2CPANORAMA_VERTICAL\x2CPANORAMA_WIDE_ANGLE\x2CPAPER_CUT_VERTICAL\x2CPAPERCLIP\x2CPARKING\x2CPAUSE\x2CPAUSE_CIRCLE\x2CPAUSE_CIRCLE_OUTLINE\x2CPAUSE_OCTAGON\x2CPAUSE_OCTAGON_OUTLINE\x2CPAW\x2CPEN\x2CPENCIL\x2CPENCIL_BOX\x2CPENCIL_BOX_OUTLINE\x2CPENCIL_LOCK\x2CPENCIL_OFF\x2CPERCENT\x2CPHARMACY\x2CPHONE\x2CPHONE_BLUETOOTH\x2CPHONE_FORWARD\x2CPHONE_HANGUP\x2CPHONE_IN_TALK\x2CPHONE_INCOMING\x2CPHONE_LOCKED\x2CPHONE_LOG\x2CPHONE_MISSED\x2CPHONE_OUTGOING\x2CPHONE_PAUSED\x2CPHONE_SETTINGS\x2CPHONE_VOIP\x2CPI\x2CPI_BOX\x2CPIG\x2CPILL\x2CPIN\x2CPIN_OFF\x2CPINE_TREE\x2CPINE_TREE_BOX\x2CPINTEREST\x2CPINTEREST_BOX\x2CPIZZA\x2CPLAY\x2CPLAY_BOX_OUTLINE\x2CPLAY_CIRCLE\x2CPLAY_CIRCLE_OUTLINE\x2CPLAY_PAUSE\x2CPLAY_PROTECTED_CONTENT\x2CPLAYLIST_MINUS\x2CPLAYLIST_PLAY\x2CPLAYLIST_PLUS\x2CPLAYLIST_REMOVE\x2CPLAYSTATION\x2CPLUS\x2CPLUS_BOX\x2CPLUS_CIRCLE\x2CPLUS_CIRCLE_MULTIPLE_OUTLINE\x2CPLUS_CIRCLE_OUTLINE\x2CPLUS_NETWORK\x2CPLUS_ONE\x2CPOCKET\x2CPOKEBALL\x2CPOLAROID\x2CPOLL\x2CPOLL_BOX\x2CPOLYMER\x2CPOPCORN\x2CPOUND\x2CPOUND_BOX\x2CPOWER\x2CPOWER_SETTINGS\x2CPOWER_SOCKET\x2CPRESENTATION\x2CPRESENTATION_PLAY\x2CPRINTER\x2CPRINTER_3D\x2CPRINTER_ALERT\x2CPROFESSIONAL_HEXAGON\x2CPROJECTOR\x2CPROJECTOR_SCREEN\x2CPULSE\x2CPUZZLE\x2CQRCODE\x2CQRCODE_SCAN\x2CQUADCOPTER\x2CQUALITY_HIGH\x2CQUICKTIME\x2CRADAR\x2CRADIATOR\x2CRADIO\x2CRADIO_HANDHELD\x2CRADIO_TOWER\x2CRADIOACTIVE\x2CRADIOBOX_BLANK\x2CRADIOBOX_MARKED\x2CRASPBERRYPI\x2CRAY_END\x2CRAY_END_ARROW\x2CRAY_START\x2CRAY_START_ARROW\x2CRAY_START_END\x2CRAY_VERTEX\x2CLASTPASS\x2CREAD\x2CYOUTUBE_TV\x2CRECEIPT\x2CRECORD\x2CRECORD_REC\x2CRECYCLE\x2CREDDIT\x2CREDO\x2CREDO_VARIANT\x2CREFRESH\x2CREGEX\x2CRELATIVE_SCALE\x2CRELOAD\x2CREMOTE\x2CRENAME_BOX\x2CREPEAT\x2CREPEAT_OFF\x2CREPEAT_ONCE\x2CREPLAY\x2CREPLY\x2CREPLY_ALL\x2CREPRODUCTION\x2CRESIZE_BOTTOM_RIGHT\x2CRESPONSIVE\x2CREWIND\x2CRIBBON\x2CROAD\x2CROAD_VARIANT\x2CROCKET\x2CROTATE_3D\x2CROTATE_LEFT\x2CROTATE_LEFT_VARIANT\x2CROTATE_RIGHT\x2CROTATE_RIGHT_VARIANT\x2CROUTER_WIRELESS\x2CROUTES\x2CRSS\x2CRSS_BOX\x2CRULER\x2CRUN_FAST\x2CSALE\x2CSATELLITE\x2CSATELLITE_VARIANT\x2CSCALE\x2CSCALE_BATHROOM\x2CSCHOOL\x2CSCREEN_ROTATION\x2CSCREEN_ROTATION_LOCK\x2CSCREWDRIVER\x2CSCRIPT\x2CSD\x2CSEAL\x2CSEAT_FLAT\x2CSEAT_FLAT_ANGLED\x2CSEAT_INDIVIDUAL_SUITE\x2CSEAT_LEGROOM_EXTRA\x2CSEAT_LEGROOM_NORMAL\x2CSEAT_LEGROOM_REDUCED\x2CSEAT_RECLINE_EXTRA\x2CSEAT_RECLINE_NORMAL\x2CSECURITY\x2CSECURITY_NETWORK\x2CSELECT\x2CSELECT_ALL\x2CSELECT_INVERSE\x2CSELECT_OFF\x2CSELECTION\x2CSEND\x2CSERVER\x2CSERVER_MINUS\x2CSERVER_NETWORK\x2CSERVER_NETWORK_OFF\x2CSERVER_OFF\x2CSERVER_PLUS\x2CSERVER_REMOVE\x2CSERVER_SECURITY\x2CSETTINGS\x2CSETTINGS_BOX\x2CSHAPE_PLUS\x2CSHARE\x2CSHARE_VARIANT\x2CSHIELD\x2CSHIELD_OUTLINE\x2CSHOPPING\x2CSHOPPING_MUSIC\x2CSHREDDER\x2CSHUFFLE\x2CSHUFFLE_DISABLED\x2CSHUFFLE_VARIANT\x2CSIGMA\x2CSIGN_CAUTION\x2CSIGNAL\x2CSILVERWARE\x2CSILVERWARE_FORK\x2CSILVERWARE_SPOON\x2CSILVERWARE_VARIANT\x2CSIM\x2CSIM_ALERT\x2CSIM_OFF\x2CSITEMAP\x2CSKIP_BACKWARD\x2CSKIP_FORWARD\x2CSKIP_NEXT\x2CSKIP_PREVIOUS\x2CSKYPE\x2CSKYPE_BUSINESS\x2CSLACK\x2CSLEEP\x2CSLEEP_OFF\x2CSMOKING\x2CSMOKING_OFF\x2CSNAPCHAT\x2CSNOWMAN\x2CSOCCER\x2CSOFA\x2CSORT\x2CSORT_ALPHABETICAL\x2CSORT_ASCENDING\x2CSORT_DESCENDING\x2CSORT_NUMERIC\x2CSORT_VARIANT\x2CSOUNDCLOUD\x2CSOURCE_FORK\x2CSOURCE_PULL\x2CSPEAKER\x2CSPEAKER_OFF\x2CSPEEDOMETER\x2CSPELLCHECK\x2CSPOTIFY\x2CSPOTLIGHT\x2CSPOTLIGHT_BEAM\x2CSQUARE_INC\x2CSQUARE_INC_CASH\x2CSTACK_OVERFLOW\x2CSTAIRS\x2CSTAR\x2CSTAR_CIRCLE\x2CSTAR_HALF\x2CSTAR_OFF\x2CSTAR_OUTLINE\x2CSTEAM\x2CSTEERING\x2CSTEP_BACKWARD\x2CSTEP_BACKWARD_2\x2CSTEP_FORWARD\x2CSTEP_FORWARD_2\x2CSTETHOSCOPE\x2CSTOCKING\x2CSTOP\x2CSTORE\x2CSTORE_24_HOUR\x2CSTOVE\x2CSUBWAY_VARIANT\x2CSUNGLASSES\x2CSWAP_HORIZONTAL\x2CSWAP_VERTICAL\x2CSWIM\x2CSWITCH_ICON\x2CSWORD\x2CSYNC\x2CSYNC_ALERT\x2CSYNC_OFF\x2CTAB\x2CTAB_UNSELECTED\x2CTABLE\x2CTABLE_COLUMN_PLUS_AFTER\x2CTABLE_COLUMN_PLUS_BEFORE\x2CTABLE_COLUMN_REMOVE\x2CTABLE_COLUMN_WIDTH\x2CTABLE_EDIT\x2CTABLE_LARGE\x2CTABLE_ROW_HEIGHT\x2CTABLE_ROW_PLUS_AFTER\x2CTABLE_ROW_PLUS_BEFORE\x2CTABLE_ROW_REMOVE\x2CTABLET\x2CTABLET_ANDROID\x2CTABLET_IPAD\x2CTAG\x2CTAG_FACES\x2CTAG_MULTIPLE\x2CTAG_OUTLINE\x2CTAG_TEXT_OUTLINE\x2CTARGET\x2CTAXI\x2CTEAMVIEWER\x2CTELEGRAM\x2CTELEVISION\x2CTELEVISION_GUIDE\x2CTEMPERATURE_CELSIUS\x2CTEMPERATURE_FAHRENHEIT\x2CTEMPERATURE_KELVIN\x2CTENNIS\x2CTENT\x2CTERRAIN\x2CTEXT_TO_SPEECH\x2CTEXT_TO_SPEECH_OFF\x2CTEXTURE\x2CTHEATER\x2CTHEME_LIGHT_DARK\x2CTHERMOMETER\x2CTHERMOMETER_LINES\x2CTHUMB_DOWN\x2CTHUMB_DOWN_OUTLINE\x2CTHUMB_UP\x2CTHUMB_UP_OUTLINE\x2CTHUMBS_UP_DOWN\x2CTICKET\x2CTICKET_ACCOUNT\x2CTICKET_CONFIRMATION\x2CTIE\x2CTIMELAPSE\x2CTIMER\x2CTIMER_10\x2CTIMER_3\x2CTIMER_OFF\x2CTIMER_SAND\x2CTIMETABLE\x2CTOGGLE_SWITCH\x2CTOGGLE_SWITCH_OFF\x2CTOOLTIP\x2CTOOLTIP_EDIT\x2CTOOLTIP_IMAGE\x2CTOOLTIP_OUTLINE\x2CTOOLTIP_OUTLINE_PLUS\x2CTOOLTIP_TEXT\x2CTOOTH_OUTLINE\x2CTOR\x2CTRAFFIC_LIGHT\x2CTRAIN\x2CTRAM\x2CTRANSCRIBE\x2CTRANSCRIBE_CLOSE\x2CTRANSFER\x2CTREE\x2CTRELLO\x2CTRENDING_DOWN\x2CTRENDING_NEUTRAL\x2CTRENDING_UP\x2CTRIANGLE\x2CTRIANGLE_OUTLINE\x2CTROPHY\x2CTROPHY_AWARD\x2CTROPHY_OUTLINE\x2CTROPHY_VARIANT\x2CTROPHY_VARIANT_OUTLINE\x2CTRUCK\x2CTRUCK_DELIVERY\x2CTSHIRT_CREW\x2CTSHIRT_V\x2CTUMBLR\x2CTUMBLR_REBLOG\x2CTWITCH\x2CTWITTER\x2CTWITTER_BOX\x2CTWITTER_CIRCLE\x2CTWITTER_RETWEET\x2CUBUNTU\x2CUMBRACO\x2CUMBRELLA\x2CUMBRELLA_OUTLINE\x2CUNDO\x2CUNDO_VARIANT\x2CUNFOLD_LESS_HORIZONTAL\x2CUNFOLD_MORE_HORIZONTAL\x2CUNGROUP\x2CUNTAPPD\x2CUPLOAD\x2CUSB\x2CVECTOR_ARRANGE_ABOVE\x2CVECTOR_ARRANGE_BELOW\x2CVECTOR_CIRCLE\x2CVECTOR_CIRCLE_VARIANT\x2CVECTOR_COMBINE\x2CVECTOR_CURVE\x2CVECTOR_DIFFERENCE\x2CVECTOR_DIFFERENCE_AB\x2CVECTOR_DIFFERENCE_BA\x2CVECTOR_INTERSECTION\x2CVECTOR_LINE\x2CVECTOR_POINT\x2CVECTOR_POLYGON\x2CVECTOR_POLYLINE\x2CVECTOR_SELECTION\x2CVECTOR_TRIANGLE\x2CVECTOR_UNION\x2CVERIFIED\x2CVIBRATE\x2CVIDEO\x2CVIDEO_OFF\x2CVIDEO_SWITCH\x2CVIEW_AGENDA\x2CVIEW_ARRAY\x2CVIEW_CAROUSEL\x2CVIEW_COLUMN\x2CVIEW_DASHBOARD\x2CVIEW_DAY\x2CVIEW_GRID\x2CVIEW_HEADLINE\x2CVIEW_LIST\x2CVIEW_MODULE\x2CVIEW_QUILT\x2CVIEW_STREAM\x2CVIEW_WEEK\x2CVIMEO\x2CVENMO\x2CVK\x2CVK_BOX\x2CVK_CIRCLE\x2CVLC\x2CVOICEMAIL\x2CVOLUME_HIGH\x2CVOLUME_LOW\x2CVOLUME_MEDIUM\x2CVOLUME_OFF\x2CVPN\x2CWALK\x2CWALLET\x2CWALLET_GIFTCARD\x2CWALLET_MEMBERSHIP\x2CWALLET_TRAVEL\x2CWAN\x2CWATCH\x2CWATCH_EXPORT\x2CWATCH_IMPORT\x2CWATER\x2CWATER_OFF\x2CWATER_PERCENT\x2CWATER_PUMP\x2CWEATHER_CLOUDY\x2CWEATHER_FOG\x2CWEATHER_HAIL\x2CWEATHER_LIGHTNING\x2CWEATHER_NIGHT\x2CWEATHER_PARTLYCLOUDY\x2CWEATHER_POURING\x2CWEATHER_RAINY\x2CWEATHER_SNOWY\x2CWEATHER_SUNNY\x2CWEATHER_SUNSET\x2CWEATHER_SUNSET_DOWN\x2CWEATHER_SUNSET_UP\x2CWEATHER_WINDY\x2CWEATHER_WINDY_VARIANT\x2CWEB\x2CWEBCAM\x2CWEIGHT\x2CWEIGHT_KILOGRAM\x2CWHATSAPP\x2CWHEELCHAIR_ACCESSIBILITY\x2CWHITE_BALANCE_AUTO\x2CWHITE_BALANCE_INCANDESCENT\x2CWHITE_BALANCE_IRIDESCENT\x2CWHITE_BALANCE_SUNNY\x2CWIFI\x2CWIFI_OFF\x2CWII\x2CWIKIPEDIA\x2CWINDOW_CLOSE\x2CWINDOW_CLOSED\x2CWINDOW_MAXIMIZE\x2CWINDOW_MINIMIZE\x2CWINDOW_OPEN\x2CWINDOW_RESTORE\x2CWINDOWS\x2CWORDPRESS\x2CWORKER\x2CWRAP\x2CWRENCH\x2CWUNDERLIST\x2CXBOX\x2CXBOX_CONTROLLER\x2CXBOX_CONTROLLER_OFF\x2CXDA\x2CXING\x2CXING_BOX\x2CXING_CIRCLE\x2CXML\x2CYEAST\x2CYELP\x2CYOUTUBE\x2CZIP_BOX\x2CSURROUND_SOUND\x2CVECTOR_RECTANGLE\x2CPLAYLIST_CHECK\x2CFORMAT_LINE_STYLE\x2CFORMAT_LINE_WEIGHT\x2CTRANSLATE\x2CVOICE\x2COPACITY\x2CNEAR_ME\x2CCLOCK_ALERT\x2CHUMAN_PREGNANT\x2CSTICKER\x2CSCALE_BALANCE\x2CACCOUNT_CARD_DETAILS\x2CACCOUNT_MULTIPLE_MINUS\x2CAIRPLANE_LANDING\x2CAIRPLANE_TAKEOFF\x2CALERT_CIRCLE_OUTLINE\x2CALTIMETER\x2CANIMATION\x2CBOOK_MINUS\x2CBOOK_OPEN_PAGE_VARIANT\x2CBOOK_PLUS\x2CBOOMBOX\x2CBULLSEYE\x2CCOMMENT_REMOVE\x2CCAMERA_OFF\x2CCHECK_CIRCLE\x2CCHECK_CIRCLE_OUTLINE\x2CCANDLE\x2CCHART_BUBBLE\x2CCREDIT_CARD_OFF\x2CCUP_OFF\x2CCOPYRIGHT\x2CCURSOR_TEXT\x2CDELETE_FOREVER\x2CDELETE_SWEEP\x2CDICE_D20\x2CDICE_D4\x2CDICE_D6\x2CDICE_D8\x2CDISK\x2CEMAIL_OPEN_OUTLINE\x2CEMAIL_VARIANT\x2CEV_STATION\x2CFOOD_FORK_DRINK\x2CFOOD_OFF\x2CFORMAT_TITLE\x2CGOOGLE_MAPS\x2CHEART_PULSE\x2CHIGHWAY\x2CHOME_MAP_MARKER\x2CINCOGNITO\x2CKETTLE\x2CLOCK_PLUS\x2CLOGIN_VARIANT\x2CLOGOUT_VARIANT\x2CMUSIC_NOTE_BLUETOOTH\x2CMUSIC_NOTE_BLUETOOTH_OFF\x2CPAGE_FIRST\x2CPAGE_LAST\x2CPHONE_CLASSIC\x2CPRIORITY_HIGH\x2CPRIORITY_LOW\x2CQQCHAT\x2CPOOL\x2CROUNDED_CORNER\x2CROWING\x2CSAXOPHONE\x2CSIGNAL_VARIANT\x2CSTACK_EXCHANGE\x2CSUBDIRECTORY_ARROW_LEFT\x2CSUBDIRECTORY_ARROW_RIGHT\x2CTEXTBOX\x2CVIOLIN\x2CVISUALSTUDIO\x2CWECHAT\x2CWATERMARK\x2CFILE_HIDDEN\x2CAPPLICATION\x2CARROW_COLLAPSE\x2CARROW_EXPAND\x2CBOWL\x2CBRIDGE\x2CBUFFER\x2CCHIP\x2CCONTENT_SAVE_SETTINGS\x2CDIALPAD\x2CDICTIONARY\x2CFORMAT_HORIZONTAL_ALIGN_CENTER\x2CFORMAT_HORIZONTAL_ALIGN_LEFT\x2CFORMAT_HORIZONTAL_ALIGN_RIGHT\x2CFORMAT_VERTICAL_ALIGN_BOTTOM\x2CFORMAT_VERTICAL_ALIGN_CENTER\x2CFORMAT_VERTICAL_ALIGN_TOP\x2CHACKERNEWS\x2CHELP_CIRCLE_OUTLINE\x2CJSON\x2CLAMBDA\x2CMATRIX\x2CMETEOR\x2CMIXCLOUD\x2CSIGMA_LOWER\x2CSOURCE_BRANCH\x2CSOURCE_MERGE\x2CTUNE\x2CWEBHOOK\x2CACCOUNT_SETTINGS\x2CACCOUNT_SETTINGS_VARIANT\x2CAPPLE_KEYBOARD_CAPS\x2CAPPLE_KEYBOARD_COMMAND\x2CAPPLE_KEYBOARD_CONTROL\x2CAPPLE_KEYBOARD_OPTION\x2CAPPLE_KEYBOARD_SHIFT\x2CBOX_SHADOW\x2CCARDS\x2CCARDS_OUTLINE\x2CCARDS_PLAYING_OUTLINE\x2CCHECKBOX_MULTIPLE_BLANK_CIRCLE\x2CCHECKBOX_MULTIPLE_BLANK_CIRCLE_OUTLINE\x2CCHECKBOX_MULTIPLE_MARKED_CIRCLE\x2CCHECKBOX_MULTIPLE_MARKED_CIRCLE_OUTLINE\x2CCLOUD_SYNC\x2CCOLLAGE\x2CDIRECTIONS_FORK\x2CERASER_VARIANT\x2CFACE\x2CFACE_PROFILE\x2CFILE_TREE\x2CFORMAT_ANNOTATION_PLUS\x2CGAS_CYLINDER\x2CGREASE_PENCIL\x2CHUMAN_FEMALE\x2CHUMAN_GREETING\x2CHUMAN_HANDSDOWN\x2CHUMAN_HANDSUP\x2CHUMAN_MALE\x2CINFORMATION_VARIANT\x2CLEAD_PENCIL\x2CMAP_MARKER_MINUS\x2CMAP_MARKER_PLUS\x2CMARKER\x2CMESSAGE_PLUS\x2CMICROSCOPE\x2CMOVE_RESIZE\x2CMOVE_RESIZE_VARIANT\x2CPAW_OFF\x2CPHONE_MINUS\x2CPHONE_PLUS\x2CPOT\x2CPOT_MIX\x2CSERIAL_PORT\x2CSHAPE_CIRCLE_PLUS\x2CSHAPE_POLYGON_PLUS\x2CSHAPE_RECTANGLE_PLUS\x2CSHAPE_SQUARE_PLUS\x2CSKIP_NEXT_CIRCLE\x2CSKIP_NEXT_CIRCLE_OUTLINE\x2CSKIP_PREVIOUS_CIRCLE\x2CSKIP_PREVIOUS_CIRCLE_OUTLINE\x2CSPRAY\x2CSTOP_CIRCLE\x2CSTOP_CIRCLE_OUTLINE\x2CTEST_TUBE\x2CTEXT_SHADOW\x2CTUNE_VERTICAL\x2CCART_OFF\x2CCHART_GANTT\x2CCHART_SCATTERPLOT_HEXBIN\x2CCHART_TIMELINE\x2CDISCORD\x2CFILE_RESTORE\x2CLANGUAGE_C\x2CLANGUAGE_CPP\x2CXAML\x2CBANDCAMP\x2CCREDIT_CARD_PLUS\x2CITUNES\x2CBOW_TIE\x2CCALENDAR_RANGE\x2CCURRENCY_USD_OFF\x2CFLASH_RED_EYE\x2COAR\x2CPIANO\x2CWEATHER_LIGHTNING_RAINY\x2CWEATHER_SNOWY_RAINY\x2CYIN_YANG\x2CTOWER_BEACH\x2CTOWER_FIRE\x2CDELETE_CIRCLE\x2CDNA\x2CHAMBURGER\x2CGONDOLA\x2CINBOX\x2CREORDER_HORIZONTAL\x2CREORDER_VERTICAL\x2CSECURITY_HOME\x2CTAG_HEART\x2CSKULL\x2CSOLID\x2CALARM_SNOOZE\x2CBABY_BUGGY\x2CBEAKER\x2CBOMB\x2CCALENDAR_QUESTION\x2CCAMERA_BURST\x2CCODE_TAGS_CHECK\x2CCOINS\x2CCROP_ROTATE\x2CDEVELOPER_BOARD\x2CDO_NOT_DISTURB\x2CDO_NOT_DISTURB_OFF\x2CDOUBAN\x2CEMOTICON_DEAD\x2CEMOTICON_EXCITED\x2CFOLDER_STAR\x2CFORMAT_COLOR_TEXT\x2CFORMAT_SECTION\x2CGRADIENT\x2CHOME_OUTLINE\x2CMESSAGE_BULLETED\x2CMESSAGE_BULLETED_OFF\x2CNUKE\x2CPOWER_PLUG\x2CPOWER_PLUG_OFF\x2CPUBLISH\x2CRESTORE\x2CROBOT\x2CFORMAT_ROTATE_90\x2CSCANNER\x2CSUBWAY\x2CTIMER_SAND_EMPTY\x2CTRANSIT_TRANSFER\x2CUNITY\x2CUPDATE\x2CWATCH_VIBRATE\x2CANGULAR\x2CDOLBY\x2CEMBY\x2CLAMP\x2CMENU_DOWN_OUTLINE\x2CMENU_UP_OUTLINE\x2CNOTE_MULTIPLE\x2CNOTE_MULTIPLE_OUTLINE\x2CPLEX\x2CPLANE_SHIELD\x2CACCOUNT_EDIT\x2CALERT_DECAGRAM\x2CALL_INCLUSIVE\x2CANGULARJS\x2CARROW_DOWN_BOX\x2CARROW_LEFT_BOX\x2CARROW_RIGHT_BOX\x2CARROW_UP_BOX\x2CASTERISK\x2CBOMB_OFF\x2CBOOTSTRAP\x2CCARDS_VARIANT\x2CCLIPBOARD_FLOW\x2CCLOSE_OUTLINE\x2CCOFFEE_OUTLINE\x2CCONTACTS\x2CDELETE_EMPTY\x2CEARTH_BOX\x2CEARTH_BOX_OFF\x2CEMAIL_ALERT\x2CEYE_OUTLINE\x2CEYE_OFF_OUTLINE\x2CFAST_FORWARD_OUTLINE\x2CFEATHER\x2CFIND_REPLACE\x2CFLASH_OUTLINE\x2CFORMAT_FONT\x2CFORMAT_PAGE_BREAK\x2CFORMAT_PILCROW\x2CGARAGE\x2CGARAGE_OPEN\x2CGITHUB_FACE\x2CGOOGLE_KEEP\x2CGOOGLE_PHOTOS\x2CHEART_HALF_FULL\x2CHEART_HALF\x2CHEART_HALF_OUTLINE\x2CHEXAGON_MULTIPLE\x2CHOOK\x2CHOOK_OFF\x2CINFINITY\x2CLANGUAGE_SWIFT\x2CLANGUAGE_TYPESCRIPT\x2CLAPTOP_OFF\x2CLIGHTBULB_ON\x2CLIGHTBULB_ON_OUTLINE\x2CLOCK_PATTERN\x2CLOOP\x2CMAGNIFY_MINUS_OUTLINE\x2CMAGNIFY_PLUS_OUTLINE\x2CMAILBOX\x2CMEDICAL_BAG\x2CMESSAGE_SETTINGS\x2CMESSAGE_SETTINGS_VARIANT\x2CMINUS_BOX_OUTLINE\x2CNETWORK\x2CDOWNLOAD_NETWORK\x2CHELP_NETWORK\x2CUPLOAD_NETWORK\x2CNPM\x2CNUT\x2COCTAGRAM\x2CPAGE_LAYOUT_BODY\x2CPAGE_LAYOUT_FOOTER\x2CPAGE_LAYOUT_HEADER\x2CPAGE_LAYOUT_SIDEBAR_LEFT\x2CPAGE_LAYOUT_SIDEBAR_RIGHT\x2CPENCIL_CIRCLE\x2CPENTAGON\x2CPENTAGON_OUTLINE\x2CPILLAR\x2CPISTOL\x2CPLUS_BOX_OUTLINE\x2CPLUS_OUTLINE\x2CPRESCRIPTION\x2CPRINTER_SETTINGS\x2CREACT\x2CRESTART\x2CREWIND_OUTLINE\x2CRHOMBUS\x2CRHOMBUS_OUTLINE\x2CROBOT_VACUUM\x2CRUN\x2CSEARCH_WEB\x2CSHOVEL\x2CSHOVEL_OFF\x2CSIGNAL_2G\x2CSIGNAL_3G\x2CSIGNAL_4G\x2CSIGNAL_HSPA\x2CSIGNAL_HSPA_PLUS\x2CSNOWFLAKE\x2CSOURCE_COMMIT\x2CSOURCE_COMMIT_END\x2CSOURCE_COMMIT_END_LOCAL\x2CSOURCE_COMMIT_LOCAL\x2CSOURCE_COMMIT_NEXT_LOCAL\x2CSOURCE_COMMIT_START\x2CSOURCE_COMMIT_START_NEXT_LOCAL\x2CSPEAKER_WIRELESS\x2CSTADIUM\x2CSVG\x2CTAG_PLUS\x2CTAG_REMOVE\x2CTICKET_PERCENT\x2CTILDE\x2CTREASURE_CHEST\x2CTRUCK_TRAILER\x2CVIEW_PARALLEL\x2CVIEW_SEQUENTIAL\x2CWASHING_MACHINE\x2CWEBPACK\x2CWIDGETS\x2CWIIU\x2CARROW_DOWN_BOLD\x2CARROW_DOWN_BOLD_BOX\x2CARROW_DOWN_BOLD_BOX_OUTLINE\x2CARROW_LEFT_BOLD\x2CARROW_LEFT_BOLD_BOX\x2CARROW_LEFT_BOLD_BOX_OUTLINE\x2CARROW_RIGHT_BOLD\x2CARROW_RIGHT_BOLD_BOX\x2CARROW_RIGHT_BOLD_BOX_OUTLINE\x2CARROW_UP_BOLD\x2CARROW_UP_BOLD_BOX\x2CARROW_UP_BOLD_BOX_OUTLINE\x2CCANCEL\x2CFILE_ACCOUNT\x2CGESTURE_DOUBLE_TAP\x2CGESTURE_SWIPE_DOWN\x2CGESTURE_SWIPE_LEFT\x2CGESTURE_SWIPE_RIGHT\x2CGESTURE_SWIPE_UP\x2CGESTURE_TAP\x2CGESTURE_TWO_DOUBLE_TAP\x2CGESTURE_TWO_TAP\x2CHUMBLE_BUNDLE\x2CKICKSTARTER\x2CNETFLIX\x2CONENOTE\x2CPERISCOPE\x2CUBER\x2CVECTOR_RADIUS\x2CXBOX_CONTROLLER_BATTERY_ALERT\x2CXBOX_CONTROLLER_BATTERY_EMPTY\x2CXBOX_CONTROLLER_BATTERY_FULL\x2CXBOX_CONTROLLER_BATTERY_LOW\x2CXBOX_CONTROLLER_BATTERY_MEDIUM\x2CXBOX_CONTROLLER_BATTERY_UNKNOWN\x2CCLIPBOARD_PLUS\x2CFILE_PLUS\x2CFORMAT_ALIGN_BOTTOM\x2CFORMAT_ALIGN_MIDDLE\x2CFORMAT_ALIGN_TOP\x2CFORMAT_LIST_CHECKS\x2CFORMAT_QUOTE_OPEN\x2CGRID_LARGE\x2CHEART_OFF\x2CMUSIC\x2CMUSIC_OFF\x2CTAB_PLUS\x2CVOLUME_PLUS\x2CVOLUME_MINUS\x2CVOLUME_MUTE\x2CUNFOLD_LESS_VERTICAL\x2CUNFOLD_MORE_VERTICAL\x2CTACO\x2CSQUARE_OUTLINE\x2CSQUARE\x2CCIRCLE\x2CCIRCLE_OUTLINE\x2CALERT_OCTAGRAM\x2CATOM\x2CCEILING_LIGHT\x2CCHART_BAR_STACKED\x2CCHART_LINE_STACKED\x2CDECAGRAM\x2CDECAGRAM_OUTLINE\x2CDICE_MULTIPLE\x2CDICE_D10\x2CFOLDER_OPEN\x2CGUITAR_ACOUSTIC\x2CLOADING\x2CLOCK_RESET\x2CNINJA\x2COCTAGRAM_OUTLINE\x2CPENCIL_CIRCLE_OUTLINE\x2CSELECTION_OFF\x2CSET_ALL\x2CSET_CENTER\x2CSET_CENTER_RIGHT\x2CSET_LEFT\x2CSET_LEFT_CENTER\x2CSET_LEFT_RIGHT\x2CSET_NONE\x2CSET_RIGHT\x2CSHIELD_HALF_FULL\x2CSIGN_DIRECTION\x2CSIGN_TEXT\x2CSIGNAL_OFF\x2CSQUARE_ROOT\x2CSTICKER_EMOJI\x2CSUMMIT\x2CSWORD_CROSS\x2CTRUCK_FAST\x2CYAMMER\x2CCAST_OFF\x2CHELP_BOX\x2CTIMER_SAND_FULL\x2CWAVES\x2CALARM_BELL\x2CALARM_LIGHT\x2CANDROID_HEAD\x2CAPPROVAL\x2CARROW_COLLAPSE_DOWN\x2CARROW_COLLAPSE_LEFT\x2CARROW_COLLAPSE_RIGHT\x2CARROW_COLLAPSE_UP\x2CARROW_EXPAND_DOWN\x2CARROW_EXPAND_LEFT\x2CARROW_EXPAND_RIGHT\x2CARROW_EXPAND_UP\x2CBOOK_SECURE\x2CBOOK_UNSECURE\x2CBUS_ARTICULATED_END\x2CBUS_ARTICULATED_FRONT\x2CBUS_DOUBLE_DECKER\x2CBUS_SCHOOL\x2CBUS_SIDE\x2CCAMERA_GOPRO\x2CCAMERA_METERING_CENTER\x2CCAMERA_METERING_MATRIX\x2CCAMERA_METERING_PARTIAL\x2CCAMERA_METERING_SPOT\x2CCANNABIS\x2CCAR_CONVERTIBLE\x2CCAR_ESTATE\x2CCAR_HATCHBACK\x2CCAR_PICKUP\x2CCAR_SIDE\x2CCAR_SPORTS\x2CCARAVAN\x2CCCTV\x2CCHART_DONUT\x2CCHART_DONUT_VARIANT\x2CCHART_LINE_VARIANT\x2CCHILI_HOT\x2CCHILI_MEDIUM\x2CCHILI_MILD\x2CCLOUD_BRACES\x2CCLOUD_TAGS\x2CCONSOLE_LINE\x2CCORN\x2CCURRENCY_CHF\x2CCURRENCY_CNY\x2CCURRENCY_ETH\x2CCURRENCY_JPY\x2CCURRENCY_KRW\x2CCURRENCY_SIGN\x2CCURRENCY_TWD\x2CDESKTOP_CLASSIC\x2CDIP_SWITCH\x2CDONKEY\x2CDOTS_HORIZONTAL_CIRCLE\x2CDOTS_VERTICAL_CIRCLE\x2CEAR_HEARING\x2CELEPHANT\x2CEVENTBRITE\x2CFOOD_CROISSANT\x2CFORKLIFT\x2CFUEL\x2CGESTURE\x2CGOOGLE_ANALYTICS\x2CGOOGLE_ASSISTANT\x2CHEADPHONES_OFF\x2CHIGH_DEFINITION\x2CHOME_ASSISTANT\x2CHOME_AUTOMATION\x2CHOME_CIRCLE\x2CLANGUAGE_GO\x2CLANGUAGE_R\x2CLAVA_LAMP\x2CLED_STRIP\x2CLOCKER\x2CLOCKER_MULTIPLE\x2CMAP_MARKER_OUTLINE\x2CMETRONOME\x2CMETRONOME_TICK\x2CMICRO_SD\x2CMIXER\x2CMOVIE_ROLL\x2CMUSHROOM\x2CMUSHROOM_OUTLINE\x2CNINTENDO_SWITCH\x2CNULL_ICON\x2CPASSPORT\x2CPERIODIC_TABLE_CO2\x2CPIPE\x2CPIPE_DISCONNECTED\x2CPOWER_SOCKET_EU\x2CPOWER_SOCKET_UK\x2CPOWER_SOCKET_US\x2CRICE\x2CRING\x2CSASS\x2CSEND_SECURE\x2CSOY_SAUCE\x2CSTANDARD_DEFINITION\x2CSURROUND_SOUND_2_0\x2CSURROUND_SOUND_3_1\x2CSURROUND_SOUND_5_1\x2CSURROUND_SOUND_7_1\x2CTELEVISION_CLASSIC\x2CTEXTBOX_PASSWORD\x2CTHOUGHT_BUBBLE\x2CTHOUGHT_BUBBLE_OUTLINE\x2CTRACKPAD\x2CULTRA_HIGH_DEFINITION\x2CVAN_PASSENGER\x2CVAN_UTILITY\x2CVANISH\x2CVIDEO_3D\x2CWALL\x2CXMPP\x2CACCOUNT_MULTIPLE_PLUS_OUTLINE\x2CACCOUNT_PLUS_OUTLINE\x2CGOOGLE_ALLO\x2CARTIST\x2CATLASSIAN\x2CAZURE\x2CBASKETBALL\x2CBATTERY_CHARGING_WIRELESS\x2CBATTERY_CHARGING_WIRELESS_10\x2CBATTERY_CHARGING_WIRELESS_20\x2CBATTERY_CHARGING_WIRELESS_30\x2CBATTERY_CHARGING_WIRELESS_40\x2CBATTERY_CHARGING_WIRELESS_50\x2CBATTERY_CHARGING_WIRELESS_60\x2CBATTERY_CHARGING_WIRELESS_70\x2CBATTERY_CHARGING_WIRELESS_80\x2CBATTERY_CHARGING_WIRELESS_90\x2CBATTERY_CHARGING_WIRELESS_ALERT\x2CBATTERY_CHARGING_WIRELESS_OUTLINE\x2CBITCOIN\x2CBRIEFCASE_OUTLINE\x2CCELLPHONE_WIRELESS\x2CCLOVER\x2CCOMMENT_QUESTION\x2CCONTENT_SAVE_OUTLINE\x2CDELETE_RESTORE\x2CDOOR\x2CDOOR_CLOSED\x2CDOOR_OPEN\x2CFAN_OFF\x2CFILE_PERCENT\x2CFINANCE\x2CFLASH_CIRCLE\x2CFLOOR_PLAN\x2CFORUM_OUTLINE\x2CGOLF\x2CGOOGLE_HOME\x2CGUY_FAWKES_MASK\x2CHOME_ACCOUNT\x2CHOME_HEART\x2CHOT_TUB\x2CHULU\x2CICE_CREAM\x2CIMAGE_OFF\x2CKARATE\x2CLADYBUG\x2CNOTEBOOK\x2CPHONE_RETURN\x2CPOKER_CHIP\x2CSHAPE\x2CSHAPE_OUTLINE\x2CSHIP_WHEEL\x2CSOCCER_FIELD\x2CTABLE_COLUMN\x2CTABLE_OF_CONTENTS\x2CTABLE_ROW\x2CTABLE_SETTINGS\x2CTELEVISION_BOX\x2CTELEVISION_CLASSIC_OFF\x2CTELEVISION_OFF\x2CTOWING\x2CUPLOAD_MULTIPLE\x2CVIDEO_4K_BOX\x2CVIDEO_INPUT_ANTENNA\x2CVIDEO_INPUT_COMPONENT\x2CVIDEO_INPUT_HDMI\x2CVIDEO_INPUT_SVIDEO\x2CVIEW_DASHBOARD_VARIANT\x2CVUEJS\x2CXAMARIN\x2CXAMARIN_OUTLINE\x2CYOUTUBE_CREATOR_STUDIO\x2CYOUTUBE_GAMING\x2CACCOUNT_GROUP\x2CACCUSOFT\x2CAIRPORT\x2CARROW_COLLAPSE_HORIZONTAL\x2CARROW_COLLAPSE_VERTICAL\x2CARROW_EXPAND_HORIZONTAL\x2CARROW_EXPAND_VERTICAL\x2CAUGMENTED_REALITY\x2CBADMINTON\x2CBASEBALL\x2CBASEBALL_BAT\x2CBOTTLE_WINE\x2CCHECK_OUTLINE\x2CCHECKBOX_INTERMEDIATE\x2CCHESS_KING\x2CCHESS_KNIGHT\x2CCHESS_PAWN\x2CCHESS_QUEEN\x2CCHESS_ROOK\x2CCHESS_BISHOP\x2CCLIPBOARD_PULSE\x2CCLIPBOARD_PULSE_OUTLINE\x2CCOMMENT_MULTIPLE\x2CCOMMENT_TEXT_MULTIPLE\x2CCOMMENT_TEXT_MULTIPLE_OUTLINE\x2CCRANE\x2CCURLING\x2CCURRENCY_BDT\x2CCURRENCY_KZT\x2CDATABASE_SEARCH\x2CDICE_D12\x2CDOCKER\x2CDOORBELL_VIDEO\x2CETHEREUM\x2CEYE_PLUS\x2CEYE_PLUS_OUTLINE\x2CEYE_SETTINGS\x2CEYE_SETTINGS_OUTLINE\x2CFILE_QUESTION\x2CFOLDER_NETWORK\x2CFUNCTION_VARIANT\x2CGARAGE_ALERT\x2CGAUGE_EMPTY\x2CGAUGE_FULL\x2CGAUGE_LOW\x2CGLASS_WINE\x2CGRAPHQL\x2CHIGH_DEFINITION_BOX\x2CHOCKEY_PUCK\x2CHOCKEY_STICKS\x2CHOME_ALERT\x2CIMAGE_PLUS\x2CJQUERY\x2CLIFEBUOY\x2CMIXED_REALITY\x2CNATIVESCRIPT\x2CONEPASSWORD\x2CPATREON\x2CPAYPAL\x2CPEACE\x2CPHONE_ROTATE_LANDSCAPE\x2CPHONE_ROTATE_PORTRAIT\x2CPIER\x2CPIER_CRANE\x2CPIPE_LEAK\x2CPISTON\x2CPLAY_NETWORK\x2CREMINDER\x2CROOM_SERVICE\x2CSALESFORCE\x2CSECURITY_ACCOUNT\x2CTEACH\x2CTHERMOSTAT_BOX\x2CTRACTOR\x2CVECTOR_ELLIPSE\x2CVIRTUAL_REALITY\x2CWATCH_EXPORT_VARIANT\x2CWATCH_IMPORT_VARIANT\x2CWATCH_VARIANT\x2CWEATHER_HURRICANE\x2CACCOUNT_HEART\x2CALIEN\x2CANVIL\x2CBATTERY_CHARGING_10\x2CBATTERY_CHARGING_50\x2CBATTERY_CHARGING_70\x2CBATTERY_CHARGING_OUTLINE\x2CBED_EMPTY\x2CBORDER_ALL_VARIANT\x2CBORDER_BOTTOM_VARIANT\x2CBORDER_LEFT_VARIANT\x2CBORDER_NONE_VARIANT\x2CBORDER_RIGHT_VARIANT\x2CBORDER_TOP_VARIANT\x2CCALENDAR_EDIT\x2CCLIPBOARD_CHECK_OUTLINE\x2CCONSOLE_NETWORK\x2CFILE_COMPARE\x2CFIRE_TRUCK\x2CFOLDER_KEY\x2CFOLDER_KEY_NETWORK\x2CGPU\x2CHOME_CURRENCY_USD\x2CINBOX_MULTIPLE\x2CLANGUAGE_LUA\x2CLOCK_SMART\x2CMICROPHONE_MINUS\x2CMICROPHONE_PLUS\x2CPALETTE_SWATCH\x2CPERIODIC_TABLE\x2CPICKAXE\x2CQRCODE_EDIT\x2CREMOTE_DESKTOP\x2CSAUSAGE\x2CSETTINGS_OUTLINE\x2CSIGNAL_CELLULAR_1\x2CSIGNAL_CELLULAR_2\x2CSIGNAL_CELLULAR_3\x2CSIGNAL_CELLULAR_OUTLINE\x2CSSH\x2CSWAP_HORIZONTAL_VARIANT\x2CSWAP_VERTICAL_VARIANT\x2CTOOTH\x2CTRAIN_VARIANT\x2CACCOUNT_MULTIPLE_CHECK\x2CAMAZON_ALEXA\x2CARCH\x2CAXE\x2CBULLSEYE_ARROW\x2CBUS_CLOCK\x2CCAMERA_ACCOUNT\x2CCAMERA_IMAGE\x2CCAR_LIMOUSINE\x2CCARDS_CLUB\x2CCARDS_DIAMOND\x2CCARDS_HEART\x2CCARDS_SPADE\x2CCELLPHONE_TEXT\x2CCELLPHONE_MESSAGE\x2CCHART_MULTILINE\x2CCIRCLE_EDIT_OUTLINE\x2CCOGS\x2CCREDIT_CARD_SETTINGS\x2CDEATH_STAR\x2CDEATH_STAR_VARIANT\x2CDEBIAN\x2CFEDORA\x2CFILE_UNDO\x2CFLOOR_LAMP\x2CFOLDER_EDIT\x2CFORMAT_COLUMNS\x2CFREEBSD\x2CGATE_AND\x2CGATE_NAND\x2CGATE_NOR\x2CGATE_NOT\x2CGATE_OR\x2CGATE_XNOR\x2CGATE_XOR\x2CGENTOO\x2CGLOBE_MODEL\x2CHAMMER\x2CHOME_LOCK\x2CHOME_LOCK_OPEN\x2CLINUX_MINT\x2CLOCK_ALERT\x2CLOCK_QUESTION\x2CMAP_MARKER_DISTANCE\x2CMIDI\x2CMIDI_PORT\x2CNAS\x2CNETWORK_STRENGTH_1\x2CNETWORK_STRENGTH_1_ALERT\x2CNETWORK_STRENGTH_2\x2CNETWORK_STRENGTH_2_ALERT\x2CNETWORK_STRENGTH_3\x2CNETWORK_STRENGTH_3_ALERT\x2CNETWORK_STRENGTH_4\x2CNETWORK_STRENGTH_4_ALERT\x2CNETWORK_STRENGTH_OFF\x2CNETWORK_STRENGTH_OFF_OUTLINE\x2CNETWORK_STRENGTH_OUTLINE\x2CPLAY_SPEED\x2CPLAYLIST_EDIT\x2CPOWER_CYCLE\x2CPOWER_OFF\x2CPOWER_ON\x2CPOWER_SLEEP\x2CPOWER_SOCKET_AU\x2CPOWER_STANDBY\x2CRABBIT\x2CROBOT_VACUUM_VARIANT\x2CSATELLITE_UPLINK\x2CSCANNER_OFF\x2CSLACKWARE\x2CSQUARE_EDIT_OUTLINE\x2CSTEAM_BOX\x2CSTEERING_OFF\x2CTABLE_SEARCH\x2CTAG_MINUS\x2CTEST_TUBE_EMPTY\x2CTEST_TUBE_OFF\x2CTICKET_OUTLINE\x2CTRACK_LIGHT\x2CTRANSITION\x2CTRANSITION_MASKED\x2CTUMBLE_DRYER\x2CTUMBLR_BOX\x2CVIDEO_ACCOUNT\x2CVIDEO_IMAGE\x2CVIDEO_STABILIZATION\x2CWALL_SCONCE\x2CWALL_SCONCE_FLAT\x2CWALL_SCONCE_VARIANT\x2CWIFI_STRENGTH_1\x2CWIFI_STRENGTH_1_ALERT\x2CWIFI_STRENGTH_1_LOCK\x2CWIFI_STRENGTH_2\x2CWIFI_STRENGTH_2_ALERT\x2CWIFI_STRENGTH_2_LOCK\x2CWIFI_STRENGTH_3\x2CWIFI_STRENGTH_3_ALERT\x2CWIFI_STRENGTH_3_LOCK\x2CWIFI_STRENGTH_4\x2CWIFI_STRENGTH_4_ALERT\x2CWIFI_STRENGTH_4_LOCK\x2CWIFI_STRENGTH_ALERT_OUTLINE\x2CWIFI_STRENGTH_LOCK_OUTLINE\x2CWIFI_STRENGTH_OFF\x2CWIFI_STRENGTH_OFF_OUTLINE\x2CWIFI_STRENGTH_OUTLINE\x2CPIN_OFF_OUTLINE\x2CPIN_OUTLINE\x2CSHARE_OUTLINE\x2CTRACKPAD_LOCK", Scope = Private #tag EndConstant - #tag Constant, Name = kVersion, Type = Double, Dynamic = False, Default = \"2.5", Scope = Public + #tag Constant, Name = kVersion, Type = Double, Dynamic = False, Default = \"2.6", Scope = Public #tag EndConstant - #tag Constant, Name = SupportedByXojoVersion, Type = String, Dynamic = False, Default = \"2024r1", Scope = Public + #tag Constant, Name = SupportedByXojoVersion, Type = String, Dynamic = False, Default = \"2024r2", Scope = Public #tag EndConstant diff --git a/Containers/ScreenContainer.xojo_code b/Containers/ScreenContainer.xojo_code index caaa570..69a19e5 100644 --- a/Containers/ScreenContainer.xojo_code +++ b/Containers/ScreenContainer.xojo_code @@ -4,7 +4,7 @@ Begin MobileContainer ScreenContainer AccessibilityLabel= "" Compatibility = "(TargetConsole and (Target32Bit or Target64Bit)) or (TargetWeb and (Target32Bit or Target64Bit)) or (TargetDesktop and (Target32Bit or Target64Bit)) or (TargetIOS and (Target64Bit)) or (TargetAndroid and (Target64Bit))" Enabled = True - Height = 846 + Height = 902 LockBottom = False LockLeft = True LockRight = True @@ -25,7 +25,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 470 + Top = 522 Visible = True Width = 68 End @@ -43,7 +43,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 470 + Top = 522 Visible = True Width = 68 End @@ -61,7 +61,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 470 + Top = 522 Visible = True Width = 68 End @@ -79,7 +79,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 470 + Top = 522 Visible = True Width = 68 End @@ -97,7 +97,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 552 + Top = 604 Visible = True Width = 68 End @@ -115,7 +115,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 552 + Top = 604 Visible = True Width = 68 End @@ -133,7 +133,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 552 + Top = 604 Visible = True Width = 68 End @@ -151,7 +151,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 552 + Top = 604 Visible = True Width = 68 End @@ -169,7 +169,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 634 + Top = 686 Visible = True Width = 68 End @@ -187,7 +187,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 634 + Top = 686 Visible = True Width = 68 End @@ -205,7 +205,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 634 + Top = 686 Visible = True Width = 68 End @@ -223,7 +223,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 634 + Top = 686 Visible = True Width = 68 End @@ -241,7 +241,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 716 + Top = 768 Visible = True Width = 68 End @@ -259,7 +259,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 716 + Top = 768 Visible = True Width = 68 End @@ -277,7 +277,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 716 + Top = 768 Visible = True Width = 68 End @@ -303,7 +303,7 @@ Begin MobileContainer ScreenContainer SelectedRowText = "" SeparatorColor = &c00000000 SeparatorThickness= 0 - Top = 270 + Top = 322 Visible = True Width = 320 End @@ -319,7 +319,7 @@ Begin MobileContainer ScreenContainer LockRight = True LockTop = True Scope = 2 - Top = 798 + Top = 850 Visible = True Width = 360 End @@ -337,7 +337,7 @@ Begin MobileContainer ScreenContainer LockRight = False LockTop = False Scope = 2 - Top = 716 + Top = 768 Visible = True Width = 68 End @@ -467,6 +467,24 @@ Begin MobileContainer ScreenContainer Visible = True Width = 320 End + Begin MobileButton FullScreenMode + AccessibilityHint= "" + AccessibilityLabel= "" + Caption = "Fullscreen Mode" + CaptionColor = &cFFFFFF00 + Enabled = True + Height = 44 + Left = 20 + LockBottom = False + LockedInPosition= False + LockLeft = True + LockRight = True + LockTop = True + Scope = 2 + Top = 270 + Visible = True + Width = 320 + End End #tag EndMobileContainer @@ -669,6 +687,7 @@ End #tag Event Sub Opening() Me.MyBackgroundColor = Color.Clear + Me.CaptionFont = Font.BoldSystemFont(12) End Sub #tag EndEvent #tag EndEvents @@ -731,6 +750,13 @@ End End Sub #tag EndEvent #tag EndEvents +#tag Events FullScreenMode + #tag Event + Sub Pressed() + App.CurrentScreen.SetWindowInsetsTypeHideXC(WindowInsetsCompatTypes.SystemBars) + End Sub + #tag EndEvent +#tag EndEvents #tag ViewBehavior #tag ViewProperty Name="Name" diff --git a/Controls/AppearanceLabel.xojo_code b/Controls/AppearanceLabel.xojo_code index 3357a9f..321479f 100644 --- a/Controls/AppearanceLabel.xojo_code +++ b/Controls/AppearanceLabel.xojo_code @@ -1,7 +1,7 @@ #tag Class Protected Class AppearanceLabel Inherits MobileLabel - #tag CompatibilityFlags = (TargetConsole and (Target32Bit or Target64Bit)) or (TargetWeb and (Target32Bit or Target64Bit)) or (TargetDesktop and (Target32Bit or Target64Bit)) or (TargetIOS and (Target64Bit)) or (TargetAndroid and (Target64Bit)) + #tag CompatibilityFlags = (TargetIOS and (Target64Bit)) or (TargetAndroid and (Target64Bit)) #tag Event Sub Opening() If Color.IsDarkMode Then @@ -22,6 +22,14 @@ Inherits MobileLabel #tag ViewBehavior + #tag ViewProperty + Name="MaximumCharactersAllowed" + Visible=true + Group="Behavior" + InitialValue="" + Type="Integer" + EditorType="" + #tag EndViewProperty #tag ViewProperty Name="Name" Visible=true diff --git a/Controls/AppearanceTextField.xojo_code b/Controls/AppearanceTextField.xojo_code index 7bdae12..aa17546 100644 --- a/Controls/AppearanceTextField.xojo_code +++ b/Controls/AppearanceTextField.xojo_code @@ -1,7 +1,7 @@ #tag Class Protected Class AppearanceTextField Inherits MobileTextField - #tag CompatibilityFlags = (TargetConsole and (Target32Bit or Target64Bit)) or (TargetWeb and (Target32Bit or Target64Bit)) or (TargetDesktop and (Target32Bit or Target64Bit)) or (TargetIOS and (Target64Bit)) or (TargetAndroid and (Target64Bit)) + #tag CompatibilityFlags = (TargetIOS and (Target64Bit)) or (TargetAndroid and (Target64Bit)) #tag Event Sub Opening() If Color.IsDarkMode Then @@ -23,6 +23,22 @@ Inherits MobileTextField #tag ViewBehavior + #tag ViewProperty + Name="MaximumCharactersAllowed" + Visible=true + Group="Text Control" + InitialValue="" + Type="Integer" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="AllowSpellChecking" + Visible=true + Group="Text Field" + InitialValue="" + Type="Boolean" + EditorType="" + #tag EndViewProperty #tag ViewProperty Name="Text" Visible=true diff --git a/Controls/ColorButton.xojo_code b/Controls/ColorButton.xojo_code index f09d284..eaa943e 100644 --- a/Controls/ColorButton.xojo_code +++ b/Controls/ColorButton.xojo_code @@ -1,6 +1,7 @@ #tag Class Protected Class ColorButton Inherits MobileButton + #tag CompatibilityFlags = (TargetIOS and (Target64Bit)) or (TargetAndroid and (Target64Bit)) #tag Event Sub Opening() ' Call Opening-Event diff --git a/Controls/TestButton.xojo_code b/Controls/TestButton.xojo_code index 76ada45..cf11a97 100644 --- a/Controls/TestButton.xojo_code +++ b/Controls/TestButton.xojo_code @@ -1,6 +1,7 @@ #tag Class Protected Class TestButton Inherits MobileButton + #tag CompatibilityFlags = (TargetIOS and (Target64Bit)) or (TargetAndroid and (Target64Bit)) #tag Event Sub Pressed() MessageBox(XojoVersionString) diff --git a/Pictures/Screenshot.jpg b/Pictures/Screenshot.jpg new file mode 100644 index 0000000..e04515b Binary files /dev/null and b/Pictures/Screenshot.jpg differ diff --git a/README.md b/README.md index 4474908..0fa6225 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,15 @@ [![License MIT](https://img.shields.io/badge/License-MIT-blue)](https://opensource.org/licenses/MIT) # AndroidDesignExtensions -A set of 681+ UI extensions for Xojo Android framework. +A set of 700+ UI extensions for Xojo Android framework. -Light Mode Dark Mode +![Android Design Extensions](Pictures/Screenshot.jpg) ## System requirements | **Extensions** | **Xojo Version** | |:--------------:|:--------------------------------------------------------------------------------------------:| +| 2.6 | [![XOJO 2024r2](https://img.shields.io/badge/Xojo-2024r2+-green.svg)](https://www.xojo.com/) | | 2.5 | [![XOJO 2024r1](https://img.shields.io/badge/Xojo-2024r1+-green.svg)](https://www.xojo.com/) | | 2.0 | [![XOJO 2023r3](https://img.shields.io/badge/Xojo-2023r3+-green.svg)](https://www.xojo.com/) | | 1.5 | [![XOJO 2023r3](https://img.shields.io/badge/Xojo-2023r3+-green.svg)](https://www.xojo.com/) | @@ -24,13 +25,27 @@ A set of 681+ UI extensions for Xojo Android framework. ### MobileApplication * ClassNameXC * DataDirXC +* DensityDpiXC * DeviceProtectedDataDirXC +* FontScaleXC +* GetCacheDirXC +* GetCodeCacheDirXC +* GetDataDirXC +* GetExternalCacheDirXC +* GetFilesDirXC +* IsScreenHdrXC +* IsScreenRoundXC +* IsVirtualPreloadXC * MinSdkVersionXC * NativeLibraryDirXC * ProcessNameXC * PublicSourceDirXC +* ScreenHeightDpXC +* ScreenWidthDpXC +* SmallestScreenWidthDpXC * SourceDirXC * TargetSdkVersionXC +* TaskAffinityXC * UidXC ### All MobileUIControls @@ -259,6 +274,7 @@ A set of 681+ UI extensions for Xojo Android framework. * ClearFormDataXC * ClearFormDataXC * ClearHistoryXC +* ClearMatchesXC * ClearSSLPreferencesXC * FindAllAsyncXC * FindNextXC @@ -410,8 +426,10 @@ A set of 681+ UI extensions for Xojo Android framework. * SetDropDownWidthXC ### MobileScreen +* GetBoundsXC * GetCurrentFocusedControlXC * GetCurrentFocusIDXC +* GetDensityXC * GetDisplayIDXC * GetDisplayRotationXC * GetDisplayStateXC @@ -445,10 +463,13 @@ A set of 681+ UI extensions for Xojo Android framework. * SetStatusBarColorXC * SetStatusBarContrastEnforcedXC * SetSystemBarsAppearanceXC +* SetSystemBarsBehaviorXC * SetSystemUiVisibilityXC * SetTransitionBackgroundFadeDurationXC * SetTranslucentXC * SetTurnScreenOnXC +* SetWindowInsetsTypeHideXC +* SetWindowInsetsTypeShowXC * ShowLockTaskEscapeMessageXC * StartLockTaskXC * StopLockTaskXC @@ -516,6 +537,9 @@ A set of 681+ UI extensions for Xojo Android framework. * GetBadgeVerticalOffsetWithoutTextAtXC * GetBadgeVerticalOffsetWithTextAtXC * GetBadgeVerticalPaddingAtXC +* GetTabIndicatorAnimationModeXC +* GetTabIndicatorGravityXC +* GetTabModeXC * HasBadgeNumberAtXC * HasBadgeTextAtXC * HasUnboundedRippleXC diff --git a/Screens/AppScreen.xojo_code b/Screens/AppScreen.xojo_code new file mode 100644 index 0000000..873fb80 --- /dev/null +++ b/Screens/AppScreen.xojo_code @@ -0,0 +1,220 @@ +#tag MobileScreen +Begin TemplateScreen AppScreen + Compatibility = "" + HasBackButton = False + HasNavigationBar= False + Modal = False + Orientation = 0 + Title = "Untitled" + Begin NavigationBarContainer NavigationBarContainer1 + AccessibilityHint= "" + AccessibilityLabel= "" + BackgroundColor = &c00000000 + ControlCount = 0 + Enabled = True + HasBackButton = False + HasBackgroundColor= False + HasGradient = True + Height = 56 + Left = 0 + LockBottom = False + LockedInPosition= False + LockLeft = True + LockRight = True + LockTop = True + Scope = 2 + Text = "" + Top = 0 + Visible = True + Width = 360 + End + Begin AndroidMobileTable Table1 + AccessibilityHint= "" + AccessibilityLabel= "" + Enabled = True + HasHeader = False + Header = "" + Height = 700 + InitialValue = "" + LastAddedRowIndex= 0 + Left = 0 + LockBottom = True + LockedInPosition= False + LockLeft = True + LockRight = True + LockTop = True + RowCount = 0 + Scope = 2 + ScrollPosition = 0 + SelectedRowIndex= 0 + SelectedRowText = "" + SeparatorColor = &c00000000 + SeparatorThickness= 0 + Top = 56 + Visible = True + Width = 360 + End +End +#tag EndMobileScreen + +#tag ScreenCode + #tag Method, Flags = &h21 + Private Sub AddRow(value As String, detail As String = "") + Table1.AddRow(value, detail) + Table1.RowDetailColorAt(Table1.LastAddedRowIndex) = Color.TextColor + Table1.RowTextColorAt(Table1.LastAddedRowIndex) = If(Color.IsDarkMode, &cD3D3D3, Color.PrimaryThemeColor) + End Sub + #tag EndMethod + + +#tag EndScreenCode + +#tag Events NavigationBarContainer1 + #tag Event + Sub Opening() + Me.Text = "Application" + End Sub + #tag EndEvent + #tag Event + Sub Pressed() + Close + End Sub + #tag EndEvent +#tag EndEvents +#tag Events Table1 + #tag Event + Sub Opening() + Me.RowDetailFont = Font.SystemFont(13.5) + Me.RowTextFont = Font.BoldSystemFont + Me.SeparatorColor = If(Color.IsDarkMode, &c21212100, &cCACACC00) + + AddRow("Class Name", App.ClassNameXC) + + AddRow("Data Directory", App.DataDirXC) + + AddRow("Device Protected Data Directory", App.DeviceProtectedDataDirXC) + + AddRow("Cache Directory", App.GetCacheDirXC) + + AddRow("Code Cache Directory", App.GetCodeCacheDirXC) + + AddRow("Data Directory", App.GetDataDirXC) + + AddRow("External Cache Directory", App.GetExternalCacheDirXC) + + AddRow("Files Directory", App.GetFilesDirXC) + + AddRow("isScreenHdr", App.IsScreenHdrXC.ToString) + + AddRow("isScreenRound", App.IsScreenRoundXC.ToString) + + AddRow("isVirtualPreload", App.IsVirtualPreloadXC.ToString) + + AddRow("Minimum SDK Version", App.MinSdkVersionXC.ToString) + + AddRow("Target SDK Version", App.TargetSdkVersionXC.ToString) + + AddRow("Native Library Directory", App.NativeLibraryDirXC) + + AddRow("Process Name", App.ProcessNameXC) + + AddRow("Public Source Directory", App.PublicSourceDirXC) + + AddRow("Source Directory", App.SourceDirXC) + + AddRow("Task Affinity", App.TaskAffinityXC) + + AddRow("UID", App.UidXC.ToString) + End Sub + #tag EndEvent +#tag EndEvents +#tag ViewBehavior + #tag ViewProperty + Name="Name" + Visible=true + Group="ID" + InitialValue="" + Type="String" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="Index" + Visible=true + Group="ID" + InitialValue="-2147483648" + Type="Integer" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="Super" + Visible=true + Group="ID" + InitialValue="" + Type="String" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="Left" + Visible=true + Group="Position" + InitialValue="0" + Type="Integer" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="Top" + Visible=true + Group="Position" + InitialValue="0" + Type="Integer" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="ControlCount" + Visible=false + Group="Behavior" + InitialValue="" + Type="Integer" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="Title" + Visible=true + Group="Behavior" + InitialValue="Untitled" + Type="String" + EditorType="MultiLineEditor" + #tag EndViewProperty + #tag ViewProperty + Name="HasNavigationBar" + Visible=true + Group="Behavior" + InitialValue="True" + Type="Boolean" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="Modal" + Visible=true + Group="Behavior" + InitialValue="False" + Type="Boolean" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="NavigationBarHeight" + Visible=false + Group="Behavior" + InitialValue="" + Type="Integer" + EditorType="" + #tag EndViewProperty + #tag ViewProperty + Name="HasBackButton" + Visible=true + Group="Behavior" + InitialValue="False" + Type="Boolean" + EditorType="" + #tag EndViewProperty +#tag EndViewBehavior diff --git a/Screens/HomeScreen.xojo_code b/Screens/HomeScreen.xojo_code index 2360f28..31c9fd9 100644 --- a/Screens/HomeScreen.xojo_code +++ b/Screens/HomeScreen.xojo_code @@ -65,6 +65,7 @@ Begin TemplateScreen HomeScreen LockLeft = True LockRight = True LockTop = True + MaximumCharactersAllowed= 0 Scope = 2 Text = "Android Design Extensions" TextColor = &c00000000 @@ -156,6 +157,9 @@ End Me.RowTextFont = Font.SystemFont(17) Me.SeparatorColor = If(Color.IsDarkMode, &c21212100, &cCACACC00) + AddSection("Application Extensions") + AddRow("Application Examples", "application", "android_head", &c3DDB85) + AddSection("Control Extensions") AddRow("Controls", "control", "crop_rotate", &cFF260000) @@ -234,6 +238,10 @@ End TableScreen.Show + Case "application" + + AppScreen.Show + Case "button" ButtonScreen.Show @@ -308,6 +316,7 @@ End #tag Events HeaderLabel #tag Event Sub Opening() + Me.Text = Me.Text + " " + App.kVersion.ToString Me.TextFont = Font.BoldSystemFont(17.5) End Sub #tag EndEvent