Merge pull request #674 from codealchemist/open-in-vlc-preferences

Added Playback preferences and Play in VLC
This commit is contained in:
DC
2016-08-19 00:49:37 -07:00
committed by GitHub
3 changed files with 78 additions and 1 deletions

View File

@@ -241,12 +241,19 @@ module.exports = class PlaybackController {
return this.update() return this.update()
} }
// play in VLC if set as default player (Preferences / Playback / Play in VLC)
if (this.state.saved.prefs.playInVlc) {
dispatch('vlcPlay')
this.update()
cb()
return
}
// otherwise, play the video // otherwise, play the video
state.window.title = torrentSummary.files[state.playing.fileIndex].name state.window.title = torrentSummary.files[state.playing.fileIndex].name
this.update() this.update()
ipcRenderer.send('onPlayerOpen') ipcRenderer.send('onPlayerOpen')
cb() cb()
}) })
} }

View File

@@ -10,6 +10,7 @@ module.exports = class Preferences extends React.Component {
return ( return (
<div className='preferences'> <div className='preferences'>
{renderGeneralSection(state)} {renderGeneralSection(state)}
{renderPlaybackSection(state)}
</div> </div>
) )
} }
@@ -27,6 +28,30 @@ function renderGeneralSection (state) {
]) ])
} }
function renderPlaybackSection (state) {
return renderSection({
title: 'Playback',
description: '',
icon: 'settings'
}, [
renderPlayInVlcSelector(state)
])
}
function renderPlayInVlcSelector (state) {
return renderCheckbox({
key: 'play-in-vlc',
label: 'Play in VLC',
description: 'Media will play in VLC',
property: 'playInVlc',
value: state.saved.prefs.playInVlc
},
state.unsaved.prefs.playInVlc,
function (value) {
dispatch('updatePreferences', 'playInVlc', value)
})
}
function renderDownloadPathSelector (state) { function renderDownloadPathSelector (state) {
return renderFileSelector({ return renderFileSelector({
key: 'download-path', key: 'download-path',
@@ -91,6 +116,35 @@ function renderSection (definition, controls) {
) )
} }
function renderCheckbox (definition, value, callback) {
var iconClass = 'icon clickable'
if (value) iconClass += ' enabled'
return (
<div key='{definition.key}' className='control-group'>
<div className='controls'>
<label className='control-label'>
<div className='preference-title'>{definition.label}</div>
</label>
<div className='controls'>
<label className='clickable' onClick={handleClick}>
<i
className={iconClass}
id='{definition.property}'
>
check_circle
</i>
<span className='checkbox-label'>{definition.description}</span>
</label>
</div>
</div>
</div>
)
function handleClick () {
callback(!value)
}
}
// Creates a file chooser // Creates a file chooser
// - defition should be {label, description, options} // - defition should be {label, description, options}
// options are passed to dialog.showOpenDialog // options are passed to dialog.showOpenDialog

View File

@@ -122,6 +122,10 @@ table {
* UTILITY CLASSES * UTILITY CLASSES
*/ */
.clickable {
cursor: pointer;
}
.ellipsis { .ellipsis {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
@@ -932,6 +936,10 @@ video::-webkit-media-text-track-container {
margin-right: 0.2em; margin-right: 0.2em;
} }
.preferences .icon.enabled {
color: yellow;
}
.preferences .btn { .preferences .btn {
display: inline-block; display: inline-block;
-webkit-appearance: button; -webkit-appearance: button;
@@ -1079,6 +1087,14 @@ video::-webkit-media-text-track-container {
vertical-align: text-bottom; vertical-align: text-bottom;
} }
.preferences .checkbox {
width: auto;
}
.checkbox-label {
vertical-align: top;
}
/* /*
* MEDIA OVERLAY / AUDIO DETAILS * MEDIA OVERLAY / AUDIO DETAILS