MoviePlayer Class Reference

#include <movieplayer.h>

Inheritance diagram for MoviePlayer:

Inheritance graph
[legend]
Collaboration diagram for MoviePlayer:

Collaboration graph
[legend]
List of all members.

Detailed Description

Definition at line 39 of file movieplayer.h.

Public Member Functions

 MoviePlayer (QWidget *parent=0)
void openFile (const QString &fileName)

Private Slots

void open ()
void goToFrame (int frame)
void fitToWindow ()
void updateButtons ()
void updateFrameSlider ()

Private Member Functions

void createControls ()
void createButtons ()

Private Attributes

QString currentMovieDirectory
QLabelmovieLabel
QMoviemovie
QToolButtonopenButton
QToolButtonplayButton
QToolButtonpauseButton
QToolButtonstopButton
QToolButtonquitButton
QCheckBoxfitCheckBox
QSliderframeSlider
QSpinBoxspeedSpinBox
QLabelframeLabel
QLabelspeedLabel
QGridLayoutcontrolsLayout
QHBoxLayoutbuttonsLayout
QVBoxLayoutmainLayout


Constructor & Destructor Documentation

MoviePlayer::MoviePlayer ( QWidget parent = 0  ) 

Definition at line 28 of file movieplayer.cpp.

References QBoxLayout::addLayout(), QBoxLayout::addWidget(), Qt::AlignCenter, buttonsLayout, QMovie::CacheAll, QObject::connect(), controlsLayout, createButtons(), createControls(), currentMovieDirectory, QPalette::Dark, fitCheckBox, fitToWindow(), frameSlider, goToFrame(), QSizePolicy::Ignored, mainLayout, movie, movieLabel, QWidget::resize(), QLabel::setAlignment(), QWidget::setAutoFillBackground(), QWidget::setBackgroundRole(), QMovie::setCacheMode(), QWidget::setLayout(), QWidget::setSizePolicy(), QWidget::setWindowTitle(), SIGNAL, SLOT, speedSpinBox, updateButtons(), and updateFrameSlider().

00029     : QWidget(parent)
00030 {
00031     movie = new QMovie(this);
00032     movie->setCacheMode(QMovie::CacheAll);
00033 
00034     movieLabel = new QLabel(tr("No movie loaded"));
00035     movieLabel->setAlignment(Qt::AlignCenter);
00036     movieLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
00037     movieLabel->setBackgroundRole(QPalette::Dark);
00038     movieLabel->setAutoFillBackground(true);
00039 
00040     currentMovieDirectory = "movies";
00041 
00042     createControls();
00043     createButtons();
00044 
00045     connect(movie, SIGNAL(frameChanged(int)), this, SLOT(updateFrameSlider()));
00046     connect(movie, SIGNAL(stateChanged(QMovie::MovieState)),
00047             this, SLOT(updateButtons()));
00048     connect(fitCheckBox, SIGNAL(clicked()), this, SLOT(fitToWindow()));
00049     connect(frameSlider, SIGNAL(valueChanged(int)), this, SLOT(goToFrame(int)));
00050     connect(speedSpinBox, SIGNAL(valueChanged(int)),
00051             movie, SLOT(setSpeed(int)));
00052 
00053     mainLayout = new QVBoxLayout;
00054     mainLayout->addWidget(movieLabel);
00055     mainLayout->addLayout(controlsLayout);
00056     mainLayout->addLayout(buttonsLayout);
00057     setLayout(mainLayout);
00058 
00059     updateFrameSlider();
00060     updateButtons();
00061 
00062     setWindowTitle(tr("Movie Player"));
00063     resize(400, 400);
00064 }

Here is the call graph for this function:


Member Function Documentation

void MoviePlayer::openFile ( const QString fileName  ) 

Definition at line 74 of file movieplayer.cpp.

References currentMovieDirectory, movie, movieLabel, QMovie::setFileName(), QLabel::setMovie(), QMovie::start(), QMovie::stop(), updateButtons(), and updateFrameSlider().

Referenced by open().

00075 {
00076     currentMovieDirectory = QFileInfo(fileName).path();
00077 
00078     movie->stop();
00079     movieLabel->setMovie(movie);
00080     movie->setFileName(fileName);
00081     movie->start();
00082 
00083     updateFrameSlider();
00084     updateButtons();
00085 }

Here is the call graph for this function:

void MoviePlayer::open (  )  [private, slot]

Definition at line 66 of file movieplayer.cpp.

References currentMovieDirectory, QFileDialog::getOpenFileName(), QString::isEmpty(), and openFile().

Referenced by createButtons().

