#include "moviefileselectorpage.h" #include #include #include #include #include #include #include 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(); }