summaryrefslogtreecommitdiffstats
path: root/moviefileselectorpage.cpp
blob: 0ff58a4859e8163b6fb0baffeb92f849db254b2b (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
#include "moviefileselectorpage.h"
#include <QVBoxLayout>
#include <QListWidget>
#include <QDir>
#include <QLabel>
#include <QFile>
#include <QFileInfo>
#include <QAbstractButton>

MovieFileHolder::MovieFileHolder(QWidget *parent)
		: QListWidget(parent)
{
	//customize...
}
void MovieFileHolder::populate(const QString &directory)
{
	clear();
	QDir dir(directory, QLatin1String("*.mp4"), QDir::Time, QDir::Files);
	foreach(const QFileInfo &file, dir.entryInfoList()) {
		QString subtitlePath = file.canonicalFilePath().replace(QLatin1String(".mp4"), QLatin1String(".srt"));
		if (!QFile(subtitlePath).exists()) {
			QListWidgetItem *item = new QListWidgetItem;
			item->setText(file.baseName().replace('_', ' '));
			item->setData(Qt::UserRole + 0, file.canonicalFilePath());
			item->setData(Qt::UserRole + 1, subtitlePath);
			addItem(item);
		}
	}
	emit itemSelectionChanged();
}
QString MovieFileHolder::movieFile() const
{
	if (!currentItem()) return QString();
	return currentItem()->data(Qt::UserRole + 0).toString();
}
QString MovieFileHolder::movieTitle() const
{
	if (!currentItem()) return QString();
	return currentItem()->text();
}
QString MovieFileHolder::subtitleFile() const
{
	if (!currentItem()) return QString();
	return currentItem()->data(Qt::UserRole + 1).toString();
}
MovieFileSelectorPage::MovieFileSelectorPage(QWidget *parent)
		: QWizardPage(parent)
{
	setTitle(tr("Movie File Selection"));
	setSubTitle(tr("Select the MP4 of the movie for which you'd like to find subtitles"));
	QVBoxLayout *layout = new QVBoxLayout;
	m_movieList = new MovieFileHolder;
	registerField("movieFile*", m_movieList, "movieFile", SIGNAL(itemSelectionChanged()));
	registerField("movieTitle*", m_movieList, "movieTitle", SIGNAL(itemSelectionChanged()));
	registerField("subtitleFile*", m_movieList, "subtitleFile", SIGNAL(itemSelectionChanged()));
	layout->addWidget(m_movieList);
	setLayout(layout);
}
void MovieFileSelectorPage::initializePage()
{
	m_movieList->populate(field("directory").toString());
	emit completeChanged();
}
bool MovieFileSelectorPage::isComplete() const
{
	return !m_movieList->movieTitle().isNull();
}