Moving snapcast to debug (as beta)

This commit is contained in:
James Barnsley
2018-03-25 10:20:17 +13:00
parent e7abde42f8
commit 8db6e15e3e
11 changed files with 716 additions and 666 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -3183,25 +3183,25 @@ input[type="submit"] {
content: '';
clear: both;
display: block; }
.field .name {
.field > .name {
display: block;
padding-top: 10px;
width: 20%;
float: left; }
.field > .input {
width: 80%;
float: left; }
.field > .input input,
.field > .input select,
.field > .input textarea {
width: 100%; }
.field > .input .text {
display: block;
padding: 10px 14px 10px 0; }
.field label {
display: inline-block; }
.field .label .tooltip {
left: -4px; }
.field .input {
width: 80%;
float: left; }
.field .input input,
.field .input select,
.field .input textarea {
width: 100%; }
.field .input .text {
display: block;
padding: 10px 14px 10px 0; }
.field.radio input, .field.checkbox input {
display: none; }
.field.radio .input, .field.checkbox .input {
@ -3447,8 +3447,11 @@ input[type="submit"] {
font-weight: 300;
color: inherit;
border-bottom: 1px solid #454440 !important; }
#context-menu .liner > span button .icon,
#context-menu .liner > span button .fa,
#context-menu .liner > span .button .icon,
#context-menu .liner > span .button .fa,
#context-menu .liner > span .dropdown-field .icon,
#context-menu .liner > span .dropdown-field .fa {
display: none; }
.notouch #context-menu .liner > span button:hover, .notouch
@ -4157,7 +4160,7 @@ input[type="submit"] {
.playback-controls section.progress {
bottom: 10px;
left: 140px;
right: 280px;
right: 260px;
padding-left: 20px;
padding-right: 20px;
color: #a3a19f; }
@ -4181,7 +4184,7 @@ input[type="submit"] {
width: 50px; }
.playback-controls section.settings {
right: 170px;
width: 120px;
width: 100px;
text-align: center; }
.playback-controls section.volume {
bottom: 10px;
@ -4266,8 +4269,42 @@ input[type="submit"] {
left: 0;
right: 0; } }
.snapcast .group .clients {
padding-left: 20px; }
.snapcast .group > .inner {
padding-bottom: 5px;
border-bottom: 1px solid #383734; }
.snapcast .group > .inner > .name {
font-weight: bold; }
.snapcast .group .clients .client.disconnected {
opacity: 0.5; }
.snapcast .group .clients .client > .inner {
padding: 5px 0;
border-bottom: 1px solid #383734; }
.snapcast .group .clients .client .name {
padding: 6px 0 5px 0;
display: block;
width: 100%;
box-sizing: border-box;
border: 0; }
.snapcast .group .clients .client .controls .edit {
display: inline-block;
float: left;
cursor: pointer; }
.snapcast .group .clients .client .controls .volume-control .mute-control {
display: inline-block;
float: left;
padding: 0 10px;
border: 0; }
.snapcast .group .clients .client .controls .volume-control .slider-wrapper {
margin-left: 40px; }
.snapcast .group .clients .client .controls .volume-control.muted .slider .progress {
background: #a3a19f; }
aside {
position: fixed;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -38,7 +38,7 @@
// Release details
// These are automatically injected to built HTML
var build = "1521786595";
var build = "1521924986";
var version = "3.14.2";
// Construct the script tag

View File

@ -26,7 +26,8 @@ setup(
'Mopidy-Local-Images >= 1.0',
'ConfigObj >= 5.0.6',
'raven >= 6.1.0',
'requests >= 2.0.0'
'requests >= 2.0.0',
'tornado >= 3.2, < 5.0'
],
classifiers=[
'Environment :: No Input/Output (Daemon)',

View File

@ -250,7 +250,9 @@ export function reorderTracklist(indexes, insert_before){
}
export function clearTracklist(){
return instruct('tracklist.clear')
return {
type: 'MOPIDY_CLEAR_TRACKLIST'
}
}

View File

@ -287,9 +287,11 @@ const MopidyMiddleware = (function(){
store.dispatch(pusherActions.deliverBroadcast(
'notification',
{
type: 'info',
content: store.getState().pusher.username +' paused playback',
icon: (store.getState().core.current_track ? helpers.getTrackIcon(store.getState().core.current_track, store.getState().core) : false)
notification: {
type: 'info',
content: store.getState().pusher.username +' paused playback',
icon: (store.getState().core.current_track ? helpers.getTrackIcon(store.getState().core.current_track, store.getState().core) : false)
}
}
));
break
@ -786,6 +788,19 @@ const MopidyMiddleware = (function(){
)
break;
case 'MOPIDY_CLEAR_TRACKLIST':
instruct(socket, store, 'tracklist.clear');
store.dispatch(pusherActions.deliverBroadcast(
'notification',
{
notification: {
type: 'info',
content: store.getState().pusher.username +' cleared queue'
}
}
));
break;
/**
* =============================================================== SEARCHING ============

View File

@ -12,6 +12,7 @@ import URISchemesList from '../components/URISchemesList'
import VersionManager from '../components/VersionManager'
import Header from '../components/Header'
import Thumbnail from '../components/Thumbnail'
import Snapcast from '../components/Snapcast'
import * as uiActions from '../services/ui/actions'
import * as pusherActions from '../services/pusher/actions'
@ -119,6 +120,11 @@ class Debug extends React.Component{
</div>
</form>
<h4 className="underline">Snapcast (beta)</h4>
<div className="field">
<Snapcast />
</div>
<h4 className="underline">Spotify</h4>
<div className="field">
<div className="name">Access token</div>

View File

@ -16,7 +16,6 @@ import Parallax from '../components/Parallax'
import Icon from '../components/Icon'
import Thumbnail from '../components/Thumbnail'
import URILink from '../components/URILink'
import Snapcast from '../components/Snapcast'
import * as coreActions from '../services/core/actions'
import * as uiActions from '../services/ui/actions'
@ -266,63 +265,6 @@ class Settings extends React.Component {
<section className="content-wrapper">
<h4 className="underline">Audio output</h4>
<div className="field">
<Snapcast />
</div>
<h4 className="underline">Streaming</h4>
<div className="field checkbox">
<div className="name">Enable</div>
<div className="input">
<label>
<input
type="checkbox"
name="ssl"
checked={this.props.core.http_streaming_enabled}
onChange={e => this.props.coreActions.set({http_streaming_enabled: !this.props.core.http_streaming_enabled})} />
<span className="label has-tooltip">
Stream audio to this browser
<span className="tooltip">Requires streaming service like Icecast2</span>
</span>
</label>
</div>
</div>
<div className="field radio">
<div className="name">Encoding</div>
<div className="input">
<label>
<input
type="radio"
name="http_streaming_encoding"
checked={this.props.core.http_streaming_encoding == 'mpeg'}
onChange={e => this.props.coreActions.set({http_streaming_encoding: 'mpeg'})} />
<span className="label">mpeg (mp3)</span>
</label>
<label>
<input
type="radio"
name="http_streaming_encoding"
checked={this.props.core.http_streaming_encoding == 'ogg'}
onChange={e => this.props.coreActions.set({http_streaming_encoding: 'ogg'})} />
<span className="label">ogg</span>
</label>
</div>
</div>
<div className="field">
<div className="name">Location</div>
<div className="input">
<input
type="text"
onChange={e => this.props.coreActions.set({http_streaming_url: e.target.value})}
value={this.props.core.http_streaming_url} />
<div className="description">
The full URL to your stream endpoint
</div>
</div>
</div>
<h4 className="underline">Server</h4>
<div className="field">
@ -389,7 +331,60 @@ class Settings extends React.Component {
</div>
</div>
{this.renderApplyButton()}
</form>
</form>
<h4 className="underline">Streaming</h4>
<div className="field checkbox">
<div className="name">Enable</div>
<div className="input">
<label>
<input
type="checkbox"
name="ssl"
checked={this.props.core.http_streaming_enabled}
onChange={e => this.props.coreActions.set({http_streaming_enabled: !this.props.core.http_streaming_enabled})} />
<span className="label has-tooltip">
Stream audio to this browser
<span className="tooltip">Requires streaming service like Icecast2</span>
</span>
</label>
</div>
</div>
<div className="field radio">
<div className="name">Encoding</div>
<div className="input">
<label>
<input
type="radio"
name="http_streaming_encoding"
checked={this.props.core.http_streaming_encoding == 'mpeg'}
onChange={e => this.props.coreActions.set({http_streaming_encoding: 'mpeg'})} />
<span className="label">mpeg (mp3)</span>
</label>
<label>
<input
type="radio"
name="http_streaming_encoding"
checked={this.props.core.http_streaming_encoding == 'ogg'}
onChange={e => this.props.coreActions.set({http_streaming_encoding: 'ogg'})} />
<span className="label">ogg</span>
</label>
</div>
</div>
<div className="field">
<div className="name">Location</div>
<div className="input">
<input
type="text"
onChange={e => this.props.coreActions.set({http_streaming_url: e.target.value})}
value={this.props.core.http_streaming_url} />
<div className="description">
The full URL to your stream endpoint
</div>
</div>
</div>
<h4 className="underline">Localization</h4>