summaryrefslogtreecommitdiffstats
path: root/subtitlepreviewpage.cpp
blob: de3256f0fca16c1a75f039e889c9ff5fce508b4c (plain) (blame)
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());
}