Add drawing sharing functionality and localization updates

- Implemented sharing options for drawings, including sharing to a public channel and specific rooms.
- Added confirmation dialogs for deleting drawings and sharing drawings.
- Enhanced the drawing toolbar to display a list of user's drawings with options to share or delete.
- Updated localization files for English, Spanish, French, Croatian, Italian, German, Slovenian, and other languages to include new strings related to drawing sharing and management.
- Introduced syncing of drawing messages with the DrawingProvider to restore missing drawings.
- Improved the drawing minimap preview to display a small preview of drawings in the toolbar.
This commit is contained in:
Janez T
2025-10-23 20:50:14 +02:00
parent 19603a1ad9
commit 9d923f8118
21 changed files with 941 additions and 61 deletions

View File

@@ -2521,5 +2521,15 @@
"drawingHidden": "Zeichnung von Karte ausgeblendet",
"alreadyShared": "{count} bereits geteilt",
"newDrawingsShared": "{count} neue Zeichnung(en) geteilt",
"drawingTools": "Zeichenwerkzeuge"
"drawingTools": "Zeichenwerkzeuge",
"shareDrawing": "Zeichnung teilen",
"shareWithAllNearbyDevices": "Mit allen Geräten in der Nähe teilen",
"shareToRoom": "In Raum teilen",
"sendToPersistentStorage": "An persistenten Raum-Speicher senden",
"deleteDrawingConfirm": "Möchten Sie diese Zeichnung wirklich löschen?",
"drawingDeleted": "Zeichnung gelöscht",
"yourDrawingsCount": "Ihre Zeichnungen ({count})",
"shared": "Geteilt",
"line": "Linie",
"rectangle": "Rechteck"
}

View File

@@ -3058,5 +3058,60 @@
"type": "String"
}
}
},
"shareDrawing": "Share Drawing",
"@shareDrawing": {
"description": "Title for share single drawing dialog"
},
"shareWithAllNearbyDevices": "Share with all nearby devices",
"@shareWithAllNearbyDevices": {
"description": "Subtitle for public channel sharing option"
},
"shareToRoom": "Share to Room",
"@shareToRoom": {
"description": "Header for room sharing section"
},
"sendToPersistentStorage": "Send to persistent room storage",
"@sendToPersistentStorage": {
"description": "Subtitle for room sharing option"
},
"deleteDrawingConfirm": "Are you sure you want to delete this drawing?",
"@deleteDrawingConfirm": {
"description": "Confirmation message for deleting a single drawing"
},
"drawingDeleted": "Drawing deleted",
"@drawingDeleted": {
"description": "Success message after deleting a drawing"
},
"yourDrawingsCount": "Your Drawings ({count})",
"@yourDrawingsCount": {
"description": "Header showing count of user's drawings",
"placeholders": {
"count": {
"type": "int"
}
}
},
"shared": "Shared",
"@shared": {
"description": "Status label for shared drawings"
},
"line": "Line",
"@line": {
"description": "Line drawing type label"
},
"rectangle": "Rectangle",
"@rectangle": {
"description": "Rectangle drawing type label"
}
}

View File

@@ -2516,5 +2516,15 @@
"drawingHidden": "Dibujo ocultado del mapa",
"alreadyShared": "{count} ya compartido",
"newDrawingsShared": "{count} nuevo(s) dibujo(s) compartido(s)",
"drawingTools": "Herramientas de Dibujo"
"drawingTools": "Herramientas de Dibujo",
"shareDrawing": "Compartir Dibujo",
"shareWithAllNearbyDevices": "Compartir con todos los dispositivos cercanos",
"shareToRoom": "Compartir en Sala",
"sendToPersistentStorage": "Enviar a almacenamiento persistente de sala",
"deleteDrawingConfirm": "¿Está seguro de que desea eliminar este dibujo?",
"drawingDeleted": "Dibujo eliminado",
"yourDrawingsCount": "Sus Dibujos ({count})",
"shared": "Compartido",
"line": "Línea",
"rectangle": "Rectángulo"
}

