diff --git a/ui/decredmaterial/votebar.go b/ui/decredmaterial/votebar.go index e49fe2fd5..0345d978d 100644 --- a/ui/decredmaterial/votebar.go +++ b/ui/decredmaterial/votebar.go @@ -16,6 +16,8 @@ import ( "github.com/planetdecred/godcr/ui/values" ) +// VoteBar widget implements voting stat for proposals. +// VoteBar shows the range/percentage of the yes votes and no votes against the total required. type VoteBar struct { yesVotes float32 noVotes float32 @@ -100,7 +102,8 @@ func (v *VoteBar) Layout(gtx C) D { yesWidth := (progressBarWidth / 100) * yesVotes noWidth := (progressBarWidth / 100) * noVotes - shader := func(width float32, color color.NRGBA, layer int) layout.Dimensions { + // progressScale represent the different progress bar layers + progressScale := func(width float32, color color.NRGBA, layer int) layout.Dimensions { maxHeight := unit.Dp(8) rW, rN = 0, 0 if layer == 2 { @@ -135,7 +138,7 @@ func (v *VoteBar) Layout(gtx C) D { return layout.Stack{Alignment: layout.W}.Layout(gtx, layout.Stacked(func(gtx layout.Context) layout.Dimensions { - return shader(progressBarWidth, v.bgColor, 1) + return progressScale(progressBarWidth, v.bgColor, 1) }), layout.Stacked(func(gtx layout.Context) layout.Dimensions { return layout.Flex{}.Layout(gtx, @@ -143,13 +146,13 @@ func (v *VoteBar) Layout(gtx C) D { if yesWidth == 0 { return D{} } - return shader(yesWidth, v.yesColor, 2) + return progressScale(yesWidth, v.yesColor, 2) }), layout.Rigid(func(gtx C) D { if noWidth == 0 { return D{} } - return shader(noWidth, v.noColor, 3) + return progressScale(noWidth, v.noColor, 3) }), ) }), diff --git a/ui/proposal_details_page.go b/ui/proposal_details_page.go index 283873910..7e6e78ff4 100644 --- a/ui/proposal_details_page.go +++ b/ui/proposal_details_page.go @@ -3,8 +3,6 @@ package ui import ( "encoding/base64" "fmt" - "os/exec" - "runtime" "strings" "gioui.org/layout" @@ -79,37 +77,19 @@ func (pg *proposalDetails) handle() { for token := range pg.proposalItems { for location, clickable := range pg.proposalItems[token].clickables { if clickable.Clicked() { - pg.goToURL(location) + goToURL(location) } } } for pg.viewInPoliteiaBtn.Clicked() { proposal := *pg.selectedProposal - pg.goToURL("https://proposals.decred.org/proposals/" + proposal.Token) + goToURL("https://proposals.decred.org/proposals/" + proposal.Token) } for pg.viewInGithubBtn.Clicked() { proposal := *pg.selectedProposal - pg.goToURL("https://github.com/decred-proposals/mainnet/tree/master/" + proposal.Token) - } -} - -func (pg *proposalDetails) goToURL(url string) { - var err error - - switch runtime.GOOS { - case "linux": - err = exec.Command("xdg-open", url).Start() - case "windows": - err = exec.Command("rundll32", "url.dll,FileProtocolHandler", url).Start() - case "darwin": - err = exec.Command("open", url).Start() - default: - err = fmt.Errorf("unsupported platform") - } - if err != nil { - log.Error(err) + goToURL("https://github.com/decred-proposals/mainnet/tree/master/" + proposal.Token) } } diff --git a/ui/proposals_page.go b/ui/proposals_page.go index daacd4c0f..9bad876f7 100644 --- a/ui/proposals_page.go +++ b/ui/proposals_page.go @@ -454,7 +454,7 @@ func (pg *proposalsPage) layoutProposalVoteBar(gtx C, proposalItem proposalItem) passPercentage := float32(proposalItem.proposal.PassPercentage) eligibleTickets := float32(proposalItem.proposal.EligibleTickets) - return proposalItem.voteBar.SetParams(yes, no, eligibleTickets, quorumPercent, passPercentage).LayoutWithLegend(gtx) + return proposalItem.voteBar.SetParams(yes, no, eligibleTickets, quorumPercent, passPercentage).Layout(gtx) } func (pg *proposalsPage) layoutProposalsList(gtx C) D { diff --git a/ui/util.go b/ui/util.go index 049bcbc85..b948a1138 100644 --- a/ui/util.go +++ b/ui/util.go @@ -5,6 +5,8 @@ package ui import ( "fmt" + "os/exec" + "runtime" "strconv" "strings" "time" @@ -94,3 +96,21 @@ func breakBalance(p *message.Printer, balance string) (b1, b2 string) { b2 = " " + b2 return } + +func goToURL(url string) { + var err error + + switch runtime.GOOS { + case "linux": + err = exec.Command("xdg-open", url).Start() + case "windows": + err = exec.Command("rundll32", "url.dll,FileProtocolHandler", url).Start() + case "darwin": + err = exec.Command("open", url).Start() + default: + err = fmt.Errorf("unsupported platform") + } + if err != nil { + log.Error(err) + } +}