[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdepim/mobile/lib
From:       Marc Mutz <mutz () kde ! org>
Date:       2010-11-02 16:05:27
Message-ID: 20101102160527.4AD26AC8A4 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1192326 by mutz:

DeclarativeWidgetBaseHelper: factor itemChanged(), too, into \
DeclarativeWidgetBaseHelper

 M  +13 -2     declarativewidgetbase.cpp  
 M  +18 -16    declarativewidgetbase.h  


--- trunk/KDE/kdepim/mobile/lib/declarativewidgetbase.cpp #1192325:1192326
@@ -22,10 +22,11 @@
 #include "stylesheetloader.h"
 
 #include <QtGui/QGraphicsScene>
-//#include <QtDeclarative/QDeclarativeItem>
+#include <QtGui/QWidget>
 
-DeclarativeWidgetBaseHelper::DeclarativeWidgetBaseHelper( QWidget * widget, \
QGraphicsItem * parent ) +DeclarativeWidgetBaseHelper::DeclarativeWidgetBaseHelper( \
QWidget * widget, QGraphicsItem * parent, const RegisterFunction & registerFunc )  : \
QGraphicsProxyWidget( parent ), +      m_registerFunc( registerFunc ),
       m_widget( widget )
 {
     Q_ASSERT( m_widget );
@@ -39,3 +40,13 @@
 }
 
 DeclarativeWidgetBaseHelper::~DeclarativeWidgetBaseHelper() {}
+
+QVariant DeclarativeWidgetBaseHelper::itemChange( GraphicsItemChange change, const \
QVariant & value ) +{
+    if ( !m_registerFunc.empty() )
+        if ( change == ItemSceneHasChanged )
+            if ( QGraphicsScene* scene = value.value<QGraphicsScene*>() )
+                Q_FOREACH( QGraphicsView * v, scene->views() )
+                    m_registerFunc( v, m_widget );
+    return QGraphicsProxyWidget::itemChange ( change, value );
+}
--- trunk/KDE/kdepim/mobile/lib/declarativewidgetbase.h #1192325:1192326
@@ -23,21 +23,29 @@
 #include "mobileui_export.h"
 
 #include <QtGui/QGraphicsProxyWidget>
-#include <QtGui/QGraphicsScene>
-#include <QtDeclarative/QDeclarativeItem>
 
+#include <boost/function.hpp>
+
+class QGraphicsView;
+class QWidget;
+
 /**
    \internal
 */
 class MOBILEUI_EXPORT DeclarativeWidgetBaseHelper : public QGraphicsProxyWidget
 {
 protected:
-    DeclarativeWidgetBaseHelper( QWidget * widget, QGraphicsItem *parent );
+    typedef boost::function<void(QGraphicsView*,QWidget*)> RegisterFunction;
+    DeclarativeWidgetBaseHelper( QWidget * widget, QGraphicsItem *parent, const \
RegisterFunction & registerFunc );  ~DeclarativeWidgetBaseHelper();
 
     QWidget * widget() const { return m_widget; }
 
+protected:
+    /* reimp */ QVariant itemChange( GraphicsItemChange change, const QVariant & \
value ); +
 private:
+    const RegisterFunction m_registerFunc;
     QWidget * m_widget;
 };
 
@@ -46,26 +54,20 @@
 {
   public:
     explicit DeclarativeWidgetBase( QGraphicsItem *parent = 0 )
-        : DeclarativeWidgetBaseHelper( new WidgetT, parent ) {}
+        : DeclarativeWidgetBaseHelper( new WidgetT, parent, &notify ) {}
 
     /** use this constructor if you inherit from this template to customize widget \
construction. */  DeclarativeWidgetBase( WidgetT *widget, QGraphicsItem *parent )
-        : DeclarativeWidgetBaseHelper( widget, parent ) {}
+        : DeclarativeWidgetBaseHelper( widget, parent, &notify ) {}
 
   protected:
-    QVariant itemChange ( GraphicsItemChange change, const QVariant& value )
-    {
-      if ( change == ItemSceneHasChanged ) {
-        if ( QGraphicsScene* scene = value.value<QGraphicsScene*>() )
-          Q_FOREACH( QGraphicsView * v, scene->views() )
+    WidgetT * widget() const { return static_cast<WidgetT*>( \
DeclarativeWidgetBaseHelper::widget() ); } +
+  private:
+    static void notify( QGraphicsView * v, QWidget * w ) {
             if ( ViewT * view = qobject_cast<ViewT*>( v ) )
-              (view->*registerFunc)( widget() );
+            (view->*registerFunc)( static_cast<WidgetT*>( w ) );
       }
-      return QGraphicsProxyWidget::itemChange ( change, value );
-    }
-
-  protected:
-    WidgetT * widget() const { return static_cast<WidgetT*>( \
DeclarativeWidgetBaseHelper::widget() ); }  };
 
 #endif


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic