parent
ca762f4274
commit
fbd630636b
@ -1,90 +0,0 @@ |
||||
/*
|
||||
* Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) |
||||
* |
||||
* This file is part of Open-Sankoré. |
||||
* |
||||
* Open-Sankoré is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU General Public License as published by |
||||
* the Free Software Foundation, version 3 of the License, |
||||
* with a specific linking exception for the OpenSSL project's |
||||
* "OpenSSL" library (or with modified versions of it that use the |
||||
* same license as the "OpenSSL" library). |
||||
* |
||||
* Open-Sankoré is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with Open-Sankoré. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/ |
||||
|
||||
|
||||
|
||||
#include <QPainter> |
||||
#include <QDebug> |
||||
|
||||
#include "UBActionableWidget.h" |
||||
|
||||
#include "core/memcheck.h" |
||||
|
||||
UBActionableWidget::UBActionableWidget(QWidget *parent, const char *name):QWidget(parent) |
||||
, mShowActions(false) |
||||
{ |
||||
setObjectName(name); |
||||
mActions.clear(); |
||||
mCloseButtons.setIcon(QIcon(QPixmap(":images/close.svg"))); |
||||
mCloseButtons.setGeometry(0, 0, 2*ACTIONSIZE, ACTIONSIZE); |
||||
mCloseButtons.setVisible(false); |
||||
connect(&mCloseButtons, SIGNAL(clicked()), this, SLOT(onCloseClicked())); |
||||
} |
||||
|
||||
UBActionableWidget::~UBActionableWidget() |
||||
{ |
||||
|
||||
} |
||||
|
||||
void UBActionableWidget::addAction(eAction act) |
||||
{ |
||||
if(!mActions.contains(act)){ |
||||
mActions << act; |
||||
} |
||||
} |
||||
|
||||
void UBActionableWidget::removeAction(eAction act) |
||||
{ |
||||
if(mActions.contains(act)){ |
||||
mActions.remove(mActions.indexOf(act)); |
||||
} |
||||
} |
||||
|
||||
void UBActionableWidget::removeAllActions() |
||||
{ |
||||
mActions.clear(); |
||||
} |
||||
|
||||
void UBActionableWidget::setActionsVisible(bool bVisible) |
||||
{ |
||||
if(!mActions.empty() && mActions.contains(eAction_Close)){ |
||||
mCloseButtons.setVisible(bVisible); |
||||
} |
||||
} |
||||
|
||||
void UBActionableWidget::onCloseClicked() |
||||
{ |
||||
emit close(this); |
||||
} |
||||
|
||||
void UBActionableWidget::setActionsParent(QWidget *parent) |
||||
{ |
||||
if(mActions.contains(eAction_Close)){ |
||||
mCloseButtons.setParent(parent); |
||||
} |
||||
} |
||||
|
||||
void UBActionableWidget::unsetActionsParent() |
||||
{ |
||||
if(mActions.contains(eAction_Close)){ |
||||
mCloseButtons.setParent(this); |
||||
} |
||||
} |
@ -1,68 +0,0 @@ |
||||
/*
|
||||
* Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) |
||||
* |
||||
* This file is part of Open-Sankoré. |
||||
* |
||||
* Open-Sankoré is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU General Public License as published by |
||||
* the Free Software Foundation, version 3 of the License, |
||||
* with a specific linking exception for the OpenSSL project's |
||||
* "OpenSSL" library (or with modified versions of it that use the |
||||
* same license as the "OpenSSL" library). |
||||
* |
||||
* Open-Sankoré is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with Open-Sankoré. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/ |
||||
|
||||
|
||||
|
||||
#ifndef UBACTIONABLEWIDGET_H |
||||
#define UBACTIONABLEWIDGET_H |
||||
|
||||
#include <QWidget> |
||||
#include <QPaintEvent> |
||||
#include <QToolButton> |
||||
#include <QPushButton> |
||||
|
||||
#define ACTIONSIZE 16 |
||||
|
||||
typedef enum{ |
||||
eAction_Close, |
||||
eAction_MoveUp, |
||||
eAction_MoveDown |
||||
}eAction; |
||||
|
||||
class UBActionableWidget : public QWidget |
||||
{ |
||||
Q_OBJECT |
||||
public: |
||||
UBActionableWidget(QWidget* parent=0, const char* name="UBActionableWidget"); |
||||
~UBActionableWidget(); |
||||
void addAction(eAction act); |
||||
void removeAction(eAction act); |
||||
void removeAllActions(); |
||||
void setActionsVisible(bool bVisible); |
||||
|
||||
signals: |
||||
void close(QWidget* w); |
||||
|
||||
protected: |
||||
void setActionsParent(QWidget* parent); |
||||
void unsetActionsParent(); |
||||
QVector<eAction> mActions; |
||||
QPushButton mCloseButtons; |
||||
|
||||
private slots: |
||||
void onCloseClicked(); |
||||
|
||||
private: |
||||
bool mShowActions; |
||||
|
||||
}; |
||||
|
||||
#endif // UBACTIONABLEWIDGET_H
|
@ -1,368 +0,0 @@ |
||||
/*
|
||||
* Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) |
||||
* |
||||
* This file is part of Open-Sankoré. |
||||
* |
||||
* Open-Sankoré is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU General Public License as published by |
||||
* the Free Software Foundation, version 3 of the License, |
||||
* with a specific linking exception for the OpenSSL project's |
||||
* "OpenSSL" library (or with modified versions of it that use the |
||||
* same license as the "OpenSSL" library). |
||||
* |
||||
* Open-Sankoré is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with Open-Sankoré. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/ |
||||
|
||||
|
||||
|
||||
#include "core/UBApplication.h" |
||||
#include "globals/UBGlobals.h" |
||||
#include "UBMediaWidget.h" |
||||
|
||||
#include "core/memcheck.h" |
||||
|
||||
/**
|
||||
* \brief Constructor |
||||
* @param type as the media type |
||||
* @param parent as the parent widget |
||||
* @param name as the object name |
||||
*/ |
||||
UBMediaWidget::UBMediaWidget(eMediaType type, QWidget *parent, const char *name):UBActionableWidget(parent, name) |
||||
, mpMediaObject(NULL) |
||||
, mpVideoWidget(NULL) |
||||
, mpAudioOutput(NULL) |
||||
, mpLayout(NULL) |
||||
, mpSeekerLayout(NULL) |
||||
, mpPlayStopButton(NULL) |
||||
, mpPauseButton(NULL) |
||||
, mpSlider(NULL) |
||||
, mAutoUpdate(false) |
||||
, mGeneratingThumbnail(false) |
||||
, mBorder(5) |
||||
, mpMediaContainer(NULL) |
||||
, mMediaLayout(NULL) |
||||
, mpCover(NULL) |
||||
{ |
||||
SET_STYLE_SHEET(); |
||||
|
||||
addAction(eAction_Close); |
||||
mType = type; |
||||
mpLayout = new QVBoxLayout(this); |
||||
setLayout(mpLayout); |
||||
|
||||
mpPlayStopButton = new UBMediaButton(this); |
||||
mpPlayStopButton->setPixmap(QPixmap(":images/play.svg")); |
||||
mpPauseButton = new UBMediaButton(this); |
||||
mpPauseButton->setPixmap(QPixmap(":images/pause.svg")); |
||||
mpPauseButton->setEnabled(false); |
||||
mpSlider = new QSlider(this); |
||||
mpSlider->setOrientation(Qt::Horizontal); |
||||
mpSlider->setMinimum(0); |
||||
mpSlider->setMaximum(0); |
||||
|
||||
mpSeekerLayout = new QHBoxLayout(); |
||||
mpSeekerLayout->addWidget(mpPlayStopButton, 0); |
||||
mpSeekerLayout->addWidget(mpPauseButton, 0); |
||||
mpSeekerLayout->addWidget(mpSlider, 1); |
||||
mpSeekerLayout->setContentsMargins(0, 0, 0, 0); |
||||
|
||||
connect(mpPlayStopButton, SIGNAL(clicked()), this, SLOT(onPlayStopClicked())); |
||||
connect(mpPauseButton, SIGNAL(clicked()), this, SLOT(onPauseClicked())); |
||||
connect(mpSlider, SIGNAL(valueChanged(int)), this, SLOT(onSliderChanged(int))); |
||||
} |
||||
|
||||
/**
|
||||
* \brief Destructor |
||||
*/ |
||||
UBMediaWidget::~UBMediaWidget() |
||||
{ |
||||
unsetActionsParent(); |
||||
DELETEPTR(mpMediaObject); |
||||
DELETEPTR(mpSlider); |
||||
DELETEPTR(mpPauseButton); |
||||
DELETEPTR(mpPlayStopButton); |
||||
DELETEPTR(mpAudioOutput); |
||||
DELETEPTR(mpVideoWidget); |
||||
DELETEPTR(mpCover); |
||||
DELETEPTR(mpMediaContainer); |
||||
DELETEPTR(mpSeekerLayout); |
||||
DELETEPTR(mpLayout); |
||||
} |
||||
|
||||
/**
|
||||
* \brief Set the media file |
||||
* @param filePath as the media file path |
||||
*/ |
||||
void UBMediaWidget::setFile(const QString &filePath) |
||||
{ |
||||
Q_ASSERT("" != filePath); |
||||
mFilePath = filePath; |
||||
mpMediaObject = new Phonon::MediaObject(this); |
||||
mpMediaObject->setTickInterval(TICK_INTERVAL); |
||||
connect(mpMediaObject, SIGNAL(stateChanged(Phonon::State,Phonon::State)), this, SLOT(onStateChanged(Phonon::State,Phonon::State))); |
||||
connect(mpMediaObject, SIGNAL(totalTimeChanged(qint64)), this, SLOT(onTotalTimeChanged(qint64))); |
||||
connect(mpMediaObject, SIGNAL(tick(qint64)), this, SLOT(onTick(qint64))); |
||||
mpMediaObject->setCurrentSource(Phonon::MediaSource(filePath)); |
||||
createMediaPlayer(); |
||||
} |
||||
|
||||
/**
|
||||
* \brief Get the media type |
||||
* @returns the media type |
||||
*/ |
||||
eMediaType UBMediaWidget::mediaType() |
||||
{ |
||||
return mType; |
||||
} |
||||
|
||||
void UBMediaWidget::showEvent(QShowEvent* event) |
||||
{ |
||||
if(mType == eMediaType_Audio){ |
||||
return; |
||||
}else{ |
||||
if(!mpVideoWidget){ |
||||
mpVideoWidget = new Phonon::VideoWidget(this); |
||||
mMediaLayout->addStretch(1); |
||||
mMediaLayout->addWidget(mpVideoWidget); |
||||
mMediaLayout->addStretch(1); |
||||
Phonon::createPath(mpMediaObject, mpVideoWidget); |
||||
adaptSizeToVideo(); |
||||
mpMediaObject->play(); |
||||
mpMediaObject->stop(); |
||||
} |
||||
QWidget::showEvent(event); |
||||
} |
||||
} |
||||
|
||||
void UBMediaWidget::hideEvent(QHideEvent* event) |
||||
{ |
||||
if(mpMediaObject->state() == Phonon::PlayingState) |
||||
mpMediaObject->stop(); |
||||
UBActionableWidget::hideEvent(event); |
||||
} |
||||
|
||||
/**
|
||||
* \brief Create the media player |
||||
*/ |
||||
void UBMediaWidget::createMediaPlayer() |
||||
{ |
||||
mpMediaContainer = new QWidget(); |
||||
mpMediaContainer->setObjectName("UBMediaVideoContainer"); |
||||
mMediaLayout = new QHBoxLayout(); |
||||
mpMediaContainer->setLayout(mMediaLayout); |
||||
|
||||
if(eMediaType_Video == mType){ |
||||
mMediaLayout->setContentsMargins(10, 10, 10, 10); |
||||
if(isVisible()){ |
||||
mpVideoWidget = new Phonon::VideoWidget(this); |
||||
mMediaLayout->addStretch(1); |
||||
mMediaLayout->addWidget(mpVideoWidget); |
||||
mMediaLayout->addStretch(1); |
||||
Phonon::createPath(mpMediaObject, mpVideoWidget); |
||||
adaptSizeToVideo(); |
||||
} |
||||
mpAudioOutput = new Phonon::AudioOutput(Phonon::VideoCategory, this); |
||||
Phonon::createPath(mpMediaObject, mpAudioOutput); |
||||
}else if(eMediaType_Audio == mType){ |
||||
mMediaLayout->setContentsMargins(10, 10, 10, 10); |
||||
mpCover = new QLabel(mpMediaContainer); |
||||
//mpMediaContainer->setStyleSheet(QString("background: none;"));
|
||||
setAudioCover(":images/libpalette/soundIcon.svg"); |
||||
mpCover->setScaledContents(true); |
||||
mMediaLayout->addStretch(1); |
||||
mMediaLayout->addWidget(mpCover); |
||||
mMediaLayout->addStretch(1); |
||||
mpAudioOutput = new Phonon::AudioOutput(Phonon::MusicCategory, this); |
||||
Phonon::createPath(mpMediaObject, mpAudioOutput); |
||||
} |
||||
mpLayout->addWidget(mpMediaContainer, 1); |
||||
mpLayout->addLayout(mpSeekerLayout, 0); |
||||
setActionsParent(mpMediaContainer); |
||||
} |
||||
|
||||
/**
|
||||
* \brief Adapt the widget size to the video in order to keep the good aspect ratio |
||||
*/ |
||||
void UBMediaWidget::adaptSizeToVideo() |
||||
{ |
||||
if(NULL != mpMediaContainer){ |
||||
int origW = mpMediaContainer->width(); |
||||
int origH = mpMediaContainer->height(); |
||||
int newW = width(); |
||||
float scaleFactor = (float)origW/(float)newW; |
||||
int newH = origH/scaleFactor; |
||||
resize(newW, height() + newH); |
||||
} |
||||
} |
||||
|
||||
/**
|
||||
* \brief Handle the media state change notification |
||||
* @param newState as the new state |
||||
* @param oldState as the old state |
||||
*/ |
||||
void UBMediaWidget::onStateChanged(Phonon::State newState, Phonon::State oldState) |
||||
{ |
||||
if(!mGeneratingThumbnail){ |
||||
if(Phonon::LoadingState == oldState && Phonon::StoppedState == newState){ |
||||
if(eMediaType_Video == mType){ |
||||
// We do that here to generate the thumbnail of the video
|
||||
mGeneratingThumbnail = true; |
||||
mpMediaObject->play(); |
||||
mpMediaObject->pause(); |
||||
mGeneratingThumbnail = false; |
||||
} |
||||
}else if(Phonon::PlayingState == oldState && Phonon::PausedState == newState){ |
||||
mpPlayStopButton->setPixmap(QPixmap(":images/play.svg")); |
||||
mpPauseButton->setEnabled(false); |
||||
}else if((Phonon::PausedState == oldState && Phonon::PlayingState == newState) || |
||||
(Phonon::StoppedState == oldState && Phonon::PlayingState == newState)){ |
||||
mpPlayStopButton->setPixmap(QPixmap(":images/stop.svg")); |
||||
mpPauseButton->setEnabled(true); |
||||
}else if(Phonon::PlayingState == oldState && Phonon::StoppedState == newState){ |
||||
mpPlayStopButton->setPixmap(QPixmap(":images/play.svg")); |
||||
mpPauseButton->setEnabled(false); |
||||
mpSlider->setValue(0); |
||||
} |
||||
|
||||
} |
||||
// if(mType == eMediaType_Video)
|
||||
// updateView(newState);
|
||||
} |
||||
|
||||
/**
|
||||
* \brief Handles the total time change notification |
||||
* @param total as the new total time |
||||
*/ |
||||
void UBMediaWidget::onTotalTimeChanged(qint64 total) |
||||
{ |
||||
mpSlider->setMaximum(total); |
||||
} |
||||
|
||||
/**
|
||||
* \brief Handles the tick notification |
||||
* @param currentTime as the current time |
||||
*/ |
||||
void UBMediaWidget::onTick(qint64 currentTime) |
||||
{ |
||||
mAutoUpdate = true; |
||||
mpSlider->setValue((int)currentTime); |
||||
mAutoUpdate = false; |
||||
} |
||||
|
||||
/**
|
||||
* \brief Handles the seeker value change notification |
||||
* @param value as the new seeker value |
||||
*/ |
||||
void UBMediaWidget::onSliderChanged(int value) |
||||
{ |
||||
if(!mAutoUpdate){ |
||||
mpMediaObject->seek(value); |
||||
} |
||||
} |
||||
|
||||
/**
|
||||
* \brief Toggle Play-Stop |
||||
*/ |
||||
void UBMediaWidget::onPlayStopClicked() |
||||
{ |
||||
switch(mpMediaObject->state()){ |
||||
case Phonon::PlayingState: |
||||
mpMediaObject->stop(); |
||||
break; |
||||
|
||||
case Phonon::StoppedState: |
||||
case Phonon::PausedState: |
||||
mpMediaObject->play(); |
||||
break; |
||||
default: |
||||
break; |
||||
} |
||||
} |
||||
|
||||
/**
|
||||
* \brief Pause the media |
||||
*/ |
||||
void UBMediaWidget::onPauseClicked() |
||||
{ |
||||
mpMediaObject->pause(); |
||||
} |
||||
|
||||
/**
|
||||
* Get the border |
||||
* @returns the actual border |
||||
*/ |
||||
int UBMediaWidget::border() |
||||
{ |
||||
return mBorder; |
||||
} |
||||
|
||||
/**
|
||||
* \brief Handles the resize event |
||||
* @param ev as the resize event |
||||
*/ |
||||
void UBMediaWidget::resizeEvent(QResizeEvent* ev) |
||||
{ |
||||
Q_UNUSED(ev); |
||||
} |
||||
|
||||
/**
|
||||
* \brief Set the audio cover |
||||
* @param coverPath as the cover image file path |
||||
*/ |
||||
void UBMediaWidget::setAudioCover(const QString &coverPath) |
||||
{ |
||||
if(NULL != mpCover){ |
||||
mpCover->setPixmap(QPixmap(coverPath)); |
||||
} |
||||
} |
||||
|
||||
// -----------------------------------------------------------------------------------------------------------
|
||||
/**
|
||||
* \brief Constructor |
||||
* @param parent as the parent widget |
||||
* @param name as the object name |
||||
*/ |
||||
UBMediaButton::UBMediaButton(QWidget *parent, const char *name):QLabel(parent) |
||||
, mPressed(false) |
||||
{ |
||||
setObjectName(name); |
||||
resize(UBMEDIABUTTON_SIZE, UBMEDIABUTTON_SIZE); |
||||
setStyleSheet(QString("padding:0px 0px 0px 0px; margin:0px 0px 0px 0px;")); |
||||
} |
||||
|
||||
/**
|
||||
* \brief Destructor |
||||
*/ |
||||
UBMediaButton::~UBMediaButton() |
||||
{ |
||||
|
||||
} |
||||
|
||||
/**
|
||||
* \brief Handles the mouse press notification |
||||
* @param ev as the mouse press event |
||||
*/ |
||||
void UBMediaButton::mousePressEvent(QMouseEvent* ev) |
||||
{ |
||||
Q_UNUSED(ev); |
||||
mPressed = true; |
||||
} |
||||
|
||||
/**
|
||||
* \brief Handles the mouse release notification |
||||
* @param ev as the mouse release event |
||||
*/ |
||||
void UBMediaButton::mouseReleaseEvent(QMouseEvent* ev) |
||||
{ |
||||
Q_UNUSED(ev); |
||||
if(mPressed){ |
||||
mPressed = false; |
||||
emit clicked(); |
||||
} |
||||
} |
@ -1,137 +0,0 @@ |
||||
/*
|
||||
* Copyright (C) 2010-2013 Groupement d'Intérêt Public pour l'Education Numérique en Afrique (GIP ENA) |
||||
* |
||||
* This file is part of Open-Sankoré. |
||||
* |
||||
* Open-Sankoré is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU General Public License as published by |
||||
* the Free Software Foundation, version 3 of the License, |
||||
* with a specific linking exception for the OpenSSL project's |
||||
* "OpenSSL" library (or with modified versions of it that use the |
||||
* same license as the "OpenSSL" library). |
||||
* |
||||
* Open-Sankoré is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU General Public License |
||||
* along with Open-Sankoré. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/ |
||||
|
||||
|
||||
|
||||
#ifndef UBMEDIAWIDGET_H |
||||
#define UBMEDIAWIDGET_H |
||||
|
||||
#include <QWidget> |
||||
#include <QVBoxLayout> |
||||
#include <QHBoxLayout> |
||||
#include <QLabel> |
||||
#include <QSlider> |
||||
#include <QMouseEvent> |
||||
#include <QStackedWidget> |
||||
|
||||
#include <phonon/MediaObject> |
||||
#include <phonon/VideoWidget> |
||||
#include <phonon/AudioOutput> |
||||
|
||||
#include "UBActionableWidget.h" |
||||
|
||||
#define UBMEDIABUTTON_SIZE 32 |
||||
#define TICK_INTERVAL 1000 |
||||
|
||||
/**
|
||||
* \brief The media type |
||||
*/ |
||||
typedef enum{ |
||||
eMediaType_Video, |
||||
eMediaType_Audio |
||||
}eMediaType; |
||||
|
||||
class UBMediaButton : public QLabel |
||||
{ |
||||
Q_OBJECT |
||||
public: |
||||
UBMediaButton(QWidget* parent=0, const char* name="UBMediaButton"); |
||||
~UBMediaButton(); |
||||
|
||||
signals: |
||||
void clicked(); |
||||
|
||||
protected: |
||||
void mousePressEvent(QMouseEvent* ev); |
||||
void mouseReleaseEvent(QMouseEvent* ev); |
||||
|
||||
private: |
||||
/** And indicator of the press event in progress */ |
||||
bool mPressed; |
||||
}; |
||||
|
||||
class UBMediaWidget : public UBActionableWidget |
||||
{ |
||||
Q_OBJECT |
||||
public: |
||||
UBMediaWidget(eMediaType type = eMediaType_Video, QWidget* parent=0, const char* name="UBMediaWidget"); |
||||
~UBMediaWidget(); |
||||
void setFile(const QString& filePath); |
||||
eMediaType mediaType(); |
||||
int border(); |
||||
void setAudioCover(const QString& coverPath); |
||||
void setUrl(const QString& url){mUrl = url;} |
||||
QString url(){return mUrl;} |
||||
|
||||
protected: |
||||
void resizeEvent(QResizeEvent* ev); |
||||
void showEvent(QShowEvent* event); |
||||
void hideEvent(QHideEvent* event); |
||||
/** The current media file path */ |
||||
QString mFilePath; |
||||
|
||||
private slots: |
||||
void onPlayStopClicked(); |
||||
void onPauseClicked(); |
||||
void onStateChanged(Phonon::State newState, Phonon::State oldState); |
||||
void onTotalTimeChanged(qint64 total); |
||||
void onTick(qint64 currentTime); |
||||
void onSliderChanged(int value); |
||||
|
||||
private: |
||||
void createMediaPlayer(); |
||||
void adaptSizeToVideo(); |
||||
|
||||
/** The current media type */ |
||||
eMediaType mType; |
||||
/** The media object */ |
||||
Phonon::MediaObject* mpMediaObject; |
||||
/** The video renderer */ |
||||
Phonon::VideoWidget* mpVideoWidget; |
||||
/** The audio renderer */ |
||||
Phonon::AudioOutput* mpAudioOutput; |
||||
/** The principal layout of this widget */ |
||||
QVBoxLayout* mpLayout; |
||||
/** The seeker layout */ |
||||
QHBoxLayout* mpSeekerLayout; |
||||
/** The play-stop button */ |
||||
UBMediaButton* mpPlayStopButton; |
||||
/** The pause button */ |
||||
UBMediaButton* mpPauseButton; |
||||
/** The seeker slider */ |
||||
QSlider* mpSlider; |
||||
/** An indicator of the seeker auto update in progress */ |
||||
bool mAutoUpdate; |
||||
/** An indicator of the thumbnail generation in progress */ |
||||
bool mGeneratingThumbnail; |
||||
/** The border */ |
||||
int mBorder; |
||||
/** A widget that will contain the media */ |
||||
QWidget* mpMediaContainer; |
||||
/** The media layout */ |
||||
QHBoxLayout* mMediaLayout; |
||||
/** The audio cover */ |
||||
QLabel* mpCover; |
||||
/** The media url */ |
||||
QString mUrl; |
||||
}; |
||||
|
||||
#endif // UBMEDIAWIDGET_H
|
@ -1,8 +0,0 @@ |
||||
|
||||
HEADERS += \ |
||||
src/customWidgets/UBMediaWidget.h \ |
||||
src/customWidgets/UBActionableWidget.h |
||||
|
||||
SOURCES += \ |
||||
src/customWidgets/UBMediaWidget.cpp \ |
||||
src/customWidgets/UBActionableWidget.cpp |
Loading…
Reference in new issue