lot of API changes for more clarity, fix some bugs
svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=833276
This commit is contained in:
parent
44c8ede79e
commit
6a9bf59888
|
@ -1437,14 +1437,14 @@ bool Applet::sceneEvent(QEvent *event)
|
||||||
case QEvent::GraphicsSceneHoverMove:
|
case QEvent::GraphicsSceneHoverMove:
|
||||||
// If the tooltip isn't visible, run through showing the tooltip again
|
// If the tooltip isn't visible, run through showing the tooltip again
|
||||||
// so that it only becomes visible after a stationary hover
|
// so that it only becomes visible after a stationary hover
|
||||||
if (Plasma::ToolTipManager::self()->isVisible(this)) {
|
if (Plasma::ToolTipManager::self()->isWidgetToolTipDisplayed(this)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case QEvent::GraphicsSceneHoverEnter:
|
case QEvent::GraphicsSceneHoverEnter:
|
||||||
{
|
{
|
||||||
// Check that there is a tooltip to show
|
// Check that there is a tooltip to show
|
||||||
if (!Plasma::ToolTipManager::self()->hasToolTip(this)) {
|
if (!Plasma::ToolTipManager::self()->widgetHasToolTip(this)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -105,7 +105,7 @@ ToolTip::~ToolTip()
|
||||||
delete d;
|
delete d;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToolTip::setData(const ToolTipManager::ToolTipData &data)
|
void ToolTip::setContent(const ToolTipManager::ToolTipContent &data)
|
||||||
{
|
{
|
||||||
//reset our size
|
//reset our size
|
||||||
d->label->setText("<qt><b>" + data.mainText + "</b><br>" + data.subText + "</qt>");
|
d->label->setText("<qt><b>" + data.mainText + "</b><br>" + data.subText + "</qt>");
|
||||||
|
|
|
@ -46,7 +46,7 @@ public:
|
||||||
ToolTip();
|
ToolTip();
|
||||||
~ToolTip();
|
~ToolTip();
|
||||||
void updateTheme();
|
void updateTheme();
|
||||||
void setData(const ToolTipManager::ToolTipData &data);
|
void setContent(const ToolTipManager::ToolTipContent &data);
|
||||||
void prepareShowing();
|
void prepareShowing();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -42,9 +42,9 @@ class ToolTipManagerPrivate
|
||||||
{
|
{
|
||||||
public :
|
public :
|
||||||
ToolTipManagerPrivate()
|
ToolTipManagerPrivate()
|
||||||
: showTimer(0)
|
: currentWidget(0)
|
||||||
|
, showTimer(0)
|
||||||
, hideTimer(0)
|
, hideTimer(0)
|
||||||
, currentWidget(0)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -122,7 +122,7 @@ void ToolTipManager::showToolTip(QGraphicsWidget *widget)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ToolTipManager::isVisible(QGraphicsWidget *widget)
|
bool ToolTipManager::isWidgetToolTipDisplayed(QGraphicsWidget *widget)
|
||||||
{
|
{
|
||||||
ToolTip * tooltip = d->tooltips.value(widget);
|
ToolTip * tooltip = d->tooltips.value(widget);
|
||||||
if (tooltip) {
|
if (tooltip) {
|
||||||
|
@ -151,18 +151,17 @@ void ToolTipManager::hideToolTip(QGraphicsWidget *widget)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToolTipManager::registerToolTipData(QGraphicsWidget *widget,const ToolTipManager::ToolTipData &data)
|
void ToolTipManager::registerWidget(QGraphicsWidget *widget)
|
||||||
{
|
{
|
||||||
if (!d->tooltips.contains(widget)) {
|
if (!d->tooltips.contains(widget)) {
|
||||||
//the tooltip is not registered we add it in our map of tooltips
|
//the tooltip is not registered we add it in our map of tooltips
|
||||||
d->tooltips.insert(widget,new ToolTip());
|
d->tooltips.insert(widget,new ToolTip());
|
||||||
ToolTip * tooltip = d->tooltips.value(widget);
|
//connect to object destruction
|
||||||
tooltip->setData(data);
|
connect(widget,SIGNAL(destroyed(QObject *)),this,SLOT(onWidgetDestroyed(QObject *)));
|
||||||
tooltip->updateTheme();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToolTipManager::unregisterToolTip(QGraphicsWidget *widget)
|
void ToolTipManager::unregisterWidget(QGraphicsWidget *widget)
|
||||||
{
|
{
|
||||||
if (d->tooltips.contains(widget)) {
|
if (d->tooltips.contains(widget)) {
|
||||||
ToolTip * tooltip = d->tooltips.take(widget);
|
ToolTip * tooltip = d->tooltips.take(widget);
|
||||||
|
@ -172,18 +171,19 @@ void ToolTipManager::unregisterToolTip(QGraphicsWidget *widget)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToolTipManager::updateToolTipData(QGraphicsWidget *widget,const ToolTipData &data)
|
void ToolTipManager::setWidgetToolTipContent(QGraphicsWidget *widget,const ToolTipContent &data)
|
||||||
{
|
{
|
||||||
if (!d->tooltips.contains(widget)) {
|
if (!d->tooltips.contains(widget)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ToolTip * tooltip = d->tooltips.value(widget);
|
ToolTip * tooltip = d->tooltips.value(widget);
|
||||||
tooltip->setData(data);
|
tooltip->setContent(data);
|
||||||
|
tooltip->updateTheme();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ToolTipManager::hasToolTip(QGraphicsWidget *widget)
|
bool ToolTipManager::widgetHasToolTip(QGraphicsWidget *widget)
|
||||||
{
|
{
|
||||||
return d->tooltips.contains(widget);
|
return d->tooltips.contains(widget);
|
||||||
}
|
}
|
||||||
|
@ -197,6 +197,26 @@ void ToolTipManager::themeUpdated()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ToolTipManager::onWidgetDestroyed(QObject * object)
|
||||||
|
{
|
||||||
|
if (object) {
|
||||||
|
QMapIterator<QGraphicsWidget*, ToolTip *> iterator(d->tooltips);
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
iterator.next();
|
||||||
|
if (iterator.key() == object) {
|
||||||
|
ToolTip * tooltip = iterator.value();
|
||||||
|
d->tooltips.remove(iterator.key());
|
||||||
|
kDebug()<<"Tooltip destroyed"<<(int)object;
|
||||||
|
d->showTimer->stop(); // stop the timer to show the tooltip
|
||||||
|
d->delayedHide = false;
|
||||||
|
d->currentWidget = 0;
|
||||||
|
tooltip->hide();
|
||||||
|
delete tooltip;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ToolTipManagerPrivate::resetShownState()
|
void ToolTipManagerPrivate::resetShownState()
|
||||||
{
|
{
|
||||||
if (currentWidget) {
|
if (currentWidget) {
|
||||||
|
|
|
@ -51,33 +51,52 @@ namespace Plasma
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
struct ToolTipData
|
struct ToolTipContent
|
||||||
{
|
{
|
||||||
ToolTipData() : windowToPreview( 0 ) {}
|
ToolTipContent() : windowToPreview( 0 ) {}
|
||||||
QString mainText; //Important information
|
QString mainText; //Important information
|
||||||
QString subText; //Elaborates on the Main Text
|
QString subText; //Elaborates on the Main Text
|
||||||
QPixmap image; // Icon to show;
|
QPixmap image; // Icon to show;
|
||||||
WId windowToPreview; // Id of window to show preview
|
WId windowToPreview; // Id of window to show preview
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return The singleton instance of the manager.
|
||||||
|
**/
|
||||||
static ToolTipManager *self();
|
static ToolTipManager *self();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default constructor. Usually you want to use the singleton instead.
|
* Default constructor. Usually you want to use the singleton instead.
|
||||||
*/
|
*/
|
||||||
explicit ToolTipManager(QObject* parent = 0);
|
explicit ToolTipManager(QObject* parent = 0);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default destructor.
|
||||||
|
*/
|
||||||
~ToolTipManager();
|
~ToolTipManager();
|
||||||
|
|
||||||
void showToolTip(QGraphicsWidget *widget);
|
void showToolTip(QGraphicsWidget *widget);
|
||||||
bool isVisible(QGraphicsWidget *widget);
|
|
||||||
|
bool isWidgetToolTipDisplayed(QGraphicsWidget *widget);
|
||||||
|
|
||||||
void delayedHideToolTip();
|
void delayedHideToolTip();
|
||||||
|
|
||||||
void hideToolTip(QGraphicsWidget *widget);
|
void hideToolTip(QGraphicsWidget *widget);
|
||||||
void registerToolTipData(QGraphicsWidget *widget,const ToolTipData &data);
|
|
||||||
void unregisterToolTip(QGraphicsWidget *widget);
|
void registerWidget(QGraphicsWidget *widget);
|
||||||
void updateToolTipData(QGraphicsWidget *widget,const ToolTipData &data);
|
|
||||||
bool hasToolTip(QGraphicsWidget *widget);
|
void unregisterWidget(QGraphicsWidget *widget);
|
||||||
|
|
||||||
|
void setWidgetToolTipContent(QGraphicsWidget *widget,const ToolTipContent &data);
|
||||||
|
|
||||||
|
bool widgetHasToolTip(QGraphicsWidget *widget);
|
||||||
|
|
||||||
static QPoint popupPosition(const QGraphicsItem * item, const QSize &s);
|
static QPoint popupPosition(const QGraphicsItem * item, const QSize &s);
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void themeUpdated();
|
void themeUpdated();
|
||||||
|
void onWidgetDestroyed(QObject * object);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
friend class ToolTipManagerSingleton;
|
friend class ToolTipManagerSingleton;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user