]> git.sesse.net Git - kdenlive/blobdiff - src/dvdwizardvob.cpp
svn path=/trunk/kdenlive/; revision=3350
[kdenlive] / src / dvdwizardvob.cpp
index d127c804d49bcfd4b2697f12b1805846b1e654ed..a9dbfc67ebd0dddd3ba794bf8fb9063f853ac9fd 100644 (file)
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
  ***************************************************************************/
 
+#include "dvdwizardvob.h"
+
 #include <KUrlRequester>
 #include <KDebug>
+#include <KStandardDirs>
+#include <KFileItem>
 
-#include "dvdwizardvob.h"
+#include <QHBoxLayout>
 
-DvdWizardVob::DvdWizardVob(QWidget *parent): QWizardPage(parent) {
+DvdWizardVob::DvdWizardVob(QWidget *parent) :
+        QWizardPage(parent)
+{
     m_view.setupUi(this);
     m_view.intro_vob->setEnabled(false);
     m_view.vob_1->setFilter("video/mpeg");
     m_view.intro_vob->setFilter("video/mpeg");
     connect(m_view.use_intro, SIGNAL(toggled(bool)), m_view.intro_vob, SLOT(setEnabled(bool)));
     connect(m_view.vob_1, SIGNAL(textChanged(const QString &)), this, SLOT(slotCheckVobList(const QString &)));
+    if (KStandardDirs::findExe("dvdauthor").isEmpty()) m_errorMessage.append(i18n("<strong>Program %1 is required for the DVD wizard.", i18n("dvdauthor")));
+    if (KStandardDirs::findExe("mkisofs").isEmpty()) m_errorMessage.append(i18n("<strong>Program %1 is required for the DVD wizard.", i18n("mkisofs")));
+    if (m_errorMessage.isEmpty()) m_view.error_message->setVisible(false);
+    else m_view.error_message->setText(m_errorMessage);
 
+#if KDE_IS_VERSION(4,2,0)
+    m_capacityBar = new KCapacityBar(KCapacityBar::DrawTextInline, this);
+    QHBoxLayout *layout = new QHBoxLayout;
+    layout->addWidget(m_capacityBar);
+    m_view.size_box->setLayout(layout);
+#else
+    m_view.size_box->setHidden(true);
+#endif
 }
 
-DvdWizardVob::~DvdWizardVob() {
+DvdWizardVob::~DvdWizardVob()
+{
     QList<KUrlRequester *> allUrls = m_view.vob_list->findChildren<KUrlRequester *>();
     qDeleteAll(allUrls);
+#if KDE_IS_VERSION(4,2,0)
+    delete m_capacityBar;
+#endif
 }
 
 // virtual
 
-bool DvdWizardVob::isComplete() const {
+bool DvdWizardVob::isComplete() const
+{
+    if (!m_view.error_message->text().isEmpty()) return false;
     if (m_view.vob_1->url().path().isEmpty()) return false;
     if (QFile::exists(m_view.vob_1->url().path())) return true;
     return false;
 }
 
-void DvdWizardVob::setUrl(const QString &url) {
+void DvdWizardVob::setUrl(const QString &url)
+{
     m_view.vob_1->setPath(url);
 }
 
-QStringList DvdWizardVob::selectedUrls() const {
+QStringList DvdWizardVob::selectedUrls() const
+{
     QStringList result;
     QList<KUrlRequester *> allUrls = m_view.vob_list->findChildren<KUrlRequester *>();
     for (int i = 0; i < allUrls.count(); i++) {
@@ -60,12 +86,14 @@ QStringList DvdWizardVob::selectedUrls() const {
     return result;
 }
 
-QString DvdWizardVob::introMovie() const {
+QString DvdWizardVob::introMovie() const
+{
     if (!m_view.use_intro->isChecked()) return QString();
     return m_view.intro_vob->url().path();
 }
 
-void DvdWizardVob::slotCheckVobList(const QString &text) {
+void DvdWizardVob::slotCheckVobList(const QString &text)
+{
     emit completeChanged();
     QList<KUrlRequester *> allUrls = m_view.vob_list->findChildren<KUrlRequester *>();
     int count = allUrls.count();
@@ -80,8 +108,7 @@ void DvdWizardVob::slotCheckVobList(const QString &text) {
     } else if (text.isEmpty()) {
         if (allUrls.at(count - 1)->url().path().isEmpty() && allUrls.at(count - 2)->url().path().isEmpty()) {
             // The last 2 urlrequesters are empty, remove last one
-            KUrlRequester *vob = allUrls.takeLast();
-            delete vob;
+            delete allUrls.takeLast();
         }
     } else {
         if (allUrls.at(count - 1)->url().path().isEmpty()) return;
@@ -90,5 +117,16 @@ void DvdWizardVob::slotCheckVobList(const QString &text) {
         m_view.vob_list->layout()->addWidget(vob);
         connect(vob, SIGNAL(textChanged(const QString &)), this, SLOT(slotCheckVobList(const QString &)));
     }
+    qint64 maxSize = (qint64) 47000 * 100000;
+    qint64 totalSize = 0;
+    for (int i = 0; i < allUrls.count(); i++) {
+        QFile f(allUrls.at(i)->url().path());
+        totalSize += f.size();
+    }
+
+#if KDE_IS_VERSION(4,2,0)
+    m_capacityBar->setValue(100 * totalSize / maxSize);
+    m_capacityBar->setText(KIO::convertSize(totalSize));
+#endif
 }