X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fdvdwizardvob.h;h=64d76e2ae4feb650c43d6dc897ebac0697f73d13;hb=b6d6c25f1bd07f11a0ceaf32a3a5bcaeab367336;hp=58698cf0a2018286a5d4b14ecbe1197eed520c8c;hpb=2005170ed9eb93b8ebe05cb269bea77c98c4ec13;p=kdenlive diff --git a/src/dvdwizardvob.h b/src/dvdwizardvob.h index 58698cf0..64d76e2a 100644 --- a/src/dvdwizardvob.h +++ b/src/dvdwizardvob.h @@ -24,53 +24,130 @@ #include "ui_dvdwizardvob_ui.h" #include - -#if KDE_IS_VERSION(4,2,0) #include -#endif - #include +#if KDE_IS_VERSION(4,7,0) +#include +#endif + #include +#include +#include +#include +#include +#include + +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 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(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 clear(); - void updateChapters(QMap chaptersdata); - void setIntroMovie(const QString& path); + const QString introMovie() const; + void setUseIntroMovie(bool use); + void updateChapters(const QMap &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 &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