View File

@@ -2521,5 +2521,15 @@
"drawingHidden": "Dessin masqué de la carte",
"alreadyShared": "{count} déjà partagé",
"newDrawingsShared": "{count} nouveau(x) dessin(s) partagé(s)",
"drawingTools": "Outils de Dessin"
"drawingTools": "Outils de Dessin",
"shareDrawing": "Partager le Dessin",
"shareWithAllNearbyDevices": "Partager avec tous les appareils à proximité",
"shareToRoom": "Partager dans la Salle",
"sendToPersistentStorage": "Envoyer au stockage persistant de la salle",
"deleteDrawingConfirm": "Êtes-vous sûr de vouloir supprimer ce dessin?",
"drawingDeleted": "Dessin supprimé",
"yourDrawingsCount": "Vos Dessins ({count})",
"shared": "Partagé",
"line": "Ligne",
"rectangle": "Rectangle"
}

View File

@@ -932,5 +932,15 @@
"drawingHidden": "Crtež sakriven s karte",
"alreadyShared": "{count, plural, =1{1 već podijeljeno} other{{count} već podijeljeno}}",
"newDrawingsShared": "Podijeljeno {count} novi{plural} crtež{plural}",
"drawingTools": "Alati za crtanje"
"drawingTools": "Alati za crtanje",
"shareDrawing": "Podijeli Crtež",
"shareWithAllNearbyDevices": "Podijeli sa svim obližnjim uređajima",
"shareToRoom": "Podijeli u Sobu",
"sendToPersistentStorage": "Pošalji u trajnu pohranu sobe",
"deleteDrawingConfirm": "Jeste li sigurni da želite izbrisati ovaj crtež?",
"drawingDeleted": "Crtež izbrisan",
"yourDrawingsCount": "Vaši Crteži ({count})",
"shared": "Podijeljeno",
"line": "Linija",
"rectangle": "Pravokutnik"
}

View File

@@ -2521,5 +2521,15 @@
"drawingHidden": "Disegno nascosto dalla mappa",
"alreadyShared": "{count} già condiviso",
"newDrawingsShared": "{count} nuovo(i) disegno(i) condiviso(i)",
"drawingTools": "Strumenti di Disegno"
"drawingTools": "Strumenti di Disegno",
"shareDrawing": "Condividi Disegno",
"shareWithAllNearbyDevices": "Condividi con tutti i dispositivi vicini",
"shareToRoom": "Condividi nella Stanza",
"sendToPersistentStorage": "Invia allo storage persistente della stanza",
"deleteDrawingConfirm": "Sei sicuro di voler eliminare questo disegno?",
"drawingDeleted": "Disegno eliminato",
"yourDrawingsCount": "I Tuoi Disegni ({count})",
"shared": "Condiviso",
"line": "Linea",
"rectangle": "Rettangolo"
}

View File

@@ -3254,6 +3254,66 @@ abstract class AppLocalizations {
/// In en, this message translates to:
/// **'Shared {count} new drawing{plural}'**
String newDrawingsShared(int count, String plural);
/// Title for share single drawing dialog
///
/// In en, this message translates to:
/// **'Share Drawing'**
String get shareDrawing;
/// Subtitle for public channel sharing option
///
/// In en, this message translates to:
/// **'Share with all nearby devices'**
String get shareWithAllNearbyDevices;
/// Header for room sharing section
///
/// In en, this message translates to:
/// **'Share to Room'**
String get shareToRoom;
/// Subtitle for room sharing option
///
/// In en, this message translates to:
/// **'Send to persistent room storage'**
String get sendToPersistentStorage;
/// Confirmation message for deleting a single drawing
///
/// In en, this message translates to:
/// **'Are you sure you want to delete this drawing?'**
String get deleteDrawingConfirm;
/// Success message after deleting a drawing
///
/// In en, this message translates to:
/// **'Drawing deleted'**
String get drawingDeleted;
/// Header showing count of user's drawings
///
/// In en, this message translates to:
/// **'Your Drawings ({count})'**
String yourDrawingsCount(int count);
/// Status label for shared drawings
///
/// In en, this message translates to:
/// **'Shared'**
String get shared;
/// Line drawing type label
///
/// In en, this message translates to:
/// **'Line'**
String get line;
/// Rectangle drawing type label
///
/// In en, this message translates to:
/// **'Rectangle'**
String get rectangle;
}
class _AppLocalizationsDelegate

