support for tooltips in collapsed popupapplets
This commit is contained in:
parent
c761a1078e
commit
c36c2f88aa
@ -39,6 +39,7 @@
|
||||
#include <Plasma/Corona>
|
||||
#include <Plasma/Context>
|
||||
#include <Plasma/Package>
|
||||
#include <Plasma/ToolTipManager>
|
||||
|
||||
Q_DECLARE_METATYPE(AppletInterface*)
|
||||
|
||||
@ -472,6 +473,7 @@ PopupAppletInterface::PopupAppletInterface(AbstractJsAppletScript *parent)
|
||||
: APPLETSUPERCLASS(parent)
|
||||
{
|
||||
connect(m_appletScriptEngine, SIGNAL(popupEvent(bool)), this, SIGNAL(popupEvent(bool)));
|
||||
connect(m_appletScriptEngine, SIGNAL(popupEvent(bool)), this, SLOT(sourceAppletPopupEvent(bool)));
|
||||
}
|
||||
|
||||
void PopupAppletInterface::setPopupIcon(const QIcon &icon)
|
||||
@ -489,6 +491,44 @@ void PopupAppletInterface::setPopupIconByName(const QString &name)
|
||||
return popupApplet()->setPopupIcon(name);
|
||||
}
|
||||
|
||||
void PopupAppletInterface::setPopupIconToolTip(const QVariantHash &data)
|
||||
{
|
||||
if (data == m_rawToolTipData) {
|
||||
return;
|
||||
} else if (!data.contains("image") && !data.contains("mainText") &&
|
||||
!data.contains("subText")) {
|
||||
m_rawToolTipData = QVariantHash();
|
||||
Plasma::ToolTipManager::self()->clearContent(popupApplet());
|
||||
Plasma::ToolTipManager::self()->unregisterWidget(popupApplet());
|
||||
emit popupIconToolTipChanged();
|
||||
return;
|
||||
}
|
||||
|
||||
Plasma::ToolTipContent content(data.value("mainText").toString(), data.value("subText").toString());
|
||||
|
||||
const QVariant image = data.value("image");
|
||||
if (image.canConvert<QIcon>()) {
|
||||
content.setImage(image.value<QIcon>());
|
||||
} else if (image.canConvert<QPixmap>()) {
|
||||
content.setImage(image.value<QPixmap>());
|
||||
} else if (image.canConvert<QImage>()) {
|
||||
content.setImage(QPixmap::fromImage(image.value<QImage>()));
|
||||
} else if (image.canConvert<QString>()) {
|
||||
content.setImage(KIcon(image.toString()));
|
||||
}
|
||||
|
||||
Plasma::ToolTipManager::self()->registerWidget(popupApplet());
|
||||
Plasma::ToolTipManager::self()->setContent(popupApplet(), content);
|
||||
m_rawToolTipData = data;
|
||||
m_toolTipData = content;
|
||||
emit popupIconToolTipChanged();
|
||||
}
|
||||
|
||||
QVariantHash PopupAppletInterface::popupIconToolTip() const
|
||||
{
|
||||
return m_rawToolTipData;
|
||||
}
|
||||
|
||||
void PopupAppletInterface::setPassivePopup(bool passive)
|
||||
{
|
||||
popupApplet()->setPassivePopup(passive);
|
||||
@ -529,6 +569,19 @@ QGraphicsWidget *PopupAppletInterface::popupWidget()
|
||||
return popupApplet()->graphicsWidget();
|
||||
}
|
||||
|
||||
void PopupAppletInterface::sourceAppletPopupEvent(bool show)
|
||||
{
|
||||
if (show) {
|
||||
Plasma::ToolTipManager::self()->clearContent(popupApplet());
|
||||
} else {
|
||||
Plasma::ToolTipManager::self()->registerWidget(popupApplet());
|
||||
Plasma::ToolTipManager::self()->setContent(popupApplet(), m_toolTipData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///////////// ContainmentInterface
|
||||
|
||||
ContainmentInterface::ContainmentInterface(AbstractJsAppletScript *parent)
|
||||
: APPLETSUPERCLASS(parent),
|
||||
m_movableApplets(true)
|
||||
|
@ -32,6 +32,7 @@
|
||||
#include <Plasma/PopupApplet>
|
||||
#include <Plasma/DataEngine>
|
||||
#include <Plasma/Theme>
|
||||
#include <Plasma/ToolTipContent>
|
||||
|
||||
#include "abstractjsappletscript.h"
|
||||
|
||||
@ -363,6 +364,7 @@ class PopupAppletInterface : public APPLETSUPERCLASS
|
||||
Q_PROPERTY(QIcon popupIcon READ popupIcon WRITE setPopupIcon)
|
||||
Q_PROPERTY(bool passivePopup READ isPassivePopup WRITE setPassivePopup)
|
||||
Q_PROPERTY(QGraphicsWidget *popupWidget READ popupWidget WRITE setPopupWidget)
|
||||
Q_PROPERTY(QVariantHash popupIconToolTip READ popupIconToolTip WRITE setPopupIconToolTip NOTIFY popupIconToolTipChanged)
|
||||
|
||||
public:
|
||||
PopupAppletInterface(AbstractJsAppletScript *parent);
|
||||
@ -370,6 +372,9 @@ public:
|
||||
void setPopupIcon(const QIcon &icon);
|
||||
QIcon popupIcon();
|
||||
|
||||
void setPopupIconToolTip(const QVariantHash &data);
|
||||
QVariantHash popupIconToolTip() const;
|
||||
|
||||
inline Plasma::PopupApplet *popupApplet() const { return static_cast<Plasma::PopupApplet *>(m_appletScriptEngine->applet()); }
|
||||
|
||||
void setPassivePopup(bool passive);
|
||||
@ -380,6 +385,7 @@ public:
|
||||
|
||||
Q_SIGNALS:
|
||||
void popupEvent(bool);
|
||||
void popupIconToolTipChanged();
|
||||
|
||||
public Q_SLOTS:
|
||||
void setPopupIconByName(const QString &name);
|
||||
@ -387,6 +393,13 @@ public Q_SLOTS:
|
||||
void hidePopup();
|
||||
void showPopup();
|
||||
void showPopup(int timeout);
|
||||
|
||||
private Q_SLOTS:
|
||||
void sourceAppletPopupEvent(bool show);
|
||||
|
||||
private:
|
||||
QVariantHash m_rawToolTipData;
|
||||
Plasma::ToolTipContent m_toolTipData;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user