@@ -137,11 +137,12 @@ type AlbumList struct {
137
137
similarFunc func (id models.Id )
138
138
similarEnabled bool
139
139
140
- sort * sort
141
- filter * filter
142
- filterBtn * button
143
- queryOpts * interfaces.QueryOpts
144
- queryFunc func (opts * interfaces.QueryOpts )
140
+ sort * sort
141
+ filter * filter
142
+ filterBtn * button
143
+ filterEnabled bool
144
+ queryOpts * interfaces.QueryOpts
145
+ queryFunc func (opts * interfaces.QueryOpts )
145
146
}
146
147
147
148
func (a * AlbumList ) AddAlbum (c * AlbumCover ) {
@@ -153,6 +154,7 @@ func (a *AlbumList) Clear() {
153
154
a .list .Clear ()
154
155
//a.SetArtist(nil)
155
156
a .albumCovers = make ([]* AlbumCover , 0 )
157
+ a .filter .Clear ()
156
158
}
157
159
158
160
// SetPlaylists sets albumList cover
@@ -194,8 +196,9 @@ func (a *AlbumList) EnableArtistMode(enabled bool) {
194
196
func (a * AlbumList ) selectPage (n int ) {
195
197
a .paging .SetPage (n )
196
198
a .page .CurrentPage = n
197
- if a .selectPageFunc != nil {
198
- a .selectPageFunc (a .page )
199
+ a .queryOpts .Paging = a .page
200
+ if a .queryFunc != nil {
201
+ a .queryFunc (a .queryOpts )
199
202
}
200
203
}
201
204
@@ -243,6 +246,14 @@ func (a *AlbumList) EnableSimilar(enabled bool) {
243
246
a .setButtons ()
244
247
}
245
248
249
+ func (a * AlbumList ) EnableFilter (enabled bool ) {
250
+ a .filterEnabled = enabled
251
+ if enabled {
252
+ a .similarEnabled = false
253
+ }
254
+ a .setButtons ()
255
+ }
256
+
246
257
func (a * AlbumList ) setButtons () {
247
258
a .Banner .Grid .Clear ()
248
259
selectables := []twidgets.Selectable {a .prevBtn , a .playBtn }
@@ -251,25 +262,29 @@ func (a *AlbumList) setButtons() {
251
262
a .Grid .AddItem (a .playBtn , 3 , 2 , 1 , 1 , 1 , 10 , false )
252
263
253
264
if a .pagingEnabled {
254
- selectables = append (selectables , a .paging .Previous , a .paging .Next , a . filterBtn )
265
+ selectables = append (selectables , a .paging .Previous , a .paging .Next )
255
266
a .Grid .AddItem (a .paging , 3 , 4 , 1 , 3 , 1 , 10 , false )
256
- //a.Grid.AddItem(a.sort, 3, 6, 1, 3, 1, 10, false)
257
- a .Grid .AddItem (a .filterBtn , 3 , 6 , 1 , 3 , 1 , 10 , false )
258
267
}
259
- /*
260
- if a.similarEnabled {
261
- selectables = append(selectables, a.options)
262
- col := 4
263
- if a.pagingEnabled {
264
- col = 6
265
- }
266
- a.Grid.AddItem(a.options, 3, col, 1, 1, 1, 10, false)
268
+ if a .similarEnabled {
269
+ selectables = append (selectables , a .options )
270
+ col := 4
271
+ if a .pagingEnabled {
272
+ col = 6
267
273
}
274
+ a .Grid .AddItem (a .options , 3 , col , 1 , 1 , 1 , 10 , false )
275
+ } else if a .filterEnabled {
276
+ selectables = append (selectables , a .sort , a .filterBtn )
277
+ col := 4
278
+ if a .pagingEnabled {
279
+ col = 6
280
+ }
281
+ a .Grid .AddItem (a .sort , 3 , col , 1 , 1 , 1 , 10 , false )
282
+ a .Grid .AddItem (a .filterBtn , 3 , col + 2 , 1 , 1 , 1 , 10 , false )
283
+ }
268
284
269
- */
270
285
selectables = append (selectables , a .list )
271
286
a .Banner .Selectable = selectables
272
- a .Grid .AddItem (a .list , 4 , 0 , 1 , 8 , 6 , 20 , false )
287
+ a .Grid .AddItem (a .list , 4 , 0 , 1 , 10 , 6 , 20 , false )
273
288
}
274
289
275
290
//NewAlbumList constructs new albumList view
@@ -302,20 +317,21 @@ func NewAlbumList(selectAlbum func(album *models.Album), context contextOperator
302
317
)
303
318
}
304
319
305
- a .filter = newFilter ("artist " , a .setFilter )
320
+ a .filter = newFilter ("album " , a .setFilter , a . filterApplied )
306
321
a .filterBtn = newButton ("Filter" )
307
322
a .filterBtn .SetSelectedFunc (func () {
308
323
if filterFunc != nil {
309
324
filterFunc (a .filter , nil )
310
325
}
311
326
})
327
+ a .filterEnabled = true
312
328
313
329
selectables := []twidgets.Selectable {a .prevBtn , a .playBtn , a .options ,
314
330
a .paging .Previous , a .paging .Next , a .sort , a .filterBtn , a .list }
315
331
a .Banner .Selectable = selectables
316
332
317
333
a .Grid .SetRows (1 , 1 , 1 , 1 , - 1 )
318
- a .Grid .SetColumns (6 , 2 , 10 , - 1 , 10 , - 1 , 10 , - 3 )
334
+ a .Grid .SetColumns (6 , 2 , 10 , - 1 , 10 , - 1 , 15 , - 1 , 10 , - 3 )
319
335
a .Grid .SetMinSize (1 , 6 )
320
336
a .Grid .SetBackgroundColor (config .Color .Background )
321
337
a .list .Grid .SetColumns (1 , - 1 )
@@ -348,6 +364,14 @@ func NewAlbumList(selectAlbum func(album *models.Album), context contextOperator
348
364
return a
349
365
}
350
366
367
+ func (a * AlbumList ) filterApplied (status bool ) {
368
+ if status {
369
+ a .filterBtn .SetLabel ("Filter *" )
370
+ } else {
371
+ a .filterBtn .SetLabel ("Filter" )
372
+ }
373
+ }
374
+
351
375
func (a * AlbumList ) InputHandler () func (event * tcell.EventKey , setFocus func (p cview.Primitive )) {
352
376
return func (event * tcell.EventKey , setFocus func (p cview.Primitive )) {
353
377
if event .Key () == tcell .KeyEnter && event .Modifiers () == tcell .ModAlt {
0 commit comments