diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 70cd36cbf..9a2d4657c 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,8 +1,8 @@ - 200.4.0 - 200.4.0 + 200.5.0 + 200.5.0 Esri Inc. diff --git a/src/Samples/Toolkit.SampleApp.Maui/MainPage.xaml.cs b/src/Samples/Toolkit.SampleApp.Maui/MainPage.xaml.cs index 83a514067..43de1fed1 100644 --- a/src/Samples/Toolkit.SampleApp.Maui/MainPage.xaml.cs +++ b/src/Samples/Toolkit.SampleApp.Maui/MainPage.xaml.cs @@ -1,5 +1,6 @@ using Esri.ArcGISRuntime; using Esri.ArcGISRuntime.Mapping; +using Microsoft.Maui.ApplicationModel; namespace Toolkit.SampleApp.Maui; @@ -8,6 +9,13 @@ public partial class MainPage : ContentPage public MainPage() { InitializeComponent(); + ToolbarItems.Add(new ToolbarItem("Toggle Theme", null, () => + { + if (App.Current!.RequestedTheme == AppTheme.Dark) + App.Current.UserAppTheme = AppTheme.Light; + else + App.Current.UserAppTheme = AppTheme.Dark; + })); SamplesList.ItemsSource = SampleDatasource.Current.Samples; CheckAPIKey(); } diff --git a/src/Samples/Toolkit.SampleApp.Maui/Platforms/Android/AndroidManifest.xml b/src/Samples/Toolkit.SampleApp.Maui/Platforms/Android/AndroidManifest.xml index e9937ad77..e360d87b0 100644 --- a/src/Samples/Toolkit.SampleApp.Maui/Platforms/Android/AndroidManifest.xml +++ b/src/Samples/Toolkit.SampleApp.Maui/Platforms/Android/AndroidManifest.xml @@ -1,6 +1,12 @@  - - - + + + + + + + + + \ No newline at end of file diff --git a/src/Samples/Toolkit.SampleApp.Maui/Platforms/iOS/Info.plist b/src/Samples/Toolkit.SampleApp.Maui/Platforms/iOS/Info.plist index 0004a4fde..343c80563 100644 --- a/src/Samples/Toolkit.SampleApp.Maui/Platforms/iOS/Info.plist +++ b/src/Samples/Toolkit.SampleApp.Maui/Platforms/iOS/Info.plist @@ -28,5 +28,7 @@ XSAppIconAssets Assets.xcassets/appicon.appiconset + NSCameraUsageDescription + Adding attachments diff --git a/src/Samples/Toolkit.SampleApp.Maui/Samples/FeatureFormViewSample.xaml b/src/Samples/Toolkit.SampleApp.Maui/Samples/FeatureFormViewSample.xaml index 1375e0bd4..a827b7527 100644 --- a/src/Samples/Toolkit.SampleApp.Maui/Samples/FeatureFormViewSample.xaml +++ b/src/Samples/Toolkit.SampleApp.Maui/Samples/FeatureFormViewSample.xaml @@ -14,19 +14,21 @@ Map="https://www.arcgis.com/home/item.html?id=f72207ac170a40d8992b7a3507b44fad" GeoViewTapped="mapView_GeoViewTapped" /> - + - + - - + + diff --git a/src/Samples/Toolkit.SampleApp.Maui/Samples/FeatureFormViewSample.xaml.cs b/src/Samples/Toolkit.SampleApp.Maui/Samples/FeatureFormViewSample.xaml.cs index 3164fc311..cc12351e1 100644 --- a/src/Samples/Toolkit.SampleApp.Maui/Samples/FeatureFormViewSample.xaml.cs +++ b/src/Samples/Toolkit.SampleApp.Maui/Samples/FeatureFormViewSample.xaml.cs @@ -1,4 +1,5 @@ -using Esri.ArcGISRuntime.Data; +using System.Diagnostics; +using Esri.ArcGISRuntime.Data; using Esri.ArcGISRuntime.Mapping; using Esri.ArcGISRuntime.Mapping.FeatureForms; using Esri.ArcGISRuntime.Portal; @@ -54,13 +55,45 @@ private async void mapView_GeoViewTapped(object sender, Esri.ArcGISRuntime.Maui. return null; } + private async void BarcodeButtonClicked(object sender, Esri.ArcGISRuntime.Toolkit.Maui.BarcodeButtonClickedEventArgs e) + { + // If user clicks the barcode button in a barcode input element, use ZXing library (https://github.com/Redth/ZXing.Net.Maui) + // to scan a barcode using the device camera + ZXing.Net.Maui.Controls.CameraBarcodeReaderView view = new ZXing.Net.Maui.Controls.CameraBarcodeReaderView(); + TaskCompletionSource tcs = new TaskCompletionSource(); + view.BarcodesDetected += (s, e) => + { + if (tcs.TrySetResult(e.Results.FirstOrDefault()?.Value)) + Dispatcher.Dispatch(() => _ = Navigation.PopModalAsync()); + }; + ContentPage p = new ContentPage() { Content = view }; + await Navigation.PushModalAsync(p); + p.NavigatedFrom += (s, e) => tcs.TrySetResult(null); + var barcode = await tcs.Task; + if (!string.IsNullOrEmpty(barcode)) + e.FormElement.UpdateValue(barcode); + } + + private void FormAttachmentClicked(object sender, Esri.ArcGISRuntime.Toolkit.Maui.FormAttachmentClickedEventArgs e) + { + // User clicked an attachment, + // e.Handled = true; // Uncomment to override default open attachment action + Debug.WriteLine("Attachment clicked: " + e.Attachment.Name); + } private async void DiscardButton_Click(object sender, EventArgs e) { var result = await DisplayAlert("Confirm", "Discard edits?", "Yes", "Cancel"); if (result) { - formViewer.FeatureForm?.DiscardEdits(); + + ((Button)sender).IsEnabled = false; + try + { + await formViewer.DiscardEditsAsync(); + } catch { } + + ((Button)sender).IsEnabled = true; } } @@ -84,7 +117,7 @@ private async void UpdateButton_Click(object sender, EventArgs e) } try { - await formViewer.FeatureForm!.Feature.FeatureTable!.UpdateFeatureAsync(formViewer.FeatureForm.Feature); + await formViewer.FinishEditingAsync(); } catch (Exception ex) { diff --git a/src/Samples/Toolkit.SampleApp.Maui/Samples/PopupViewerSample.xaml b/src/Samples/Toolkit.SampleApp.Maui/Samples/PopupViewerSample.xaml index ef425da95..0257a6d20 100644 --- a/src/Samples/Toolkit.SampleApp.Maui/Samples/PopupViewerSample.xaml +++ b/src/Samples/Toolkit.SampleApp.Maui/Samples/PopupViewerSample.xaml @@ -12,7 +12,7 @@ - +