diff --git a/src/js/components/ContextMenu.js b/src/js/components/ContextMenu.js
index 38c648e4..20cb8673 100755
--- a/src/js/components/ContextMenu.js
+++ b/src/js/components/ContextMenu.js
@@ -137,14 +137,15 @@ class ContextMenu extends React.Component{
{ handleClick: 'playURIs', label: 'Play' },
{ handleClick: 'playURIsNext', label: 'Play next' },
{ handleClick: 'addToQueue', label: 'Add to queue' },
+ // { handleClick: 'toggleFollow', label: 'Follow/unfollow' }, TODO
{ handleClick: 'copyURIs', label: 'Copy URI' }
]
break
case 'artist':
var items = [
+ //{ handleClick: 'toggleFollow', label: 'Follow/unfollow' }, TODO
{ handleClick: 'startRadio', label: 'Start radio' },
- { handleClick: 'toggleFollow', label: 'Follow/unfollow' },
{ handleClick: 'copyURIs', label: 'Copy URI' }
]
break
@@ -152,7 +153,7 @@ class ContextMenu extends React.Component{
case 'playlist':
var items = [
{ handleClick: 'playURIs', label: 'Play' },
- { handleClick: 'toggleFollow', label: 'Follow/unfollow' },
+ // { handleClick: 'toggleFollow', label: 'Follow/unfollow' }, TODO
{ handleClick: 'copyURIs', label: 'Copy URI' }
]
break
diff --git a/src/js/components/List.js b/src/js/components/List.js
index 61c9ffec..e33959b2 100755
--- a/src/js/components/List.js
+++ b/src/js/components/List.js
@@ -26,14 +26,10 @@ class List extends React.Component{
}
handleContextMenu(e,item){
- e.preventDefault()
- var data = {
- e: e,
- context: helpers.uriType(item.uri),
- uris: [item.uri],
- item: item
+ if (this.props.handleContextMenu){
+ e.preventDefault()
+ this.props.handleContextMenu(e,item)
}
- this.props.uiActions.showContextMenu(data)
}
renderHeader(){
diff --git a/src/js/components/TrackList.js b/src/js/components/TrackList.js
index 8200f531..c5cdbad8 100755
--- a/src/js/components/TrackList.js
+++ b/src/js/components/TrackList.js
@@ -153,12 +153,18 @@ class TrackList extends React.Component{
}
}
- toggleTrackSelections(e, index){
+ toggleTrackSelections(e,index){
var tracks = this.state.tracks
+ var lastSelectedTrack = this.state.lastSelectedTrack
if( e.ctrlKey ){
- tracks[index].selected = !tracks[index].selected
+ if (tracks[index].selected){
+ tracks[index].selected = false
+ } else {
+ tracks[index].selected = true
+ lastSelectedTrack = index
+ }
}else if( e.shiftKey ){
@@ -170,8 +176,11 @@ class TrackList extends React.Component{
var end = this.state.lastSelectedTrack
}
- for( var i = start; i <= end; i++ ){
- tracks[i].selected = true
+ if (start !== false && end !== false){
+ for( var i = start; i <= end; i++ ){
+ tracks[i].selected = true
+ lastSelectedTrack = index
+ }
}
}else{
@@ -180,10 +189,11 @@ class TrackList extends React.Component{
tracks[i].selected = false
}
- tracks[index].selected = !tracks[index].selected
+ tracks[index].selected = true
+ lastSelectedTrack = index
}
- this.setState({ tracks: tracks, lastSelectedTrack: index })
+ this.setState({ tracks: tracks, lastSelectedTrack: lastSelectedTrack })
}
isRightClick(e){
diff --git a/src/js/views/Album.js b/src/js/views/Album.js
index 21fea844..299af569 100755
--- a/src/js/views/Album.js
+++ b/src/js/views/Album.js
@@ -98,7 +98,7 @@ class Album extends React.Component{
-
this.handleContextMenu(e) } />
+
diff --git a/src/js/views/library/LibraryAlbums.js b/src/js/views/library/LibraryAlbums.js
index ccbcb21b..445f8497 100755
--- a/src/js/views/library/LibraryAlbums.js
+++ b/src/js/views/library/LibraryAlbums.js
@@ -28,10 +28,14 @@ class LibraryAlbums extends React.Component{
if (!this.props.library_albums) this.props.spotifyActions.getLibraryAlbums();
}
- handleContextMenu(e,uri){
- e.preventDefault()
- var data = { uris: [uri] }
- this.props.uiActions.showContextMenu( e, data, 'album', 'click' )
+ handleContextMenu(e,item){
+ var data = {
+ e: e,
+ context: 'album',
+ uris: [item.uri],
+ item: item
+ }
+ this.props.uiActions.showContextMenu(data)
}
loadMore(){
@@ -83,7 +87,7 @@ class LibraryAlbums extends React.Component{
return (
this.handleContextMenu(e,uri)}
+ handleContextMenu={(e,item) => this.handleContextMenu(e,item)}
rows={albums}
columns={columns}
link_prefix={global.baseURL+"album/"} />
@@ -93,7 +97,7 @@ class LibraryAlbums extends React.Component{
return (
this.handleContextMenu(e,uri)}
+ handleContextMenu={(e,item) => this.handleContextMenu(e,item)}
albums={albums} />
)
diff --git a/src/js/views/library/LibraryArtists.js b/src/js/views/library/LibraryArtists.js
index 3d994b1f..a4acf322 100755
--- a/src/js/views/library/LibraryArtists.js
+++ b/src/js/views/library/LibraryArtists.js
@@ -21,10 +21,14 @@ class LibraryArtists extends React.Component{
super(props);
}
- handleContextMenu(e,uri){
- e.preventDefault()
- var data = { uris: [uri] }
- this.props.uiActions.showContextMenu( e, data, 'artist', 'click' )
+ handleContextMenu(e,item){
+ var data = {
+ e: e,
+ context: 'artist',
+ uris: [item.uri],
+ item: item
+ }
+ this.props.uiActions.showContextMenu(data)
}
componentDidMount(){
@@ -68,17 +72,18 @@ class LibraryArtists extends React.Component{
return (
this.handleContextMenu(e,uri)}
+ handleContextMenu={(e,item) => this.handleContextMenu(e,item)}
rows={artists}
columns={columns}
- link_prefix={global.baseURL+"artist/"} show_source_icon={true} />
+ link_prefix={global.baseURL+"artist/"}
+ show_source_icon={true} />
)
}else{
return (
this.handleContextMenu(e,uri)}
+ handleContextMenu={(e,item) => this.handleContextMenu(e,item)}
artists={artists} />
)
diff --git a/src/js/views/library/LibraryLocalArtists.js b/src/js/views/library/LibraryLocalArtists.js
index 09626f66..1929e079 100755
--- a/src/js/views/library/LibraryLocalArtists.js
+++ b/src/js/views/library/LibraryLocalArtists.js
@@ -6,6 +6,7 @@ import { bindActionCreators } from 'redux'
import Header from '../../components/Header'
import List from '../../components/List'
+import * as uiActions from '../../services/ui/actions'
import * as mopidyActions from '../../services/mopidy/actions'
import * as spotifyActions from '../../services/spotify/actions'
@@ -26,6 +27,16 @@ class LibraryLocalArtists extends React.Component{
}
}
+ handleContextMenu(e,item){
+ var data = {
+ e: e,
+ context: 'artist',
+ uris: [item.uri],
+ item: item
+ }
+ this.props.uiActions.showContextMenu(data)
+ }
+
loadArtists(props = this.props){
if( props.mopidy_connected && !props.local_artists ){
this.props.mopidyActions.getLibraryArtists();
@@ -47,7 +58,12 @@ class LibraryLocalArtists extends React.Component{
-
+ this.handleContextMenu(e,item)}
+ />
);
@@ -71,6 +87,7 @@ const mapStateToProps = (state, ownProps) => {
const mapDispatchToProps = (dispatch) => {
return {
+ uiActions: bindActionCreators(uiActions, dispatch),
mopidyActions: bindActionCreators(mopidyActions, dispatch),
spotifyActions: bindActionCreators(spotifyActions, dispatch)
}
diff --git a/src/js/views/library/LibraryLocalDirectory.js b/src/js/views/library/LibraryLocalDirectory.js
index c92d8026..1cdea81c 100755
--- a/src/js/views/library/LibraryLocalDirectory.js
+++ b/src/js/views/library/LibraryLocalDirectory.js
@@ -85,8 +85,10 @@ class LibraryLocalDirectory extends React.Component{
diff --git a/src/js/views/library/LibraryPlaylists.js b/src/js/views/library/LibraryPlaylists.js
index 99269fbc..81aae06b 100755
--- a/src/js/views/library/LibraryPlaylists.js
+++ b/src/js/views/library/LibraryPlaylists.js
@@ -21,6 +21,16 @@ class LibraryPlaylists extends React.Component{
super(props);
}
+ handleContextMenu(e,item){
+ var data = {
+ e: e,
+ context: 'playlist',
+ uris: [item.uri],
+ item: item
+ }
+ this.props.uiActions.showContextMenu(data)
+ }
+
setSort(value){
var reverse = false
if( this.props.sort == value ) reverse = !this.props.sort_reverse
@@ -72,13 +82,20 @@ class LibraryPlaylists extends React.Component{
]
return (
-
+ this.handleContextMenu(e,item)}
+ rows={playlists}
+ columns={columns}
+ link_prefix={global.baseURL+"playlist/"}
+ show_source_icon={true} />
)
}else{
return (
-
+ this.handleContextMenu(e,item)}
+ playlists={playlists} />
)
}