Skip to content

Commit

Permalink
Extract shared logic and fix post-quit bug
Browse files Browse the repository at this point in the history
  • Loading branch information
alyosha committed Sep 8, 2020
1 parent 1139604 commit 092e727
Showing 1 changed file with 66 additions and 72 deletions.
138 changes: 66 additions & 72 deletions plugin/vimedia.vim
Original file line number Diff line number Diff line change
Expand Up @@ -27,58 +27,49 @@ import util
vmd = vimedia.Vimedia()
EOF

let s:interaction_type_select_player = "select_player_interaction"
let s:interaction_type_toggle_volume = "toggle_volume_interaction"

let s:toggle_volume_opt_up = "Louder"
let s:toggle_volume_opt_down = "Quieter"
let s:toggle_volume_opt_done = "Done"

let s:toggle_volume_options = [s:toggle_volume_opt_up, s:toggle_volume_opt_down, s:toggle_volume_opt_done]

fu! s:Play() abort
if s:selected_player_suffix == ""
echom "Please select a media player"
else
python3 vmd.pause_all(True)
python3 vmd.selected_player.play()
endif
python3 vmd.pause_all(False)
python3 vmd.selected_player.play()
endfu

fu! s:Pause(all_players) abort
if a:all_players
python3 vmd.pause_all(False)
elseif s:selected_player_suffix == ""
echom "Please select a media player"
else
python3 vmd.selected_player.pause()
endif
fu! s:Pause() abort
python3 vmd.selected_player.pause()
endfu

fu! s:PauseAll() abort
python3 vmd.pause_all(False)
endfu

fu! s:Skip() abort
if s:selected_player_suffix == ""
return
endif
python3 vmd.selected_player.next()
endfu

fu! s:Previous() abort
if s:selected_player_suffix == ""
return
endif
python3 vmd.selected_player.previous()
endfu

fu! s:Restart() abort
if s:selected_player_suffix == ""
return
endif
python3 vmd.selected_player.restart()
endfu

fu! s:Shuffle() abort
if s:selected_player_suffix == ""
return
endif
python3 vmd.selected_player.shuffle()
endfu

fu! s:ActivePlayer() abort
if s:selected_player_suffix != ""
echom s:selected_player_suffix
echom s:selected_player_suffix
else
echom "No media player configured"
echom "No media player configured"
endif
endfu

Expand All @@ -92,69 +83,72 @@ endfu

fu! s:Quit() abort
python3 vmd.base.quit()
let s:selected_player_suffix = ""
endfu

let s:interaction_type_select_player = "select_player_interaction"
let s:interaction_type_toggle_volume = "toggle_volume_interaction"

let s:toggle_volume_opt_up = "Louder"
let s:toggle_volume_opt_down = "Quieter"
let s:toggle_volume_opt_done = "Done"

let s:toggle_volume_options = [s:toggle_volume_opt_up, s:toggle_volume_opt_down, s:toggle_volume_opt_done]

fu! s:PresentOptions(interaction_type) abort
vnew | exe 'vert resize '.(&columns/4)
setl bh=wipe bt=nofile nobl noswf nowrap
if a:interaction_type == s:interaction_type_select_player
python3 util.update_player_options()
sil! 0put = s:active_player_names
nno <silent> <buffer> <nowait> <cr> :<c-u>call<sid>SetSelectedPlayer()<cr>
elseif a:interaction_type == s:interaction_type_toggle_volume
sil! 0put = s:toggle_volume_options
nno <silent> <buffer> <nowait> <cr> :<c-u>call<sid>ToggleVolume()<cr>
endif

sil! $d_
setl noma ro
nno <silent> <buffer> <nowait> q :<c-u>close<cr>
vnew | exe 'vert resize '.(&columns/4)
setl bh=wipe bt=nofile nobl noswf nowrap

if a:interaction_type == s:interaction_type_select_player
python3 util.update_player_options()
sil! 0put = s:active_player_names
nno <silent> <buffer> <nowait> <cr> :<c-u>call<sid>SetSelectedPlayer()<cr>
elseif a:interaction_type == s:interaction_type_toggle_volume
sil! 0put = s:toggle_volume_options
nno <silent> <buffer> <nowait> <cr> :<c-u>call<sid>ToggleVolume()<cr>
endif

sil! $d_
setl noma ro
nno <silent> <buffer> <nowait> q :<c-u>close<cr>
endfu

fu! s:SetSelectedPlayer() abort
let s:selected_player_suffix = expand("<cword>")
python3 vmd = vimedia.Vimedia()
echom "Updated active player"
close
let s:selected_player_suffix = expand("<cword>")
python3 vmd = vimedia.Vimedia()
echom "Updated active player"
close
endfu

fu! s:ToggleVolume() abort
let l:selected_opt = expand("<cword>")
if l:selected_opt == s:toggle_volume_opt_up
python3 vmd.adjust_volume_global(0.1)
elseif l:selected_opt == s:toggle_volume_opt_down
python3 vmd.adjust_volume_global(-0.1)
elseif l:selected_opt == s:toggle_volume_opt_done
close
endif
let l:selected_opt = expand("<cword>")
if l:selected_opt == s:toggle_volume_opt_up
python3 vmd.adjust_volume_global(0.1)
elseif l:selected_opt == s:toggle_volume_opt_down
python3 vmd.adjust_volume_global(-0.1)
elseif l:selected_opt == s:toggle_volume_opt_done
close
endif
endfu

fu! s:CheckPlayer(fn, ...) abort
if s:selected_player_suffix == ""
echom "Please select a media player"
return
endif
call a:fn()
endfu

" *************************************************************************** "
" *************************** Command Bindngs *************************** "
" *************************************************************************** "

com! -nargs=0 Play call s:Play()
com! -nargs=0 Pause call s:Pause(0)
com! -nargs=0 PauseAll call s:Pause(1)
com! -nargs=0 Skip call s:Skip()
com! -nargs=0 Prev call s:Previous()
com! -nargs=0 Restart call s:Restart()
com! -nargs=0 Shuffle call s:Shuffle()
"" Require selected media player
com! -nargs=0 Play call s:CheckPlayer(function("s:Play"))
com! -nargs=0 Pause call s:CheckPlayer(function("s:Pause"))
com! -nargs=0 Skip call s:CheckPlayer(function("s:Skip"))
com! -nargs=0 Prev call s:CheckPlayer(function("s:Previous"))
com! -nargs=0 Restart call s:CheckPlayer(function("s:Restart"))
com! -nargs=0 Shuffle call s:CheckPlayer(function("s:Shuffle"))
com! -nargs=0 Quit call s:CheckPlayer(function("s:Quit"))

"" Do not require selected media player
com! -nargs=0 PauseAll call s:PauseAll()
com! -nargs=0 Mute call s:Mute()
com! -nargs=0 Unmute call s:Unmute()
com! -nargs=0 Vol call s:PresentOptions(s:interaction_type_toggle_volume)
com! -nargs=0 Quit call s:Quit()
com! -nargs=0 ActivePlayer call s:ActivePlayer()
com! -nargs=0 SelectPlayer call s:PresentOptions(s:interaction_type_select_player)
com! -nargs=0 ActivePlayer call s:ActivePlayer()

let g:vimedia_plugin_loaded = 1

0 comments on commit 092e727

Please sign in to comment.