github.com/wtfutil/wtf@v0.43.0/modules/spotifyweb/keyboard.go (about)

     1  package spotifyweb
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/gdamore/tcell/v2"
     7  )
     8  
     9  func (widget *Widget) initializeKeyboardControls() {
    10  	widget.InitializeHelpTextKeyboardControl(widget.ShowHelp)
    11  	widget.InitializeRefreshKeyboardControl(widget.Refresh)
    12  
    13  	widget.SetKeyboardChar("h", widget.selectPrevious, "Select previous item")
    14  	widget.SetKeyboardChar("l", widget.selectNext, "Select next item")
    15  	widget.SetKeyboardChar(" ", widget.playPause, "Play/pause")
    16  	widget.SetKeyboardChar("s", widget.toggleShuffle, "Toggle shuffle")
    17  
    18  	widget.SetKeyboardKey(tcell.KeyDown, widget.selectNext, "Select next item")
    19  	widget.SetKeyboardKey(tcell.KeyUp, widget.selectPrevious, "Select previous item")
    20  }
    21  
    22  func (widget *Widget) selectPrevious() {
    23  	err := widget.client.Previous()
    24  	if err != nil {
    25  		return
    26  	}
    27  
    28  	time.Sleep(time.Millisecond * 500)
    29  	widget.Refresh()
    30  }
    31  
    32  func (widget *Widget) selectNext() {
    33  	err := widget.client.Next()
    34  	if err != nil {
    35  		return
    36  	}
    37  
    38  	time.Sleep(time.Millisecond * 500)
    39  	widget.Refresh()
    40  }
    41  
    42  func (widget *Widget) playPause() {
    43  	var err error
    44  	if widget.playerState.CurrentlyPlaying.Playing {
    45  		err = widget.client.Pause()
    46  	} else {
    47  		err = widget.client.Play()
    48  	}
    49  	if err != nil {
    50  		return
    51  	}
    52  
    53  	time.Sleep(time.Millisecond * 500)
    54  	widget.Refresh()
    55  }
    56  
    57  func (widget *Widget) toggleShuffle() {
    58  	widget.playerState.ShuffleState = !widget.playerState.ShuffleState
    59  	err := widget.client.Shuffle(widget.playerState.ShuffleState)
    60  	if err != nil {
    61  		return
    62  	}
    63  
    64  	time.Sleep(time.Millisecond * 500)
    65  	widget.Refresh()
    66  }