Skip to content

Commit f47f4f0

Browse files
committed
refactor: move eventity to app widget package
1 parent 795061e commit f47f4f0

15 files changed

+197
-201
lines changed

internal/app/testutil/testutil.go

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"testing"
1010
"time"
1111

12+
"fyne.io/fyne/v2"
1213
"github.com/ErikKalkoken/go-set"
1314

1415
"github.com/ErikKalkoken/evebuddy/internal/app"
@@ -280,3 +281,82 @@ func (c CacheFake2) SetString(k string, v string, d time.Duration) {
280281
func Ptr[T any](v T) *T {
281282
return &v
282283
}
284+
285+
type EveImageServiceFake struct {
286+
Alliance fyne.Resource
287+
Character fyne.Resource
288+
Corporation fyne.Resource
289+
Err error
290+
Faction fyne.Resource
291+
Type fyne.Resource
292+
}
293+
294+
func (s *EveImageServiceFake) AllianceLogo(id int64, size int) (fyne.Resource, error) {
295+
return s.Alliance, s.Err
296+
}
297+
298+
func (s *EveImageServiceFake) AllianceLogoAsync(id int64, size int, setter func(r fyne.Resource)) {
299+
setter(s.Alliance)
300+
}
301+
302+
func (s *EveImageServiceFake) CharacterPortrait(id int64, size int) (fyne.Resource, error) {
303+
return s.Character, s.Err
304+
}
305+
306+
func (s *EveImageServiceFake) CharacterPortraitAsync(id int64, size int, setter func(r fyne.Resource)) {
307+
setter(s.Character)
308+
}
309+
310+
func (s *EveImageServiceFake) CorporationLogo(id int64, size int) (fyne.Resource, error) {
311+
return s.Corporation, s.Err
312+
}
313+
314+
func (s *EveImageServiceFake) CorporationLogoAsync(id int64, size int, setter func(r fyne.Resource)) {
315+
setter(s.Corporation)
316+
}
317+
func (s *EveImageServiceFake) FactionLogo(id int64, size int) (fyne.Resource, error) {
318+
return s.Faction, s.Err
319+
}
320+
321+
func (s *EveImageServiceFake) FactionLogoAsync(id int64, size int, setter func(r fyne.Resource)) {
322+
setter(s.Faction)
323+
}
324+
325+
func (s *EveImageServiceFake) InventoryTypeRender(id int64, size int) (fyne.Resource, error) {
326+
return s.Type, s.Err
327+
}
328+
329+
func (s *EveImageServiceFake) InventoryTypeRenderAsync(id int64, size int, setter func(r fyne.Resource)) {
330+
setter(s.Type)
331+
}
332+
333+
func (s *EveImageServiceFake) InventoryTypeIcon(id int64, size int) (fyne.Resource, error) {
334+
return s.Type, s.Err
335+
}
336+
337+
func (s *EveImageServiceFake) InventoryTypeIconAsync(id int64, size int, setter func(r fyne.Resource)) {
338+
setter(s.Type)
339+
}
340+
341+
func (s *EveImageServiceFake) InventoryTypeBPO(id int64, size int) (fyne.Resource, error) {
342+
return s.Type, s.Err
343+
}
344+
345+
func (s *EveImageServiceFake) InventoryTypeBPOAsync(id int64, size int, setter func(r fyne.Resource)) {
346+
setter(s.Type)
347+
}
348+
349+
func (s *EveImageServiceFake) InventoryTypeBPC(id int64, size int) (fyne.Resource, error) {
350+
return s.Type, s.Err
351+
}
352+
353+
func (s *EveImageServiceFake) InventoryTypeBPCAsync(id int64, size int, setter func(r fyne.Resource)) {
354+
setter(s.Type)
355+
}
356+
func (s *EveImageServiceFake) InventoryTypeSKIN(id int64, size int) (fyne.Resource, error) {
357+
return s.Type, s.Err
358+
}
359+
360+
func (s *EveImageServiceFake) InventoryTypeSKINAsync(id int64, size int, setter func(r fyne.Resource)) {
361+
setter(s.Type)
362+
}

internal/app/ui/charactercommunications.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919

2020
"github.com/ErikKalkoken/evebuddy/internal/app"
2121
"github.com/ErikKalkoken/evebuddy/internal/app/icons"
22+
awidget "github.com/ErikKalkoken/evebuddy/internal/app/widget"
2223
ihumanize "github.com/ErikKalkoken/evebuddy/internal/humanize"
2324
"github.com/ErikKalkoken/evebuddy/internal/optional"
2425
)
@@ -402,7 +403,7 @@ type communicationDetail struct {
402403
subject *widget.Label
403404
}
404405

