File indexing completed on 2024-04-21 04:48:59

0001 /*
0002    SPDX-FileCopyrightText: 2016 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr>
0003 
0004    SPDX-License-Identifier: LGPL-3.0-or-later
0005  */
0006 
0007 #include "managemediaplayercontrol.h"
0008 
0009 
0010 ManageMediaPlayerControl::ManageMediaPlayerControl(QObject *parent) : QObject(parent)
0011 {
0012 
0013 }
0014 
0015 bool ManageMediaPlayerControl::playControlEnabled() const
0016 {
0017     return mCurrentTrack.isValid();
0018 }
0019 
0020 bool ManageMediaPlayerControl::skipBackwardControlEnabled() const
0021 {
0022     return (mPreviousTrack.isValid());
0023 }
0024 
0025 bool ManageMediaPlayerControl::skipForwardControlEnabled() const
0026 {
0027     return (mNextTrack.isValid());
0028 }
0029 
0030 bool ManageMediaPlayerControl::musicPlaying() const
0031 {
0032     return mIsInPlayingState;
0033 }
0034 
0035 void ManageMediaPlayerControl::playerPausedOrStopped()
0036 {
0037     if (mIsInPlayingState) {
0038         auto oldPreviousTrackIsEnabled = skipBackwardControlEnabled();
0039         auto oldNextTrackIsEnabled = skipForwardControlEnabled();
0040 
0041         mIsInPlayingState = false;
0042         Q_EMIT musicPlayingChanged();
0043 
0044         if (!mCurrentTrack.isValid()) {
0045             return;
0046         }
0047 
0048         if (oldNextTrackIsEnabled != skipForwardControlEnabled()) {
0049             Q_EMIT skipForwardControlEnabledChanged();
0050         }
0051 
0052         if (oldPreviousTrackIsEnabled != skipBackwardControlEnabled()) {
0053             Q_EMIT skipBackwardControlEnabledChanged();
0054         }
0055     }
0056 }
0057 
0058 void ManageMediaPlayerControl::playerPlaying()
0059 {
0060     if (!mIsInPlayingState) {
0061         auto oldPreviousTrackIsEnabled = skipBackwardControlEnabled();
0062         auto oldNextTrackIsEnabled = skipForwardControlEnabled();
0063 
0064         mIsInPlayingState = true;
0065         Q_EMIT musicPlayingChanged();
0066 
0067         if (!mCurrentTrack.isValid()) {
0068             return;
0069         }
0070 
0071         if (oldNextTrackIsEnabled != skipForwardControlEnabled()) {
0072             Q_EMIT skipForwardControlEnabledChanged();
0073         }
0074 
0075         if (oldPreviousTrackIsEnabled != skipBackwardControlEnabled()) {
0076             Q_EMIT skipBackwardControlEnabledChanged();
0077         }
0078     }
0079 }
0080 
0081 void ManageMediaPlayerControl::setPreviousTrack(const QPersistentModelIndex &previousTrack)
0082 {
0083     if (mPreviousTrack == previousTrack) {
0084         return;
0085     }
0086 
0087     bool oldValueSkipBackward = skipBackwardControlEnabled();
0088 
0089     mPreviousTrack = previousTrack;
0090     Q_EMIT previousTrackChanged();
0091 
0092     if (oldValueSkipBackward != skipBackwardControlEnabled()) {
0093         Q_EMIT skipBackwardControlEnabledChanged();
0094     }
0095 }
0096 
0097 void ManageMediaPlayerControl::setCurrentTrack(const QPersistentModelIndex &currentTrack)
0098 {
0099     if (mCurrentTrack == currentTrack) {
0100         return;
0101     }
0102 
0103     bool oldPlayControlEnabled = playControlEnabled();
0104 
0105     mCurrentTrack = currentTrack;
0106     Q_EMIT currentTrackChanged();
0107 
0108     if (oldPlayControlEnabled != playControlEnabled()) {
0109         Q_EMIT playControlEnabledChanged();
0110     }
0111 }
0112 
0113 void ManageMediaPlayerControl::setNextTrack(const QPersistentModelIndex &nextTrack)
0114 {
0115     if (mNextTrack == nextTrack) {
0116         return;
0117     }
0118 
0119     bool oldValueSkipForward = skipForwardControlEnabled();
0120 
0121     mNextTrack = nextTrack;
0122     Q_EMIT nextTrackChanged();
0123 
0124     if (oldValueSkipForward != skipForwardControlEnabled()) {
0125         Q_EMIT skipForwardControlEnabledChanged();
0126     }
0127 }
0128 
0129 QPersistentModelIndex ManageMediaPlayerControl::previousTrack() const
0130 {
0131     return mPreviousTrack;
0132 }
0133 
0134 QPersistentModelIndex ManageMediaPlayerControl::currentTrack() const
0135 {
0136     return mCurrentTrack;
0137 }
0138 
0139 QPersistentModelIndex ManageMediaPlayerControl::nextTrack() const
0140 {
0141     return mNextTrack;
0142 }
0143 
0144 #include "moc_managemediaplayercontrol.cpp"