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

List:       kde-commits
Subject:    playground/libs/popupdropper/popupdropper
From:       Jeff Mitchell <kde-dev () emailgoeshere ! com>
Date:       2008-07-02 12:39:16
Message-ID: 1215002356.660093.25347.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 827212 by mitchell:

Fix a few small bugs, make Actions now keep count of the number of hover clients (so \
can show an icon as appropriate)


 M  +5 -2      PopupDropper.cpp  
 M  +36 -0     PopupDropperAction.cpp  
 M  +4 -0      PopupDropperAction.h  
 M  +13 -13    PopupDropperItem.cpp  
 M  +1 -0      PopupDropperItem_p.h  


--- trunk/playground/libs/popupdropper/popupdropper/PopupDropper.cpp #827211:827212
@@ -188,10 +188,11 @@
             //qDebug() << "item " << i << " is a PDI ";
             item_min = vert_center - ( pItem->svgItem()->boundingRect().height() / 2 \
                );
             //qDebug() << "vert_center = " << vert_center << ", ited->min = " << \
                item_min;
-            pItem->setPos( horizontalOffset, item_min );
+            pItem->setPos( 0, item_min );
+            pItem->svgItem()->setPos( horizontalOffset, 0 );
             pItem->reposTextItem();
             int verticalmargin = 5;
-            pItem->rectItem()->setRect( 0 - horizontalOffset - pItem->borderWidth(), \
-1*verticalmargin, scene->width() + 2*pItem->borderWidth(), \
pItem->svgItem()->boundingRect().height() + 2*verticalmargin ); +            \
pItem->rectItem()->setRect( 0 - pItem->borderWidth(), -1*verticalmargin, \
scene->width() + 2*pItem->borderWidth(), pItem->svgItem()->boundingRect().height() + \
2*verticalmargin );  ++counter;
         }
         else if( dynamic_cast<QGraphicsLineItem*>( allItems.at( i ) ) )
@@ -302,6 +303,8 @@
     }
     else
     {
+        foreach( QGraphicsItem* item, old_d->pdiItems )
+            old_d->scene->removeItem( item );
         //qDebug() << "not deleting, submenu";
         old_d->fade = currFadeValue;
         old_d->view->resetView();
--- trunk/playground/libs/popupdropper/popupdropper/PopupDropperAction.cpp \
#827211:827212 @@ -20,6 +20,7 @@
 #include "PopupDropperAction.h"
 
 #include <QIcon>
+#include <QMutex>
 #include <QPen>
 #include <QString>
 #include <QtDebug>
@@ -35,6 +36,8 @@
         , separator( false )
         , hasSeparatorPen( false )
         , separatorPen()
+        , signalMutex()
+        , hoverClients( 0 )
     {}
 
     ~PopupDropperActionPrivate()
@@ -49,6 +52,8 @@
     bool separator;
     bool hasSeparatorPen;
     QPen separatorPen;
+    QMutex signalMutex;
+    int hoverClients;
 };
 
 /////////////////////////////////////////////////////////////////////////
@@ -195,5 +200,36 @@
     return new PopupDropperAction( QByteArray(), action->icon(), action->text(), \
action->parent() );  }
 
+void PopupDropperAction::connectNotify( const char* signal )
+{
+    if( qstrcmp( signal, SIGNAL(hovered()) ) == 0 )
+    {
+        d->signalMutex.lock();
+        d->hoverClients++;
+        //qDebug() << "There are now " << d->hoverClients << " hover clients";
+        d->signalMutex.unlock();
+    }
+}
+
+void PopupDropperAction::disconnectNotify( const char* signal )
+{
+    if( qstrcmp( signal, SIGNAL(hovered()) ) == 0 )
+    {
+        d->signalMutex.lock();
+        d->hoverClients--;
+        //qDebug() << "There are now " << d->hoverClients << " hover clients";
+        d->signalMutex.unlock();
+    }
+}
+
+int PopupDropperAction::hoverClients() const
+{
+    int clients;
+    d->signalMutex.lock();
+    clients = d->hoverClients;
+    d->signalMutex.unlock();
+    return clients;
+}
+
 #include "PopupDropperAction.moc"
 
