Add support for ScrollArea
authorTobias Koenig <tobias.koenig@kdab.com>
Wed, 31 Oct 2012 12:10:28 +0000 (13:10 +0100)
committerTobias Koenig <tobias.koenig@kdab.com>
Wed, 31 Oct 2012 12:10:28 +0000 (13:10 +0100)
declarativeobjects.cpp
declarativeobjects_p.h
declarativewidgetdocument.cpp
gallery.qml
qwidgets.list

index 0bd2bb9..46625d7 100644 (file)
@@ -1570,6 +1570,32 @@ DeclarativeRadioButton::DeclarativeRadioButton(QObject *parent) : DeclarativeWid
 
 CUSTOM_METAOBJECT(DeclarativeRadioButton, QRadioButton)
 
+// DeclarativeScrollArea
+DeclarativeScrollArea::DeclarativeScrollArea(QObject *parent) : DeclarativeWidgetProxy<QScrollArea>(parent)
+{
+  connectAllSignals(m_proxiedObject, this);
+}
+
+void DeclarativeScrollArea::addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject)
+{
+  if (m_proxiedObject->widget()) {
+    qmlInfo(declarativeObject) << "Can not add multiple Widgets to ScrollArea";
+  } else {
+    m_proxiedObject->setWidget(widget);
+  }
+
+  m_children.append(declarativeObject);
+}
+
+void DeclarativeScrollArea::setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject)
+{
+  Q_UNUSED(layout);
+  Q_UNUSED(declarativeObject);
+  qmlInfo(this) << "Can not add Layout to ScrollArea";
+}
+
+CUSTOM_METAOBJECT(DeclarativeScrollArea, QScrollArea)
+
 // DeclarativeScrollBar
 DeclarativeScrollBar::DeclarativeScrollBar(QObject *parent) : DeclarativeWidgetProxy<QScrollBar>(parent)
 {
index 497c242..88ad740 100644 (file)
@@ -29,6 +29,7 @@
 #include <QtGui/QProgressBar>
 #include <QtGui/QPushButton>
 #include <QtGui/QRadioButton>
+#include <QtGui/QScrollArea>
 #include <QtGui/QScrollBar>
 #include <QtGui/QSlider>
 #include <QtGui/QSpinBox>
@@ -923,6 +924,18 @@ class DeclarativeRadioButton : public DeclarativeWidgetProxy<QRadioButton>
     DeclarativeRadioButton(QObject *parent = 0);
 };
 
+class DeclarativeScrollArea : public DeclarativeWidgetProxy<QScrollArea>
+{
+  DECLARATIVE_OBJECT
+
+  public:
+    DeclarativeScrollArea(QObject *parent = 0);
+
+  protected:
+    virtual void addWidget(QWidget *widget, AbstractDeclarativeObject *declarativeObject);
+    virtual void setLayout(QLayout *layout, AbstractDeclarativeObject *declarativeObject);
+};
+
 class DeclarativeScrollBar : public DeclarativeWidgetProxy<QScrollBar>
 {
   DECLARATIVE_OBJECT
index 3099c3e..ca51bcc 100644 (file)
@@ -82,6 +82,7 @@ DeclarativeWidgetDocument::DeclarativeWidgetDocument(const QUrl &url, QObject *p
   qmlRegisterType<DeclarativeProgressBar>("QtGui", 1, 0, "ProgressBar");
   qmlRegisterType<DeclarativePushButton>("QtGui", 1, 0, "PushButton");
   qmlRegisterType<DeclarativeRadioButton>("QtGui", 1, 0, "RadioButton");
+  qmlRegisterType<DeclarativeScrollArea>("QtGui", 1, 0, "ScrollArea");
   qmlRegisterType<DeclarativeScrollBar>("QtGui", 1, 0, "ScrollBar");
   qmlRegisterType<DeclarativeSlider>("QtGui", 1, 0, "Slider");
   qmlRegisterType<DeclarativeSpinBox>("QtGui", 1, 0, "SpinBox");
index 954c500..5f54a92 100644 (file)
@@ -63,6 +63,11 @@ TabWidget {
         minimumWidth: 100
         minimumHeight: 100
       }
+      ScrollArea {
+        Widget {
+          size: Qt.size(800, 800)
+        }
+      }
       Frame {
         frameShape: Frame.Panel
         frameShadow: Frame.Sunken
index ea9e820..cfb25f6 100644 (file)
@@ -16,7 +16,6 @@ qlistwidget.h
 qmdiarea.h
 qmdisubwindow.h
 qprintpreviewwidget.h
-qscrollarea.h
 qsplashscreen.h
 qsplitter.h
 qtabbar.h