405-
func newCommunicationDetail(eis eveEntityEIS, show func(*app.EveEntity)) *communicationDetail {
406+
func newCommunicationDetail(eis awidget.EveEntityEIS, show func(*app.EveEntity)) *communicationDetail {
406407
subject := widget.NewLabel("")
407408
subject.SizeName = theme.SizeNameSubHeadingText
408409
subject.Wrapping = fyne.TextWrapWord

internal/app/ui/charactercontacts.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222

2323
"github.com/ErikKalkoken/evebuddy/internal/app"
2424
"github.com/ErikKalkoken/evebuddy/internal/app/icons"
25+
awidget "github.com/ErikKalkoken/evebuddy/internal/app/widget"
2526
ihumanize "github.com/ErikKalkoken/evebuddy/internal/humanize"
2627
"github.com/ErikKalkoken/evebuddy/internal/optional"
2728
iwidget "github.com/ErikKalkoken/evebuddy/internal/widget"
@@ -462,7 +463,7 @@ type characterContactItem struct {
462463
widget.BaseWidget
463464

464465
blocked *ttwidget.Icon
465-
eis eveEntityEIS
466+
eis awidget.EveEntityEIS
466467
icon *canvas.Image
467468
category *widget.Label
468469
npc *widget.Label
@@ -472,7 +473,7 @@ type characterContactItem struct {
472473
watched *ttwidget.Icon
473474
}
474475

475-
func newCharacterContactItem(eis eveEntityEIS) *characterContactItem {
476+
func newCharacterContactItem(eis awidget.EveEntityEIS) *characterContactItem {
476477
icon := iwidget.NewImageFromResource(icons.BlankSvg, fyne.NewSquareSize(32))
477478
name := widget.NewLabel("")
478479
name.Truncation = fyne.TextTruncateClip
@@ -529,7 +530,7 @@ func (w *characterContactItem) set(r characterContactRow) {
529530
w.labels.SetText(r.labelsDisplay)
530531
w.category.SetText(r.category)
531532
w.symbol.set(r.standing, r.standingCategory)
532-
loadEveEntityIconAsync(w.eis, r.contact, func(r fyne.Resource) {
533+
awidget.LoadEveEntityIconAsync(w.eis, r.contact, func(r fyne.Resource) {
533534
w.icon.Resource = r
534535
w.icon.Refresh()
535536
})

internal/app/ui/charactersendmail.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616

1717
"github.com/ErikKalkoken/evebuddy/internal/app"
1818
"github.com/ErikKalkoken/evebuddy/internal/app/icons"
19+
awidget "github.com/ErikKalkoken/evebuddy/internal/app/widget"
1920
iwidget "github.com/ErikKalkoken/evebuddy/internal/widget"
2021
)
2122

@@ -26,9 +27,9 @@ type characterSendMail struct {
2627

2728
body *widget.Entry
2829
character atomic.Pointer[app.Character]
29-
from *eveEntityEntry
30+
from *awidget.EveEntityEntry
3031
subject *widget.Entry
31-
to *eveEntityEntry
32+
to *awidget.EveEntityEntry
3233
u *baseUI
3334
w fyne.Window
3435
}
@@ -41,7 +42,7 @@ func newCharacterSendMail(u *baseUI, c *app.Character, mode app.SendMailMode, m
4142
a.character.Store(c)
4243
a.ExtendBaseWidget(a)
4344

44-
a.from = newEveEntityEntry(widget.NewLabel("From"), labelWith, u.eis)
45+
a.from = awidget.NewEveEntityEntry(widget.NewLabel("From"), labelWith, u.eis)
4546
a.from.ShowInfoWindow = u.ShowEveEntityInfoWindow
4647
a.from.Set([]*app.EveEntity{{ID: c.ID, Name: c.EveCharacter.Name, Category: app.EveEntityCharacter}})
4748
a.from.Disable()
@@ -51,7 +52,7 @@ func newCharacterSendMail(u *baseUI, c *app.Character, mode app.SendMailMode, m
5152
a.to.Add(ee)
5253
}, a.w)
5354
})
54-
a.to = newEveEntityEntry(toButton, labelWith, u.eis)
55+
a.to = awidget.NewEveEntityEntry(toButton, labelWith, u.eis)
5556
a.to.ShowInfoWindow = u.ShowEveEntityInfoWindow
5657
a.to.Placeholder = "Tap To-Button to add recipients..."
5758

@@ -172,7 +173,7 @@ func showAddDialog(u *baseUI, characterID int64, onSelected func(ee *app.EveEnti
172173
row := co.(*fyne.Container).Objects
173174
row[0].(*widget.Label).SetText(ee.Name)
174175
image := row[1].(*canvas.Image)
175-
loadEveEntityIconAsync(u.eis, ee, func(r fyne.Resource) {
176+
awidget.LoadEveEntityIconAsync(u.eis, ee, func(r fyne.Resource) {
176177
image.Resource = r
177178
image.Refresh()
178179
})

internal/app/ui/clones.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020

2121
"github.com/ErikKalkoken/evebuddy/internal/app"
2222
"github.com/ErikKalkoken/evebuddy/internal/app/icons"
23+
awidget "github.com/ErikKalkoken/evebuddy/internal/app/widget"
2324
iwidget "github.com/ErikKalkoken/evebuddy/internal/widget"
2425
"github.com/ErikKalkoken/evebuddy/internal/xslices"
2526
)
@@ -126,18 +127,18 @@ func newClones(u *baseUI) *clones {
126127
Alignment: fyne.TextAlignTrailing,
127128
})
128129
},
129-
}, makeEveEntityColumn(makeEveEntityColumnParams[cloneRow]{
130-
columnID: clonesColCharacter,
131-
eis: u.eis,
132-
getEntity: func(r cloneRow) *app.EveEntity {
130+
}, awidget.MakeEveEntityColumn(awidget.MakeEveEntityColumnParams[cloneRow]{
131+
ColumnID: clonesColCharacter,
132+
EIS: u.eis,
133+
GetEntity: func(r cloneRow) *app.EveEntity {
133134
return &app.EveEntity{
134135
ID: r.jc.Character.ID,
135136
Name: r.jc.Character.Name,
136137
Category: app.EveEntityCharacter,
137138
}
138139
},
139-
isAvatar: true,
140-
label: "Character",
140+
IsAvatar: true,
141+
Label: "Character",
141142
}), {
142143
ID: clonesColJumps,
143144
Label: "Jumps",

internal/app/ui/corporationmember.go

Lines changed: 15 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@ import (
88
"sync/atomic"
99

1010
"fyne.io/fyne/v2"
11-
"fyne.io/fyne/v2/canvas"
1211
"fyne.io/fyne/v2/container"
13-
"fyne.io/fyne/v2/layout"
1412
"fyne.io/fyne/v2/theme"
1513
"fyne.io/fyne/v2/widget"
1614
kxwidget "github.com/ErikKalkoken/fyne-kx/widget"
@@ -19,9 +17,9 @@ import (
1917

2018
"github.com/ErikKalkoken/evebuddy/internal/app"
2119
"github.com/ErikKalkoken/evebuddy/internal/app/icons"
20+
awidget "github.com/ErikKalkoken/evebuddy/internal/app/widget"
2221
ihumanize "github.com/ErikKalkoken/evebuddy/internal/humanize"
2322
"github.com/ErikKalkoken/evebuddy/internal/optional"
24-
iwidget "github.com/ErikKalkoken/evebuddy/internal/widget"
2523
)
2624

2725
type corporationMemberRow struct {
@@ -209,50 +207,38 @@ func (a *corporationMember) fetchRows(ctx context.Context, corporationID, ceoID
209207
type corporationMemberItem struct {
210208
widget.BaseWidget
211209

212-
ceo *ttwidget.Icon
213-
name *widget.Label
214-
owned *ttwidget.Icon
215-
portrait *canvas.Image
216-
portraitLoader loadFuncAsync
210+
ceo *ttwidget.Icon
211+
owned *ttwidget.Icon
212+
member *awidget.EntityListItem
217213
}
218214

219-
func newCorporationMemberItem(portraitLoader loadFuncAsync) *corporationMemberItem {
215+
func newCorporationMemberItem(loadCharacterIcon loadFuncAsync) *corporationMemberItem {
220216
ceo := ttwidget.NewIcon(theme.NewWarningThemedResource(icons.CrownSvg))
221217
ceo.SetToolTip("CEO of this corporation")
222218
owned := ttwidget.NewIcon(theme.NewSuccessThemedResource(icons.CheckDecagramSvg))
223219
owned.SetToolTip("You own this character")
224-
portrait := iwidget.NewImageFromResource(
225-
icons.Characterplaceholder64Jpeg,
226-
fyne.NewSquareSize(app.IconUnitSize),
227-
)
228220
w := &corporationMemberItem{
229-
ceo: ceo,
230-
name: widget.NewLabel(""),
231-
owned: owned,
232-
portrait: portrait,
233-
portraitLoader: portraitLoader,
221+
ceo: ceo,
222+
owned: owned,
223+
member: awidget.NewEntityListItem(false, loadCharacterIcon),
234224
}
235225
w.ExtendBaseWidget(w)
236226
return w
237227
}
238228

239229
func (w *corporationMemberItem) CreateRenderer() fyne.WidgetRenderer {
240-
p := theme.Padding()
241-
c := container.NewPadded(container.NewHBox(
242-
container.New(layout.NewCustomPaddedLayout(p, p, p, 0), w.portrait),
243-
w.name,
244-
w.owned,
245-
w.ceo,
230+
c := container.NewPadded(container.NewBorder(
231+
nil,
232+
nil,
233+
nil,
234+
container.NewHBox(w.owned, w.ceo),
235+
w.member,
246236
))
247237
return widget.NewSimpleRenderer(c)
248238
}
249239

250240
func (w *corporationMemberItem) set(r corporationMemberRow) {
251-
w.portraitLoader(r.id, app.IconPixelSize, func(r fyne.Resource) {
252-
w.portrait.Resource = r
253-
w.portrait.Refresh()
254-
})
255-
w.name.SetText(r.name)
241+
w.member.Set(r.id, r.name)
256242
if r.isOwned {
257243
w.owned.Show()
258244
} else {

internal/app/ui/corporationstructures.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
"github.com/ErikKalkoken/go-set"
1818

1919
"github.com/ErikKalkoken/evebuddy/internal/app"
20+
awidget "github.com/ErikKalkoken/evebuddy/internal/app/widget"
2021
ihumanize "github.com/ErikKalkoken/evebuddy/internal/humanize"
2122
"github.com/ErikKalkoken/evebuddy/internal/optional"
2223
iwidget "github.com/ErikKalkoken/evebuddy/internal/widget"
@@ -108,11 +109,11 @@ func newCorporationStructures(u *baseUI) *corporationStructures {
108109
Update: func(r corporationStructureRow, co fyne.CanvasObject) {
109110
co.(*iwidget.RichText).SetWithText(r.structureName)
110111
},
111-
}, makeEveEntityColumn(makeEveEntityColumnParams[corporationStructureRow]{
112-
columnID: structuresColType,
113-
eis: u.eis,
114-
label: "Type",
115-
getEntity: func(r corporationStructureRow) *app.EveEntity {
112+
}, awidget.MakeEveEntityColumn(awidget.MakeEveEntityColumnParams[corporationStructureRow]{
113+
ColumnID: structuresColType,
114+
EIS: u.eis,
115+
Label: "Type",
116+
GetEntity: func(r corporationStructureRow) *app.EveEntity {
116117
return &app.EveEntity{
117118
Category: app.EveEntityInventoryType,
118119
ID: r.typeID,

internal/app/ui/gamesearch.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919

2020
"github.com/ErikKalkoken/evebuddy/internal/app"
2121
"github.com/ErikKalkoken/evebuddy/internal/app/icons"
22+
awidget "github.com/ErikKalkoken/evebuddy/internal/app/widget"
2223
iwidget "github.com/ErikKalkoken/evebuddy/internal/widget"
2324
"github.com/ErikKalkoken/evebuddy/internal/xslices"
2425
"github.com/ErikKalkoken/evebuddy/internal/xsync"
@@ -485,7 +486,7 @@ func (w *searchResult) set(o *app.EveEntity) {
485486
return w.eis.InventoryTypeIcon(et.ID, app.IconPixelSize)
486487
}
487488
default:
488-
return entityIcon(w.eis, o, app.IconPixelSize, icons.BlankSvg)
489+
return awidget.EntityIcon(w.eis, o, app.IconPixelSize, icons.BlankSvg)
489490
}
490491
},
491492
func(r fyne.Resource) {

internal/app/ui/helper.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,8 @@ import (
1515
"github.com/dustin/go-humanize"
1616

1717
"github.com/ErikKalkoken/evebuddy/internal/app"
18-
"github.com/ErikKalkoken/evebuddy/internal/optional"
19-
2018
ihumanize "github.com/ErikKalkoken/evebuddy/internal/humanize"
19+
"github.com/ErikKalkoken/evebuddy/internal/optional"
2120
iwidget "github.com/ErikKalkoken/evebuddy/internal/widget"
2221
)
2322

0 commit comments

Comments
 (0)