View File

@@ -1820,4 +1820,38 @@ class AppLocalizationsDe extends AppLocalizations {
String newDrawingsShared(int count, String plural) {
return '$count neue Zeichnung(en) geteilt';
}
@override
String get shareDrawing => 'Zeichnung teilen';
@override
String get shareWithAllNearbyDevices =>
'Mit allen Geräten in der Nähe teilen';
@override
String get shareToRoom => 'In Raum teilen';
@override
String get sendToPersistentStorage => 'An persistenten Raum-Speicher senden';
@override
String get deleteDrawingConfirm =>
'Möchten Sie diese Zeichnung wirklich löschen?';
@override
String get drawingDeleted => 'Zeichnung gelöscht';
@override
String yourDrawingsCount(int count) {
return 'Ihre Zeichnungen ($count)';
}
@override
String get shared => 'Geteilt';
@override
String get line => 'Linie';
@override
String get rectangle => 'Rechteck';
}

View File

@@ -1801,4 +1801,37 @@ class AppLocalizationsEn extends AppLocalizations {
String newDrawingsShared(int count, String plural) {
return 'Shared $count new drawing$plural';
}
@override
String get shareDrawing => 'Share Drawing';
@override
String get shareWithAllNearbyDevices => 'Share with all nearby devices';
@override
String get shareToRoom => 'Share to Room';
@override
String get sendToPersistentStorage => 'Send to persistent room storage';
@override
String get deleteDrawingConfirm =>
'Are you sure you want to delete this drawing?';
@override
String get drawingDeleted => 'Drawing deleted';
@override
String yourDrawingsCount(int count) {
return 'Your Drawings ($count)';
}
@override
String get shared => 'Shared';
@override
String get line => 'Line';
@override
String get rectangle => 'Rectangle';
}

View File

@@ -1821,4 +1821,39 @@ class AppLocalizationsEs extends AppLocalizations {
String newDrawingsShared(int count, String plural) {
return '$count nuevo(s) dibujo(s) compartido(s)';
}
@override
String get shareDrawing => 'Compartir Dibujo';
@override
String get shareWithAllNearbyDevices =>
'Compartir con todos los dispositivos cercanos';
@override
String get shareToRoom => 'Compartir en Sala';
@override
String get sendToPersistentStorage =>
'Enviar a almacenamiento persistente de sala';
@override
String get deleteDrawingConfirm =>
'¿Está seguro de que desea eliminar este dibujo?';
@override
String get drawingDeleted => 'Dibujo eliminado';
@override
String yourDrawingsCount(int count) {
return 'Sus Dibujos ($count)';
}
@override
String get shared => 'Compartido';
@override
String get line => 'Línea';
@override
String get rectangle => 'Rectángulo';
}

View File

@@ -1827,4 +1827,39 @@ class AppLocalizationsFr extends AppLocalizations {
String newDrawingsShared(int count, String plural) {
return '$count nouveau(x) dessin(s) partagé(s)';
}
@override
String get shareDrawing => 'Partager le Dessin';
@override
String get shareWithAllNearbyDevices =>
'Partager avec tous les appareils à proximité';
@override
String get shareToRoom => 'Partager dans la Salle';
@override
String get sendToPersistentStorage =>
'Envoyer au stockage persistant de la salle';
@override
String get deleteDrawingConfirm =>
'Êtes-vous sûr de vouloir supprimer ce dessin?';
@override
String get drawingDeleted => 'Dessin supprimé';
@override
String yourDrawingsCount(int count) {
return 'Vos Dessins ($count)';
}
@override
String get shared => 'Partagé';
@override
String get line => 'Ligne';
@override
String get rectangle => 'Rectangle';
}

