Switch playlist items via double tap on screen side

Double press left side of the touchscreen to play previous item, right side to play next one. #93
This commit is contained in:
Rafostar
2021-07-18 15:05:00 +02:00
parent 5378facb46
commit a6dfeeca37
2 changed files with 40 additions and 15 deletions

View File

@@ -219,6 +219,19 @@ function getUriProtocol(uri)
return (arr.length > 1) ? arr[0] : null;
}
function getIsTouch(gesture)
{
const { source } = gesture.get_device();
switch(source) {
case Gdk.InputSource.PEN:
case Gdk.InputSource.TOUCHSCREEN:
return true;
default:
return false;
}
}
function encodeHTML(text)
{
return text.replace(/&/g, '&')

View File

@@ -676,6 +676,26 @@ class ClapperWidget extends Gtk.Grid
});
}
_handleDoublePress(gesture, x, y)
{
if(!this.isFullscreenMode || !Misc.getIsTouch(gesture))
return this.toggleFullscreen();
const fieldSize = this.layoutWidth / 6;
if(x < fieldSize) {
debug('left side double press');
this.player.playlistWidget.prevTrack();
}
else if(x > this.layoutWidth - fieldSize) {
debug('right side double press');
this.player.playlistWidget.nextTrack();
}
else {
this.toggleFullscreen();
}
}
_getClickGesture()
{
const clickGesture = new Gtk.GestureClick({
@@ -767,6 +787,7 @@ class ClapperWidget extends Gtk.Grid
{
const button = gesture.get_current_button();
const isDouble = (nPress % 2 == 0);
this.isDragAllowed = !isDouble;
this.isSwipePerformed = false;
this.isLongPressed = false;
@@ -774,7 +795,7 @@ class ClapperWidget extends Gtk.Grid
switch(button) {
case Gdk.BUTTON_PRIMARY:
if(isDouble)
this.toggleFullscreen();
this._handleDoublePress(gesture, x, y);
break;
case Gdk.BUTTON_SECONDARY:
this.player.toggle_play();
@@ -788,20 +809,11 @@ class ClapperWidget extends Gtk.Grid
{
/* Reveal if touch was not a swipe/long press or was already revealed */
if(
(!this.isSwipePerformed && !this.isLongPressed)
|| this.revealerBottom.child_revealed
) {
const { source } = gesture.get_device();
switch(source) {
case Gdk.InputSource.PEN:
case Gdk.InputSource.TOUCHSCREEN:
this.revealControls();
break;
default:
break;
}
}
((!this.isSwipePerformed && !this.isLongPressed)
|| this.revealerBottom.child_revealed)
&& Misc.getIsTouch(gesture)
)
this.revealControls();
}
_onLongPressed(gesture, x, y)