fix: improve delete-from-server button safety
Rename "Delete" to "Delete from server" with distinct icon and always-red styling to prevent accidental server deletions. Closes #568
This commit is contained in:
@@ -273,8 +273,9 @@
|
||||
"goToSeason": "Zur Staffel",
|
||||
"shufflePlay": "Zufallswiedergabe",
|
||||
"fileInfo": "Dateiinfo",
|
||||
"confirmDelete": "Sind Sie sicher, dass Sie dieses Element aus Ihrem Dateisystem löschen möchten?",
|
||||
"deleteMultipleWarning": "Mehrere Elemente können gelöscht werden.",
|
||||
"deleteFromServer": "Vom Server löschen",
|
||||
"confirmDelete": "Dieses Medium und seine Dateien werden dauerhaft von Ihrem Server gelöscht. Dies kann nicht rückgängig gemacht werden.",
|
||||
"deleteMultipleWarning": "Dies umfasst alle Episoden und deren Dateien.",
|
||||
"mediaDeletedSuccessfully": "Medienelement erfolgreich gelöscht",
|
||||
"mediaFailedToDelete": "Löschen des Medienelements fehlgeschlagen",
|
||||
"rate": "Bewerten"
|
||||
|
||||
@@ -273,8 +273,9 @@
|
||||
"goToSeason": "Go to season",
|
||||
"shufflePlay": "Shuffle Play",
|
||||
"fileInfo": "File Info",
|
||||
"confirmDelete": "Are you sure you want to delete this item from your filesystem?",
|
||||
"deleteMultipleWarning": "Multiple items may be deleted.",
|
||||
"deleteFromServer": "Delete from server",
|
||||
"confirmDelete": "This will permanently delete this media and its files from your server. This cannot be undone.",
|
||||
"deleteMultipleWarning": "This includes all episodes and their files.",
|
||||
"mediaDeletedSuccessfully": "Media item deleted successfully",
|
||||
"mediaFailedToDelete": "Failed to delete media item",
|
||||
"rate": "Rate"
|
||||
|
||||
@@ -273,8 +273,9 @@
|
||||
"goToSeason": "Ir a la temporada",
|
||||
"shufflePlay": "Reproducción Aleatoria",
|
||||
"fileInfo": "Información del Archivo",
|
||||
"confirmDelete": "¿Estás seguro de que quieres eliminar este elemento de tu sistema de archivos?",
|
||||
"deleteMultipleWarning": "Es posible que se eliminen varios elementos.",
|
||||
"deleteFromServer": "Eliminar del servidor",
|
||||
"confirmDelete": "Esto eliminará permanentemente este contenido y sus archivos de tu servidor. Esta acción no se puede deshacer.",
|
||||
"deleteMultipleWarning": "Esto incluye todos los episodios y sus archivos.",
|
||||
"mediaDeletedSuccessfully": "Elemento multimedia eliminado con éxito",
|
||||
"mediaFailedToDelete": "Error al eliminar el elemento multimedia",
|
||||
"rate": "Calificar"
|
||||
|
||||
@@ -273,8 +273,9 @@
|
||||
"goToSeason": "Aller à la saison",
|
||||
"shufflePlay": "Lecture aléatoire",
|
||||
"fileInfo": "Informations sur le fichier",
|
||||
"confirmDelete": "Êtes-vous sûr de vouloir supprimer cet élément de votre système de fichiers?",
|
||||
"deleteMultipleWarning": "Plusieurs éléments peuvent être supprimés.",
|
||||
"deleteFromServer": "Supprimer du serveur",
|
||||
"confirmDelete": "Cela supprimera définitivement ce média et ses fichiers de votre serveur. Cette action est irréversible.",
|
||||
"deleteMultipleWarning": "Cela inclut tous les épisodes et leurs fichiers.",
|
||||
"mediaDeletedSuccessfully": "Élément média supprimé avec succès",
|
||||
"mediaFailedToDelete": "Échec de la suppression de l'élément média",
|
||||
"rate": "Noter"
|
||||
|
||||
@@ -273,8 +273,9 @@
|
||||
"goToSeason": "Vai alla stagione",
|
||||
"shufflePlay": "Riproduzione casuale",
|
||||
"fileInfo": "Info sul file",
|
||||
"confirmDelete": "Sei sicuro di voler eliminare questo elemento dal tuo filesystem?",
|
||||
"deleteMultipleWarning": "Potrebbero essere eliminati più elementi.",
|
||||
"deleteFromServer": "Elimina dal server",
|
||||
"confirmDelete": "Questo eliminerà permanentemente questo contenuto e i suoi file dal tuo server. Questa azione non può essere annullata.",
|
||||
"deleteMultipleWarning": "Questo include tutti gli episodi e i loro file.",
|
||||
"mediaDeletedSuccessfully": "Elemento multimediale eliminato con successo",
|
||||
"mediaFailedToDelete": "Impossibile eliminare l'elemento multimediale",
|
||||
"rate": "Valuta"
|
||||
|
||||
@@ -273,8 +273,9 @@
|
||||
"goToSeason": "시즌으로 이동",
|
||||
"shufflePlay": "무작위 재생",
|
||||
"fileInfo": "파일 정보",
|
||||
"confirmDelete": "파일 시스템에서 이 항목을 삭제하시겠습니까?",
|
||||
"deleteMultipleWarning": "여러 항목이 삭제될 수 있습니다.",
|
||||
"deleteFromServer": "서버에서 삭제",
|
||||
"confirmDelete": "이 미디어와 파일이 서버에서 영구적으로 삭제됩니다. 이 작업은 취소할 수 없습니다.",
|
||||
"deleteMultipleWarning": "모든 에피소드와 파일이 포함됩니다.",
|
||||
"mediaDeletedSuccessfully": "미디어 항목이 성공적으로 삭제되었습니다",
|
||||
"mediaFailedToDelete": "미디어 항목 삭제 실패",
|
||||
"rate": "평가"
|
||||
|
||||
@@ -273,8 +273,9 @@
|
||||
"goToSeason": "Ga naar seizoen",
|
||||
"shufflePlay": "Willekeurig afspelen",
|
||||
"fileInfo": "Bestand info",
|
||||
"confirmDelete": "Weet je zeker dat je dit item van je bestandssysteem wilt verwijderen?",
|
||||
"deleteMultipleWarning": "Meerdere items kunnen worden verwijderd.",
|
||||
"deleteFromServer": "Verwijderen van server",
|
||||
"confirmDelete": "Dit zal deze media en de bijbehorende bestanden permanent van je server verwijderen. Dit kan niet ongedaan worden gemaakt.",
|
||||
"deleteMultipleWarning": "Dit omvat alle afleveringen en hun bestanden.",
|
||||
"mediaDeletedSuccessfully": "Media-item succesvol verwijderd",
|
||||
"mediaFailedToDelete": "Verwijderen van media-item mislukt",
|
||||
"rate": "Beoordelen"
|
||||
|
||||
@@ -407,8 +407,9 @@ class _TranslationsMediaMenuDe implements TranslationsMediaMenuEn {
|
||||
@override String get goToSeason => 'Zur Staffel';
|
||||
@override String get shufflePlay => 'Zufallswiedergabe';
|
||||
@override String get fileInfo => 'Dateiinfo';
|
||||
@override String get confirmDelete => 'Sind Sie sicher, dass Sie dieses Element aus Ihrem Dateisystem löschen möchten?';
|
||||
@override String get deleteMultipleWarning => 'Mehrere Elemente können gelöscht werden.';
|
||||
@override String get deleteFromServer => 'Vom Server löschen';
|
||||
@override String get confirmDelete => 'Dieses Medium und seine Dateien werden dauerhaft von Ihrem Server gelöscht. Dies kann nicht rückgängig gemacht werden.';
|
||||
@override String get deleteMultipleWarning => 'Dies umfasst alle Episoden und deren Dateien.';
|
||||
@override String get mediaDeletedSuccessfully => 'Medienelement erfolgreich gelöscht';
|
||||
@override String get mediaFailedToDelete => 'Löschen des Medienelements fehlgeschlagen';
|
||||
@override String get rate => 'Bewerten';
|
||||
@@ -1545,8 +1546,9 @@ extension on TranslationsDe {
|
||||
'mediaMenu.goToSeason' => 'Zur Staffel',
|
||||
'mediaMenu.shufflePlay' => 'Zufallswiedergabe',
|
||||
'mediaMenu.fileInfo' => 'Dateiinfo',
|
||||
'mediaMenu.confirmDelete' => 'Sind Sie sicher, dass Sie dieses Element aus Ihrem Dateisystem löschen möchten?',
|
||||
'mediaMenu.deleteMultipleWarning' => 'Mehrere Elemente können gelöscht werden.',
|
||||
'mediaMenu.deleteFromServer' => 'Vom Server löschen',
|
||||
'mediaMenu.confirmDelete' => 'Dieses Medium und seine Dateien werden dauerhaft von Ihrem Server gelöscht. Dies kann nicht rückgängig gemacht werden.',
|
||||
'mediaMenu.deleteMultipleWarning' => 'Dies umfasst alle Episoden und deren Dateien.',
|
||||
'mediaMenu.mediaDeletedSuccessfully' => 'Medienelement erfolgreich gelöscht',
|
||||
'mediaMenu.mediaFailedToDelete' => 'Löschen des Medienelements fehlgeschlagen',
|
||||
'mediaMenu.rate' => 'Bewerten',
|
||||
|
||||
@@ -876,11 +876,14 @@ class TranslationsMediaMenuEn {
|
||||
/// en: 'File Info'
|
||||
String get fileInfo => 'File Info';
|
||||
|
||||
/// en: 'Are you sure you want to delete this item from your filesystem?'
|
||||
String get confirmDelete => 'Are you sure you want to delete this item from your filesystem?';
|
||||
/// en: 'Delete from server'
|
||||
String get deleteFromServer => 'Delete from server';
|
||||
|
||||
/// en: 'Multiple items may be deleted.'
|
||||
String get deleteMultipleWarning => 'Multiple items may be deleted.';
|
||||
/// en: 'This will permanently delete this media and its files from your server. This cannot be undone.'
|
||||
String get confirmDelete => 'This will permanently delete this media and its files from your server. This cannot be undone.';
|
||||
|
||||
/// en: 'This includes all episodes and their files.'
|
||||
String get deleteMultipleWarning => 'This includes all episodes and their files.';
|
||||
|
||||
/// en: 'Media item deleted successfully'
|
||||
String get mediaDeletedSuccessfully => 'Media item deleted successfully';
|
||||
@@ -3147,8 +3150,9 @@ extension on Translations {
|
||||
'mediaMenu.goToSeason' => 'Go to season',
|
||||
'mediaMenu.shufflePlay' => 'Shuffle Play',
|
||||
'mediaMenu.fileInfo' => 'File Info',
|
||||
'mediaMenu.confirmDelete' => 'Are you sure you want to delete this item from your filesystem?',
|
||||
'mediaMenu.deleteMultipleWarning' => 'Multiple items may be deleted.',
|
||||
'mediaMenu.deleteFromServer' => 'Delete from server',
|
||||
'mediaMenu.confirmDelete' => 'This will permanently delete this media and its files from your server. This cannot be undone.',
|
||||
'mediaMenu.deleteMultipleWarning' => 'This includes all episodes and their files.',
|
||||
'mediaMenu.mediaDeletedSuccessfully' => 'Media item deleted successfully',
|
||||
'mediaMenu.mediaFailedToDelete' => 'Failed to delete media item',
|
||||
'mediaMenu.rate' => 'Rate',
|
||||
|
||||
@@ -407,8 +407,9 @@ class _TranslationsMediaMenuEs implements TranslationsMediaMenuEn {
|
||||
@override String get goToSeason => 'Ir a la temporada';
|
||||
@override String get shufflePlay => 'Reproducción Aleatoria';
|
||||
@override String get fileInfo => 'Información del Archivo';
|
||||
@override String get confirmDelete => '¿Estás seguro de que quieres eliminar este elemento de tu sistema de archivos?';
|
||||
@override String get deleteMultipleWarning => 'Es posible que se eliminen varios elementos.';
|
||||
@override String get deleteFromServer => 'Eliminar del servidor';
|
||||
@override String get confirmDelete => 'Esto eliminará permanentemente este contenido y sus archivos de tu servidor. Esta acción no se puede deshacer.';
|
||||
@override String get deleteMultipleWarning => 'Esto incluye todos los episodios y sus archivos.';
|
||||
@override String get mediaDeletedSuccessfully => 'Elemento multimedia eliminado con éxito';
|
||||
@override String get mediaFailedToDelete => 'Error al eliminar el elemento multimedia';
|
||||
@override String get rate => 'Calificar';
|
||||
@@ -1545,8 +1546,9 @@ extension on TranslationsEs {
|
||||
'mediaMenu.goToSeason' => 'Ir a la temporada',
|
||||
'mediaMenu.shufflePlay' => 'Reproducción Aleatoria',
|
||||
'mediaMenu.fileInfo' => 'Información del Archivo',
|
||||
'mediaMenu.confirmDelete' => '¿Estás seguro de que quieres eliminar este elemento de tu sistema de archivos?',
|
||||
'mediaMenu.deleteMultipleWarning' => 'Es posible que se eliminen varios elementos.',
|
||||
'mediaMenu.deleteFromServer' => 'Eliminar del servidor',
|
||||
'mediaMenu.confirmDelete' => 'Esto eliminará permanentemente este contenido y sus archivos de tu servidor. Esta acción no se puede deshacer.',
|
||||
'mediaMenu.deleteMultipleWarning' => 'Esto incluye todos los episodios y sus archivos.',
|
||||
'mediaMenu.mediaDeletedSuccessfully' => 'Elemento multimedia eliminado con éxito',
|
||||
'mediaMenu.mediaFailedToDelete' => 'Error al eliminar el elemento multimedia',
|
||||
'mediaMenu.rate' => 'Calificar',
|
||||
|
||||
@@ -407,8 +407,9 @@ class _TranslationsMediaMenuFr implements TranslationsMediaMenuEn {
|
||||
@override String get goToSeason => 'Aller à la saison';
|
||||
@override String get shufflePlay => 'Lecture aléatoire';
|
||||
@override String get fileInfo => 'Informations sur le fichier';
|
||||
@override String get confirmDelete => 'Êtes-vous sûr de vouloir supprimer cet élément de votre système de fichiers?';
|
||||
@override String get deleteMultipleWarning => 'Plusieurs éléments peuvent être supprimés.';
|
||||
@override String get deleteFromServer => 'Supprimer du serveur';
|
||||
@override String get confirmDelete => 'Cela supprimera définitivement ce média et ses fichiers de votre serveur. Cette action est irréversible.';
|
||||
@override String get deleteMultipleWarning => 'Cela inclut tous les épisodes et leurs fichiers.';
|
||||
@override String get mediaDeletedSuccessfully => 'Élément média supprimé avec succès';
|
||||
@override String get mediaFailedToDelete => 'Échec de la suppression de l\'élément média';
|
||||
@override String get rate => 'Noter';
|
||||
@@ -1545,8 +1546,9 @@ extension on TranslationsFr {
|
||||
'mediaMenu.goToSeason' => 'Aller à la saison',
|
||||
'mediaMenu.shufflePlay' => 'Lecture aléatoire',
|
||||
'mediaMenu.fileInfo' => 'Informations sur le fichier',
|
||||
'mediaMenu.confirmDelete' => 'Êtes-vous sûr de vouloir supprimer cet élément de votre système de fichiers?',
|
||||
'mediaMenu.deleteMultipleWarning' => 'Plusieurs éléments peuvent être supprimés.',
|
||||
'mediaMenu.deleteFromServer' => 'Supprimer du serveur',
|
||||
'mediaMenu.confirmDelete' => 'Cela supprimera définitivement ce média et ses fichiers de votre serveur. Cette action est irréversible.',
|
||||
'mediaMenu.deleteMultipleWarning' => 'Cela inclut tous les épisodes et leurs fichiers.',
|
||||
'mediaMenu.mediaDeletedSuccessfully' => 'Élément média supprimé avec succès',
|
||||
'mediaMenu.mediaFailedToDelete' => 'Échec de la suppression de l\'élément média',
|
||||
'mediaMenu.rate' => 'Noter',
|
||||
|
||||
@@ -407,8 +407,9 @@ class _TranslationsMediaMenuIt implements TranslationsMediaMenuEn {
|
||||
@override String get goToSeason => 'Vai alla stagione';
|
||||
@override String get shufflePlay => 'Riproduzione casuale';
|
||||
@override String get fileInfo => 'Info sul file';
|
||||
@override String get confirmDelete => 'Sei sicuro di voler eliminare questo elemento dal tuo filesystem?';
|
||||
@override String get deleteMultipleWarning => 'Potrebbero essere eliminati più elementi.';
|
||||
@override String get deleteFromServer => 'Elimina dal server';
|
||||
@override String get confirmDelete => 'Questo eliminerà permanentemente questo contenuto e i suoi file dal tuo server. Questa azione non può essere annullata.';
|
||||
@override String get deleteMultipleWarning => 'Questo include tutti gli episodi e i loro file.';
|
||||
@override String get mediaDeletedSuccessfully => 'Elemento multimediale eliminato con successo';
|
||||
@override String get mediaFailedToDelete => 'Impossibile eliminare l\'elemento multimediale';
|
||||
@override String get rate => 'Valuta';
|
||||
@@ -1545,8 +1546,9 @@ extension on TranslationsIt {
|
||||
'mediaMenu.goToSeason' => 'Vai alla stagione',
|
||||
'mediaMenu.shufflePlay' => 'Riproduzione casuale',
|
||||
'mediaMenu.fileInfo' => 'Info sul file',
|
||||
'mediaMenu.confirmDelete' => 'Sei sicuro di voler eliminare questo elemento dal tuo filesystem?',
|
||||
'mediaMenu.deleteMultipleWarning' => 'Potrebbero essere eliminati più elementi.',
|
||||
'mediaMenu.deleteFromServer' => 'Elimina dal server',
|
||||
'mediaMenu.confirmDelete' => 'Questo eliminerà permanentemente questo contenuto e i suoi file dal tuo server. Questa azione non può essere annullata.',
|
||||
'mediaMenu.deleteMultipleWarning' => 'Questo include tutti gli episodi e i loro file.',
|
||||
'mediaMenu.mediaDeletedSuccessfully' => 'Elemento multimediale eliminato con successo',
|
||||
'mediaMenu.mediaFailedToDelete' => 'Impossibile eliminare l\'elemento multimediale',
|
||||
'mediaMenu.rate' => 'Valuta',
|
||||
|
||||
@@ -407,8 +407,9 @@ class _TranslationsMediaMenuKo implements TranslationsMediaMenuEn {
|
||||
@override String get goToSeason => '시즌으로 이동';
|
||||
@override String get shufflePlay => '무작위 재생';
|
||||
@override String get fileInfo => '파일 정보';
|
||||
@override String get confirmDelete => '파일 시스템에서 이 항목을 삭제하시겠습니까?';
|
||||
@override String get deleteMultipleWarning => '여러 항목이 삭제될 수 있습니다.';
|
||||
@override String get deleteFromServer => '서버에서 삭제';
|
||||
@override String get confirmDelete => '이 미디어와 파일이 서버에서 영구적으로 삭제됩니다. 이 작업은 취소할 수 없습니다.';
|
||||
@override String get deleteMultipleWarning => '모든 에피소드와 파일이 포함됩니다.';
|
||||
@override String get mediaDeletedSuccessfully => '미디어 항목이 성공적으로 삭제되었습니다';
|
||||
@override String get mediaFailedToDelete => '미디어 항목 삭제 실패';
|
||||
@override String get rate => '평가';
|
||||
@@ -1545,8 +1546,9 @@ extension on TranslationsKo {
|
||||
'mediaMenu.goToSeason' => '시즌으로 이동',
|
||||
'mediaMenu.shufflePlay' => '무작위 재생',
|
||||
'mediaMenu.fileInfo' => '파일 정보',
|
||||
'mediaMenu.confirmDelete' => '파일 시스템에서 이 항목을 삭제하시겠습니까?',
|
||||
'mediaMenu.deleteMultipleWarning' => '여러 항목이 삭제될 수 있습니다.',
|
||||
'mediaMenu.deleteFromServer' => '서버에서 삭제',
|
||||
'mediaMenu.confirmDelete' => '이 미디어와 파일이 서버에서 영구적으로 삭제됩니다. 이 작업은 취소할 수 없습니다.',
|
||||
'mediaMenu.deleteMultipleWarning' => '모든 에피소드와 파일이 포함됩니다.',
|
||||
'mediaMenu.mediaDeletedSuccessfully' => '미디어 항목이 성공적으로 삭제되었습니다',
|
||||
'mediaMenu.mediaFailedToDelete' => '미디어 항목 삭제 실패',
|
||||
'mediaMenu.rate' => '평가',
|
||||
|
||||
@@ -407,8 +407,9 @@ class _TranslationsMediaMenuNl implements TranslationsMediaMenuEn {
|
||||
@override String get goToSeason => 'Ga naar seizoen';
|
||||
@override String get shufflePlay => 'Willekeurig afspelen';
|
||||
@override String get fileInfo => 'Bestand info';
|
||||
@override String get confirmDelete => 'Weet je zeker dat je dit item van je bestandssysteem wilt verwijderen?';
|
||||
@override String get deleteMultipleWarning => 'Meerdere items kunnen worden verwijderd.';
|
||||
@override String get deleteFromServer => 'Verwijderen van server';
|
||||
@override String get confirmDelete => 'Dit zal deze media en de bijbehorende bestanden permanent van je server verwijderen. Dit kan niet ongedaan worden gemaakt.';
|
||||
@override String get deleteMultipleWarning => 'Dit omvat alle afleveringen en hun bestanden.';
|
||||
@override String get mediaDeletedSuccessfully => 'Media-item succesvol verwijderd';
|
||||
@override String get mediaFailedToDelete => 'Verwijderen van media-item mislukt';
|
||||
@override String get rate => 'Beoordelen';
|
||||
@@ -1545,8 +1546,9 @@ extension on TranslationsNl {
|
||||
'mediaMenu.goToSeason' => 'Ga naar seizoen',
|
||||
'mediaMenu.shufflePlay' => 'Willekeurig afspelen',
|
||||
'mediaMenu.fileInfo' => 'Bestand info',
|
||||
'mediaMenu.confirmDelete' => 'Weet je zeker dat je dit item van je bestandssysteem wilt verwijderen?',
|
||||
'mediaMenu.deleteMultipleWarning' => 'Meerdere items kunnen worden verwijderd.',
|
||||
'mediaMenu.deleteFromServer' => 'Verwijderen van server',
|
||||
'mediaMenu.confirmDelete' => 'Dit zal deze media en de bijbehorende bestanden permanent van je server verwijderen. Dit kan niet ongedaan worden gemaakt.',
|
||||
'mediaMenu.deleteMultipleWarning' => 'Dit omvat alle afleveringen en hun bestanden.',
|
||||
'mediaMenu.mediaDeletedSuccessfully' => 'Media-item succesvol verwijderd',
|
||||
'mediaMenu.mediaFailedToDelete' => 'Verwijderen van media-item mislukt',
|
||||
'mediaMenu.rate' => 'Beoordelen',
|
||||
|
||||
@@ -407,8 +407,9 @@ class _TranslationsMediaMenuSv implements TranslationsMediaMenuEn {
|
||||
@override String get goToSeason => 'Gå till säsong';
|
||||
@override String get shufflePlay => 'Blanda uppspelning';
|
||||
@override String get fileInfo => 'Filinformation';
|
||||
@override String get confirmDelete => 'Är du säker på att du vill ta bort detta objekt från ditt filsystem?';
|
||||
@override String get deleteMultipleWarning => 'Flera objekt kan komma att tas bort.';
|
||||
@override String get deleteFromServer => 'Ta bort från servern';
|
||||
@override String get confirmDelete => 'Detta kommer permanent ta bort detta media och dess filer från din server. Detta kan inte ångras.';
|
||||
@override String get deleteMultipleWarning => 'Detta inkluderar alla avsnitt och deras filer.';
|
||||
@override String get mediaDeletedSuccessfully => 'Mediaobjekt borttaget';
|
||||
@override String get mediaFailedToDelete => 'Kunde inte ta bort mediaobjekt';
|
||||
@override String get rate => 'Betygsätt';
|
||||
@@ -1545,8 +1546,9 @@ extension on TranslationsSv {
|
||||
'mediaMenu.goToSeason' => 'Gå till säsong',
|
||||
'mediaMenu.shufflePlay' => 'Blanda uppspelning',
|
||||
'mediaMenu.fileInfo' => 'Filinformation',
|
||||
'mediaMenu.confirmDelete' => 'Är du säker på att du vill ta bort detta objekt från ditt filsystem?',
|
||||
'mediaMenu.deleteMultipleWarning' => 'Flera objekt kan komma att tas bort.',
|
||||
'mediaMenu.deleteFromServer' => 'Ta bort från servern',
|
||||
'mediaMenu.confirmDelete' => 'Detta kommer permanent ta bort detta media och dess filer från din server. Detta kan inte ångras.',
|
||||
'mediaMenu.deleteMultipleWarning' => 'Detta inkluderar alla avsnitt och deras filer.',
|
||||
'mediaMenu.mediaDeletedSuccessfully' => 'Mediaobjekt borttaget',
|
||||
'mediaMenu.mediaFailedToDelete' => 'Kunde inte ta bort mediaobjekt',
|
||||
'mediaMenu.rate' => 'Betygsätt',
|
||||
|
||||
@@ -407,8 +407,9 @@ class _TranslationsMediaMenuZh implements TranslationsMediaMenuEn {
|
||||
@override String get goToSeason => '转到季';
|
||||
@override String get shufflePlay => '随机播放';
|
||||
@override String get fileInfo => '文件信息';
|
||||
@override String get confirmDelete => '确定要从文件系统中删除此项吗?';
|
||||
@override String get deleteMultipleWarning => '可能会删除多个项目。';
|
||||
@override String get deleteFromServer => '从服务器删除';
|
||||
@override String get confirmDelete => '这将永久删除此媒体及其文件。此操作无法撤销。';
|
||||
@override String get deleteMultipleWarning => '这包括所有剧集及其文件。';
|
||||
@override String get mediaDeletedSuccessfully => '媒体项已成功删除';
|
||||
@override String get mediaFailedToDelete => '删除媒体项失败';
|
||||
@override String get rate => '评分';
|
||||
@@ -1545,8 +1546,9 @@ extension on TranslationsZh {
|
||||
'mediaMenu.goToSeason' => '转到季',
|
||||
'mediaMenu.shufflePlay' => '随机播放',
|
||||
'mediaMenu.fileInfo' => '文件信息',
|
||||
'mediaMenu.confirmDelete' => '确定要从文件系统中删除此项吗?',
|
||||
'mediaMenu.deleteMultipleWarning' => '可能会删除多个项目。',
|
||||
'mediaMenu.deleteFromServer' => '从服务器删除',
|
||||
'mediaMenu.confirmDelete' => '这将永久删除此媒体及其文件。此操作无法撤销。',
|
||||
'mediaMenu.deleteMultipleWarning' => '这包括所有剧集及其文件。',
|
||||
'mediaMenu.mediaDeletedSuccessfully' => '媒体项已成功删除',
|
||||
'mediaMenu.mediaFailedToDelete' => '删除媒体项失败',
|
||||
'mediaMenu.rate' => '评分',
|
||||
|
||||
@@ -273,8 +273,9 @@
|
||||
"goToSeason": "Gå till säsong",
|
||||
"shufflePlay": "Blanda uppspelning",
|
||||
"fileInfo": "Filinformation",
|
||||
"confirmDelete": "Är du säker på att du vill ta bort detta objekt från ditt filsystem?",
|
||||
"deleteMultipleWarning": "Flera objekt kan komma att tas bort.",
|
||||
"deleteFromServer": "Ta bort från servern",
|
||||
"confirmDelete": "Detta kommer permanent ta bort detta media och dess filer från din server. Detta kan inte ångras.",
|
||||
"deleteMultipleWarning": "Detta inkluderar alla avsnitt och deras filer.",
|
||||
"mediaDeletedSuccessfully": "Mediaobjekt borttaget",
|
||||
"mediaFailedToDelete": "Kunde inte ta bort mediaobjekt",
|
||||
"rate": "Betygsätt"
|
||||
|
||||
@@ -273,8 +273,9 @@
|
||||
"goToSeason": "转到季",
|
||||
"shufflePlay": "随机播放",
|
||||
"fileInfo": "文件信息",
|
||||
"confirmDelete": "确定要从文件系统中删除此项吗?",
|
||||
"deleteMultipleWarning": "可能会删除多个项目。",
|
||||
"deleteFromServer": "从服务器删除",
|
||||
"confirmDelete": "这将永久删除此媒体及其文件。此操作无法撤销。",
|
||||
"deleteMultipleWarning": "这包括所有剧集及其文件。",
|
||||
"mediaDeletedSuccessfully": "媒体项已成功删除",
|
||||
"mediaFailedToDelete": "删除媒体项失败",
|
||||
"rate": "评分"
|
||||
|
||||
@@ -115,8 +115,8 @@ Future<({bool confirmed, bool checked})> showConfirmDialogWithCheckbox(
|
||||
|
||||
/// Shows a delete confirmation dialog.
|
||||
/// Convenience wrapper around [showConfirmDialog] with destructive styling.
|
||||
Future<bool> showDeleteConfirmation(BuildContext context, {required String title, required String message}) {
|
||||
return showConfirmDialog(context, title: title, message: message, confirmText: t.common.delete, isDestructive: true);
|
||||
Future<bool> showDeleteConfirmation(BuildContext context, {required String title, required String message, String? confirmText}) {
|
||||
return showConfirmDialog(context, title: title, message: message, confirmText: confirmText ?? t.common.delete, isDestructive: true);
|
||||
}
|
||||
|
||||
/// Shows a text input dialog for creating/naming items
|
||||
|
||||
@@ -48,6 +48,12 @@ class FocusableListTile extends StatefulWidget {
|
||||
/// An optional color to display behind the menu item when being hovered.
|
||||
final Color? hoverColor;
|
||||
|
||||
/// An optional color for the text of the list tile.
|
||||
final Color? textColor;
|
||||
|
||||
/// An optional color for the icon of the list tile.
|
||||
final Color? iconColor;
|
||||
|
||||
const FocusableListTile({
|
||||
super.key,
|
||||
this.title,
|
||||
@@ -64,6 +70,8 @@ class FocusableListTile extends StatefulWidget {
|
||||
this.contentPadding,
|
||||
this.suppressInitialSelect = false,
|
||||
this.hoverColor,
|
||||
this.textColor,
|
||||
this.iconColor,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -89,6 +97,8 @@ class _FocusableListTileState extends State<FocusableListTile> {
|
||||
focusNode: widget.suppressInitialSelect ? null : widget.focusNode,
|
||||
autofocus: widget.suppressInitialSelect ? false : widget.autofocus,
|
||||
hoverColor: widget.hoverColor,
|
||||
textColor: widget.textColor,
|
||||
iconColor: widget.iconColor,
|
||||
);
|
||||
|
||||
if (!widget.suppressInitialSelect) {
|
||||
|
||||
@@ -37,8 +37,9 @@ class _MenuAction {
|
||||
final IconData icon;
|
||||
final String label;
|
||||
final Color? hoverColor;
|
||||
final Color? foregroundColor;
|
||||
|
||||
_MenuAction({required this.value, required this.icon, required this.label, this.hoverColor});
|
||||
_MenuAction({required this.value, required this.icon, required this.label, this.hoverColor, this.foregroundColor});
|
||||
}
|
||||
|
||||
/// A reusable wrapper widget that adds a context menu (long press / right click)
|
||||
@@ -284,9 +285,10 @@ class MediaContextMenuState extends State<MediaContextMenu> {
|
||||
menuActions.add(
|
||||
_MenuAction(
|
||||
value: 'delete_media',
|
||||
icon: Symbols.delete_rounded,
|
||||
label: t.common.delete,
|
||||
icon: Symbols.delete_forever_rounded,
|
||||
label: t.mediaMenu.deleteFromServer,
|
||||
hoverColor: Theme.of(context).colorScheme.error,
|
||||
foregroundColor: Theme.of(context).colorScheme.error,
|
||||
),
|
||||
);
|
||||
}
|
||||
@@ -1137,8 +1139,9 @@ class MediaContextMenuState extends State<MediaContextMenu> {
|
||||
// Show confirmation dialog
|
||||
final confirmed = await showDeleteConfirmation(
|
||||
context,
|
||||
title: t.common.delete,
|
||||
message: "${t.mediaMenu.confirmDelete}${isMultipleMediaItems ? "\n${t.mediaMenu.deleteMultipleWarning}" : ""}",
|
||||
title: t.mediaMenu.deleteFromServer,
|
||||
message: "${t.mediaMenu.confirmDelete}${isMultipleMediaItems ? "\n\n${t.mediaMenu.deleteMultipleWarning}" : ""}",
|
||||
confirmText: t.mediaMenu.deleteFromServer,
|
||||
);
|
||||
|
||||
if (!confirmed || !context.mounted) return;
|
||||
@@ -1330,6 +1333,8 @@ class _FocusableContextMenuSheetState extends State<_FocusableContextMenuSheet>
|
||||
title: Text(action.label),
|
||||
onTap: () => OverlaySheetController.closeAdaptive(context, action.value),
|
||||
hoverColor: action.hoverColor,
|
||||
textColor: action.foregroundColor,
|
||||
iconColor: action.foregroundColor,
|
||||
);
|
||||
}),
|
||||
],
|
||||
@@ -1435,6 +1440,8 @@ class _FocusablePopupMenuState extends State<_FocusablePopupMenu> {
|
||||
title: Text(action.label),
|
||||
onTap: () => Navigator.pop(context, action.value),
|
||||
hoverColor: action.hoverColor,
|
||||
textColor: action.foregroundColor,
|
||||
iconColor: action.foregroundColor,
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user