1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
#include "subtitlepreviewpage.h"
#include "subtitleparser.h"
#include <QVariant>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QListWidget>
#include <Phonon/SeekSlider>
#include <Phonon/MediaObject>
#include <QPushButton>
#include <QLabel>
#include <QDoubleSpinBox>
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);
layout->addWidget(m_subTitle);
setLayout(layout);
}
void SubtitlePreviewPage::initializePage()
{
m_subtitleParser = field("subtitle").value<SubtitleParser*>();
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("<big><center>%1</center></big>").arg(m_subtitleParser->subtitleAtTime(time)));
}
void SubtitlePreviewPage::offsetSub(double timeOffset)
{
m_subtitleParser->offsetTime(timeOffset * 1000);
showSub(m_videoPlayer->currentTime());
}
|