--- trunk/playground/libs/popupdropper/popupdropper/PopupDropperAction.h \
#827211:827212 @@ -73,6 +73,10 @@
     //no svg will be set...should only be used to transition to using \
PopupDropperAction  static PopupDropperAction * from( QAction * action );
 
+    void connectNotify( const char* signal );
+    void disconnectNotify( const char* signal );
+    int hoverClients() const;
+
 private:
     friend class PopupDropperActionPrivate;
     PopupDropperActionPrivate* const d;
--- trunk/playground/libs/popupdropper/popupdropper/PopupDropperItem.cpp \
#827211:827212 @@ -48,6 +48,7 @@
     , customHoveredTextColor( false )
     , customHoveredBorderColor( false )
     , separator( false )
+    , file( QString() )
     , pd( 0 )
     , q( parent )
     {
@@ -75,7 +76,7 @@
     , QAbstractGraphicsShapeItem( parent )
     , d( new PopupDropperItemPrivate( this ) )
 {
-    d->svgItem = new QGraphicsSvgItem( file, this );
+    d->file = file;
     connect( &d->hoverTimer, SIGNAL( finished() ), this, SLOT( hoverFinished() ) );
 }
 
@@ -87,12 +88,6 @@
 
 void PopupDropperItem::show()
 {
-    if( d->svgItem )
-        d->svgItem->show();
-    if( d->textItem )
-        d->textItem->show();
-    if( d->rectItem )
-        d->rectItem->show();
 }
 
 QAction* PopupDropperItem::action() const
@@ -111,7 +106,12 @@
     if( pudaction )
     {
         if( !d->svgItem )
-            d->svgItem = new QGraphicsSvgItem( this );
+        {
+            if( !d->file.isEmpty() )
+                d->svgItem = new QGraphicsSvgItem( d->file, this );
+            else
+                d->svgItem = new QGraphicsSvgItem( this );
+        }
         if( pudaction->renderer() && pudaction->renderer()->isValid() )
             d->svgItem->setSharedRenderer( pudaction->renderer() );
         if( !pudaction->elementId().isEmpty() )
@@ -268,7 +268,7 @@
 {
     if( d->textItem )
     {
-        d->textItem->setPos( 20 + d->svgItem->boundingRect().width(), ( \
d->svgItem->boundingRect().height() / 2 ) - ( d->textItem->boundingRect().height() / \
2 ) ); +        d->textItem->setPos( 20 + d->svgItem->pos().x() + \
d->svgItem->boundingRect().width(), ( d->svgItem->boundingRect().height() / 2 ) - ( \
d->textItem->boundingRect().height() / 2 ) );  d->textItem->setFont( d->font );
     }
 }
@@ -291,6 +291,8 @@
 {
     if( d->svgItem )
         return d->svgItem->elementId();
+    else
+        return QString();
 }
 
 void PopupDropperItem::setElementId( const QString &id )
@@ -418,8 +420,8 @@
 
 QRectF PopupDropperItem::boundingRect() const
 {
-    if( d->svgItem )
-        return d->svgItem->boundingRect();
+    if( d->rectItem )
+        return d->rectItem->boundingRect();
     else
         return QRectF();
 }
@@ -429,8 +431,6 @@
     Q_UNUSED( painter )
     Q_UNUSED( option )
     Q_UNUSED( widget )
-    if( d->svgItem )
-        d->svgItem->paint( painter, option, widget );
     return;
 }
 
--- trunk/playground/libs/popupdropper/popupdropper/PopupDropperItem_p.h \
#827211:827212 @@ -54,6 +54,7 @@
     bool customHoveredBorderColor;
     bool customHoveredFillColor;
     bool separator;
+    QString file;
     PopupDropper* pd;
 
 private:


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

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