View File

@@ -1810,4 +1810,38 @@ class AppLocalizationsHr extends AppLocalizations {
String newDrawingsShared(int count, String plural) {
return 'Podijeljeno $count novi$plural crtež$plural';
}
@override
String get shareDrawing => 'Podijeli Crtež';
@override
String get shareWithAllNearbyDevices =>
'Podijeli sa svim obližnjim uređajima';
@override
String get shareToRoom => 'Podijeli u Sobu';
@override
String get sendToPersistentStorage => 'Pošalji u trajnu pohranu sobe';
@override
String get deleteDrawingConfirm =>
'Jeste li sigurni da želite izbrisati ovaj crtež?';
@override
String get drawingDeleted => 'Crtež izbrisan';
@override
String yourDrawingsCount(int count) {
return 'Vaši Crteži ($count)';
}
@override
String get shared => 'Podijeljeno';
@override
String get line => 'Linija';
@override
String get rectangle => 'Pravokutnik';
}

View File

@@ -1818,4 +1818,39 @@ class AppLocalizationsIt extends AppLocalizations {
String newDrawingsShared(int count, String plural) {
return '$count nuovo(i) disegno(i) condiviso(i)';
}
@override
String get shareDrawing => 'Condividi Disegno';
@override
String get shareWithAllNearbyDevices =>
'Condividi con tutti i dispositivi vicini';
@override
String get shareToRoom => 'Condividi nella Stanza';
@override
String get sendToPersistentStorage =>
'Invia allo storage persistente della stanza';
@override
String get deleteDrawingConfirm =>
'Sei sicuro di voler eliminare questo disegno?';
@override
String get drawingDeleted => 'Disegno eliminato';
@override
String yourDrawingsCount(int count) {
return 'I Tuoi Disegni ($count)';
}
@override
String get shared => 'Condiviso';
@override
String get line => 'Linea';
@override
String get rectangle => 'Rettangolo';
}

View File

@@ -1812,4 +1812,37 @@ class AppLocalizationsSl extends AppLocalizations {
String newDrawingsShared(int count, String plural) {
return 'Deljeno $count nov$plural risb$plural';
}
@override
String get shareDrawing => 'Deli Risbo';
@override
String get shareWithAllNearbyDevices => 'Deli z vsemi bližnjimi napravami';
@override
String get shareToRoom => 'Deli v Sobo';
@override
String get sendToPersistentStorage => 'Pošlji v trajno shrambo sobe';
@override
String get deleteDrawingConfirm =>
'Ali ste prepričani, da želite izbrisati to risbo?';
@override
String get drawingDeleted => 'Risba izbrisana';
@override
String yourDrawingsCount(int count) {
return 'Vaše Risbe ($count)';
}
@override
String get shared => 'Deljeno';
@override
String get line => 'Črta';
@override
String get rectangle => 'Pravokotnik';
}

View File

@@ -932,5 +932,15 @@
"drawingHidden": "Risba skrita z zemljevida",
"alreadyShared": "{count, plural, =1{1 že deljeno} other{{count} že deljeno}}",
"newDrawingsShared": "Deljeno {count} nov{plural} risb{plural}",
"drawingTools": "Orodja za risanje"
"drawingTools": "Orodja za risanje",
"shareDrawing": "Deli Risbo",
"shareWithAllNearbyDevices": "Deli z vsemi bližnjimi napravami",
"shareToRoom": "Deli v Sobo",
"sendToPersistentStorage": "Pošlji v trajno shrambo sobe",
"deleteDrawingConfirm": "Ali ste prepričani, da želite izbrisati to risbo?",
"drawingDeleted": "Risba izbrisana",
"yourDrawingsCount": "Vaše Risbe ({count})",
"shared": "Deljeno",
"line": "Črta",
"rectangle": "Pravokotnik"
}