Support for using custom native widgets with ComboBox, LineEdit and TextEdit
svn path=/trunk/KDE/kdelibs/; revision=1027285
This commit is contained in:
parent
56ac584338
commit
034e5a4a62
@ -132,13 +132,6 @@ ComboBox::ComboBox(QGraphicsWidget *parent)
|
|||||||
: QGraphicsProxyWidget(parent),
|
: QGraphicsProxyWidget(parent),
|
||||||
d(new ComboBoxPrivate(this))
|
d(new ComboBoxPrivate(this))
|
||||||
{
|
{
|
||||||
KComboBox *native = new KComboBox;
|
|
||||||
connect(native, SIGNAL(activated(const QString &)), this, SIGNAL(activated(const QString &)));
|
|
||||||
connect(native, SIGNAL(currentIndexChanged(const QString &)),
|
|
||||||
this, SIGNAL(textChanged(const QString &)));
|
|
||||||
setWidget(native);
|
|
||||||
native->setAttribute(Qt::WA_NoSystemBackground);
|
|
||||||
|
|
||||||
d->background = new FrameSvg(this);
|
d->background = new FrameSvg(this);
|
||||||
d->background->setImagePath("widgets/button");
|
d->background->setImagePath("widgets/button");
|
||||||
d->background->setCacheAllRenderedFrames(true);
|
d->background->setCacheAllRenderedFrames(true);
|
||||||
@ -147,12 +140,14 @@ ComboBox::ComboBox(QGraphicsWidget *parent)
|
|||||||
d->lineEditBackground->setImagePath("widgets/lineedit");
|
d->lineEditBackground->setImagePath("widgets/lineedit");
|
||||||
d->lineEditBackground->setCacheAllRenderedFrames(true);
|
d->lineEditBackground->setCacheAllRenderedFrames(true);
|
||||||
|
|
||||||
d->syncBorders();
|
|
||||||
setAcceptHoverEvents(true);
|
setAcceptHoverEvents(true);
|
||||||
|
|
||||||
|
d->style = Style::sharedStyle();
|
||||||
|
|
||||||
|
setNativeWidget(new KComboBox);
|
||||||
|
|
||||||
connect(Theme::defaultTheme(), SIGNAL(themeChanged()), SLOT(syncBorders()));
|
connect(Theme::defaultTheme(), SIGNAL(themeChanged()), SLOT(syncBorders()));
|
||||||
connect(Plasma::Animator::self(), SIGNAL(customAnimationFinished(int)), this, SLOT(animationFinished(int)));
|
connect(Plasma::Animator::self(), SIGNAL(customAnimationFinished(int)), this, SLOT(animationFinished(int)));
|
||||||
d->style = Style::sharedStyle();
|
|
||||||
native->setStyle(d->style.data());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ComboBox::~ComboBox()
|
ComboBox::~ComboBox()
|
||||||
@ -176,6 +171,24 @@ QString ComboBox::styleSheet()
|
|||||||
return widget()->styleSheet();
|
return widget()->styleSheet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ComboBox::setNativeWidget(KComboBox *nativeWidget)
|
||||||
|
{
|
||||||
|
if (widget()) {
|
||||||
|
widget()->deleteLater();
|
||||||
|
}
|
||||||
|
|
||||||
|
connect(nativeWidget, SIGNAL(activated(const QString &)), this, SIGNAL(activated(const QString &)));
|
||||||
|
connect(nativeWidget, SIGNAL(currentIndexChanged(const QString &)),
|
||||||
|
this, SIGNAL(textChanged(const QString &)));
|
||||||
|
|
||||||
|
setWidget(nativeWidget);
|
||||||
|
|
||||||
|
nativeWidget->setAttribute(Qt::WA_NoSystemBackground);
|
||||||
|
nativeWidget->setStyle(d->style.data());
|
||||||
|
|
||||||
|
d->syncBorders();
|
||||||
|
}
|
||||||
|
|
||||||
KComboBox *ComboBox::nativeWidget() const
|
KComboBox *ComboBox::nativeWidget() const
|
||||||
{
|
{
|
||||||
return static_cast<KComboBox*>(widget());
|
return static_cast<KComboBox*>(widget());
|
||||||
|
@ -43,7 +43,7 @@ class PLASMA_EXPORT ComboBox : public QGraphicsProxyWidget
|
|||||||
Q_PROPERTY(QGraphicsWidget *parentWidget READ parentWidget)
|
Q_PROPERTY(QGraphicsWidget *parentWidget READ parentWidget)
|
||||||
Q_PROPERTY(QString text READ text NOTIFY textChanged)
|
Q_PROPERTY(QString text READ text NOTIFY textChanged)
|
||||||
Q_PROPERTY(QString styleSheet READ styleSheet WRITE setStyleSheet)
|
Q_PROPERTY(QString styleSheet READ styleSheet WRITE setStyleSheet)
|
||||||
Q_PROPERTY(KComboBox *nativeWidget READ nativeWidget)
|
Q_PROPERTY(KComboBox *nativeWidget READ nativeWidget WRITE setNativeWidget)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit ComboBox(QGraphicsWidget *parent = 0);
|
explicit ComboBox(QGraphicsWidget *parent = 0);
|
||||||
@ -66,6 +66,14 @@ public:
|
|||||||
*/
|
*/
|
||||||
QString styleSheet();
|
QString styleSheet();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the combo box wrapped by this ComboBox (widget must inherit KComboBox), ownership is transferred to the ComboBox
|
||||||
|
*
|
||||||
|
* @arg combo box that will be wrapped by this ComboBox
|
||||||
|
* @since KDE4.4
|
||||||
|
*/
|
||||||
|
void setNativeWidget(KComboBox *nativeWidget);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the native widget wrapped by this ComboBox
|
* @return the native widget wrapped by this ComboBox
|
||||||
*/
|
*/
|
||||||
|
@ -72,22 +72,13 @@ LineEdit::LineEdit(QGraphicsWidget *parent)
|
|||||||
: QGraphicsProxyWidget(parent),
|
: QGraphicsProxyWidget(parent),
|
||||||
d(new LineEditPrivate(this))
|
d(new LineEditPrivate(this))
|
||||||
{
|
{
|
||||||
KLineEdit *native = new KLineEdit;
|
|
||||||
d->style = Plasma::Style::sharedStyle();
|
d->style = Plasma::Style::sharedStyle();
|
||||||
d->background = new Plasma::FrameSvg(this);
|
d->background = new Plasma::FrameSvg(this);
|
||||||
d->background->setImagePath("widgets/lineedit");
|
d->background->setImagePath("widgets/lineedit");
|
||||||
d->background->setCacheAllRenderedFrames(true);
|
d->background->setCacheAllRenderedFrames(true);
|
||||||
|
|
||||||
native->setStyle(d->style.data());
|
setNativeWidget(new KLineEdit);
|
||||||
native->setAttribute(Qt::WA_NoSystemBackground);
|
|
||||||
setWidget(native);
|
|
||||||
|
|
||||||
connect(native, SIGNAL(editingFinished()), this, SIGNAL(editingFinished()));
|
|
||||||
connect(native, SIGNAL(returnPressed()), this, SIGNAL(returnPressed()));
|
|
||||||
connect(native, SIGNAL(textEdited(const QString&)), this, SIGNAL(textEdited(const QString&)));
|
|
||||||
connect(native, SIGNAL(textChanged(const QString&)), this, SIGNAL(textChanged(const QString&)));
|
|
||||||
|
|
||||||
d->setPalette();
|
|
||||||
connect(Theme::defaultTheme(), SIGNAL(themeChanged()), this, SLOT(setPalette()));
|
connect(Theme::defaultTheme(), SIGNAL(themeChanged()), this, SLOT(setPalette()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,6 +118,26 @@ QString LineEdit::styleSheet()
|
|||||||
return widget()->styleSheet();
|
return widget()->styleSheet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LineEdit::setNativeWidget(KLineEdit *nativeWidget)
|
||||||
|
{
|
||||||
|
if (widget()) {
|
||||||
|
widget()->deleteLater();
|
||||||
|
}
|
||||||
|
|
||||||
|
connect(nativeWidget, SIGNAL(editingFinished()), this, SIGNAL(editingFinished()));
|
||||||
|
connect(nativeWidget, SIGNAL(returnPressed()), this, SIGNAL(returnPressed()));
|
||||||
|
connect(nativeWidget, SIGNAL(textEdited(const QString&)), this, SIGNAL(textEdited(const QString&)));
|
||||||
|
connect(nativeWidget, SIGNAL(textChanged(const QString&)), this, SIGNAL(textChanged(const QString&)));
|
||||||
|
|
||||||
|
|
||||||
|
setWidget(nativeWidget);
|
||||||
|
|
||||||
|
nativeWidget->setAttribute(Qt::WA_NoSystemBackground);
|
||||||
|
nativeWidget->setStyle(d->style.data());
|
||||||
|
|
||||||
|
d->setPalette();
|
||||||
|
}
|
||||||
|
|
||||||
KLineEdit *LineEdit::nativeWidget() const
|
KLineEdit *LineEdit::nativeWidget() const
|
||||||
{
|
{
|
||||||
return static_cast<KLineEdit*>(widget());
|
return static_cast<KLineEdit*>(widget());
|
||||||
|
@ -44,7 +44,7 @@ class PLASMA_EXPORT LineEdit : public QGraphicsProxyWidget
|
|||||||
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textEdited)
|
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textEdited)
|
||||||
Q_PROPERTY(bool isClearButtonShown READ isClearButtonShown WRITE setClearButtonShown)
|
Q_PROPERTY(bool isClearButtonShown READ isClearButtonShown WRITE setClearButtonShown)
|
||||||
Q_PROPERTY(QString styleSheet READ styleSheet WRITE setStyleSheet)
|
Q_PROPERTY(QString styleSheet READ styleSheet WRITE setStyleSheet)
|
||||||
Q_PROPERTY(KLineEdit *nativeWidget READ nativeWidget)
|
Q_PROPERTY(KLineEdit *nativeWidget READ nativeWidget WRITE setNativeWidget)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit LineEdit(QGraphicsWidget *parent = 0);
|
explicit LineEdit(QGraphicsWidget *parent = 0);
|
||||||
@ -86,6 +86,14 @@ public:
|
|||||||
*/
|
*/
|
||||||
QString styleSheet();
|
QString styleSheet();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the line edit wrapped by this LineEdit (widget must inherit KLineEdit), ownership is transferred to the LineEdit
|
||||||
|
*
|
||||||
|
* @arg text edit that will be wrapped by this LineEdit
|
||||||
|
* @since KDE4.4
|
||||||
|
*/
|
||||||
|
void setNativeWidget(KLineEdit *nativeWidget);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the native widget wrapped by this LineEdit
|
* @return the native widget wrapped by this LineEdit
|
||||||
*/
|
*/
|
||||||
|
@ -73,16 +73,9 @@ TextEdit::TextEdit(QGraphicsWidget *parent)
|
|||||||
: QGraphicsProxyWidget(parent),
|
: QGraphicsProxyWidget(parent),
|
||||||
d(new TextEditPrivate(this))
|
d(new TextEditPrivate(this))
|
||||||
{
|
{
|
||||||
KTextEdit *native = new KTextEdit;
|
|
||||||
connect(native, SIGNAL(textChanged()), this, SIGNAL(textChanged()));
|
|
||||||
setWidget(native);
|
|
||||||
native->setAttribute(Qt::WA_NoSystemBackground);
|
|
||||||
native->setFrameShape( QFrame::NoFrame );
|
|
||||||
native->setTextBackgroundColor( Qt::transparent );
|
|
||||||
native->viewport()->setAutoFillBackground( false );
|
|
||||||
d->style = Plasma::Style::sharedStyle();
|
d->style = Plasma::Style::sharedStyle();
|
||||||
native->verticalScrollBar()->setStyle(d->style.data());
|
|
||||||
native->horizontalScrollBar()->setStyle(d->style.data());
|
setNativeWidget(new KTextEdit);
|
||||||
connect(Theme::defaultTheme(), SIGNAL(themeChanged()),
|
connect(Theme::defaultTheme(), SIGNAL(themeChanged()),
|
||||||
this, SLOT(setPalette()));
|
this, SLOT(setPalette()));
|
||||||
}
|
}
|
||||||
@ -114,6 +107,24 @@ QString TextEdit::styleSheet()
|
|||||||
return widget()->styleSheet();
|
return widget()->styleSheet();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TextEdit::setNativeWidget(KTextEdit *nativeWidget)
|
||||||
|
{
|
||||||
|
if (widget()) {
|
||||||
|
widget()->deleteLater();
|
||||||
|
}
|
||||||
|
|
||||||
|
connect(nativeWidget, SIGNAL(textChanged()), this, SIGNAL(textChanged()));
|
||||||
|
|
||||||
|
setWidget(nativeWidget);
|
||||||
|
|
||||||
|
nativeWidget->setAttribute(Qt::WA_NoSystemBackground);
|
||||||
|
nativeWidget->setFrameShape(QFrame::NoFrame);
|
||||||
|
nativeWidget->setTextBackgroundColor(Qt::transparent);
|
||||||
|
nativeWidget->viewport()->setAutoFillBackground(false);
|
||||||
|
nativeWidget->verticalScrollBar()->setStyle(d->style.data());
|
||||||
|
nativeWidget->horizontalScrollBar()->setStyle(d->style.data());
|
||||||
|
}
|
||||||
|
|
||||||
KTextEdit *TextEdit::nativeWidget() const
|
KTextEdit *TextEdit::nativeWidget() const
|
||||||
{
|
{
|
||||||
return static_cast<KTextEdit*>(widget());
|
return static_cast<KTextEdit*>(widget());
|
||||||
|
@ -44,7 +44,7 @@ class PLASMA_EXPORT TextEdit : public QGraphicsProxyWidget
|
|||||||
Q_PROPERTY(QGraphicsWidget *parentWidget READ parentWidget)
|
Q_PROPERTY(QGraphicsWidget *parentWidget READ parentWidget)
|
||||||
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
|
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
|
||||||
Q_PROPERTY(QString stylesheet READ styleSheet WRITE setStyleSheet)
|
Q_PROPERTY(QString stylesheet READ styleSheet WRITE setStyleSheet)
|
||||||
Q_PROPERTY(KTextEdit *nativeWidget READ nativeWidget)
|
Q_PROPERTY(KTextEdit *nativeWidget READ nativeWidget WRITE setNativeWidget)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit TextEdit(QGraphicsWidget *parent = 0);
|
explicit TextEdit(QGraphicsWidget *parent = 0);
|
||||||
@ -74,6 +74,14 @@ public:
|
|||||||
*/
|
*/
|
||||||
QString styleSheet();
|
QString styleSheet();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the text edit wrapped by this TextEdit (widget must inherit KTextEdit), ownership is transferred to the TextEdit
|
||||||
|
*
|
||||||
|
* @arg text edit that will be wrapped by this TextEdit
|
||||||
|
* @since KDE4.4
|
||||||
|
*/
|
||||||
|
void setNativeWidget(KTextEdit *nativeWidget);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the native widget wrapped by this TextEdit
|
* @return the native widget wrapped by this TextEdit
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user