00067 {
00068     QString fileName = QFileDialog::getOpenFileName(this, tr("Open a Movie"),
00069                                currentMovieDirectory);
00070     if (!fileName.isEmpty())
00071         openFile(fileName);
00072 }

void MoviePlayer::goToFrame ( int  frame  )  [private, slot]

Definition at line 87 of file movieplayer.cpp.

References QMovie::jumpToFrame(), and movie.

Referenced by MoviePlayer().

00088 {
00089     movie->jumpToFrame(frame);
00090 }

void MoviePlayer::fitToWindow (  )  [private, slot]

Definition at line 92 of file movieplayer.cpp.

References fitCheckBox, QAbstractButton::isChecked(), movieLabel, and QLabel::setScaledContents().

Referenced by MoviePlayer().

00093 {
00094     movieLabel->setScaledContents(fitCheckBox->isChecked());
00095 }

void MoviePlayer::updateButtons (  )  [private, slot]

Definition at line 116 of file movieplayer.cpp.

References QMovie::frameCount(), QMovie::isValid(), movie, QMovie::NotRunning, pauseButton, QMovie::Paused, playButton, QAbstractButton::setChecked(), QWidget::setEnabled(), QMovie::state(), and stopButton.

Referenced by MoviePlayer(), and openFile().

void MoviePlayer::updateFrameSlider (  )  [private, slot]

Definition at line 97 of file movieplayer.cpp.

References QMovie::currentFrameNumber(), QMovie::frameCount(), frameLabel, frameSlider, QAbstractSlider::maximum(), movie, QWidget::setEnabled(), QAbstractSlider::setMaximum(), and QAbstractSlider::setValue().

Referenced by MoviePlayer(), and openFile().

00098 {
00099     bool hasFrames = (movie->currentFrameNumber() >= 0);
00100 
00101     if (hasFrames) {
00102         if (movie->frameCount() > 0) {
00103             frameSlider->setMaximum(movie->frameCount() - 1);
00104         } else {
00105             if (movie->currentFrameNumber() > frameSlider->maximum())
00106                 frameSlider->setMaximum(movie->currentFrameNumber());
00107         }
00108         frameSlider->setValue(movie->currentFrameNumber());
00109     } else {
00110         frameSlider->setMaximum(0);
00111     }
00112     frameLabel->setEnabled(hasFrames);
00113     frameSlider->setEnabled(hasFrames);
00114 }

void MoviePlayer::createControls (  )  [private]

Definition at line 125 of file movieplayer.cpp.

References QGridLayout::addWidget(), controlsLayout, fitCheckBox, frameLabel, frameSlider, Qt::Horizontal, QSpinBox::setRange(), QSpinBox::setSuffix(), QSlider::setTickInterval(), QSlider::setTickPosition(), QSpinBox::setValue(), speedLabel, speedSpinBox, and QSlider::TicksBelow.

Referenced by MoviePlayer().

00126 {
00127     fitCheckBox = new QCheckBox(tr("Fit to Window"));
00128 
00129     frameLabel = new QLabel(tr("Current frame:"));
00130 
00131     frameSlider = new QSlider(Qt::Horizontal);
00132     frameSlider->setTickPosition(QSlider::TicksBelow);
00133     frameSlider->setTickInterval(10);
00134 
00135     speedLabel = new QLabel(tr("Speed:"));
00136 
00137     speedSpinBox = new QSpinBox;
00138     speedSpinBox->setRange(1, 9999);
00139     speedSpinBox->setValue(100);
00140     speedSpinBox->setSuffix(tr("%"));
00141 
00142     controlsLayout = new QGridLayout;
00143     controlsLayout->addWidget(fitCheckBox, 0, 0, 1, 2);
00144     controlsLayout->addWidget(frameLabel, 1, 0);
00145     controlsLayout->addWidget(frameSlider, 1, 1, 1, 2);
00146     controlsLayout->addWidget(speedLabel, 2, 0);
00147     controlsLayout->addWidget(speedSpinBox, 2, 1);
00148 }

Here is the call graph for this function:

void MoviePlayer::createButtons (  )  [private]

Definition at line 150 of file movieplayer.cpp.

References QBoxLayout::addStretch(), QBoxLayout::addWidget(), buttonsLayout, QWidget::close(), QObject::connect(), movie, open(), openButton, pauseButton, playButton, quitButton, QAbstractButton::setCheckable(), QAbstractButton::setIcon(), QAbstractButton::setIconSize(), QWidget::setToolTip(), SIGNAL, SLOT, start, and stopButton.

Referenced by MoviePlayer().

