more fyne.Do in controller

This commit is contained in:
Drew Weymouth
2025-02-08 08:35:34 -03:00
parent 94115f2875
commit 2ff3853015
2 changed files with 83 additions and 69 deletions
+77 -65
View File
@@ -403,7 +403,7 @@ func (m *Controller) DoEditPlaylistWorkflow(playlist *mediaprovider.Playlist) {
log.Printf("error deleting playlist: %s", err.Error()) log.Printf("error deleting playlist: %s", err.Error())
} else if rte := m.CurPageFunc(); rte.Page == Playlist && rte.Arg == playlist.ID { } else if rte := m.CurPageFunc(); rte.Page == Playlist && rte.Arg == playlist.ID {
// navigate to playlists page if user is still on the page of the deleted playlist // navigate to playlists page if user is still on the page of the deleted playlist
m.NavigateTo(PlaylistsRoute()) fyne.Do(func() { m.NavigateTo(PlaylistsRoute()) })
} }
}() }()
} }
@@ -418,7 +418,7 @@ func (m *Controller) DoEditPlaylistWorkflow(playlist *mediaprovider.Playlist) {
log.Printf("error updating playlist: %s", err.Error()) log.Printf("error updating playlist: %s", err.Error())
} else if rte := m.CurPageFunc(); rte.Page == Playlist && rte.Arg == playlist.ID { } else if rte := m.CurPageFunc(); rte.Page == Playlist && rte.Arg == playlist.ID {
// if user is on playlist page, reload to get the updates // if user is on playlist page, reload to get the updates
m.ReloadFunc() fyne.Do(m.ReloadFunc)
} }
}() }()
} }
@@ -479,16 +479,18 @@ func (m *Controller) PromptForLoginAndConnect() {
defer cancel() defer cancel()
err := m.App.ServerManager.TestConnectionAndAuth(ctx, server.ServerConnection, password) err := m.App.ServerManager.TestConnectionAndAuth(ctx, server.ServerConnection, password)
if err == backend.ErrUnreachable { fyne.Do(func() {
d.SetErrorText(lang.L("Server unreachable")) if err == backend.ErrUnreachable {
} else if err != nil { d.SetErrorText(lang.L("Server unreachable"))
d.SetErrorText(lang.L("Authentication failed")) } else if err != nil {
} else { d.SetErrorText(lang.L("Authentication failed"))
pop.Hide() } else {
m.trySetPasswordAndConnectToServer(server, password) pop.Hide()
m.doModalClosed() m.trySetPasswordAndConnectToServer(server, password)
} m.doModalClosed()
d.EnableSubmit() }
d.EnableSubmit()
})
}() }()
} }
d.OnEditServer = func(server *backend.ServerConfig) { d.OnEditServer = func(server *backend.ServerConfig) {
@@ -498,18 +500,21 @@ func (m *Controller) PromptForLoginAndConnect() {
editD.OnSubmit = func() { editD.OnSubmit = func() {
d.DisableSubmit() d.DisableSubmit()
go func() { go func() {
if m.testConnectionAndUpdateDialogText(editD) { success := m.testConnectionAndUpdateDialogText(editD)
// connection is good fyne.Do(func() {
editPop.Hide() if success {
server.Hostname = editD.Host // connection is good
server.AltHostname = editD.AltHost editPop.Hide()
server.Nickname = editD.Nickname server.Hostname = editD.Host
server.Username = editD.Username server.AltHostname = editD.AltHost
server.LegacyAuth = editD.LegacyAuth server.Nickname = editD.Nickname
m.trySetPasswordAndConnectToServer(server, editD.Password) server.Username = editD.Username
m.doModalClosed() server.LegacyAuth = editD.LegacyAuth
} m.trySetPasswordAndConnectToServer(server, editD.Password)
d.EnableSubmit() m.doModalClosed()
}
d.EnableSubmit()
})
}() }()
} }
editD.OnCancel = func() { editD.OnCancel = func() {
@@ -525,21 +530,24 @@ func (m *Controller) PromptForLoginAndConnect() {
newD.OnSubmit = func() { newD.OnSubmit = func() {
d.DisableSubmit() d.DisableSubmit()
go func() { go func() {
if m.testConnectionAndUpdateDialogText(newD) { success := m.testConnectionAndUpdateDialogText(newD)
// connection is good fyne.Do(func() {
newPop.Hide() if success {
conn := backend.ServerConnection{ // connection is good
ServerType: newD.ServerType, newPop.Hide()
Hostname: newD.Host, conn := backend.ServerConnection{
AltHostname: newD.AltHost, ServerType: newD.ServerType,
Username: newD.Username, Hostname: newD.Host,
LegacyAuth: newD.LegacyAuth, AltHostname: newD.AltHost,
Username: newD.Username,
LegacyAuth: newD.LegacyAuth,
}
server := m.App.ServerManager.AddServer(newD.Nickname, conn)
m.trySetPasswordAndConnectToServer(server, newD.Password)
m.doModalClosed()
} }
server := m.App.ServerManager.AddServer(newD.Nickname, conn) d.EnableSubmit()
m.trySetPasswordAndConnectToServer(server, newD.Password) })
m.doModalClosed()
}
d.EnableSubmit()
}() }()
} }
newD.OnCancel = func() { newD.OnCancel = func() {
@@ -757,24 +765,26 @@ func (c *Controller) ShowShareDialog(id string) {
return return
} }
hyperlink := widget.NewHyperlink(shareUrl.String(), shareUrl) fyne.Do(func() {
dlg := dialog.NewCustom(lang.L("Share content"), lang.L("OK"), hyperlink := widget.NewHyperlink(shareUrl.String(), shareUrl)
container.NewHBox( dlg := dialog.NewCustom(lang.L("Share content"), lang.L("OK"),
hyperlink, container.NewHBox(
widget.NewButtonWithIcon("", theme.ContentCopyIcon(), func() { hyperlink,
c.MainWindow.Clipboard().SetContent(hyperlink.Text) widget.NewButtonWithIcon("", theme.ContentCopyIcon(), func() {
}), c.MainWindow.Clipboard().SetContent(hyperlink.Text)
widget.NewButtonWithIcon("", theme.ViewRefreshIcon(), func() { }),
if shareUrl, err := c.createShareURL(id); err == nil { widget.NewButtonWithIcon("", theme.ViewRefreshIcon(), func() {
hyperlink.Text = shareUrl.String() if shareUrl, err := c.createShareURL(id); err == nil {
hyperlink.URL = shareUrl hyperlink.Text = shareUrl.String()
hyperlink.Refresh() hyperlink.URL = shareUrl
} hyperlink.Refresh()
}), }
), }),
c.MainWindow, ),
) c.MainWindow,
dlg.Show() )
dlg.Show()
})
}() }()
} }
@@ -908,15 +918,17 @@ func (c *Controller) ShowAlbumInfoDialog(albumID, albumName string, albumCover i
log.Print("Error getting album info: ", err) log.Print("Error getting album info: ", err)
return return
} }
dlg := dialogs.NewAlbumInfoDialog(albumInfo, albumName, albumCover) fyne.Do(func() {
pop := widget.NewModalPopUp(dlg, c.MainWindow.Canvas()) dlg := dialogs.NewAlbumInfoDialog(albumInfo, albumName, albumCover)
dlg.OnDismiss = func() { pop := widget.NewModalPopUp(dlg, c.MainWindow.Canvas())
pop.Hide() dlg.OnDismiss = func() {
c.doModalClosed() pop.Hide()
} c.doModalClosed()
c.ClosePopUpOnEscape(pop) }
c.haveModal = true c.ClosePopUpOnEscape(pop)
pop.Show() c.haveModal = true
pop.Show()
})
}() }()
} }
+6 -4
View File
@@ -111,11 +111,13 @@ func NewMainWindow(fyneApp fyne.App, appName, displayAppName, appVersion string,
m.BrowsingPane.AddSettingsMenuItem(lang.L("Check for Updates"), func() { m.BrowsingPane.AddSettingsMenuItem(lang.L("Check for Updates"), func() {
go func() { go func() {
if t := app.UpdateChecker.CheckLatestVersionTag(); t != "" && t != app.VersionTag() { if t := app.UpdateChecker.CheckLatestVersionTag(); t != "" && t != app.VersionTag() {
m.ShowNewVersionDialog(displayAppName, t) fyne.Do(func() { m.ShowNewVersionDialog(displayAppName, t) })
} else { } else {
dialog.ShowInformation(lang.L("No new version found"), fyne.Do(func() {
lang.L("You are running the latest version of")+" "+displayAppName, dialog.ShowInformation(lang.L("No new version found"),
m.Window) lang.L("You are running the latest version of")+" "+displayAppName,
m.Window)
})
} }
}() }()
}) })