Path: blob/main/internal/window/login/loggingin.go
452 views
package login12import (3"context"45"github.com/diamondburned/gotk4/pkg/gtk/v4"6"github.com/diamondburned/gotkit/gtkutil/cssutil"7)89// LoadingPage is the busy spinner screen that's shown while the application is10// trying to log in.11type LoadingPage struct {12*gtk.Box13Header *gtk.HeaderBar1415Content struct { // whole page is draggable16*gtk.WindowHandle17Box *gtk.Box18Spinner *gtk.Spinner19Text *gtk.Label20}21}2223var loggingInCSS = cssutil.Applier("login-loading", `24.login-loading headerbar {25background: none;26}27.login-loading-text {28margin-top: 8px;29font-size: 1.2em;30}31`)3233// NewLoadingPage creates a new logging in loading screen.34func NewLoadingPage(ctx context.Context) *LoadingPage {35l := LoadingPage{}36l.Content.Spinner = gtk.NewSpinner()37l.Content.Spinner.SetSizeRequest(64, 64)3839l.Content.Text = gtk.NewLabel("Connecting...")40l.Content.Text.AddCSSClass("login-loading-text")4142l.Content.Box = gtk.NewBox(gtk.OrientationVertical, 0)43l.Content.Box.SetVAlign(gtk.AlignCenter)44l.Content.Box.SetHAlign(gtk.AlignCenter)45l.Content.Box.Append(l.Content.Spinner)46l.Content.Box.Append(l.Content.Text)4748l.Content.WindowHandle = gtk.NewWindowHandle()49l.Content.WindowHandle.SetVExpand(true)50l.Content.WindowHandle.SetChild(l.Content.Box)5152l.Header = gtk.NewHeaderBar()53l.Header.SetShowTitleButtons(true)5455l.Box = gtk.NewBox(gtk.OrientationVertical, 0)56l.Box.Append(l.Header)57l.Box.Append(l.Content)5859l.ConnectMap(l.Content.Spinner.Start)60l.ConnectUnmap(l.Content.Spinner.Stop)61loggingInCSS(l)6263return &l64}6566// SetText sets the text that's shown underneath the spinner.67func (l *LoadingPage) SetText(text string) {68l.Content.Text.SetText(text)69}707172