Merge branch 'dweymouth:main' into main

This commit is contained in:
Benoît Smith
2024-08-17 21:08:26 +02:00
committed by GitHub
15 changed files with 287 additions and 52 deletions
+22 -10
View File
@@ -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()
+2 -3
View File
@@ -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",
+229
View File
@@ -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"
}
+2 -3
View File
@@ -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",
+3 -4
View File
@@ -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",
+2 -3
View File
@@ -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",
+3 -4
View File
@@ -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",
+3 -4
View File
@@ -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",
+2 -3
View File
@@ -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": "重新发行",
+2 -3
View File
@@ -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": "重新发行",
+2 -3
View File
@@ -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": "重新發行",
+3 -4
View File
@@ -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 {
+2 -2
View File
@@ -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(
+9 -5
View File
@@ -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 {
+1 -1
View File
@@ -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