#include "subtitlepreviewpage.h" #include "subtitleparser.h" #include #include #include #include #include #include #include #include #include SubtitlePreviewPage::SubtitlePreviewPage(QWidget *parent) : QWizardPage(parent), m_subtitleParser(0) { setTitle(tr("Subtitle Preview")); setSubTitle(tr("Test whether or not you've chosen the correct subtitles")); QVBoxLayout *layout = new QVBoxLayout; m_videoPlayer = new Phonon::VideoPlayer(Phonon::VideoCategory, this); m_videoPlayer->setVolume(1); m_videoPlayer->mediaObject()->setTickInterval(10); connect(m_videoPlayer->mediaObject(), SIGNAL(tick(qint64)), this, SLOT(showSub(qint64))); Phonon::SeekSlider *slider = new Phonon::SeekSlider(m_videoPlayer->mediaObject(), this); QPushButton *play = new QPushButton; play->setText(tr("Play")); QPushButton *pause = new QPushButton; pause->setText(tr("Pause")); connect(play, SIGNAL(clicked()), m_videoPlayer, SLOT(play())); connect(pause, SIGNAL(clicked()), m_videoPlayer, SLOT(pause())); m_offsetTime = new QDoubleSpinBox; m_offsetTime->setSingleStep(1); m_offsetTime->setValue(0); m_offsetTime->setRange(-999, 999); m_offsetTime->setSuffix(tr(" seconds")); connect(m_offsetTime, SIGNAL(valueChanged(double)), this, SLOT(offsetSub(double))); QLabel *offsetTimeLabel = new QLabel; offsetTimeLabel->setText(tr("Offset subtiles by:")); offsetTimeLabel->setBuddy(m_offsetTime); m_subTitle = new QLabel; QHBoxLayout *topBar = new QHBoxLayout; topBar->addWidget(slider); topBar->addWidget(play); topBar->addWidget(pause); topBar->addWidget(offsetTimeLabel); topBar->addWidget(m_offsetTime); layout->addLayout(topBar); layout->addWidget(m_videoPlayer, 1); layout->addWidget(m_subTitle); setLayout(layout); } void SubtitlePreviewPage::initializePage() { m_subtitleParser = field("subtitle").value(); m_videoPlayer->play(field("movieFile").toString()); m_offsetTime->setValue(0); } void SubtitlePreviewPage::cleanupPage() { m_videoPlayer->stop(); m_offsetTime->setValue(0); } bool SubtitlePreviewPage::validatePage() { m_videoPlayer->stop(); return true; } void SubtitlePreviewPage::showSub(qint64 time) { if (!m_subtitleParser) return; m_subTitle->setText(QString("
%1
").arg(m_subtitleParser->subtitleAtTime(time))); } void SubtitlePreviewPage::offsetSub(double timeOffset) { m_subtitleParser->offsetTime(timeOffset * 1000); showSub(m_videoPlayer->currentTime()); }