From f56d3c58579ef764e56c1394d430dfb9cddb1cd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lie=20DELHAIE?= Date: Mon, 8 Sep 2025 01:21:53 +0200 Subject: [PATCH] wip --- cmd/gui/window/credential/credential.go | 55 +++++++++++++++++++++++++ cmd/gui/window/mainwindow/mainwindow.go | 5 +++ cmd/gui/window/sync/sync.go | 47 +++++++++++++++++++++ pkg/sync/sync.go | 2 + 4 files changed, 109 insertions(+) create mode 100644 cmd/gui/window/credential/credential.go create mode 100644 cmd/gui/window/sync/sync.go create mode 100644 pkg/sync/sync.go diff --git a/cmd/gui/window/credential/credential.go b/cmd/gui/window/credential/credential.go new file mode 100644 index 0000000..f4d3588 --- /dev/null +++ b/cmd/gui/window/credential/credential.go @@ -0,0 +1,55 @@ +package credential + +import ( + "image/color" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/canvas" + "fyne.io/fyne/v2/dialog" + "fyne.io/fyne/v2/widget" +) + +type ( + CredentialDialog struct { + *dialog.FormDialog + inputUsername *widget.Entry + inputPassword *widget.Entry + } +) + +func Make(remoteHostname string, callback func(v bool), w fyne.Window) *CredentialDialog { + label := canvas.NewText("Connexion to "+remoteHostname, color.Black) + + inputUsername := widget.NewEntry() + inputUsername.SetPlaceHolder("Username") + + inputPassword := widget.NewEntry() + inputPassword.Password = true + inputPassword.SetPlaceHolder("Password") + + formItems := []*widget.FormItem{ + { + Text: "", + Widget: label, + }, + { + Text: "Username", + Widget: inputUsername, + }, + { + Text: "Password", + Widget: inputPassword, + }, + } + + d := &CredentialDialog{ + FormDialog: dialog.NewForm("Syncing", "Connexion", "Cancel", formItems, callback, w), + inputUsername: inputUsername, + inputPassword: inputPassword, + } + return d +} + +func (c *CredentialDialog) Credentials() (string, string) { + return c.inputUsername.Text, c.inputPassword.Text +} diff --git a/cmd/gui/window/mainwindow/mainwindow.go b/cmd/gui/window/mainwindow/mainwindow.go index 8570016..0eda3e6 100644 --- a/cmd/gui/window/mainwindow/mainwindow.go +++ b/cmd/gui/window/mainwindow/mainwindow.go @@ -102,6 +102,11 @@ func Make(a fyne.App, d *data.Service) fyne.Window { folderSelection.Show() }), widget.NewToolbarSeparator(), + widget.NewToolbarAction(theme.UploadIcon(), func() { + go func() { + fmt.Println("todo") + }() + }), widget.NewToolbarSpacer(), widget.NewToolbarAction(theme.HelpIcon(), func() { aboutWindow := about.Make(a) diff --git a/cmd/gui/window/sync/sync.go b/cmd/gui/window/sync/sync.go new file mode 100644 index 0000000..1958c64 --- /dev/null +++ b/cmd/gui/window/sync/sync.go @@ -0,0 +1,47 @@ +package sync + +import ( + "image/color" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/canvas" + "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/dialog" + "fyne.io/fyne/v2/layout" + "fyne.io/fyne/v2/widget" +) + +type ( + SyncDialog struct { + *dialog.CustomDialog + label *canvas.Text + pg *widget.ProgressBar + } +) + +func Make(total int, w fyne.Window) *SyncDialog { + + title := canvas.NewText("Warming up...", color.Black) + title.Alignment = fyne.TextAlignCenter + + pg := widget.NewProgressBar() + pg.Max = float64(total) + + c := container.New(layout.NewVBoxLayout(), title, pg) + d := &SyncDialog{ + CustomDialog: dialog.NewCustomWithoutButtons("Syncing", c, w), + label: title, + pg: pg, + } + return d +} + +func (s *SyncDialog) UpdateLabel(msg string) { + s.label.Text = msg + s.Refresh() +} + +func (s *SyncDialog) UpdateProgressBar(percentage int) { + s.pg.Value = float64(percentage) + s.Refresh() +} diff --git a/pkg/sync/sync.go b/pkg/sync/sync.go new file mode 100644 index 0000000..7e211ac --- /dev/null +++ b/pkg/sync/sync.go @@ -0,0 +1,2 @@ +package sync +