Merge branch 'dweymouth:main' into main
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
"runtime"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -14,6 +15,7 @@ import (
|
|||||||
|
|
||||||
"fyne.io/fyne/v2"
|
"fyne.io/fyne/v2"
|
||||||
"fyne.io/fyne/v2/app"
|
"fyne.io/fyne/v2/app"
|
||||||
|
"fyne.io/fyne/v2/driver"
|
||||||
"fyne.io/fyne/v2/lang"
|
"fyne.io/fyne/v2/lang"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -62,16 +64,26 @@ func main() {
|
|||||||
}()
|
}()
|
||||||
|
|
||||||
// slightly hacky workaround for https://github.com/fyne-io/fyne/issues/4964
|
// slightly hacky workaround for https://github.com/fyne-io/fyne/issues/4964
|
||||||
workaroundWindowSize := sync.OnceFunc(func() {
|
if runtime.GOOS == "linux" {
|
||||||
time.Sleep(50 * time.Millisecond)
|
workaroundWindowSize := sync.OnceFunc(func() {
|
||||||
s := mainWindow.DesiredSize()
|
go func() {
|
||||||
mainWindow.Window.Resize(s.Subtract(fyne.NewSize(4, 0)))
|
isWayland := false
|
||||||
time.Sleep(50 * time.Millisecond)
|
mainWindow.Window.(driver.NativeWindow).RunNative(func(ctx any) {
|
||||||
mainWindow.Window.Resize(s) // back to desired size
|
_, isWayland = ctx.(*driver.WaylandWindowContext)
|
||||||
})
|
})
|
||||||
fyneApp.Lifecycle().SetOnEnteredForeground(func() {
|
if !isWayland {
|
||||||
workaroundWindowSize()
|
time.Sleep(50 * time.Millisecond)
|
||||||
})
|
s := mainWindow.DesiredSize()
|
||||||
|
mainWindow.Window.Resize(s.Subtract(fyne.NewSize(4, 0)))
|
||||||
|
time.Sleep(50 * time.Millisecond)
|
||||||
|
mainWindow.Window.Resize(s) // back to desired size
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
})
|
||||||
|
fyneApp.Lifecycle().SetOnEnteredForeground(func() {
|
||||||
|
workaroundWindowSize()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
mainWindow.ShowAndRun()
|
mainWindow.ShowAndRun()
|
||||||
|
|
||||||
|
|||||||
@@ -133,12 +133,11 @@
|
|||||||
"Playing": "Playing",
|
"Playing": "Playing",
|
||||||
"Playlist": "Playlist",
|
"Playlist": "Playlist",
|
||||||
"Playlists": "Playlists",
|
"Playlists": "Playlists",
|
||||||
"playlist by": "playlist by",
|
|
||||||
"Plays": "Plays",
|
"Plays": "Plays",
|
||||||
"Prevent clipping": "Prevent clipping",
|
"Prevent clipping": "Prevent clipping",
|
||||||
"Previous": "Previous",
|
"Previous": "Previous",
|
||||||
"Private": "Private",
|
"Private playlist by": "Private playlist by",
|
||||||
"Public": "Public",
|
"Public playlist by": "Public playlist by",
|
||||||
"Random": "Random",
|
"Random": "Random",
|
||||||
"Rating": "Rating",
|
"Rating": "Rating",
|
||||||
"reissued": "reissued",
|
"reissued": "reissued",
|
||||||
|
|||||||
@@ -0,0 +1,229 @@
|
|||||||
|
{
|
||||||
|
"A new version is available": "Una nueva versión está disponible",
|
||||||
|
"About": "Acerca de",
|
||||||
|
"Add Server": "Agregar servidor",
|
||||||
|
"Add to playlist": "Agregar a la lista de reproducción",
|
||||||
|
"Add to queue": "Agregar a la cola",
|
||||||
|
"Album": "Álbum",
|
||||||
|
"album": "álbum",
|
||||||
|
"Album count": "Número de álbumes",
|
||||||
|
"Album Count": "Número de álbumes",
|
||||||
|
"Album filters": "Filtros de álbumes",
|
||||||
|
"Album gain": "Ganancia del álbum",
|
||||||
|
"Album info not available": "Información del álbum no disponible",
|
||||||
|
"Album peak": "Pico del álbum",
|
||||||
|
"Albums": "Álbumes",
|
||||||
|
"albums": "álbumes",
|
||||||
|
"All": "Todos",
|
||||||
|
"All Tracks": "Todas las pistas",
|
||||||
|
"Alt. URL": "URL alternativa",
|
||||||
|
"Are you sure you want to delete the server": "¿Estás seguro de que quieres eliminar el servidor?",
|
||||||
|
"Artist": "Artista",
|
||||||
|
"Artist (A-Z)": "Artista (A-Z)",
|
||||||
|
"Artists": "Artistas",
|
||||||
|
"Artist biography not available.": "Biografía del artista no disponible.",
|
||||||
|
"Audio device": "Dispositivo de audio",
|
||||||
|
"Audio Drama": "Drama de audio",
|
||||||
|
"Audiobook": "Audiolibro",
|
||||||
|
"Authentication failed": "Autenticación fallida",
|
||||||
|
"Auto": "Automático",
|
||||||
|
"Autoselect device": "Seleccionar dispositivo automáticamente",
|
||||||
|
"Back": "Atrás",
|
||||||
|
"Bit rate": "Tasa de bits",
|
||||||
|
"BPM": "BPM",
|
||||||
|
"Broadcast": "Transmisión",
|
||||||
|
"Cancel": "Cancelar",
|
||||||
|
"Check for Updates": "Buscar actualizaciones",
|
||||||
|
"Close": "Cerrar",
|
||||||
|
"Close to system tray": "Cerrar a la bandeja del sistema",
|
||||||
|
"Comment": "Comentario",
|
||||||
|
"Compilation": "Compilación",
|
||||||
|
"Composer": "Compositor",
|
||||||
|
"Configure your music server to add radio stations": "Configura tu servidor de música para agregar estaciones de radio",
|
||||||
|
"Confirm Delete Playlist": "Confirmar eliminación de la lista de reproducción",
|
||||||
|
"Confirm Delete Server": "Confirmar eliminación del servidor",
|
||||||
|
"Connect to Server": "Conectar al servidor",
|
||||||
|
"Connecting": "Conectando",
|
||||||
|
"Connecting to": "Conectando a",
|
||||||
|
"Content type": "Tipo de contenido",
|
||||||
|
"Could not reach server": "No se pudo conectar con el servidor",
|
||||||
|
"Create new playlist": "Crear nueva lista de reproducción",
|
||||||
|
"day": "día",
|
||||||
|
"days": "días",
|
||||||
|
"Delete Playlist": "Eliminar lista de reproducción",
|
||||||
|
"Demo": "Demo",
|
||||||
|
"Description": "Descripción",
|
||||||
|
"Disable server transcoding": "Desactivar transcodificación del servidor",
|
||||||
|
"Disc number": "Número de disco",
|
||||||
|
"Discography": "Discografía",
|
||||||
|
"discs": "discos",
|
||||||
|
"DJ-Mix": "Mezcla de DJ",
|
||||||
|
"Download": "Descargar",
|
||||||
|
"Download completed": "Descarga completa",
|
||||||
|
"Duration": "Duración",
|
||||||
|
"Edit": "Editar",
|
||||||
|
"Edit Playlist": "Editar lista de reproducción",
|
||||||
|
"Edit server": "Editar servidor",
|
||||||
|
"Enable system tray": "Habilitar bandeja del sistema",
|
||||||
|
"Enabled": "Habilitado",
|
||||||
|
"Enter": "Ingresar",
|
||||||
|
"EP": "EP",
|
||||||
|
"Equalizer": "Ecualizador",
|
||||||
|
"Exclusive mode": "Modo exclusivo",
|
||||||
|
"Favorites": "Favoritos",
|
||||||
|
"Field Recording": "Grabación en campo",
|
||||||
|
"File path": "Ruta al archivo",
|
||||||
|
"File size": "Tamaño del archivo",
|
||||||
|
"Filter albums": "Filtrar álbumes",
|
||||||
|
"Filter genres": "Filtrar géneros",
|
||||||
|
"Forward": "Siguiente",
|
||||||
|
"Frequently Played": "Reproducidas frequentemente",
|
||||||
|
"General": "General",
|
||||||
|
"Genre": "Género",
|
||||||
|
"Genres": "Géneros",
|
||||||
|
"Github page": "Página de Github",
|
||||||
|
"Go to release page": "Ir a la página de lanzamiento",
|
||||||
|
"Hide": "Ocultar",
|
||||||
|
"Home": "Inicio",
|
||||||
|
"Home Page": "Página de inicio",
|
||||||
|
"hr": "hr",
|
||||||
|
"hrs": "hrs",
|
||||||
|
"Internet Radio Stations": "Estaciones de radio por Internet",
|
||||||
|
"Interview": "Entrevista",
|
||||||
|
"Is favorite": "Es favorito",
|
||||||
|
"Is not favorite": "No es favorito",
|
||||||
|
"Last played": "Última reproducción",
|
||||||
|
"Live": "En vivo",
|
||||||
|
"Locally": "Localmente",
|
||||||
|
"Log Out": "Cerrar sesión",
|
||||||
|
"Login to Server": "Iniciar sesión en el servidor",
|
||||||
|
"Lyrics": "Letras",
|
||||||
|
"Lyrics not available": "Letras no disponibles",
|
||||||
|
"Menu": "Menú",
|
||||||
|
"min": "min",
|
||||||
|
"minutes of track have been played": "minutos de la pista han sido reproducidos",
|
||||||
|
"Mixtape": "Mixtape",
|
||||||
|
"Mute": "Silencio",
|
||||||
|
"My Server": "Mi servidor",
|
||||||
|
"Name": "Nombre",
|
||||||
|
"Name (A-Z)": "Nombre (A-Z)",
|
||||||
|
"Next": "Siguiente",
|
||||||
|
"Nickname": "Apodo",
|
||||||
|
"No new version found": "No se encontró nueva versión",
|
||||||
|
"No radio stations available": "No hay estaciones de radio disponibles",
|
||||||
|
"None": "Ninguno",
|
||||||
|
"none": "ninguno",
|
||||||
|
"none selected": "ninguno seleccionado",
|
||||||
|
"OK": "OK",
|
||||||
|
"optional": "opcional",
|
||||||
|
"or when": "o cuando",
|
||||||
|
"Password": "Contraseña",
|
||||||
|
"Pause": "Pausar",
|
||||||
|
"Paused": "Pausada",
|
||||||
|
"Peak Meter": "Medidor de picos",
|
||||||
|
"percent of track is played": "porciento de la pista ha sido reproducida",
|
||||||
|
"Play": "Reproducir",
|
||||||
|
"Play Artist Radio": "Reproducir mezcla del artista",
|
||||||
|
"Play count": "Número de reproducciones",
|
||||||
|
"Play Discography": "Reproducir discografía",
|
||||||
|
"Play next": "Reproducir siguiente",
|
||||||
|
"Play Queue": "Cola de reproducción",
|
||||||
|
"Play random": "Reproducir aleatorio",
|
||||||
|
"Playback": "Reproducción",
|
||||||
|
"Playing": "Reproduciendo",
|
||||||
|
"Playlist": "Lista de reproducción",
|
||||||
|
"Playlists": "Listas de reproducción",
|
||||||
|
"Plays": "Reproducciones",
|
||||||
|
"Prevent clipping": "Prevenir recortes",
|
||||||
|
"Previous": "Anterior",
|
||||||
|
"Private playlist by": "Lista de reproducción privada de",
|
||||||
|
"Public playlist by": "Lista de reproducción pública de",
|
||||||
|
"Random": "Aleatorio",
|
||||||
|
"Rating": "Calificación",
|
||||||
|
"reissued": "emitido nuevamente",
|
||||||
|
"Recently Added": "Agregado recientemente",
|
||||||
|
"Recently Played": "Reproducido recientemente",
|
||||||
|
"Related": "Relacionado",
|
||||||
|
"Reload": "Recargar",
|
||||||
|
"Remix": "Remix",
|
||||||
|
"Remove from playlist": "Remover de la lista de reproducción",
|
||||||
|
"ReplayGain mode": "Modo ReplayGain",
|
||||||
|
"ReplayGain preamp": "Preamp ReplayGain",
|
||||||
|
"Restart required": "Reinicio requerido",
|
||||||
|
"Save play queue on exit": "Guardar cola de reproducción al salir",
|
||||||
|
"Saved at": "Guardado en",
|
||||||
|
"Scrobble when": "Scrobble cuando",
|
||||||
|
"Search Everywhere": "Buscar en todas partes",
|
||||||
|
"Search page": "Buscar en la página",
|
||||||
|
"Search playlists or new playlist name": "Buscar listas de reproducción o nombre de nueva lista",
|
||||||
|
"sec": "seg",
|
||||||
|
"selected": "seleccionado",
|
||||||
|
"Send playback statistics to server": "Enviar estadísticas de reproducción al servidor",
|
||||||
|
"Server": "Servidor",
|
||||||
|
"Server Type": "Tipo de servidor",
|
||||||
|
"Server unreachable": "Servidor inalcanzable",
|
||||||
|
"Set rating": "Establecer calificación",
|
||||||
|
"Settings": "Configuración",
|
||||||
|
"Share": "Compartir",
|
||||||
|
"Share content": "Compartir contenido",
|
||||||
|
"Show": "Mostrar",
|
||||||
|
"Show info": "Mostrar información",
|
||||||
|
"Show notification on track change": "Mostrar notificación en cambio de pista",
|
||||||
|
"Show play queue": "Mostrar cola de reproducción",
|
||||||
|
"Show year in album grid cards": "Mostrar año en tarjetas de cuadrícula de álbumes",
|
||||||
|
"Shuffle": "Aleatorio",
|
||||||
|
"Shuffle albums": "Aleatorio álbumes",
|
||||||
|
"Shuffle tracks": "Aleatorio pistas",
|
||||||
|
"Similar artists": "Artistas similares",
|
||||||
|
"Single": "Sencillo",
|
||||||
|
"Size": "Tamaño",
|
||||||
|
"Skip duplicate tracks": "Saltar pistas duplicadas",
|
||||||
|
"Skip this version": "Saltar esta versión",
|
||||||
|
"Soundtrack": "Banda sonora",
|
||||||
|
"Spoken Word": "Palabra Hablada",
|
||||||
|
"Startup page": "Página de inicio",
|
||||||
|
"Stopped": "Detenida",
|
||||||
|
"Support the project": "Apoya el proyecto",
|
||||||
|
"Switch Servers": "Cambiar servidores",
|
||||||
|
"Testing connection": "Probando conexión",
|
||||||
|
"Theme": "Tema",
|
||||||
|
"Time": "Tiempo",
|
||||||
|
"Title": "Título",
|
||||||
|
"Title (A-Z)": "Título (A-Z)",
|
||||||
|
"Top Tracks": "Mejores Pistas",
|
||||||
|
"Total time": "Tiempo total",
|
||||||
|
"Track": "Pista",
|
||||||
|
"track": "pista",
|
||||||
|
"Track count": "Número de pistas",
|
||||||
|
"Track gain": "Ganancia de la pista",
|
||||||
|
"Track Info": "Información de la pista",
|
||||||
|
"Track number": "Número de pista",
|
||||||
|
"Track peak": "Pico de la pista",
|
||||||
|
"tracks": "pistas",
|
||||||
|
"UI Scaling": "Escalado de la interfaz",
|
||||||
|
"URL": "URL",
|
||||||
|
"Use legacy authentication": "Usar autenticación legacy",
|
||||||
|
"Username": "Nombre de usuario",
|
||||||
|
"version": "versión",
|
||||||
|
"Visualizations": "Visualizaciones",
|
||||||
|
"Volume": "Volumen",
|
||||||
|
"wrong URL": "URL incorrecta",
|
||||||
|
"wrong username/password": "nombre de usuario/contraseña incorrectos",
|
||||||
|
"Year": "Año",
|
||||||
|
"Year (ascending)": "Año (ascendente)",
|
||||||
|
"Year (descending)": "Año (descendente)",
|
||||||
|
"Year from": "Año desde",
|
||||||
|
"You are running the latest version of": "Estás ejecutando la última versión de",
|
||||||
|
"Quit": "Salir",
|
||||||
|
"Rescan Library": "Reescanear la biblioteca",
|
||||||
|
"Search": "Buscar",
|
||||||
|
"Owner": "Propietario",
|
||||||
|
"To server": "Al servidor",
|
||||||
|
"Fav.": "Fav.",
|
||||||
|
"Set favorite": "Establecer como favorito",
|
||||||
|
"Unset favorite": "Quitar de favoritos",
|
||||||
|
"Remove from queue": "Remover de la cola",
|
||||||
|
"Play song radio": "Reproducir canciones similares",
|
||||||
|
"to": "a",
|
||||||
|
"by": "por"
|
||||||
|
}
|
||||||
@@ -133,12 +133,11 @@
|
|||||||
"Playing": "Lecture en cours",
|
"Playing": "Lecture en cours",
|
||||||
"Playlist": "Liste de lecture",
|
"Playlist": "Liste de lecture",
|
||||||
"Playlists": "Listes de lecture",
|
"Playlists": "Listes de lecture",
|
||||||
"playlist by": "liste de lecture créée par",
|
|
||||||
"Plays": "Lectures",
|
"Plays": "Lectures",
|
||||||
"Prevent clipping": "Empêcher le clipping",
|
"Prevent clipping": "Empêcher le clipping",
|
||||||
"Previous": "Précédente",
|
"Previous": "Précédente",
|
||||||
"Private": "Privée",
|
"Private playlist by": "Liste de lecture privée créée par",
|
||||||
"Public": "Publique",
|
"Public playlist by": "Liste de lecture publique créée par",
|
||||||
"Random": "Aléatoire",
|
"Random": "Aléatoire",
|
||||||
"Rating": "Notation",
|
"Rating": "Notation",
|
||||||
"reissued": "ressorti",
|
"reissued": "ressorti",
|
||||||
|
|||||||
@@ -133,12 +133,11 @@
|
|||||||
"Playing": "Riproduzione in corso",
|
"Playing": "Riproduzione in corso",
|
||||||
"Playlist": "Playlist",
|
"Playlist": "Playlist",
|
||||||
"Playlists": "Playlist",
|
"Playlists": "Playlist",
|
||||||
"playlist by": "playlist by",
|
|
||||||
"Plays": "Nº ascolti",
|
"Plays": "Nº ascolti",
|
||||||
"Prevent clipping": "Previeni clipping",
|
"Prevent clipping": "Previeni clipping",
|
||||||
"Previous": "Precedente",
|
"Previous": "Precedente",
|
||||||
"Private": "Privata",
|
"Private playlist by": "Playlist privata by",
|
||||||
"Public": "Pubblica",
|
"Public playlist by": "Playlist pubblica by",
|
||||||
"Random": "Casuale",
|
"Random": "Casuale",
|
||||||
"Rating": "Rating",
|
"Rating": "Rating",
|
||||||
"reissued": "reissued",
|
"reissued": "reissued",
|
||||||
@@ -155,7 +154,7 @@
|
|||||||
"Saved at": "Salvato in",
|
"Saved at": "Salvato in",
|
||||||
"Scrobble when": "Scrobbla quando",
|
"Scrobble when": "Scrobbla quando",
|
||||||
"Search Everywhere": "Cerca ovunque",
|
"Search Everywhere": "Cerca ovunque",
|
||||||
"Search page": "Pagina di ricerca",
|
"Search page": "Cerca nella pagina",
|
||||||
"Search playlists or new playlist name": "Cerca tra le playlist o creane una nuova",
|
"Search playlists or new playlist name": "Cerca tra le playlist o creane una nuova",
|
||||||
"sec": "sec",
|
"sec": "sec",
|
||||||
"selected": "selezionato",
|
"selected": "selezionato",
|
||||||
|
|||||||
@@ -127,12 +127,11 @@
|
|||||||
"Playing": "Odtwarza",
|
"Playing": "Odtwarza",
|
||||||
"Playlist": "Playlista",
|
"Playlist": "Playlista",
|
||||||
"Playlists": "Playlisty",
|
"Playlists": "Playlisty",
|
||||||
"playlist by": "playlista przez",
|
|
||||||
"Plays": "Ilość odtworzeń",
|
"Plays": "Ilość odtworzeń",
|
||||||
"Prevent clipping": "Zapobiegnij przycicnaniu",
|
"Prevent clipping": "Zapobiegnij przycicnaniu",
|
||||||
"Previous": "Poprzednie",
|
"Previous": "Poprzednie",
|
||||||
"Private": "Prywatna",
|
"Private playlist by": "Prywatna playlista przez",
|
||||||
"Public": "Publiczne",
|
"Public playlist by": "Publiczne playlista przez",
|
||||||
"Random": "Losowe",
|
"Random": "Losowe",
|
||||||
"Rating": "Ocena",
|
"Rating": "Ocena",
|
||||||
"reissued": "odnowiony",
|
"reissued": "odnowiony",
|
||||||
|
|||||||
@@ -133,12 +133,11 @@
|
|||||||
"Playing": "Tocando",
|
"Playing": "Tocando",
|
||||||
"Playlist": "Lista de reprodução",
|
"Playlist": "Lista de reprodução",
|
||||||
"Playlists": "Listas de reprodução",
|
"Playlists": "Listas de reprodução",
|
||||||
"playlist by": "lista de reprodução por",
|
|
||||||
"Plays": "Reproduções",
|
"Plays": "Reproduções",
|
||||||
"Prevent clipping": "Evitar clipping",
|
"Prevent clipping": "Evitar clipping",
|
||||||
"Previous": "Anterior",
|
"Previous": "Anterior",
|
||||||
"Private": "Privado",
|
"Private playlist by": "Lista de reprodução privado por",
|
||||||
"Public": "Público",
|
"Public playlist by": "Lista de reprodução público por",
|
||||||
"Random": "Aleatório",
|
"Random": "Aleatório",
|
||||||
"Rating": "Classificação",
|
"Rating": "Classificação",
|
||||||
"reissued": "reeditado",
|
"reissued": "reeditado",
|
||||||
@@ -155,7 +154,7 @@
|
|||||||
"Saved at": "Salvo em",
|
"Saved at": "Salvo em",
|
||||||
"Scrobble when": "Fazer scrobble quando",
|
"Scrobble when": "Fazer scrobble quando",
|
||||||
"Search Everywhere": "Pesquisar em todos os lugares",
|
"Search Everywhere": "Pesquisar em todos os lugares",
|
||||||
"Search page": "Página de pesquisa",
|
"Search page": "Pesquisar en página",
|
||||||
"Search playlists or new playlist name": "Pesquisar listas de reprodução ou criar uma nova",
|
"Search playlists or new playlist name": "Pesquisar listas de reprodução ou criar uma nova",
|
||||||
"sec": "s",
|
"sec": "s",
|
||||||
"selected": "selecionado",
|
"selected": "selecionado",
|
||||||
|
|||||||
@@ -127,12 +127,11 @@
|
|||||||
"Playing": "Redare",
|
"Playing": "Redare",
|
||||||
"Playlist": "Playlist",
|
"Playlist": "Playlist",
|
||||||
"Playlists": "Playlist-uri",
|
"Playlists": "Playlist-uri",
|
||||||
"playlist by": "playlist de",
|
|
||||||
"Plays": "Redări",
|
"Plays": "Redări",
|
||||||
"Prevent clipping": "Previne distorsiunea",
|
"Prevent clipping": "Previne distorsiunea",
|
||||||
"Previous": "Anterior",
|
"Previous": "Anterior",
|
||||||
"Private": "Privat",
|
"Private playlist by": "Playlist privat de",
|
||||||
"Public": "Public",
|
"Public playlist by": "Playlist public de",
|
||||||
"Random": "Aleatoriu",
|
"Random": "Aleatoriu",
|
||||||
"Rating": "Rating",
|
"Rating": "Rating",
|
||||||
"reissued": "reeditat",
|
"reissued": "reeditat",
|
||||||
@@ -148,7 +147,7 @@
|
|||||||
"Saved at": "Salvat la",
|
"Saved at": "Salvat la",
|
||||||
"Scrobble when": "Scrobblare când",
|
"Scrobble when": "Scrobblare când",
|
||||||
"Search Everywhere": "Caută peste tot",
|
"Search Everywhere": "Caută peste tot",
|
||||||
"Search page": "Pagină căutare",
|
"Search page": "Caută pagină",
|
||||||
"Search playlists or new playlist name": "Caută playlisturi sau nume de playlist nou",
|
"Search playlists or new playlist name": "Caută playlisturi sau nume de playlist nou",
|
||||||
"sec": "sec",
|
"sec": "sec",
|
||||||
"selected": "selectat",
|
"selected": "selectat",
|
||||||
|
|||||||
@@ -127,12 +127,11 @@
|
|||||||
"Playing": "正在播放",
|
"Playing": "正在播放",
|
||||||
"Playlist": "播放列表",
|
"Playlist": "播放列表",
|
||||||
"Playlists": "播放列表",
|
"Playlists": "播放列表",
|
||||||
"playlist by": "播放列表作者",
|
|
||||||
"Plays": "播放",
|
"Plays": "播放",
|
||||||
"Prevent clipping": "防止削波",
|
"Prevent clipping": "防止削波",
|
||||||
"Previous": "上一个",
|
"Previous": "上一个",
|
||||||
"Private": "私人",
|
"Private playlist by": "私人 播放列表作者",
|
||||||
"Public": "公开",
|
"Public playlist by": "公开 播放列表作者",
|
||||||
"Random": "随机",
|
"Random": "随机",
|
||||||
"Rating": "评分",
|
"Rating": "评分",
|
||||||
"reissued": "重新发行",
|
"reissued": "重新发行",
|
||||||
|
|||||||
@@ -127,12 +127,11 @@
|
|||||||
"Playing": "正在播放",
|
"Playing": "正在播放",
|
||||||
"Playlist": "播放列表",
|
"Playlist": "播放列表",
|
||||||
"Playlists": "播放列表",
|
"Playlists": "播放列表",
|
||||||
"playlist by": "播放列表作者",
|
|
||||||
"Plays": "播放",
|
"Plays": "播放",
|
||||||
"Prevent clipping": "防止削波",
|
"Prevent clipping": "防止削波",
|
||||||
"Previous": "上一个",
|
"Previous": "上一个",
|
||||||
"Private": "私人",
|
"Private playlist by": "私人 播放列表作者",
|
||||||
"Public": "公开",
|
"Public playlist by": "公开 播放列表作者",
|
||||||
"Random": "随机",
|
"Random": "随机",
|
||||||
"Rating": "评分",
|
"Rating": "评分",
|
||||||
"reissued": "重新发行",
|
"reissued": "重新发行",
|
||||||
|
|||||||
@@ -127,12 +127,11 @@
|
|||||||
"Playing": "正在播放",
|
"Playing": "正在播放",
|
||||||
"Playlist": "播放清單",
|
"Playlist": "播放清單",
|
||||||
"Playlists": "播放清單",
|
"Playlists": "播放清單",
|
||||||
"playlist by": "播放清單作者",
|
|
||||||
"Plays": "播放",
|
"Plays": "播放",
|
||||||
"Prevent clipping": "防止削波",
|
"Prevent clipping": "防止削波",
|
||||||
"Previous": "上一個",
|
"Previous": "上一個",
|
||||||
"Private": "私人",
|
"Private playlist by": "私人 播放清單作者",
|
||||||
"Public": "公開",
|
"Public playlist by": "公開 播放清單作者",
|
||||||
"Random": "隨機",
|
"Random": "隨機",
|
||||||
"Rating": "評分",
|
"Rating": "評分",
|
||||||
"reissued": "重新發行",
|
"reissued": "重新發行",
|
||||||
|
|||||||
@@ -343,12 +343,11 @@ func (a *PlaylistPageHeader) Update(playlist *mediaprovider.PlaylistWithTracks)
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (a *PlaylistPageHeader) formatPlaylistOwnerStr(p *mediaprovider.PlaylistWithTracks) string {
|
func (a *PlaylistPageHeader) formatPlaylistOwnerStr(p *mediaprovider.PlaylistWithTracks) string {
|
||||||
pubPriv := lang.L("Public")
|
pubPriv := lang.L("Public playlist by")
|
||||||
if !p.Public {
|
if !p.Public {
|
||||||
pubPriv = lang.L("Private")
|
pubPriv = lang.L("Private playlist by")
|
||||||
}
|
}
|
||||||
playlistBy := lang.L("playlist by")
|
return fmt.Sprintf("%s %s", pubPriv, p.Owner)
|
||||||
return fmt.Sprintf("%s %s %s", pubPriv, playlistBy, p.Owner)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *PlaylistPageHeader) formatPlaylistTrackTimeStr(p *mediaprovider.PlaylistWithTracks) string {
|
func (a *PlaylistPageHeader) formatPlaylistTrackTimeStr(p *mediaprovider.PlaylistWithTracks) string {
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ func NewAddEditServerDialog(title string, cancelable bool, prefillServer *backen
|
|||||||
nickField := widget.NewEntryWithData(binding.BindString(&a.Nickname))
|
nickField := widget.NewEntryWithData(binding.BindString(&a.Nickname))
|
||||||
nickField.SetPlaceHolder(lang.L("My Server"))
|
nickField.SetPlaceHolder(lang.L("My Server"))
|
||||||
nickField.OnSubmitted = func(_ string) { focusHandler(hostField) }
|
nickField.OnSubmitted = func(_ string) { focusHandler(hostField) }
|
||||||
a.submitBtn = widget.NewButton(lang.L("Enter"), a.doSubmit)
|
a.submitBtn = widget.NewButtonWithIcon(lang.L("Enter"), theme.ConfirmIcon(), a.doSubmit)
|
||||||
a.submitBtn.Importance = widget.HighImportance
|
a.submitBtn.Importance = widget.HighImportance
|
||||||
a.promptText = widget.NewRichTextWithText("")
|
a.promptText = widget.NewRichTextWithText("")
|
||||||
a.promptText.Hidden = true
|
a.promptText.Hidden = true
|
||||||
@@ -88,7 +88,7 @@ func NewAddEditServerDialog(title string, cancelable bool, prefillServer *backen
|
|||||||
bottomRow = container.NewHBox(
|
bottomRow = container.NewHBox(
|
||||||
a.promptText,
|
a.promptText,
|
||||||
layout.NewSpacer(),
|
layout.NewSpacer(),
|
||||||
widget.NewButton(lang.L("Cancel"), a.onCancel),
|
widget.NewButtonWithIcon(lang.L("Cancel"), theme.CancelIcon(), a.onCancel),
|
||||||
a.submitBtn)
|
a.submitBtn)
|
||||||
} else {
|
} else {
|
||||||
bottomRow = container.NewHBox(
|
bottomRow = container.NewHBox(
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import (
|
|||||||
"fyne.io/fyne/v2/data/binding"
|
"fyne.io/fyne/v2/data/binding"
|
||||||
"fyne.io/fyne/v2/lang"
|
"fyne.io/fyne/v2/lang"
|
||||||
"fyne.io/fyne/v2/layout"
|
"fyne.io/fyne/v2/layout"
|
||||||
|
"fyne.io/fyne/v2/theme"
|
||||||
"fyne.io/fyne/v2/widget"
|
"fyne.io/fyne/v2/widget"
|
||||||
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
||||||
)
|
)
|
||||||
@@ -36,25 +37,28 @@ func NewEditPlaylistDialog(playlist *mediaprovider.Playlist, showPublicCheck boo
|
|||||||
isPublicCheck.Hidden = !showPublicCheck
|
isPublicCheck.Hidden = !showPublicCheck
|
||||||
nameEntry := widget.NewEntryWithData(binding.BindString(&e.Name))
|
nameEntry := widget.NewEntryWithData(binding.BindString(&e.Name))
|
||||||
descriptionEntry := widget.NewEntryWithData(binding.BindString(&e.Description))
|
descriptionEntry := widget.NewEntryWithData(binding.BindString(&e.Description))
|
||||||
deleteBtn := widget.NewButton(lang.L("Delete Playlist"), func() {
|
deleteBtn := widget.NewButtonWithIcon(lang.L("Delete Playlist"), theme.DeleteIcon(), func() {
|
||||||
if e.OnDeletePlaylist != nil {
|
if e.OnDeletePlaylist != nil {
|
||||||
e.OnDeletePlaylist()
|
e.OnDeletePlaylist()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
submitBtn := widget.NewButton(lang.L("OK"), func() {
|
submitBtn := widget.NewButtonWithIcon(lang.L("OK"), theme.ConfirmIcon(), func() {
|
||||||
if e.OnUpdateMetadata != nil {
|
if e.OnUpdateMetadata != nil {
|
||||||
e.OnUpdateMetadata()
|
e.OnUpdateMetadata()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
submitBtn.Importance = widget.HighImportance
|
submitBtn.Importance = widget.HighImportance
|
||||||
cancelBtn := widget.NewButton(lang.L("Cancel"), func() {
|
cancelBtn := widget.NewButtonWithIcon(lang.L("Cancel"), theme.CancelIcon(), func() {
|
||||||
if e.OnCanceled != nil {
|
if e.OnCanceled != nil {
|
||||||
e.OnCanceled()
|
e.OnCanceled()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
title := widget.NewLabel(lang.L("Edit Playlist"))
|
||||||
|
title.Alignment = fyne.TextAlignCenter
|
||||||
|
title.TextStyle.Bold = true
|
||||||
e.container = container.NewVBox(
|
e.container = container.NewVBox(
|
||||||
container.NewHBox(layout.NewSpacer(), widget.NewLabel(lang.L("Edit Playlist")), layout.NewSpacer()),
|
title,
|
||||||
container.New(layout.NewFormLayout(),
|
container.New(layout.NewFormLayout(),
|
||||||
widget.NewLabel(lang.L("Name")),
|
widget.NewLabel(lang.L("Name")),
|
||||||
nameEntry,
|
nameEntry,
|
||||||
@@ -72,7 +76,7 @@ func NewEditPlaylistDialog(playlist *mediaprovider.Playlist, showPublicCheck boo
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e *EditPlaylistDialog) MinSize() fyne.Size {
|
func (e *EditPlaylistDialog) MinSize() fyne.Size {
|
||||||
return fyne.NewSize(300, e.BaseWidget.MinSize().Height)
|
return fyne.NewSize(400, e.BaseWidget.MinSize().Height)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *EditPlaylistDialog) CreateRenderer() fyne.WidgetRenderer {
|
func (e *EditPlaylistDialog) CreateRenderer() fyne.WidgetRenderer {
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ func NewLoginDialog(servers []*backend.ServerConfig, pwFetch PasswordFetchFunc)
|
|||||||
editBtn := widget.NewButtonWithIcon("", theme.DocumentCreateIcon(), l.onEditServer)
|
editBtn := widget.NewButtonWithIcon("", theme.DocumentCreateIcon(), l.onEditServer)
|
||||||
newBtn := widget.NewButtonWithIcon("", theme.ContentAddIcon(), l.onNewServer)
|
newBtn := widget.NewButtonWithIcon("", theme.ContentAddIcon(), l.onNewServer)
|
||||||
deleteBtn := widget.NewButtonWithIcon("", theme.DeleteIcon(), func() { l.onDeleteServer(l.serverSelect.SelectedIndex()) })
|
deleteBtn := widget.NewButtonWithIcon("", theme.DeleteIcon(), func() { l.onDeleteServer(l.serverSelect.SelectedIndex()) })
|
||||||
l.submitBtn = widget.NewButton(lang.L("OK"), l.onSubmit)
|
l.submitBtn = widget.NewButtonWithIcon(lang.L("OK"), theme.ConfirmIcon(), l.onSubmit)
|
||||||
l.submitBtn.Importance = widget.HighImportance
|
l.submitBtn.Importance = widget.HighImportance
|
||||||
l.promptText = widget.NewRichTextWithText("")
|
l.promptText = widget.NewRichTextWithText("")
|
||||||
l.promptText.Segments[0].(*widget.TextSegment).Style.ColorName = theme.ColorNameError
|
l.promptText.Segments[0].(*widget.TextSegment).Style.ColorName = theme.ColorNameError
|
||||||
|
|||||||
Reference in New Issue
Block a user