import React from "react";
import { connect } from "react-redux";
import classnames from "classnames";
import DropTarget from "../DropTarget";
import MiniTime from "../MiniTime";
import PlaylistShade from "./PlaylistShade";
import AddMenu from "./AddMenu";
import RemoveMenu from "./RemoveMenu";
import SelectionMenu from "./SelectionMenu";
import MiscMenu from "./MiscMenu";
import ListMenu from "./ListMenu";
import ResizeTarget from "./ResizeTarget";
import RunningTimeDisplay from "./RunningTimeDisplay";
import TrackList from "./TrackList";
import ScrollBar from "./ScrollBar";
import {
WINDOWS,
PLAYLIST_RESIZE_SEGMENT_WIDTH,
PLAYLIST_RESIZE_SEGMENT_HEIGHT,
MIN_PLAYLIST_WINDOW_WIDTH
} from "../../constants";
import {
TOGGLE_PLAYLIST_WINDOW,
TOGGLE_PLAYLIST_SHADE_MODE,
SET_FOCUSED_WINDOW
} from "../../actionTypes";
import {
play,
pause,
stop,
openFileDialog,
toggleVisualizerStyle,
scrollUpFourTracks,
scrollDownFourTracks
} from "../../actionCreators";
import "../../../css/playlist-window.css";
const MIN_WINDOW_HEIGHT = 116;
const PlaylistWindow = props => {
const {
skinPlaylistStyle,
focusPlaylist,
focused,
playlistSize,
playlistShade,
close,
toggleShade
} = props;
if (playlistShade) {
return ;
}
const style = {
color: skinPlaylistStyle.normal,
backgroundColor: skinPlaylistStyle.normalbg,
fontFamily: `${skinPlaylistStyle.font}, Arial, sans-serif`,
height: `${MIN_WINDOW_HEIGHT +
playlistSize[1] * PLAYLIST_RESIZE_SEGMENT_HEIGHT}px`,
width: `${MIN_PLAYLIST_WINDOW_WIDTH +
playlistSize[0] * PLAYLIST_RESIZE_SEGMENT_WIDTH}px`
};
const classes = classnames("window", "draggable", {
selected: focused === WINDOWS.PLAYLIST,
wide: playlistSize[0] > 2
});
return (
);
};
const mapDispatchToProps = (dispatch, ownProps) => ({
focusPlaylist: () =>
dispatch({
type: SET_FOCUSED_WINDOW,
window: WINDOWS.PLAYLIST
}),
play: () => dispatch(play()),
pause: () => dispatch(pause()),
stop: () => dispatch(stop()),
openFileDialog: () => dispatch(openFileDialog(ownProps.fileInput)),
close: () => dispatch({ type: TOGGLE_PLAYLIST_WINDOW }),
toggleShade: () => dispatch({ type: TOGGLE_PLAYLIST_SHADE_MODE }),
toggleVisualizerStyle: () => dispatch(toggleVisualizerStyle()),
scrollUpFourTracks: () => dispatch(scrollUpFourTracks()),
scrollDownFourTracks: () => dispatch(scrollDownFourTracks())
});
const mapStateToProps = state => {
const {
windows: { focused },
display: { skinPlaylistStyle, playlistSize, playlistShade },
media: { duration }
} = state;
return {
focused,
skinPlaylistStyle,
playlistSize,
playlistShade,
duration
};
};
export default connect(mapStateToProps, mapDispatchToProps)(PlaylistWindow);