From c32a6eae7a5e028ca29646906e23aeac7ce86ad9 Mon Sep 17 00:00:00 2001 From: Philipp Crocoll Date: Tue, 19 Nov 2024 09:29:10 +0100 Subject: [PATCH] make app-style app compilable * switched from support library to androidx * disabled some code which will need to be fixed later (strings in manifest, zxing qr reader) * changes in styles need to be tested still crashing when trying to use any code from the Keyboard binding. --- .../Transforms/EnumFields.xml | 13 +- .../Transforms/EnumMethods.xml | 12 +- .../Transforms/Metadata.xml | 15 - .../Transforms/EnumFields.xml | 13 +- .../Transforms/EnumMethods.xml | 12 +- .../Transforms/Metadata.xml | 8 +- .../Transforms/EnumFields.xml | 13 +- .../Transforms/EnumMethods.xml | 12 +- .../Transforms/Metadata.xml | 8 - .../Transforms/EnumFields.xml | 13 +- .../Transforms/EnumMethods.xml | 12 +- .../Transforms/Metadata.xml | 9 +- .../KeePassLib2AndroidSdkStyle.csproj | 1 - .../Io/BuiltInFileStorage.cs | 2 +- .../Io/JavaFileStorage.cs | 2 +- .../Transforms/EnumFields.xml | 13 +- .../Transforms/EnumMethods.xml | 10 +- .../Transforms/Metadata.xml | 8 +- .../Additions/AboutAdditions.txt | 48 +++ .../Kp2aKeyboardBindingSdkStyle.csproj | 11 + .../Transforms/EnumFields.xml | 3 + .../Transforms/EnumMethods.xml | 3 + .../Transforms/Metadata.xml | 4 + src/PCloudBindings/Transforms/EnumFields.xml | 12 - src/PCloudBindings/Transforms/EnumMethods.xml | 10 - src/PCloudBindings/Transforms/Metadata.xml | 6 - .../Additions/AboutAdditions.txt | 48 +++ .../PCloudBindingsSdkStyle.csproj | 12 + .../Transforms/EnumFields.xml | 3 + .../Transforms/EnumMethods.xml | 3 + .../Transforms/Metadata.xml | 4 + .../pcloud-sdk-android-1.9.1.aar | Bin 0 -> 28291 bytes .../pcloud-sdk-java-core-1.9.1.jar | Bin 0 -> 80308 bytes .../Transforms/EnumFields.xml | 13 +- .../Transforms/EnumMethods.xml | 12 +- src/PluginSdkBinding/Transforms/Metadata.xml | 8 +- .../Additions/AboutAdditions.txt | 48 +++ .../Jars/AboutJars.txt | 24 ++ .../PluginSdkBindingSdkStyle.csproj | 11 + .../Transforms/EnumFields.xml | 3 + .../Transforms/EnumMethods.xml | 3 + .../Transforms/Metadata.xml | 3 + .../AboutDialog.cs | 1 + .../AndroidManifest.xml | 281 +----------------- .../AppKilledInfo.cs | 1 + .../AttachmentContentProvider.cs | 3 +- .../AutoOpenEdit.cs | 1 + .../BiometricModule.cs | 7 +- .../ChallengeXCKey.cs | 3 +- src/keepass2android-appSdkStyle/ChangeLog.cs | 1 + .../CloseImmediatelyActivity.cs | 2 +- .../ConfigureChildDatabasesActivity.cs | 2 +- .../CreateDatabaseActivity.cs | 10 +- .../DonateReminder.cs | 1 + .../EntryActivity.cs | 3 +- .../CopyToClipboardPopupMenuIcon.cs | 1 + .../EntryActivityClasses/GotoUrlMenuItem.cs | 1 + .../OpenBinaryPopupItem.cs | 1 + .../ToggleVisibilityPopupMenuItem.cs | 1 + .../ViewImagePopupItem.cs | 1 + .../WriteBinaryToFilePopupItem.cs | 1 + .../EntryEditActivity.cs | 20 +- .../ExportDatabaseActivity.cs | 1 + .../FileSelectHelper.cs | 11 +- .../FileStorageSelectionActivity.cs | 3 +- .../FingerprintSetupActivity.cs | 3 +- .../FixedDrawerLayout.cs | 3 +- .../GeneratePasswordActivity.cs | 1 + .../GroupActivity.cs | 3 +- .../GroupBaseActivity.cs | 21 +- .../GroupEditActivity.cs | 1 + .../IconPickerActivity.cs | 1 + .../ImageViewActivity.cs | 1 + .../KeeAutoExec.cs | 1 + src/keepass2android-appSdkStyle/KeePass.cs | 1 + .../LifecycleAwareActivity.cs | 1 - .../LockingActivity.cs | 1 + .../LockingPreferenceActivity.cs | 2 +- .../Manifests/AndroidManifest_debug.xml | 250 ++++++++-------- .../Manifests/AndroidManifest_net.xml | 230 +++++++------- .../NoSecureDisplayActivity.cs | 2 +- .../PasswordActivity.cs | 20 +- .../PwGroupListAdapter.cs | 1 + .../QueryCredentialsActivity.cs | 1 + .../QuickUnlock.cs | 7 +- .../Resources/AboutResources.txt | 44 --- .../Resources/layout/QuickUnlock.xml | 19 +- .../Resources/layout/SaveButton.xml | 46 --- .../Resources/layout/config_child_db.xml | 2 +- .../Resources/layout/entry_edit.xml | 30 +- .../Resources/layout/entry_view.xml | 8 +- .../Resources/layout/fingerprint_setup.xml | 2 +- .../Resources/layout/generate_password.xml | 14 +- .../Resources/layout/group.xml | 18 +- .../Resources/layout/icon_picker.xml | 2 +- .../Resources/layout/password.xml | 25 +- .../Resources/layout/preference.axml | 2 +- .../Resources/layout/searchurlresults.xml | 2 +- .../layout/searchurlresults_empty.xml | 2 +- .../Resources/menu/group.xml | 2 +- .../Resources/menu/menu_entryedit.xml | 2 +- .../Resources/values/strings.xml | 2 + .../Resources/values/styles_material.xml | 23 +- .../SelectCurrentDbActivity.cs | 4 +- .../SelectStorageLocationActivity.cs | 1 + .../SetPasswordDialog.cs | 1 + .../ShareUrlResults.cs | 1 + .../SwitchImeActivity.cs | 1 + .../Totp/TrayTotpPluginAdapter.cs | 1 + .../Totp/UpdateTotpTimerTask.cs | 2 +- .../Utils/ActivityDesign.cs | 1 + .../Utils/LoadingDialog.cs | 1 + src/keepass2android-appSdkStyle/Utils/Util.cs | 1 + src/keepass2android-appSdkStyle/app/App.cs | 8 +- .../app/AppTask.cs | 1 + .../app/OtpAuxCacheSupervisor.cs | 1 + .../fileselect/FileSelectActivity.cs | 4 +- .../fileselect/FileStorageSetupActivity.cs | 3 +- .../FileStorageSetupInitiatorActivity.cs | 2 +- .../icons/DrawableFactory.cs | 1 + .../keepass2android-appSdkStyle.csproj | 23 +- .../pluginhost/PluginArrayAdapter.cs | 1 + .../pluginhost/PluginDetailsActivity.cs | 1 + .../pluginhost/PluginListActivity.cs | 1 + .../search/SearchActivity.cs | 1 + .../search/SearchProvider.cs | 1 + .../search/SearchResults.cs | 1 + .../search/SearchTotpResults.cs | 1 + .../services/AutofillBase/AutofillHelper.cs | 1 + .../AutofillBase/AutofillServiceBase.cs | 1 + .../ChooseForAutofillActivityBase.cs | 2 +- .../Kp2aDigitalAssetLinksDataSource.cs | 1 + .../services/AutofillBase/StructureParser.cs | 1 + .../services/CopyToClipboardService.cs | 6 +- .../Kp2aAutofill/ChooseForAutofillActivity.cs | 1 + .../Kp2aAutofill/Kp2aAutofillService.cs | 2 +- .../services/OngoingNotificationsService.cs | 3 +- .../settings/AppSettingsActivity.cs | 5 +- .../AutofillDisabledQueriesPreference.cs | 2 +- .../settings/DatabaseSettingsActivity.cs | 1 + .../settings/ExportKeyfileActivity.cs | 1 + .../settings/IconSetPreference.cs | 1 + .../settings/PrefsUtil.cs | 1 + .../settings/RoundsPreference.cs | 1 + .../timeout/TimeoutHelper.cs | 1 + .../views/EntryContentsView.cs | 1 + .../views/EntrySection.cs | 1 + .../views/GroupListItemView.cs | 1 + .../views/Kp2aShortHelpView.cs | 1 + .../views/PwEntryView.cs | 1 + .../views/PwGroupView.cs | 1 + .../views/TextWithHelp.cs | 1 + 152 files changed, 730 insertions(+), 993 deletions(-) create mode 100644 src/Kp2aKeyboardBindingSdkStyle/Additions/AboutAdditions.txt create mode 100644 src/Kp2aKeyboardBindingSdkStyle/Kp2aKeyboardBindingSdkStyle.csproj create mode 100644 src/Kp2aKeyboardBindingSdkStyle/Transforms/EnumFields.xml create mode 100644 src/Kp2aKeyboardBindingSdkStyle/Transforms/EnumMethods.xml create mode 100644 src/Kp2aKeyboardBindingSdkStyle/Transforms/Metadata.xml create mode 100644 src/PCloudBindingsSdkStyle/Additions/AboutAdditions.txt create mode 100644 src/PCloudBindingsSdkStyle/PCloudBindingsSdkStyle.csproj create mode 100644 src/PCloudBindingsSdkStyle/Transforms/EnumFields.xml create mode 100644 src/PCloudBindingsSdkStyle/Transforms/EnumMethods.xml create mode 100644 src/PCloudBindingsSdkStyle/Transforms/Metadata.xml create mode 100644 src/PCloudBindingsSdkStyle/pcloud-sdk-android-1.9.1.aar create mode 100644 src/PCloudBindingsSdkStyle/pcloud-sdk-java-core-1.9.1.jar create mode 100644 src/PluginSdkBindingSdkStyle/Additions/AboutAdditions.txt create mode 100644 src/PluginSdkBindingSdkStyle/Jars/AboutJars.txt create mode 100644 src/PluginSdkBindingSdkStyle/PluginSdkBindingSdkStyle.csproj create mode 100644 src/PluginSdkBindingSdkStyle/Transforms/EnumFields.xml create mode 100644 src/PluginSdkBindingSdkStyle/Transforms/EnumMethods.xml create mode 100644 src/PluginSdkBindingSdkStyle/Transforms/Metadata.xml mode change 100644 => 120000 src/keepass2android-appSdkStyle/AndroidManifest.xml delete mode 100644 src/keepass2android-appSdkStyle/Resources/AboutResources.txt delete mode 100644 src/keepass2android-appSdkStyle/Resources/layout/SaveButton.xml diff --git a/src/AndroidFileChooserBindingSdkStyle/Transforms/EnumFields.xml b/src/AndroidFileChooserBindingSdkStyle/Transforms/EnumFields.xml index 22959957..4dddf452 100644 --- a/src/AndroidFileChooserBindingSdkStyle/Transforms/EnumFields.xml +++ b/src/AndroidFileChooserBindingSdkStyle/Transforms/EnumFields.xml @@ -1,14 +1,3 @@  - + \ No newline at end of file diff --git a/src/AndroidFileChooserBindingSdkStyle/Transforms/EnumMethods.xml b/src/AndroidFileChooserBindingSdkStyle/Transforms/EnumMethods.xml index 49216c61..85202262 100644 --- a/src/AndroidFileChooserBindingSdkStyle/Transforms/EnumMethods.xml +++ b/src/AndroidFileChooserBindingSdkStyle/Transforms/EnumMethods.xml @@ -1,13 +1,3 @@  - + \ No newline at end of file diff --git a/src/AndroidFileChooserBindingSdkStyle/Transforms/Metadata.xml b/src/AndroidFileChooserBindingSdkStyle/Transforms/Metadata.xml index ea974e92..e40a4beb 100644 --- a/src/AndroidFileChooserBindingSdkStyle/Transforms/Metadata.xml +++ b/src/AndroidFileChooserBindingSdkStyle/Transforms/Metadata.xml @@ -4,19 +4,4 @@ - diff --git a/src/JavaFileStorageBindingsStkStyle/Transforms/EnumFields.xml b/src/JavaFileStorageBindingsStkStyle/Transforms/EnumFields.xml index 22959957..4dddf452 100644 --- a/src/JavaFileStorageBindingsStkStyle/Transforms/EnumFields.xml +++ b/src/JavaFileStorageBindingsStkStyle/Transforms/EnumFields.xml @@ -1,14 +1,3 @@  - + \ No newline at end of file diff --git a/src/JavaFileStorageBindingsStkStyle/Transforms/EnumMethods.xml b/src/JavaFileStorageBindingsStkStyle/Transforms/EnumMethods.xml index 49216c61..1918b0cf 100644 --- a/src/JavaFileStorageBindingsStkStyle/Transforms/EnumMethods.xml +++ b/src/JavaFileStorageBindingsStkStyle/Transforms/EnumMethods.xml @@ -1,13 +1,3 @@  - + \ No newline at end of file diff --git a/src/JavaFileStorageBindingsStkStyle/Transforms/Metadata.xml b/src/JavaFileStorageBindingsStkStyle/Transforms/Metadata.xml index d1e7bc03..b10d2858 100644 --- a/src/JavaFileStorageBindingsStkStyle/Transforms/Metadata.xml +++ b/src/JavaFileStorageBindingsStkStyle/Transforms/Metadata.xml @@ -1,11 +1,5 @@ - + diff --git a/src/KP2AKdbLibraryBinding/Transforms/EnumFields.xml b/src/KP2AKdbLibraryBinding/Transforms/EnumFields.xml index 22959957..8ee086d7 100644 --- a/src/KP2AKdbLibraryBinding/Transforms/EnumFields.xml +++ b/src/KP2AKdbLibraryBinding/Transforms/EnumFields.xml @@ -1,14 +1,3 @@  - + \ No newline at end of file diff --git a/src/KP2AKdbLibraryBinding/Transforms/EnumMethods.xml b/src/KP2AKdbLibraryBinding/Transforms/EnumMethods.xml index 49216c61..85202262 100644 --- a/src/KP2AKdbLibraryBinding/Transforms/EnumMethods.xml +++ b/src/KP2AKdbLibraryBinding/Transforms/EnumMethods.xml @@ -1,13 +1,3 @@  - + \ No newline at end of file diff --git a/src/KP2AKdbLibraryBinding/Transforms/Metadata.xml b/src/KP2AKdbLibraryBinding/Transforms/Metadata.xml index 0dd04e93..02f7e992 100644 --- a/src/KP2AKdbLibraryBinding/Transforms/Metadata.xml +++ b/src/KP2AKdbLibraryBinding/Transforms/Metadata.xml @@ -1,12 +1,4 @@ - diff --git a/src/KP2AKdbLibraryBindingSdkStyle/Transforms/EnumFields.xml b/src/KP2AKdbLibraryBindingSdkStyle/Transforms/EnumFields.xml index 22959957..8ee086d7 100644 --- a/src/KP2AKdbLibraryBindingSdkStyle/Transforms/EnumFields.xml +++ b/src/KP2AKdbLibraryBindingSdkStyle/Transforms/EnumFields.xml @@ -1,14 +1,3 @@  - + \ No newline at end of file diff --git a/src/KP2AKdbLibraryBindingSdkStyle/Transforms/EnumMethods.xml b/src/KP2AKdbLibraryBindingSdkStyle/Transforms/EnumMethods.xml index 49216c61..85202262 100644 --- a/src/KP2AKdbLibraryBindingSdkStyle/Transforms/EnumMethods.xml +++ b/src/KP2AKdbLibraryBindingSdkStyle/Transforms/EnumMethods.xml @@ -1,13 +1,3 @@  - + \ No newline at end of file diff --git a/src/KP2AKdbLibraryBindingSdkStyle/Transforms/Metadata.xml b/src/KP2AKdbLibraryBindingSdkStyle/Transforms/Metadata.xml index 0dd04e93..6bd74e5f 100644 --- a/src/KP2AKdbLibraryBindingSdkStyle/Transforms/Metadata.xml +++ b/src/KP2AKdbLibraryBindingSdkStyle/Transforms/Metadata.xml @@ -1,12 +1,5 @@ - + diff --git a/src/KeePassLib2AndroidSdkStyle/KeePassLib2AndroidSdkStyle.csproj b/src/KeePassLib2AndroidSdkStyle/KeePassLib2AndroidSdkStyle.csproj index 2ccc629a..79610507 100644 --- a/src/KeePassLib2AndroidSdkStyle/KeePassLib2AndroidSdkStyle.csproj +++ b/src/KeePassLib2AndroidSdkStyle/KeePassLib2AndroidSdkStyle.csproj @@ -12,7 +12,6 @@ - diff --git a/src/Kp2aBusinessLogic/Io/BuiltInFileStorage.cs b/src/Kp2aBusinessLogic/Io/BuiltInFileStorage.cs index aa8f428f..eaf5e127 100644 --- a/src/Kp2aBusinessLogic/Io/BuiltInFileStorage.cs +++ b/src/Kp2aBusinessLogic/Io/BuiltInFileStorage.cs @@ -13,7 +13,7 @@ using Android.Content.PM; using Android.OS; using Android.Preferences; using Java.IO; -using Android.Support.V4; + using KeePassLib.Serialization; using KeePassLib.Utility; using File = System.IO.File; diff --git a/src/Kp2aBusinessLogicSdkStyle/Io/JavaFileStorage.cs b/src/Kp2aBusinessLogicSdkStyle/Io/JavaFileStorage.cs index 7fab70ad..f0429e11 100644 --- a/src/Kp2aBusinessLogicSdkStyle/Io/JavaFileStorage.cs +++ b/src/Kp2aBusinessLogicSdkStyle/Io/JavaFileStorage.cs @@ -307,7 +307,7 @@ namespace keepass2android.Io public void OnResume(IFileStorageSetupActivity activity) { #if DEBUG - Kp2aLog.Log("JFS/OnResume Ioc.Path=" +activity.Ioc.Path+". Path="+((IJavaFileStorageFileStorageSetupActivity)activity).Path); + Kp2aLog.Log("JFS/OnResume Ioc.Path=" +activity.Ioc.Path+". Path="+((IJavaFileStorage.IFileStorageSetupActivity)activity).Path); #endif _jfs.OnResume(((IJavaFileStorage.IFileStorageSetupActivity) activity)); } diff --git a/src/Kp2aKeyboardBinding/Transforms/EnumFields.xml b/src/Kp2aKeyboardBinding/Transforms/EnumFields.xml index b3aca487..bf784b2c 100644 --- a/src/Kp2aKeyboardBinding/Transforms/EnumFields.xml +++ b/src/Kp2aKeyboardBinding/Transforms/EnumFields.xml @@ -1,14 +1,3 @@ - + diff --git a/src/Kp2aKeyboardBinding/Transforms/EnumMethods.xml b/src/Kp2aKeyboardBinding/Transforms/EnumMethods.xml index 0ffc15ca..e6241b51 100644 --- a/src/Kp2aKeyboardBinding/Transforms/EnumMethods.xml +++ b/src/Kp2aKeyboardBinding/Transforms/EnumMethods.xml @@ -1,11 +1,3 @@ - + diff --git a/src/Kp2aKeyboardBinding/Transforms/Metadata.xml b/src/Kp2aKeyboardBinding/Transforms/Metadata.xml index 3601ad1c..8409a9fe 100644 --- a/src/Kp2aKeyboardBinding/Transforms/Metadata.xml +++ b/src/Kp2aKeyboardBinding/Transforms/Metadata.xml @@ -1,11 +1,5 @@ - + diff --git a/src/Kp2aKeyboardBindingSdkStyle/Additions/AboutAdditions.txt b/src/Kp2aKeyboardBindingSdkStyle/Additions/AboutAdditions.txt new file mode 100644 index 00000000..2775bd36 --- /dev/null +++ b/src/Kp2aKeyboardBindingSdkStyle/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} \ No newline at end of file diff --git a/src/Kp2aKeyboardBindingSdkStyle/Kp2aKeyboardBindingSdkStyle.csproj b/src/Kp2aKeyboardBindingSdkStyle/Kp2aKeyboardBindingSdkStyle.csproj new file mode 100644 index 00000000..46e766ee --- /dev/null +++ b/src/Kp2aKeyboardBindingSdkStyle/Kp2aKeyboardBindingSdkStyle.csproj @@ -0,0 +1,11 @@ + + + net8.0-android + 21 + enable + enable + + + + + \ No newline at end of file diff --git a/src/Kp2aKeyboardBindingSdkStyle/Transforms/EnumFields.xml b/src/Kp2aKeyboardBindingSdkStyle/Transforms/EnumFields.xml new file mode 100644 index 00000000..4dddf452 --- /dev/null +++ b/src/Kp2aKeyboardBindingSdkStyle/Transforms/EnumFields.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/Kp2aKeyboardBindingSdkStyle/Transforms/EnumMethods.xml b/src/Kp2aKeyboardBindingSdkStyle/Transforms/EnumMethods.xml new file mode 100644 index 00000000..1918b0cf --- /dev/null +++ b/src/Kp2aKeyboardBindingSdkStyle/Transforms/EnumMethods.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/Kp2aKeyboardBindingSdkStyle/Transforms/Metadata.xml b/src/Kp2aKeyboardBindingSdkStyle/Transforms/Metadata.xml new file mode 100644 index 00000000..ccb9c065 --- /dev/null +++ b/src/Kp2aKeyboardBindingSdkStyle/Transforms/Metadata.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/PCloudBindings/Transforms/EnumFields.xml b/src/PCloudBindings/Transforms/EnumFields.xml index 22959957..f8105b31 100644 --- a/src/PCloudBindings/Transforms/EnumFields.xml +++ b/src/PCloudBindings/Transforms/EnumFields.xml @@ -1,14 +1,2 @@  - \ No newline at end of file diff --git a/src/PCloudBindings/Transforms/EnumMethods.xml b/src/PCloudBindings/Transforms/EnumMethods.xml index 49216c61..d3d28fd5 100644 --- a/src/PCloudBindings/Transforms/EnumMethods.xml +++ b/src/PCloudBindings/Transforms/EnumMethods.xml @@ -1,13 +1,3 @@  - \ No newline at end of file diff --git a/src/PCloudBindings/Transforms/Metadata.xml b/src/PCloudBindings/Transforms/Metadata.xml index e1ee3276..e3fbdac6 100644 --- a/src/PCloudBindings/Transforms/Metadata.xml +++ b/src/PCloudBindings/Transforms/Metadata.xml @@ -1,10 +1,4 @@ - diff --git a/src/PCloudBindingsSdkStyle/Additions/AboutAdditions.txt b/src/PCloudBindingsSdkStyle/Additions/AboutAdditions.txt new file mode 100644 index 00000000..2775bd36 --- /dev/null +++ b/src/PCloudBindingsSdkStyle/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} \ No newline at end of file diff --git a/src/PCloudBindingsSdkStyle/PCloudBindingsSdkStyle.csproj b/src/PCloudBindingsSdkStyle/PCloudBindingsSdkStyle.csproj new file mode 100644 index 00000000..495b27a6 --- /dev/null +++ b/src/PCloudBindingsSdkStyle/PCloudBindingsSdkStyle.csproj @@ -0,0 +1,12 @@ + + + net8.0-android + 21 + enable + enable + + + + + + \ No newline at end of file diff --git a/src/PCloudBindingsSdkStyle/Transforms/EnumFields.xml b/src/PCloudBindingsSdkStyle/Transforms/EnumFields.xml new file mode 100644 index 00000000..8ee086d7 --- /dev/null +++ b/src/PCloudBindingsSdkStyle/Transforms/EnumFields.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/PCloudBindingsSdkStyle/Transforms/EnumMethods.xml b/src/PCloudBindingsSdkStyle/Transforms/EnumMethods.xml new file mode 100644 index 00000000..1918b0cf --- /dev/null +++ b/src/PCloudBindingsSdkStyle/Transforms/EnumMethods.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/PCloudBindingsSdkStyle/Transforms/Metadata.xml b/src/PCloudBindingsSdkStyle/Transforms/Metadata.xml new file mode 100644 index 00000000..6b36b978 --- /dev/null +++ b/src/PCloudBindingsSdkStyle/Transforms/Metadata.xml @@ -0,0 +1,4 @@ + + + + diff --git a/src/PCloudBindingsSdkStyle/pcloud-sdk-android-1.9.1.aar b/src/PCloudBindingsSdkStyle/pcloud-sdk-android-1.9.1.aar new file mode 100644 index 0000000000000000000000000000000000000000..0a5eaf808c86448b0e9c16a2bdb9148ab7fadc49 GIT binary patch literal 28291 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

kWD{i-d5db|)!7C@W`a9SXXOUU-j>|x44>L^ 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 F{tMk1q>cap literal 0 HcmV?d00001 diff --git a/src/PluginSdkBinding/Transforms/EnumFields.xml b/src/PluginSdkBinding/Transforms/EnumFields.xml index 22959957..4dddf452 100644 --- a/src/PluginSdkBinding/Transforms/EnumFields.xml +++ b/src/PluginSdkBinding/Transforms/EnumFields.xml @@ -1,14 +1,3 @@  - + \ No newline at end of file diff --git a/src/PluginSdkBinding/Transforms/EnumMethods.xml b/src/PluginSdkBinding/Transforms/EnumMethods.xml index 49216c61..1918b0cf 100644 --- a/src/PluginSdkBinding/Transforms/EnumMethods.xml +++ b/src/PluginSdkBinding/Transforms/EnumMethods.xml @@ -1,13 +1,3 @@  - + \ No newline at end of file diff --git a/src/PluginSdkBinding/Transforms/Metadata.xml b/src/PluginSdkBinding/Transforms/Metadata.xml index 2587ddc4..2aa7b272 100644 --- a/src/PluginSdkBinding/Transforms/Metadata.xml +++ b/src/PluginSdkBinding/Transforms/Metadata.xml @@ -1,9 +1,3 @@ - + diff --git a/src/PluginSdkBindingSdkStyle/Additions/AboutAdditions.txt b/src/PluginSdkBindingSdkStyle/Additions/AboutAdditions.txt new file mode 100644 index 00000000..2775bd36 --- /dev/null +++ b/src/PluginSdkBindingSdkStyle/Additions/AboutAdditions.txt @@ -0,0 +1,48 @@ +Additions allow you to add arbitrary C# to the generated classes +before they are compiled. This can be helpful for providing convenience +methods or adding pure C# classes. + +== Adding Methods to Generated Classes == + +Let's say the library being bound has a Rectangle class with a constructor +that takes an x and y position, and a width and length size. It will look like +this: + +public partial class Rectangle +{ + public Rectangle (int x, int y, int width, int height) + { + // JNI bindings + } +} + +Imagine we want to add a constructor to this class that takes a Point and +Size structure instead of 4 ints. We can add a new file called Rectangle.cs +with a partial class containing our new method: + +public partial class Rectangle +{ + public Rectangle (Point location, Size size) : + this (location.X, location.Y, size.Width, size.Height) + { + } +} + +At compile time, the additions class will be added to the generated class +and the final assembly will a Rectangle class with both constructors. + + +== Adding C# Classes == + +Another thing that can be done is adding fully C# managed classes to the +generated library. In the above example, let's assume that there isn't a +Point class available in Java or our library. The one we create doesn't need +to interact with Java, so we'll create it like a normal class in C#. + +By adding a Point.cs file with this class, it will end up in the binding library: + +public class Point +{ + public int X { get; set; } + public int Y { get; set; } +} \ No newline at end of file diff --git a/src/PluginSdkBindingSdkStyle/Jars/AboutJars.txt b/src/PluginSdkBindingSdkStyle/Jars/AboutJars.txt new file mode 100644 index 00000000..c359b62f --- /dev/null +++ b/src/PluginSdkBindingSdkStyle/Jars/AboutJars.txt @@ -0,0 +1,24 @@ +This directory is for Android .jars. + +There are 2 types of jars that are supported: + +== Input Jar == + +This is the jar that bindings should be generated for. + +For example, if you were binding the Google Maps library, this would +be Google's "maps.jar". + +Set the build action for these jars in the properties page to "InputJar". + + +== Reference Jars == + +These are jars that are referenced by the input jar. C# bindings will +not be created for these jars. These jars will be used to resolve +types used by the input jar. + +NOTE: Do not add "android.jar" as a reference jar. It will be added automatically +based on the Target Framework selected. + +Set the build action for these jars in the properties page to "ReferenceJar". \ No newline at end of file diff --git a/src/PluginSdkBindingSdkStyle/PluginSdkBindingSdkStyle.csproj b/src/PluginSdkBindingSdkStyle/PluginSdkBindingSdkStyle.csproj new file mode 100644 index 00000000..5e473f80 --- /dev/null +++ b/src/PluginSdkBindingSdkStyle/PluginSdkBindingSdkStyle.csproj @@ -0,0 +1,11 @@ + + + net8.0-android + 21 + enable + enable + + + + + \ No newline at end of file diff --git a/src/PluginSdkBindingSdkStyle/Transforms/EnumFields.xml b/src/PluginSdkBindingSdkStyle/Transforms/EnumFields.xml new file mode 100644 index 00000000..4dddf452 --- /dev/null +++ b/src/PluginSdkBindingSdkStyle/Transforms/EnumFields.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/PluginSdkBindingSdkStyle/Transforms/EnumMethods.xml b/src/PluginSdkBindingSdkStyle/Transforms/EnumMethods.xml new file mode 100644 index 00000000..85202262 --- /dev/null +++ b/src/PluginSdkBindingSdkStyle/Transforms/EnumMethods.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/src/PluginSdkBindingSdkStyle/Transforms/Metadata.xml b/src/PluginSdkBindingSdkStyle/Transforms/Metadata.xml new file mode 100644 index 00000000..8c503795 --- /dev/null +++ b/src/PluginSdkBindingSdkStyle/Transforms/Metadata.xml @@ -0,0 +1,3 @@ + + + diff --git a/src/keepass2android-appSdkStyle/AboutDialog.cs b/src/keepass2android-appSdkStyle/AboutDialog.cs index e1f70884..72f4c902 100644 --- a/src/keepass2android-appSdkStyle/AboutDialog.cs +++ b/src/keepass2android-appSdkStyle/AboutDialog.cs @@ -23,6 +23,7 @@ using Android.Runtime; using Android.Text.Method; using Android.Widget; using Android.Content.PM; +using keepass2android_appSdkStyle; namespace keepass2android { diff --git a/src/keepass2android-appSdkStyle/AndroidManifest.xml b/src/keepass2android-appSdkStyle/AndroidManifest.xml deleted file mode 100644 index a08146fd..00000000 --- a/src/keepass2android-appSdkStyle/AndroidManifest.xml +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - android:label="@string/language_selection_title" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/keepass2android-appSdkStyle/AndroidManifest.xml b/src/keepass2android-appSdkStyle/AndroidManifest.xml new file mode 120000 index 00000000..93e6417b --- /dev/null +++ b/src/keepass2android-appSdkStyle/AndroidManifest.xml @@ -0,0 +1 @@ +Manifests/AndroidManifest_debug.xml \ No newline at end of file diff --git a/src/keepass2android-appSdkStyle/AppKilledInfo.cs b/src/keepass2android-appSdkStyle/AppKilledInfo.cs index 48a846dc..a7afd65a 100644 --- a/src/keepass2android-appSdkStyle/AppKilledInfo.cs +++ b/src/keepass2android-appSdkStyle/AppKilledInfo.cs @@ -9,6 +9,7 @@ using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; +using keepass2android_appSdkStyle; namespace keepass2android { diff --git a/src/keepass2android-appSdkStyle/AttachmentContentProvider.cs b/src/keepass2android-appSdkStyle/AttachmentContentProvider.cs index 00cdb8f7..e7a45ac9 100644 --- a/src/keepass2android-appSdkStyle/AttachmentContentProvider.cs +++ b/src/keepass2android-appSdkStyle/AttachmentContentProvider.cs @@ -3,6 +3,7 @@ using Android.Content; using Android.OS; using Android.Util; using Java.IO; +using File = Java.IO.File; namespace keepass2android { @@ -55,7 +56,7 @@ namespace keepass2android } Log.Verbose(logTag, "Unsupported uri: '" + uri + "'."); - throw new FileNotFoundException("Unsupported uri: " + throw new Java.IO.FileNotFoundException("Unsupported uri: " + uri.ToString()); } diff --git a/src/keepass2android-appSdkStyle/AutoOpenEdit.cs b/src/keepass2android-appSdkStyle/AutoOpenEdit.cs index 730d5f14..99651906 100644 --- a/src/keepass2android-appSdkStyle/AutoOpenEdit.cs +++ b/src/keepass2android-appSdkStyle/AutoOpenEdit.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using Android.App; +using keepass2android_appSdkStyle; using KeePassLib; using KeePassLib.Security; using KeePassLib.Serialization; diff --git a/src/keepass2android-appSdkStyle/BiometricModule.cs b/src/keepass2android-appSdkStyle/BiometricModule.cs index 13afd03b..a4a04431 100644 --- a/src/keepass2android-appSdkStyle/BiometricModule.cs +++ b/src/keepass2android-appSdkStyle/BiometricModule.cs @@ -16,6 +16,7 @@ using Java.IO; using Java.Security.Cert; using Java.Util.Concurrent; using Javax.Crypto.Spec; +using keepass2android_appSdkStyle; using Exception = System.Exception; using File = System.IO.File; @@ -314,7 +315,7 @@ namespace keepass2android { throw new RuntimeException(FailedToInitCipher + " (UnrecoverableKeyException)", e); } - catch (IOException e) + catch (Java.IO.IOException e) { throw new RuntimeException(FailedToInitCipher + " (IOException)", e); } @@ -395,7 +396,7 @@ namespace keepass2android { throw new RuntimeException(e); } - catch (IOException e) + catch (Java.IO.IOException e) { throw new RuntimeException(e); } @@ -433,7 +434,7 @@ namespace keepass2android { throw new RuntimeException(FailedToInitCipher, e); } - catch (IOException e) + catch (Java.IO.IOException e) { throw new RuntimeException(FailedToInitCipher, e); } diff --git a/src/keepass2android-appSdkStyle/ChallengeXCKey.cs b/src/keepass2android-appSdkStyle/ChallengeXCKey.cs index 8303cfe5..d2c50342 100644 --- a/src/keepass2android-appSdkStyle/ChallengeXCKey.cs +++ b/src/keepass2android-appSdkStyle/ChallengeXCKey.cs @@ -1,4 +1,5 @@ using Java.Lang; +using keepass2android_appSdkStyle; using KeePassLib.Cryptography; using KeePassLib.Keys; using KeePassLib.Security; @@ -48,7 +49,7 @@ namespace keepass2android }); while ((Response == null) && (Error == null)) { - Thread.Sleep(50); + System.Threading.Thread.Sleep(50); } if (Error != null) { diff --git a/src/keepass2android-appSdkStyle/ChangeLog.cs b/src/keepass2android-appSdkStyle/ChangeLog.cs index 807b4ccb..72794ba0 100644 --- a/src/keepass2android-appSdkStyle/ChangeLog.cs +++ b/src/keepass2android-appSdkStyle/ChangeLog.cs @@ -17,6 +17,7 @@ using Android.Text.Util; using Android.Views; using Android.Webkit; using Android.Widget; +using keepass2android_appSdkStyle; namespace keepass2android { diff --git a/src/keepass2android-appSdkStyle/CloseImmediatelyActivity.cs b/src/keepass2android-appSdkStyle/CloseImmediatelyActivity.cs index 1d7baac1..5813f45a 100644 --- a/src/keepass2android-appSdkStyle/CloseImmediatelyActivity.cs +++ b/src/keepass2android-appSdkStyle/CloseImmediatelyActivity.cs @@ -8,9 +8,9 @@ using Android.Content; using Android.Content.PM; using Android.OS; using Android.Runtime; -using Android.Support.V7.App; using Android.Views; using Android.Widget; +using keepass2android_appSdkStyle; namespace keepass2android { diff --git a/src/keepass2android-appSdkStyle/ConfigureChildDatabasesActivity.cs b/src/keepass2android-appSdkStyle/ConfigureChildDatabasesActivity.cs index 293e9f86..3d2f334d 100644 --- a/src/keepass2android-appSdkStyle/ConfigureChildDatabasesActivity.cs +++ b/src/keepass2android-appSdkStyle/ConfigureChildDatabasesActivity.cs @@ -12,13 +12,13 @@ using Android.Graphics.Drawables; using Android.OS; using Android.Provider; using Android.Runtime; -using Android.Support.V7.App; using Android.Text; using Android.Util; using Android.Views; using Android.Widget; using keepass2android.database.edit; using KeePass.Util.Spr; +using keepass2android_appSdkStyle; using KeePassLib; using KeePassLib.Keys; using KeePassLib.Security; diff --git a/src/keepass2android-appSdkStyle/CreateDatabaseActivity.cs b/src/keepass2android-appSdkStyle/CreateDatabaseActivity.cs index d3a88b54..ec7a4586 100644 --- a/src/keepass2android-appSdkStyle/CreateDatabaseActivity.cs +++ b/src/keepass2android-appSdkStyle/CreateDatabaseActivity.cs @@ -5,7 +5,6 @@ using Android.Content.PM; using Android.Graphics.Drawables; using Android.OS; using Android.Preferences; -using Android.Support.V7.App; using Android.Text; using Android.Views; using Android.Widget; @@ -13,6 +12,7 @@ using Java.IO; using KeePassLib.Keys; using KeePassLib.Serialization; using keepass2android.Io; +using keepass2android_appSdkStyle; using Environment = Android.OS.Environment; using IOException = Java.IO.IOException; @@ -277,18 +277,18 @@ namespace keepass2android private void SetDefaultIoc() { - File directory = GetExternalFilesDir(null); + Java.IO.File directory = GetExternalFilesDir(null); if (directory == null) directory = FilesDir; string strDir = directory.CanonicalPath; - if (!strDir.EndsWith(File.Separator)) - strDir += File.Separator; + if (!strDir.EndsWith(Java.IO.File.Separator)) + strDir += Java.IO.File.Separator; string filename = strDir + "keepass.kdbx"; filename = FileSelectHelper.ConvertFilenameToIocPath(filename); int count = 2; - while (new File(filename).Exists()) + while (new Java.IO.File(filename).Exists()) { filename = FileSelectHelper.ConvertFilenameToIocPath(strDir + "keepass" + count + ".kdbx"); count++; diff --git a/src/keepass2android-appSdkStyle/DonateReminder.cs b/src/keepass2android-appSdkStyle/DonateReminder.cs index 319516d6..ddb43347 100644 --- a/src/keepass2android-appSdkStyle/DonateReminder.cs +++ b/src/keepass2android-appSdkStyle/DonateReminder.cs @@ -10,6 +10,7 @@ using Android.Preferences; using Android.Runtime; using Android.Views; using Android.Widget; +using keepass2android_appSdkStyle; using KeePassLib.Utility; namespace keepass2android diff --git a/src/keepass2android-appSdkStyle/EntryActivity.cs b/src/keepass2android-appSdkStyle/EntryActivity.cs index d4b791fc..d97ddf96 100644 --- a/src/keepass2android-appSdkStyle/EntryActivity.cs +++ b/src/keepass2android-appSdkStyle/EntryActivity.cs @@ -53,6 +53,7 @@ using keepass2android.fileselect; using KeeTrayTOTP.Libraries; using Boolean = Java.Lang.Boolean; using Android.Util; +using keepass2android_appSdkStyle; namespace keepass2android { @@ -623,7 +624,7 @@ namespace keepass2android edit.Commit(); //request permission. user must grant, we'll show notifications in the OnRequestPermissionResults() callback - Android.Support.V4.App.ActivityCompat.RequestPermissions(this, new[] { Android.Manifest.Permission.PostNotifications }, activateKeyboard ? 1 : 0 /*use requestCode to transfer the flag*/); + AndroidX.Core.App.ActivityCompat.RequestPermissions(this, new[] { Android.Manifest.Permission.PostNotifications }, activateKeyboard ? 1 : 0 /*use requestCode to transfer the flag*/); }) diff --git a/src/keepass2android-appSdkStyle/EntryActivityClasses/CopyToClipboardPopupMenuIcon.cs b/src/keepass2android-appSdkStyle/EntryActivityClasses/CopyToClipboardPopupMenuIcon.cs index d8a226cf..ac10283e 100644 --- a/src/keepass2android-appSdkStyle/EntryActivityClasses/CopyToClipboardPopupMenuIcon.cs +++ b/src/keepass2android-appSdkStyle/EntryActivityClasses/CopyToClipboardPopupMenuIcon.cs @@ -1,5 +1,6 @@ using Android.Content; using Android.Graphics.Drawables; +using keepass2android_appSdkStyle; namespace keepass2android { diff --git a/src/keepass2android-appSdkStyle/EntryActivityClasses/GotoUrlMenuItem.cs b/src/keepass2android-appSdkStyle/EntryActivityClasses/GotoUrlMenuItem.cs index c4d42a0f..cb88406c 100644 --- a/src/keepass2android-appSdkStyle/EntryActivityClasses/GotoUrlMenuItem.cs +++ b/src/keepass2android-appSdkStyle/EntryActivityClasses/GotoUrlMenuItem.cs @@ -1,4 +1,5 @@ using Android.Graphics.Drawables; +using keepass2android_appSdkStyle; namespace keepass2android diff --git a/src/keepass2android-appSdkStyle/EntryActivityClasses/OpenBinaryPopupItem.cs b/src/keepass2android-appSdkStyle/EntryActivityClasses/OpenBinaryPopupItem.cs index ae45e3f0..56719dcc 100644 --- a/src/keepass2android-appSdkStyle/EntryActivityClasses/OpenBinaryPopupItem.cs +++ b/src/keepass2android-appSdkStyle/EntryActivityClasses/OpenBinaryPopupItem.cs @@ -1,4 +1,5 @@ using Android.Graphics.Drawables; +using keepass2android_appSdkStyle; namespace keepass2android { diff --git a/src/keepass2android-appSdkStyle/EntryActivityClasses/ToggleVisibilityPopupMenuItem.cs b/src/keepass2android-appSdkStyle/EntryActivityClasses/ToggleVisibilityPopupMenuItem.cs index ad4baf16..712f8be9 100644 --- a/src/keepass2android-appSdkStyle/EntryActivityClasses/ToggleVisibilityPopupMenuItem.cs +++ b/src/keepass2android-appSdkStyle/EntryActivityClasses/ToggleVisibilityPopupMenuItem.cs @@ -1,5 +1,6 @@ using Android.Graphics.Drawables; using Android.Widget; +using keepass2android_appSdkStyle; namespace keepass2android { diff --git a/src/keepass2android-appSdkStyle/EntryActivityClasses/ViewImagePopupItem.cs b/src/keepass2android-appSdkStyle/EntryActivityClasses/ViewImagePopupItem.cs index ec1f4f73..e1a12bbf 100644 --- a/src/keepass2android-appSdkStyle/EntryActivityClasses/ViewImagePopupItem.cs +++ b/src/keepass2android-appSdkStyle/EntryActivityClasses/ViewImagePopupItem.cs @@ -11,6 +11,7 @@ using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; +using keepass2android_appSdkStyle; namespace keepass2android.EntryActivityClasses { diff --git a/src/keepass2android-appSdkStyle/EntryActivityClasses/WriteBinaryToFilePopupItem.cs b/src/keepass2android-appSdkStyle/EntryActivityClasses/WriteBinaryToFilePopupItem.cs index c1044e3c..42d5b01d 100644 --- a/src/keepass2android-appSdkStyle/EntryActivityClasses/WriteBinaryToFilePopupItem.cs +++ b/src/keepass2android-appSdkStyle/EntryActivityClasses/WriteBinaryToFilePopupItem.cs @@ -1,4 +1,5 @@ using Android.Graphics.Drawables; +using keepass2android_appSdkStyle; namespace keepass2android { diff --git a/src/keepass2android-appSdkStyle/EntryEditActivity.cs b/src/keepass2android-appSdkStyle/EntryEditActivity.cs index cd1ba122..0a479e13 100644 --- a/src/keepass2android-appSdkStyle/EntryEditActivity.cs +++ b/src/keepass2android-appSdkStyle/EntryEditActivity.cs @@ -45,13 +45,12 @@ using keepass2android.Io; using KeePassLib.Serialization; using KeeTrayTOTP.Libraries; using PluginTOTP; -using Xamarin.Essentials; -using Xamarin.Forms.Platform.Android; -using ZXing.Mobile; + using Debug = System.Diagnostics.Debug; using File = System.IO.File; using Object = Java.Lang.Object; using Uri = Android.Net.Uri; +using Resource = keepass2android_appSdkStyle.Resource; namespace keepass2android { @@ -248,11 +247,6 @@ namespace keepass2android }; - - - // Save button - //SupportActionBar.SetCustomView(Resource.Layout.SaveButton); - if (State.IsNew) { SupportActionBar.Title = GetString(Resource.String.add_entry); @@ -1183,7 +1177,8 @@ namespace keepass2android dlgView.FindViewById