From 2f0ace0e367489eb20a75a69c95d463fcb04830f Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Sat, 26 Sep 2009 22:25:02 -0400 Subject: More gui work and dvd loading. --- newdvdgui.cpp | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 newdvdgui.cpp (limited to 'newdvdgui.cpp') diff --git a/newdvdgui.cpp b/newdvdgui.cpp new file mode 100644 index 0000000..defa9ff --- /dev/null +++ b/newdvdgui.cpp @@ -0,0 +1,84 @@ +#include "newdvdgui.h" +#include "dvddrive.h" +#include "encodemp4job.h" +#include +#include +#include +#include +#include +#include +#include + +NewDVDGui::NewDVDGui() : + m_insertDvd(tr("Please insert video DVD.")), + m_loadingTitles(tr("%1 inserted. Scanning titles...")), + m_ripping(tr("Created new video from DVD.")) +{ + m_watcher = new QFutureWatcher >; + m_watcher->setParent(this); + connect(m_watcher, SIGNAL(finished()), this, SLOT(loadedTitles())); + m_status = new QLabel; + m_dvdName = new QLineEdit; + connect(m_dvdName, SIGNAL(textChanged(QString)), this, SLOT(validateName(QString))); + m_rip = new QPushButton(tr("&Rip DVD")); + connect(m_rip, SIGNAL(clicked()), this, SLOT(rip())); + m_eject = new QPushButton(tr("&Eject")); + connect(m_eject, SIGNAL(clicked()), DVDDrive::instance(), SLOT(eject())); + QHBoxLayout *buttons = new QHBoxLayout; + buttons->addWidget(m_rip); + buttons->addWidget(m_eject); + QVBoxLayout *layout = new QVBoxLayout; + layout->addWidget(m_status, 0, Qt::AlignHCenter); + layout->addWidget(m_dvdName); + layout->addLayout(buttons); + if (DVDDrive::instance()->dvdInserted()) + dvdAdded(); + else + dvdRemoved(); + connect(DVDDrive::instance(), SIGNAL(dvdAdded()), this, SLOT(dvdAdded())); + connect(DVDDrive::instance(), SIGNAL(dvdRemoved()), this, SLOT(dvdRemoved())); + setFrameStyle(QFrame::StyledPanel); + setLayout(layout); +} +void NewDVDGui::dvdAdded() +{ + QString name = DVDDrive::instance()->dvdName(); + m_status->setText(m_loadingTitles.arg(name)); + m_dvdName->setText(name); //Calls validateName + m_dvdName->setVisible(false); + m_status->setVisible(true); + m_rip->setVisible(false); + m_eject->setVisible(false); + m_watcher->setFuture(QtConcurrent::run(&EncodeMP4Job::titles, DVDDrive::instance()->dvdDevice())); +} +void NewDVDGui::validateName(const QString &name) +{ + QSettings settings; + settings.beginGroup(QLatin1String("Videos")); + m_rip->setEnabled(!settings.childGroups().contains(name)); +} +void NewDVDGui::loadedTitles() +{ + m_titles = m_watcher->result(); + m_rip->setVisible(true); + m_eject->setVisible(true); + m_status->setVisible(false); + m_dvdName->setVisible(true); +} +void NewDVDGui::rip() +{ + m_rip->setEnabled(false); + m_dvdName->setVisible(false); + m_status->setText(m_ripping); + m_status->setVisible(true); + emit newDVD(m_dvdName->text(), m_titles); +} + +void NewDVDGui::dvdRemoved() +{ + m_status->setText(m_insertDvd); + m_status->setVisible(true); + m_dvdName->setVisible(false); + m_rip->setVisible(false); + m_eject->setVisible(false); +} -- cgit v1.2.3-59-g8ed1b