Compare commits

..
3 Commits
Author SHA1 Message Date
livio b388711dcf Fix mobile panel safe area 2026-09-28 21:01:08 +02:00
livio 41405bcc4f Speed up Android test packages 2026-09-28 20:29:51 +02:00
livio 9b4ff9e188 Always retain KML lines and points 2026-09-28 20:29:21 +02:00
6 changed files with 49 additions and 6 deletions

No files matched your search

+2 -2
View File
@@ -28,8 +28,8 @@
<ApplicationId>com.companyname.lmemappecatastaliapp</ApplicationId> <ApplicationId>com.companyname.lmemappecatastaliapp</ApplicationId>
<!-- Versions --> <!-- Versions -->
<ApplicationDisplayVersion>0.4.8</ApplicationDisplayVersion> <ApplicationDisplayVersion>0.4.10</ApplicationDisplayVersion>
<ApplicationVersion>43</ApplicationVersion> <ApplicationVersion>45</ApplicationVersion>
<Version>$(ApplicationDisplayVersion)</Version> <Version>$(ApplicationDisplayVersion)</Version>
<!-- To develop, package, and publish an app to the Microsoft Store, see: https://aka.ms/MauiTemplateUnpackaged --> <!-- To develop, package, and publish an app to the Microsoft Store, see: https://aka.ms/MauiTemplateUnpackaged -->
+26
View File
@@ -4,6 +4,8 @@ using Android.Content.PM;
using Android.Database; using Android.Database;
using Android.OS; using Android.OS;
using Android.Provider; using Android.Provider;
using Android.Views;
using AndroidX.Core.View;
using LMEMappeCatastaliApp.Services; using LMEMappeCatastaliApp.Services;
namespace LMEMappeCatastaliApp; namespace LMEMappeCatastaliApp;
@@ -24,9 +26,18 @@ public class MainActivity : MauiAppCompatActivity
protected override void OnCreate(Bundle? savedInstanceState) protected override void OnCreate(Bundle? savedInstanceState)
{ {
base.OnCreate(savedInstanceState); base.OnCreate(savedInstanceState);
ApplySystemBarInsets();
QueueViewedFile(Intent); QueueViewedFile(Intent);
} }
private void ApplySystemBarInsets()
{
var content = FindViewById<Android.Views.View>(Android.Resource.Id.Content);
if (content is null) return;
ViewCompat.SetOnApplyWindowInsetsListener(content, new SystemBarInsetsListener(content));
ViewCompat.RequestApplyInsets(content);
}
protected override void OnNewIntent(Intent? intent) protected override void OnNewIntent(Intent? intent)
{ {
base.OnNewIntent(intent); base.OnNewIntent(intent);
@@ -72,4 +83,19 @@ public class MainActivity : MauiAppCompatActivity
var index = cursor.GetColumnIndex(IOpenableColumns.DisplayName); var index = cursor.GetColumnIndex(IOpenableColumns.DisplayName);
return index >= 0 ? cursor.GetString(index) : null; return index >= 0 ? cursor.GetString(index) : null;
} }
private sealed class SystemBarInsetsListener(Android.Views.View content) : Java.Lang.Object, IOnApplyWindowInsetsListener
{
private readonly int _left = content.PaddingLeft;
private readonly int _top = content.PaddingTop;
private readonly int _right = content.PaddingRight;
public WindowInsetsCompat? OnApplyWindowInsets(Android.Views.View? view, WindowInsetsCompat? insets)
{
if (view is null || insets is null) return insets;
var systemBars = insets.GetInsets(WindowInsetsCompat.Type.SystemBars());
view.SetPadding(_left, _top, _right, systemBars?.Bottom ?? 0);
return insets;
}
}
} }
+8
View File
@@ -2,6 +2,14 @@
App .NET MAUI Blazor Hybrid per Android, iOS, Mac Catalyst e Windows, pensata per consultare mappe catastali e lavorare sul campo con GPS. App .NET MAUI Blazor Hybrid per Android, iOS, Mac Catalyst e Windows, pensata per consultare mappe catastali e lavorare sul campo con GPS.
## Versione 0.4.10
- I pannelli mobili rispettano la barra di navigazione Android e mantengono il pulsante Help completamente raggiungibile tramite scorrimento.
## Versione 0.4.9
- Linee e punti KML/KMZ vengono sempre importati, anche quando il documento viene riconosciuto come catastale; il filtro particelle separa soltanto i poligoni di foglio o cornice.
## Versione 0.4.8 ## Versione 0.4.8
- Aggiornamento a .NET 10 e target Android API 36. - Aggiornamento a .NET 10 e target Android API 36.
+1
View File
@@ -23,6 +23,7 @@ foreach ($format in @("apk", "aab")) {
"-c", $Configuration, "-c", $Configuration,
"-p:AndroidSdkDirectory=$androidSdk", "-p:AndroidSdkDirectory=$androidSdk",
"-p:AndroidPackageFormat=$format", "-p:AndroidPackageFormat=$format",
"-p:RunAOTCompilation=false",
"-p:AndroidKeyStore=true", "-p:AndroidKeyStore=true",
"-p:AndroidSigningKeyStore=$keyStore", "-p:AndroidSigningKeyStore=$keyStore",
"-p:AndroidSigningKeyAlias=androiddebugkey", "-p:AndroidSigningKeyAlias=androiddebugkey",
+8 -1
View File
@@ -1276,6 +1276,8 @@ input[type="checkbox"] {
z-index: 1100; z-index: 1100;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
min-height: 0;
overflow: hidden;
width: min(430px, calc(100% - 48px)); width: min(430px, calc(100% - 48px));
border-left: 1px solid var(--line); border-left: 1px solid var(--line);
background: var(--panel); background: var(--panel);
@@ -1328,10 +1330,15 @@ h2 {
} }
.panel-content { .panel-content {
flex: 1 1 auto;
min-height: 0;
display: grid; display: grid;
align-content: start;
gap: 12px; gap: 12px;
overflow-y: auto; overflow-y: auto;
padding: 15px 16px 24px; overscroll-behavior: contain;
padding: 15px 16px max(32px, calc(24px + env(safe-area-inset-bottom)));
scroll-padding-bottom: max(32px, calc(24px + env(safe-area-inset-bottom)));
} }
.panel-section { .panel-section {
+4 -3
View File
@@ -1013,12 +1013,13 @@ function normalizeKmlFiles(files) {
const parcelSet = new Set(parcels); const parcelSet = new Set(parcels);
const sheetParts = polygonParts.filter(feature => !parcelSet.has(feature)); const sheetParts = polygonParts.filter(feature => !parcelSet.has(feature));
const nonPolygonFeatures = features.filter(feature => geometryPolygons(feature.geometry).length === 0); const nonPolygonFeatures = features.filter(feature => geometryPolygons(feature.geometry).length === 0);
const optionalFeatures = [...sheetParts, ...nonPolygonFeatures]; const importedFeatures = [...parcels, ...nonPolygonFeatures];
if (!parcels.length && !(lmeState.includeKmlSheetLayer && optionalFeatures.length)) { const optionalFeatures = sheetParts;
if (!importedFeatures.length && !(lmeState.includeKmlSheetLayer && optionalFeatures.length)) {
throw new Error("nessuna particella trovata; attiva 'includi layer del foglio' per importare gli altri elementi"); throw new Error("nessuna particella trovata; attiva 'includi layer del foglio' per importare gli altri elementi");
} }
return { return {
geojson: { type: "FeatureCollection", features: parcels }, geojson: { type: "FeatureCollection", features: importedFeatures },
sheetGeojson: { sheetGeojson: {
type: "FeatureCollection", type: "FeatureCollection",
features: lmeState.includeKmlSheetLayer ? optionalFeatures : [] features: lmeState.includeKmlSheetLayer ? optionalFeatures : []