Skip to content

Commit

Permalink
Start prototyping send view
Browse files Browse the repository at this point in the history
  • Loading branch information
Jacalz committed Jan 19, 2025
1 parent 951f521 commit 8af22ef
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 16 deletions.
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ require (
fyne.io/x/fyne v0.0.0-20250106132206-3228f6c50107
github.com/fynelabs/fyneselfupdate v0.1.1
github.com/fynelabs/selfupdate v0.2.0
github.com/rymdport/go-qrcode v1.1.0
github.com/rymdport/wormhole v0.1.1-0.20241116103349-4e36e05aff6c
github.com/stretchr/testify v1.9.0
)
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,8 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/rymdport/go-qrcode v1.1.0 h1:FBbvYA4pHGO+C22QmIx5wNVnlHQOGKOlXg9s6syskps=
github.com/rymdport/go-qrcode v1.1.0/go.mod h1:/DWqWDSfM/AcbuUr+/nNZev3SjO4bdZYqatpTpB9Js4=
github.com/rymdport/portal v0.3.0 h1:QRHcwKwx3kY5JTQcsVhmhC3TGqGQb9LFghVNUy8AdB8=
github.com/rymdport/portal v0.3.0/go.mod h1:kFF4jslnJ8pD5uCi17brj/ODlfIidOxlgUDTO5ncnC4=
github.com/rymdport/wormhole v0.1.1-0.20241116103349-4e36e05aff6c h1:PEoCBrif+0g6CvQb9yXZefHqgJJn+W7gM8P3ksb5E9w=
Expand Down
8 changes: 5 additions & 3 deletions internal/ui/components/stack.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@ type StackNavigator struct {
widget.BaseWidget
stack []fyne.CanvasObject
titles []string
OnBack func()

HideBackButton bool
OnBack func()
}

// NewNavigator creates a new Navigator instance.
Expand Down Expand Up @@ -64,7 +66,7 @@ func (n *StackNavigator) CreateRenderer() fyne.WidgetRenderer {
}

hideNavbar := len(n.stack) == 1
renderer.backButton.Hidden = hideNavbar
renderer.backButton.Hidden = hideNavbar || n.HideBackButton
renderer.titleLabel.Hidden = hideNavbar
renderer.separator.Hidden = hideNavbar

Expand Down Expand Up @@ -133,7 +135,7 @@ func (r *stackNavigatorRenderer) Refresh() {
r.titleLabel.Hidden = hideNavbar
r.titleLabel.Refresh()

r.backButton.Hidden = hideNavbar
r.backButton.Hidden = hideNavbar || r.parent.HideBackButton
r.backButton.Refresh()

r.separator.Hidden = hideNavbar
Expand Down
42 changes: 35 additions & 7 deletions internal/ui/send.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package ui

import (
"github.com/Jacalz/rymdport/v3/internal/ui/components"
qrcode "github.com/rymdport/go-qrcode"

"fyne.io/fyne/v2"
"fyne.io/fyne/v2/canvas"
Expand All @@ -10,35 +11,62 @@ import (
"fyne.io/fyne/v2/widget"
)

func buildSendView() fyne.CanvasObject {
return widget.NewLabel("Sending will be implemented soon...")
func buildSendView(nav *components.StackNavigator) fyne.CanvasObject {
code := "123-example-code"

qr, err := qrcode.New("wormhole-transfer:"+code, qrcode.High)
if err != nil {
fyne.LogError("Failed to encode qr code", err)
}

qr.BackgroundColor = theme.Color(theme.ColorNameBackground)
qr.ForegroundColor = theme.Color(theme.ColorNameForeground)

const size = 150
image := &canvas.Image{Image: qr.Image(size), FillMode: canvas.ImageFillOriginal, ScaleMode: canvas.ImageScalePixels}
image.SetMinSize(fyne.NewSquareSize(float32(size)))

codeLabel := &widget.Label{Text: code, TextStyle: fyne.TextStyle{Bold: true}, Alignment: fyne.TextAlignCenter}

progress := &widget.ProgressBar{Max: 100}

cancel := &widget.Button{Text: "Cancel", OnTapped: func() { nav.Pop() }}

return container.NewCenter(
container.NewVBox(
image,
codeLabel,
progress,
&widget.Separator{},
container.NewCenter(cancel),
),
)
}

func createSendPage(navigator *components.StackNavigator) fyne.CanvasObject {
func createSendPage(nav *components.StackNavigator) fyne.CanvasObject {
icon := canvas.NewImageFromResource(theme.UploadIcon())
icon.FillMode = canvas.ImageFillContain
icon.SetMinSize(fyne.NewSquareSize(200))

description := &widget.Label{Text: "Select data type below or drop files here.", Alignment: fyne.TextAlignCenter}

sendView := buildSendView()
file := &widget.Button{
Icon: theme.FileTextIcon(),
Text: "Send File",
Importance: widget.HighImportance,
OnTapped: func() { navigator.Push(sendView, "Sending File") },
OnTapped: func() { nav.Push(buildSendView(nav), "Sending File") },
}
folder := &widget.Button{
Icon: theme.FolderIcon(),
Text: "Send Folder",
Importance: widget.HighImportance,
OnTapped: func() { navigator.Push(sendView, "Sending Folder") },
OnTapped: func() { nav.Push(buildSendView(nav), "Sending Folder") },
}
text := &widget.Button{
Icon: theme.DocumentIcon(),
Text: "Send Text",
Importance: widget.HighImportance,
OnTapped: func() { navigator.Push(sendView, "Sending Text") },
OnTapped: func() { nav.Push(buildSendView(nav), "Sending Text") },
}

buttons := container.NewCenter(container.NewHBox(file, &widget.Separator{}, folder, &widget.Separator{}, text))
Expand Down
12 changes: 6 additions & 6 deletions internal/ui/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,16 @@ func Create(a fyne.App, w fyne.Window) fyne.CanvasObject {
widget.ShowPopUpMenuAtRelativePosition(menu, w.Canvas(), offset, dropdown)
}

navigator := &components.StackNavigator{}
navigator.OnBack = navigator.Pop
nav := &components.StackNavigator{HideBackButton: true}
nav.OnBack = nav.Pop
tabs := &container.AppTabs{
Items: []*container.TabItem{
{Text: "Send", Icon: theme.UploadIcon(), Content: createSendPage(navigator)},
{Text: "Receive", Icon: theme.DownloadIcon(), Content: createRecvPage(navigator)},
{Text: "Send", Icon: theme.UploadIcon(), Content: createSendPage(nav)},
{Text: "Receive", Icon: theme.DownloadIcon(), Content: createRecvPage(nav)},
},
}

upperRightCorner := container.NewBorder(container.NewBorder(nil, nil, nil, dropdown), nil, nil, nil)
navigator.Push(container.NewStack(tabs, upperRightCorner), "")
return navigator
nav.Push(container.NewStack(tabs, upperRightCorner), "")
return nav
}

0 comments on commit 8af22ef

Please sign in to comment.