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();
}
|