Commit a2189bfd authored by Thomas Hartmann's avatar Thomas Hartmann
Browse files

QuickToolBar: implement preview and BorderImage

There is now a nice preview for images and the
properties and borders of a BorderImage can
be visually edited
parent 3e4e0f80
...@@ -3,13 +3,18 @@ ...@@ -3,13 +3,18 @@
#include <QWidget> #include <QWidget>
#include <QFrame> #include <QFrame>
#include <QLabel>
#include <qdrawutil.h>
#include <contextpanewidget.h> #include <contextpanewidget.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
namespace Ui { namespace Ui {
class ContextPaneWidgetImage; class ContextPaneWidgetImage;
class ContextPaneWidgetBorderImage;
} }
class QLabel; class QLabel;
class QSlider;
class FileWidget;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace QmlJS { namespace QmlJS {
...@@ -18,18 +23,68 @@ namespace QmlJS { ...@@ -18,18 +23,68 @@ namespace QmlJS {
namespace QmlDesigner { namespace QmlDesigner {
class PreviewLabel : public QLabel
{
Q_OBJECT
public:
PreviewLabel(QWidget *parent = 0);
void setZoom(int);
void setIsBorderImage(bool b);
void setMargins(int left, int top, int right, int bottom);
int leftMarging() const { return m_left; }
int topMarging() const { return m_top; }
int rightMarging() const { return m_right; }
int bottomMarging() const { return m_bottom; }
signals:
void leftMarginChanged();
void topMarginChanged();
void bottomMarginChanged();
void rightMarginChanged();
protected:
void paintEvent(QPaintEvent *event);
void mousePressEvent(QMouseEvent * event);
void mouseReleaseEvent(QMouseEvent * event);
void mouseMoveEvent(QMouseEvent * event);
void leaveEvent(QEvent* event );
private:
bool m_showBorders;
int m_left, m_right, m_top, m_bottom;
bool m_dragging_left;
bool m_dragging_right;
bool m_dragging_top;
bool m_dragging_bottom;
QPoint m_startPos;
int m_zoom;
bool m_borderImage;
};
class PreviewDialog : public DragWidget class PreviewDialog : public DragWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
PreviewDialog(QWidget *parent = 0); PreviewDialog(QWidget *parent = 0);
void setPixmap(const QPixmap &p); void setPixmap(const QPixmap &p, int zoom = 1);
void setZoom(int z);
void setIsBorderImage(bool b);
PreviewLabel *previewLabel() const;
int zoom() { return m_zoom; }
public slots: public slots:
void onTogglePane(); void onTogglePane();
protected:
void wheelEvent(QWheelEvent* event);
private: private:
QLabel * m_label; PreviewLabel *m_label;
QSlider *m_slider;
int m_zoom;
QPixmap m_pixmap;
bool m_borderImage;
}; };
class ContextPaneWidgetImage : public QWidget class ContextPaneWidgetImage : public QWidget
...@@ -37,10 +92,11 @@ class ContextPaneWidgetImage : public QWidget ...@@ -37,10 +92,11 @@ class ContextPaneWidgetImage : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit ContextPaneWidgetImage(QWidget *parent = 0); explicit ContextPaneWidgetImage(QWidget *parent = 0, bool borderImage = false);
~ContextPaneWidgetImage(); ~ContextPaneWidgetImage();
void setProperties(QmlJS::PropertyReader *propertyReader); void setProperties(QmlJS::PropertyReader *propertyReader);
void setPath(const QString& path); void setPath(const QString& path);
PreviewDialog* previewDialog();
signals: signals:
void propertyChanged(const QString &, const QVariant &); void propertyChanged(const QString &, const QVariant &);
...@@ -49,17 +105,30 @@ signals: ...@@ -49,17 +105,30 @@ signals:
public slots: public slots:
void onStretchChanged(); void onStretchChanged();
void onVerticalStretchChanged();
void onHorizontalStretchChanged();
void onFileNameChanged(); void onFileNameChanged();
void onPixmapDoubleClicked(); void onPixmapDoubleClicked();
void setPixmap(const QString &fileName); void setPixmap(const QString &fileName);
void onLeftMarginsChanged();
void onTopMarginsChanged();
void onBottomMarginsChanged();
void onRightMarginsChanged();
protected: protected:
void changeEvent(QEvent *e); void changeEvent(QEvent *e);
void hideEvent(QHideEvent* event);
void showEvent(QShowEvent* event);
private: private:
Ui::ContextPaneWidgetImage *ui; Ui::ContextPaneWidgetImage *ui;
Ui::ContextPaneWidgetBorderImage *uiBorderImage;
QString m_path; QString m_path;
PreviewDialog *m_previewDialog; QWeakPointer<PreviewDialog> m_previewDialog;
FileWidget *m_fileWidget;
QLabel *m_sizeLabel;
bool m_borderImage;
bool previewWasVisible;
}; };
class LabelFilter: public QObject { class LabelFilter: public QObject {
...@@ -73,6 +142,18 @@ protected: ...@@ -73,6 +142,18 @@ protected:
bool eventFilter(QObject *obj, QEvent *event); bool eventFilter(QObject *obj, QEvent *event);
}; };
class WheelFilter: public QObject {
Q_OBJECT
public:
WheelFilter(QObject* parent =0) : QObject(parent) {}
void setTarget(QObject *target) { m_target = target; }
protected:
bool eventFilter(QObject *obj, QEvent *event);
QObject *m_target;
};
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment