]> git.sesse.net Git - kdenlive/blobdiff - src/dvdwizardvob.h
Fix indent
[kdenlive] / src / dvdwizardvob.h
index 6fd5b7fa31e08efbb146c3db0c00298c86b46f00..64d76e2ae4feb650c43d6dc897ebac0697f73d13 100644 (file)
 #include "ui_dvdwizardvob_ui.h"
 
 #include <kdeversion.h>
-
-#if KDE_IS_VERSION(4,2,0)
 #include <kcapacitybar.h>
-#endif
-
 #include <KUrl>
 
+#if KDE_IS_VERSION(4,7,0)
+#include <KMessageWidget>
+#endif
+
 #include <QWizardPage>
+#include <QStyledItemDelegate>
+#include <QPainter>
+#include <QTreeWidget>
+#include <QDragEnterEvent>
+#include <QDropEvent>
+
+enum DVDFORMAT { PAL, PAL_WIDE, NTSC, NTSC_WIDE };
+
+class DvdTreeWidget : public QTreeWidget
+{
+    Q_OBJECT
+public:
+    explicit DvdTreeWidget(QWidget *parent);
+
+protected:
+    void dragEnterEvent(QDragEnterEvent * event );
+    void dropEvent(QDropEvent * event );
+    void mouseDoubleClickEvent( QMouseEvent * );
+    void dragMoveEvent(QDragMoveEvent * event);
+
+signals:
+    void addNewClip();
+    void addClips(const QList<QUrl>&);
+};
+
+class DvdViewDelegate : public QStyledItemDelegate
+{
+    Q_OBJECT
+public:
+    DvdViewDelegate(QWidget *parent) : QStyledItemDelegate(parent) {}
+
+    void paint(QPainter *painter, const QStyleOptionViewItem &option,
+               const QModelIndex &index) const {
+        if (index.column() == 0) {
+            painter->save();
+            QStyleOptionViewItemV4 opt(option);
+            QRect r1 = option.rect;
+            QStyle *style = opt.widget ? opt.widget->style() : QApplication::style();
+            const int textMargin = style->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1;
+            style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, opt.widget);
+
+            QPixmap pixmap = qVariantValue<QPixmap>(index.data(Qt::DecorationRole));
+            QPoint pixmapPoint(r1.left() + textMargin, r1.top() + (r1.height() - pixmap.height()) / 2);
+            painter->drawPixmap(pixmapPoint, pixmap);
+            int decoWidth = pixmap.width() + 2 * textMargin;
+
+            QFont font = painter->font();
+            font.setBold(true);
+            painter->setFont(font);
+            int mid = (int)((r1.height() / 2));
+            r1.adjust(decoWidth, 0, 0, -mid);
+            QRect r2 = option.rect;
+            r2.adjust(decoWidth, mid, 0, 0);
+            painter->drawText(r1, Qt::AlignLeft | Qt::AlignBottom, KUrl(index.data().toString()).fileName());
+            font.setBold(false);
+            painter->setFont(font);
+            QString subText = index.data(Qt::UserRole).toString();
+            QRectF bounding;
+            painter->drawText(r2, Qt::AlignLeft | Qt::AlignVCenter , subText, &bounding);
+            painter->restore();
+        } else {
+            QStyledItemDelegate::paint(painter, option, index);
+        }
+    }
+};
+
 
 class DvdWizardVob : public QWizardPage
 {
     Q_OBJECT
 
 public:
-    DvdWizardVob(const QString &profile, QWidget * parent = 0);
+    explicit DvdWizardVob(QWidget * parent = 0);
     virtual ~DvdWizardVob();
     virtual bool isComplete() const;
     QStringList selectedUrls() const;
     void setUrl(const QString &url);
-    QString introMovie() const;
-    bool isPal() const;
-    bool isWide() const;
+    DVDFORMAT dvdFormat() const;
+    const QString dvdProfile() const;
     int duration(int ix) const;
     QStringList durations() const;
     QStringList chapters() const;
-    void setProfile(const QString profile);
+    void setProfile(const QString& profile);
     void clear();
-    void updateChapters(QMap <QString, QString> chaptersdata);
-    void setIntroMovie(const QString path);
+    const QString introMovie() const;
+    void setUseIntroMovie(bool use);
+    void updateChapters(const QMap<QString, QString> &chaptersdata);
+    static QString getDvdProfile(DVDFORMAT format);
 
 private:
     Ui::DvdWizardVob_UI m_view;
-    QString m_errorMessage;
-
-#if KDE_IS_VERSION(4,2,0)
+    DvdTreeWidget *m_vobList;
     KCapacityBar *m_capacityBar;
+    QAction *m_transcodeAction;
+    bool m_installCheck;
+#if KDE_IS_VERSION(4,7,0)
+    KMessageWidget *m_warnMessage;
 #endif
+    void showProfileError();
+    void showError(const QString &error);
 
 public slots:
-    void slotAddVobFile(KUrl url = KUrl(), const QString &chapters = QString());
+    void slotAddVobFile(KUrl url = KUrl(), const QString &chapters = QString(), bool checkFormats = true);
+    void slotAddVobList(const QList<QUrl> &list);
+    void slotCheckProfiles();
 
 private slots:
     void slotCheckVobList();
     void slotDeleteVobFile();
     void slotItemUp();
     void slotItemDown();
-    void changeFormat();
+    void slotTranscodeFiles();
+    void slotTranscodedClip(KUrl, KUrl);
+    
+signals:
+    void prepareMonitor();
 };
 
 #endif