[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