diff --git a/src/elisaapplication.h b/src/elisaapplication.h --- a/src/elisaapplication.h +++ b/src/elisaapplication.h @@ -153,6 +153,8 @@ void scrub(); + void playPause(); + private: void initializeModels(); diff --git a/src/elisaapplication.cpp b/src/elisaapplication.cpp --- a/src/elisaapplication.cpp +++ b/src/elisaapplication.cpp @@ -159,6 +159,11 @@ d->mCollection.setDefaultShortcut(scrubAction, QKeySequence(tr("Shift+Left"))); } + if (actionName == QStringLiteral("Play/Pause") && KAuthorized::authorizeAction(actionName)) { + auto playPauseAction = d->mCollection.addAction(actionName, this, &ElisaApplication::playPause); + d->mCollection.setDefaultShortcut(playPauseAction, QKeySequence(tr("Space"))); + } + if (actionName == QStringLiteral("edit_find") && KAuthorized::authorizeAction(actionName)) { auto findAction = KStandardAction::find(this, &ElisaApplication::find, this); d->mCollection.addAction(findAction->objectName(), findAction); @@ -277,6 +282,8 @@ void ElisaApplication::scrub() {} +void ElisaApplication::playPause() {} + ElisaUtils::EntryDataList ElisaApplication::checkFileListAndMakeAbsolute(const ElisaUtils::EntryDataList &filesList, const QString &workingDirectory) const { diff --git a/src/qml/ElisaMainWindow.qml b/src/qml/ElisaMainWindow.qml --- a/src/qml/ElisaMainWindow.qml +++ b/src/qml/ElisaMainWindow.qml @@ -43,6 +43,7 @@ property var goBackAction: elisa.action("go_back") property var seekAction: elisa.action("Seek") property var scrubAction: elisa.action("Scrub") + property var playPauseAction: elisa.action("Play/Pause") Action { shortcut: goBackAction.shortcut @@ -59,6 +60,12 @@ onTriggered: elisa.audioControl.seek(headerBar.playerControl.position - 10000) } + + Action { + shortcut: playPauseAction.shortcut + onTriggered: elisa.audioControl.playPause() + } + ApplicationMenu { id: applicationMenu } diff --git a/src/qml/MediaPlayerControl.qml b/src/qml/MediaPlayerControl.qml --- a/src/qml/MediaPlayerControl.qml +++ b/src/qml/MediaPlayerControl.qml @@ -61,35 +61,50 @@ id: applicationMenuAction text: i18nc("open application menu", "Application Menu") icon.name: "application-menu" - onTriggered: openMenu() + onTriggered: { + menuButton.focus = false + openMenu() + } } Action { id: repeatAction text: i18nc("toggle repeat mode for playlist", "Toggle Repeat") icon.name: musicWidget.repeat ? "media-repeat-all" : "media-repeat-none" - onTriggered: musicWidget.repeat = !musicWidget.repeat + onTriggered: { + repeatButton.focus = false + musicWidget.repeat = !musicWidget.repeat + } } Action { id: shuffleAction text: i18nc("toggle shuffle mode for playlist", "Toggle Shuffle") icon.name: musicWidget.shuffle ? "media-playlist-shuffle" : "media-playlist-normal" - onTriggered: musicWidget.shuffle = !musicWidget.shuffle + onTriggered: { + shuffleButton.focus = false + musicWidget.shuffle = !musicWidget.shuffle + } } Action { id: muteAction text: i18nc("toggle mute mode for player", "Toggle Mute") icon.name: musicWidget.muted ? "player-volume-muted" : "player-volume" - onTriggered: musicWidget.muted = !musicWidget.muted + onTriggered: { + muteButton.focus = false + musicWidget.muted = !musicWidget.muted + } } Action { id: playPauseAction text: i18nc("toggle play and pause for the audio player", "Toggle Play and Pause") icon.name: musicWidget.isPlaying? "media-playback-pause" : "media-playback-start" - onTriggered: musicWidget.isPlaying ? musicWidget.pause() : musicWidget.play() + onTriggered: { + playPauseButton.focus = false + musicWidget.isPlaying ? musicWidget.pause() : musicWidget.play() + } enabled: playEnabled } @@ -97,7 +112,10 @@ id: skipBackwardAction text: i18nc("skip backward in playlists", "Skip Backward") icon.name: musicWidget.LayoutMirroring.enabled ? "media-skip-forward" : "media-skip-backward" - onTriggered: musicWidget.playPrevious() + onTriggered: { + skipBackwardButton.focus = false + musicWidget.playPrevious() + } enabled: skipBackwardEnabled } @@ -105,7 +123,10 @@ id: skipForwardAction text: i18nc("skip forward in playlists", "Skip Forward") icon.name: musicWidget.LayoutMirroring.enabled ? "media-skip-backward" : "media-skip-forward" - onTriggered: musicWidget.playNext() + onTriggered: { + skipForwardButton.focus = false + musicWidget.playNext() + } enabled: skipForwardEnabled } @@ -113,7 +134,10 @@ id: minimizeMaximizeAction text: i18nc("toggle between maximized and minimized ivre", "Toggle Maximize") icon.name: musicWidget.isMaximized ? "draw-arrow-up" : "draw-arrow-down" - onTriggered: musicWidget.isMaximized = !musicWidget.isMaximized + onTriggered: { + minimizeMaximizeButton.focus = false + musicWidget.isMaximized = !musicWidget.isMaximized + } } Rectangle { @@ -128,7 +152,7 @@ spacing: 5 FlatButtonWithToolTip { - id: minimzeMaximizeAction + id: minimizeMaximizeButton action: minimizeMaximizeAction Layout.preferredWidth: elisaTheme.smallControlButtonSize @@ -145,7 +169,6 @@ FlatButtonWithToolTip { id: skipBackwardButton action: skipBackwardAction - focus: skipBackwardEnabled Layout.preferredWidth: elisaTheme.smallControlButtonSize Layout.preferredHeight: elisaTheme.smallControlButtonSize @@ -159,7 +182,6 @@ FlatButtonWithToolTip { id: playPauseButton action: playPauseAction - focus: playEnabled Layout.preferredWidth: elisaTheme.smallControlButtonSize Layout.preferredHeight: elisaTheme.smallControlButtonSize @@ -173,7 +195,6 @@ FlatButtonWithToolTip { id: skipForwardButton action: skipForwardAction - focus: skipForwardEnabled Layout.preferredWidth: elisaTheme.smallControlButtonSize Layout.preferredHeight: elisaTheme.smallControlButtonSize @@ -302,7 +323,6 @@ FlatButtonWithToolTip { id: muteButton action: muteAction - focus: true Layout.preferredWidth: elisaTheme.smallControlButtonSize Layout.preferredHeight: elisaTheme.smallControlButtonSize @@ -364,7 +384,6 @@ } FlatButtonWithToolTip { - focus: true action: shuffleAction id: shuffleButton @@ -378,7 +397,6 @@ } FlatButtonWithToolTip { - focus: true action: repeatAction id: repeatButton @@ -394,7 +412,6 @@ FlatButtonWithToolTip { id: menuButton action: applicationMenuAction - focus: true Layout.preferredWidth: elisaTheme.smallControlButtonSize Layout.preferredHeight: elisaTheme.smallControlButtonSize