00151 {
00152     QSize iconSize(36, 36);
00153 
00154     openButton = new QToolButton;
00155     openButton->setIcon(QIcon(":/images/open.png"));
00156     openButton->setIconSize(iconSize);
00157     openButton->setToolTip(tr("Open File"));
00158     connect(openButton, SIGNAL(clicked()), this, SLOT(open()));
00159 
00160     playButton = new QToolButton;
00161     playButton->setIcon(QIcon(":/images/play.png"));
00162     playButton->setIconSize(iconSize);
00163     playButton->setToolTip(tr("Play"));
00164     connect(playButton, SIGNAL(clicked()), movie, SLOT(start()));
00165 
00166     pauseButton = new QToolButton;
00167     pauseButton->setCheckable(true);
00168     pauseButton->setIcon(QIcon(":/images/pause.png"));
00169     pauseButton->setIconSize(iconSize);
00170     pauseButton->setToolTip(tr("Pause"));
00171     connect(pauseButton, SIGNAL(clicked(bool)), movie, SLOT(setPaused(bool)));
00172 
00173     stopButton = new QToolButton;
00174     stopButton->setIcon(QIcon(":/images/stop.png"));
00175     stopButton->setIconSize(iconSize);
00176     stopButton->setToolTip(tr("Stop"));
00177     connect(stopButton, SIGNAL(clicked()), movie, SLOT(stop()));
00178 
00179     quitButton = new QToolButton;
00180     quitButton->setIcon(QIcon(":/images/quit.png"));
00181     quitButton->setIconSize(iconSize);
00182     quitButton->setToolTip(tr("Quit"));
00183     connect(quitButton, SIGNAL(clicked()), this, SLOT(close()));
00184 
00185     buttonsLayout = new QHBoxLayout;
00186     buttonsLayout->addStretch();
00187     buttonsLayout->addWidget(openButton);
00188     buttonsLayout->addWidget(playButton);
00189     buttonsLayout->addWidget(pauseButton);
00190     buttonsLayout->addWidget(stopButton);
00191     buttonsLayout->addWidget(quitButton);
00192     buttonsLayout->addStretch();
00193 }

Here is the call graph for this function:


Member Data Documentation

QString MoviePlayer::currentMovieDirectory [private]

Definition at line 58 of file movieplayer.h.

Referenced by MoviePlayer(), open(), and openFile().

QLabel* MoviePlayer::movieLabel [private]

Definition at line 59 of file movieplayer.h.

Referenced by fitToWindow(), MoviePlayer(), and openFile().

QMovie* MoviePlayer::movie [private]

Definition at line 60 of file movieplayer.h.

Referenced by createButtons(), goToFrame(), MoviePlayer(), openFile(), updateButtons(), and updateFrameSlider().

QToolButton* MoviePlayer::openButton [private]

Definition at line 61 of file movieplayer.h.

Referenced by createButtons().

QToolButton* MoviePlayer::playButton [private]

Definition at line 62 of file movieplayer.h.

Referenced by createButtons(), and updateButtons().

QToolButton* MoviePlayer::pauseButton [private]

Definition at line 63 of file movieplayer.h.

Referenced by createButtons(), and updateButtons().

QToolButton* MoviePlayer::stopButton [private]

Definition at line 64 of file movieplayer.h.

Referenced by createButtons(), and updateButtons().

QToolButton* MoviePlayer::quitButton [private]

Definition at line 65 of file movieplayer.h.

Referenced by createButtons().

QCheckBox* MoviePlayer::fitCheckBox [private]

Definition at line 66 of file movieplayer.h.

Referenced by createControls(), fitToWindow(), and MoviePlayer().

QSlider* MoviePlayer::frameSlider [private]

Definition at line 67 of file movieplayer.h.

Referenced by createControls(), MoviePlayer(), and updateFrameSlider().

QSpinBox* MoviePlayer::speedSpinBox [private]

Definition at line 68 of file movieplayer.h.

Referenced by createControls(), and MoviePlayer().

QLabel* MoviePlayer::frameLabel [private]

Definition at line 69 of file movieplayer.h.

Referenced by createControls(), and updateFrameSlider().

QLabel* MoviePlayer::speedLabel [private]

Definition at line 70 of file movieplayer.h.

Referenced by createControls().

QGridLayout* MoviePlayer::controlsLayout [private]

Definition at line 72 of file movieplayer.h.

Referenced by createControls(), and MoviePlayer().

QHBoxLayout* MoviePlayer::buttonsLayout [private]

Definition at line 73 of file movieplayer.h.

Referenced by createButtons(), and MoviePlayer().

QVBoxLayout* MoviePlayer::mainLayout [private]

Definition at line 74 of file movieplayer.h.

Referenced by MoviePlayer().


The documentation for this class was generated from the following files:
Generated on Thu Mar 15 15:14:12 2007 for Qt 4.2 User's Guide by  doxygen 1.5.1