diff --git a/css/playlist-window.css b/css/playlist-window.css index fdc020e0..a5b72708 100644 --- a/css/playlist-window.css +++ b/css/playlist-window.css @@ -274,6 +274,21 @@ background-position-x: right; } +#winamp2-js #playlist-window #playlist-scroll-up-button, +#winamp2-js #playlist-window #playlist-scroll-down-button { + position: absolute; + width: 8px; + height: 5px; + right: 7px; +} + +#winamp2-js #playlist-window #playlist-scroll-up-button { + top: 2px; +} +#winamp2-js #playlist-window #playlist-scroll-down-button { + top: 8px; +} + #winamp2-js #playlist-window-shade #playlist-resize-target { position: absolute; right: 20px; diff --git a/js/actionCreators.js b/js/actionCreators.js index a50f263c..ee57447e 100644 --- a/js/actionCreators.js +++ b/js/actionCreators.js @@ -2,7 +2,12 @@ import { parser, creator } from "winamp-eqf"; import MyFile from "./myFile"; import skinParser from "./skinParser"; import { BANDS } from "./constants"; -import { getEqfData, nextTrack } from "./selectors"; +import { + getEqfData, + nextTrack, + getScrollOffset, + getOverflowTrackCount +} from "./selectors"; import { clamp, @@ -315,3 +320,24 @@ export function toggleVisualizerStyle() { export function setPlaylistScrollPosition(position) { return { type: SET_PLAYLIST_SCROLL_POSITION, position }; } + +export function scrollNTracks(n) { + return (dispatch, getState) => { + const state = getState(); + const overflow = getOverflowTrackCount(state); + const currentOffset = getScrollOffset(state); + const position = overflow ? clamp((currentOffset + n) / overflow, 0, 1) : 0; + return dispatch({ + type: SET_PLAYLIST_SCROLL_POSITION, + position: position * 100 + }); + }; +} + +export function scrollUpFourTracks() { + return scrollNTracks(-4); +} + +export function scrollDownFourTracks() { + return scrollNTracks(4); +} diff --git a/js/components/PlaylistWindow/__snapshots__/index.test.js.snap b/js/components/PlaylistWindow/__snapshots__/index.test.js.snap index 136c940a..d0deafb7 100644 --- a/js/components/PlaylistWindow/__snapshots__/index.test.js.snap +++ b/js/components/PlaylistWindow/__snapshots__/index.test.js.snap @@ -247,6 +247,14 @@ exports[`PlaylistWindow renders to snapshot 1`] = ` className="bar" /> +
+