X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fdvdwizardvob.h;h=64d76e2ae4feb650c43d6dc897ebac0697f73d13;hb=b6d6c25f1bd07f11a0ceaf32a3a5bcaeab367336;hp=a8f68ea767b978c8e5a3592791a416627bebd3fe;hpb=14bf85958b5658a81bf2d3c934445fe7db3c863d;p=kdenlive diff --git a/src/dvdwizardvob.h b/src/dvdwizardvob.h index a8f68ea7..64d76e2a 100644 --- a/src/dvdwizardvob.h +++ b/src/dvdwizardvob.h @@ -21,26 +21,133 @@ #ifndef DVDWIZARDVOB_H #define DVDWIZARDVOB_H +#include "ui_dvdwizardvob_ui.h" + +#include +#include +#include + +#if KDE_IS_VERSION(4,7,0) +#include +#endif + #include +#include +#include +#include +#include +#include -#include "ui_dvdwizardvob_ui.h" +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&); +}; -class DvdWizardVob : public QWizardPage { +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(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(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; + DVDFORMAT dvdFormat() const; + const QString dvdProfile() const; + int duration(int ix) const; + QStringList durations() const; + QStringList chapters() const; + void setProfile(const QString& profile); + void clear(); + const QString introMovie() const; + void setUseIntroMovie(bool use); + void updateChapters(const QMap &chaptersdata); + static QString getDvdProfile(DVDFORMAT format); private: Ui::DvdWizardVob_UI m_view; + 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(), bool checkFormats = true); + void slotAddVobList(const QList &list); + void slotCheckProfiles(); private slots: - void slotCheckVobList(const QString &text); + void slotCheckVobList(); + void slotDeleteVobFile(); + void slotItemUp(); + void slotItemDown(); + void slotTranscodeFiles(); + void slotTranscodedClip(KUrl, KUrl); + +signals: + void prepareMonitor(); }; #endif