X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fdvdwizardmenu.h;h=bde321103b3be2a35d0cfaddf18ec9afb56f33e9;hb=05a837d483eeb9102ffa832b4a5c6698f2482a62;hp=68ba88fdc0f664ad1e5a721965e0690eb5e7e7ac;hpb=d8dcc0d93068a347710cb2fab7f4dbeba44bd19f;p=kdenlive diff --git a/src/dvdwizardmenu.h b/src/dvdwizardmenu.h index 68ba88fd..bde32110 100644 --- a/src/dvdwizardmenu.h +++ b/src/dvdwizardmenu.h @@ -26,8 +26,14 @@ #include #include #include +#include #include +#include + +#if KDE_IS_VERSION(4,7,0) +#include +#endif #include "ui_dvdwizardmenu_ui.h" @@ -35,7 +41,9 @@ class DvdScene : public QGraphicsScene { public: - DvdScene(QObject * parent = 0): QGraphicsScene(parent) {} + DvdScene(QObject * parent = 0): QGraphicsScene(parent) { + m_width = 0; m_height = 0; + } void setProfile(int width, int height) { m_width = width; m_height = height; @@ -56,8 +64,12 @@ class DvdButton : public QGraphicsTextItem { public: - DvdButton(const QString & text): QGraphicsTextItem(text), m_target(0), m_command(QString("jump title 1")), m_backToMenu(false) {} - enum { Type = UserType + 1 }; + DvdButton(const QString & text): QGraphicsTextItem(text), m_target(0), m_command(QString("jump title 1")), m_backToMenu(false) { + setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable); +#if QT_VERSION >= 0x040600 + setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); +#endif + } void setTarget(int t, QString c) { m_target = t; m_command = c; @@ -73,7 +85,7 @@ public: } int type() const { // Enable the use of qgraphicsitem_cast with this item. - return Type; + return UserType + 1; } void setBackMenu(bool back) { m_backToMenu = back; @@ -88,23 +100,23 @@ protected: virtual QVariant itemChange(GraphicsItemChange change, const QVariant &value) { if (change == ItemPositionChange && scene()) { - - /* QList list = collidingItems(); - if (!list.isEmpty()) { - for (int i = 0; i < list.count(); i++) { - if (list.at(i)->type() == Type) return pos(); - } - } - */ - DvdScene *sc = static_cast < DvdScene * >(scene()); - QRectF rect = QRectF(0, 0, sc->width(), sc->height()); QPointF newPos = value.toPointF(); - if (!rect.contains(newPos)) { - // Keep the item inside the scene rect. - newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left()))); - newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top()))); - return newPos; + QRectF sceneShape = sceneBoundingRect(); + DvdScene *sc = static_cast < DvdScene * >(scene()); + newPos.setX(qMax(newPos.x(), (qreal)0)); + newPos.setY(qMax(newPos.y(), (qreal)0)); + if (newPos.x() + sceneShape.width() > sc->width()) newPos.setX(sc->width() - sceneShape.width()); + if (newPos.y() + sceneShape.height() > sc->height()) newPos.setY(sc->height() - sceneShape.height()); + + sceneShape.translate(newPos - pos()); + QList list = scene()->items(sceneShape, Qt::IntersectsItemShape); + list.removeAll(this); + if (!list.isEmpty()) { + for (int i = 0; i < list.count(); i++) { + if (list.at(i)->type() == Type) return pos(); + } } + return newPos; } return QGraphicsItem::itemChange(change, value); } @@ -121,13 +133,17 @@ public: virtual ~DvdWizardMenu(); virtual bool isComplete() const; bool createMenu() const; - void createBackgroundImage(const QString &img1); + void createBackgroundImage(const QString &overlayMenu, const QString &img1); void createButtonImages(const QString &img1, const QString &img2, const QString &img3); void setTargets(QStringList list, QStringList targetlist); QMap buttonsInfo(); + bool loopMovie() const; bool menuMovie() const; QString menuMoviePath() const; bool isPalMenu() const; + void changeProfile(bool isPal); + QDomElement toXml() const; + void loadXml(QDomElement xml); private: Ui::DvdWizardMenu_UI m_view; @@ -138,6 +154,9 @@ private: QGraphicsRectItem *m_safeRect; int m_width; int m_height; +#if KDE_IS_VERSION(4,7,0) + KMessageWidget *m_menuMessage; +#endif private slots: void buildButton(); @@ -145,7 +164,6 @@ private slots: void buildImage(); void checkBackground(); void checkBackgroundType(int ix); - void changeProfile(int ix); void updatePreview(); void buttonChanged(); void addButton(); @@ -154,6 +172,8 @@ private slots: void updateColor(); void updateColor(QColor c); void setBackToMenu(bool backToMenu); + void slotZoom(); + void slotUnZoom(); }; #endif