Hide time and position scale on LIVE media

This commit is contained in:
Rafostar
2020-10-15 22:49:37 +02:00
parent 6f2ec62515
commit 745747b604
3 changed files with 29 additions and 12 deletions

View File

@@ -69,6 +69,18 @@ var Controls = GObject.registerClass({
this.unfullscreenButton.set_visible(isFullscreen); this.unfullscreenButton.set_visible(isFullscreen);
} }
setLiveMode(isLive, isSeekable)
{
/* This update must always happen
* after media duration is set */
let text = (isLive)
? 'LIVE'
: '00:00:00' + '/' + this.durationFormated;
this.elapsedButton.set_label(text);
this.positionScale.visible = isSeekable;
}
addButton(buttonIcon) addButton(buttonIcon)
{ {
let button = (buttonIcon instanceof Gtk.Button) let button = (buttonIcon instanceof Gtk.Button)
@@ -186,6 +198,7 @@ var Controls = GObject.registerClass({
hexpand: true, hexpand: true,
valign: Gtk.Align.CENTER, valign: Gtk.Align.CENTER,
can_focus: false, can_focus: false,
visible: false,
}); });
this.togglePlayButton.bind_property('margin_top', this.togglePlayButton.bind_property('margin_top',
@@ -206,7 +219,14 @@ var Controls = GObject.registerClass({
); );
this.positionAdjustment = this.positionScale.get_adjustment(); this.positionAdjustment = this.positionScale.get_adjustment();
this.append(this.positionScale);
let box = new Gtk.Box({
orientation: Gtk.Orientation.HORIZONTAL,
hexpand: true,
can_focus: false,
});
box.append(this.positionScale);
this.append(box);
} }
_addVolumeButton() _addVolumeButton()

View File

@@ -20,6 +20,8 @@ class ClapperInterface extends Gtk.Grid
Object.assign(this, defaults, opts); Object.assign(this, defaults, opts);
this.fullscreenMode = false; this.fullscreenMode = false;
this.isSeekable = false;
this.lastVolumeValue = null; this.lastVolumeValue = null;
this.lastPositionValue = 0; this.lastPositionValue = 0;
this.lastRevealerEventTime = 0; this.lastRevealerEventTime = 0;
@@ -129,11 +131,10 @@ class ClapperInterface extends Gtk.Grid
/* Set titlebar media title and path */ /* Set titlebar media title and path */
this.updateTitles(mediaInfo); this.updateTitles(mediaInfo);
// we can also check if video is "live" or "seekable" (right now unused) /* Show/hide position scale on LIVE */
// it might be a good idea to hide position seek bar and disable seeking let isLive = mediaInfo.is_live();
// when playing not seekable media (not implemented yet) this.isSeekable = mediaInfo.is_seekable();
//let isLive = mediaInfo.is_live(); this.controls.setLiveMode(isLive, this.isSeekable);
//let isSeekable = mediaInfo.is_seekable();
let streamList = mediaInfo.get_stream_list(); let streamList = mediaInfo.get_stream_list();
let parsedInfo = { let parsedInfo = {
@@ -323,7 +324,6 @@ class ClapperInterface extends Gtk.Grid
this._player.set_visualization_enabled(false); this._player.set_visualization_enabled(false);
debug('disabled visualizations'); debug('disabled visualizations');
} }
return; return;
} }
@@ -383,7 +383,8 @@ class ClapperInterface extends Gtk.Grid
_onPlayerPositionUpdated(player, position) _onPlayerPositionUpdated(player, position)
{ {
if( if(
this.controls.isPositionSeeking !this.isSeekable
|| this.controls.isPositionSeeking
|| this._player.state === GstPlayer.PlayerState.BUFFERING || this._player.state === GstPlayer.PlayerState.BUFFERING
) )
return; return;

View File

@@ -14,10 +14,6 @@ scale marks {
min-width: 36px; min-width: 36px;
min-height: 36px; min-height: 36px;
} }
.osd scale trough highlight {
min-width: 0px;
min-height: 6px;
}
.osd radio { .osd radio {
margin: 6px; margin: 6px;
border: 2px solid; border: 2px solid;