make lineedit a LayoutItem. seems to basically work, though i don't think it is quite perfect yet =)
svn path=/trunk/KDE/kdebase/workspace/plasma/lib/; revision=668932
This commit is contained in:
parent
3c690fea84
commit
6393ddd3ad
@ -19,6 +19,7 @@
|
||||
#include "lineedit.h"
|
||||
|
||||
#include <QStyleOptionFrameV2>
|
||||
#include <QTextDocument>
|
||||
|
||||
namespace Plasma
|
||||
{
|
||||
@ -61,15 +62,69 @@ void LineEdit::updated(const QString&, const DataEngine::Data& data)
|
||||
{
|
||||
DataEngine::DataIterator it(data);
|
||||
|
||||
//TODO: this only shows the first possible data item.
|
||||
// should it do more?
|
||||
QString text;
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
if (it.value().canConvert(QVariant::String)) {
|
||||
setPlainText(it.value().toString());
|
||||
return;
|
||||
text.append(QString("<p><b>%1</b>: %2</p>").arg(it.key(), it.value().toString()));
|
||||
}
|
||||
}
|
||||
setHtml(text);
|
||||
}
|
||||
|
||||
Qt::Orientations LineEdit::expandingDirections() const
|
||||
{
|
||||
return Qt::Vertical;
|
||||
}
|
||||
|
||||
QSizeF LineEdit::minimumSize() const
|
||||
{
|
||||
return boundingRect().size();
|
||||
}
|
||||
|
||||
QSizeF LineEdit::maximumSize() const
|
||||
{
|
||||
return minimumSize();
|
||||
}
|
||||
|
||||
bool LineEdit::hasHeightForWidth() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
qreal LineEdit::heightForWidth(qreal w) const
|
||||
{
|
||||
QTextDocument* doc = document();
|
||||
doc->setTextWidth(w);
|
||||
qreal height = doc->size().height();
|
||||
kDebug() << "LineEdit::heightForWidth(" << w << ") is " << height << endl;
|
||||
return height;
|
||||
}
|
||||
|
||||
bool LineEdit::hasWidthForHeight() const
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
qreal LineEdit::widthForHeight(qreal h) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
QRectF LineEdit::geometry() const
|
||||
{
|
||||
return boundingRect().toRect();
|
||||
}
|
||||
|
||||
void LineEdit::setGeometry(const QRectF& geometry)
|
||||
{
|
||||
setTextWidth(geometry.width());
|
||||
}
|
||||
|
||||
QSizeF LineEdit::sizeHint() const
|
||||
{
|
||||
kDebug() << "LineEdit::sizeeHint() " << document()->size() << endl;
|
||||
return document()->size();
|
||||
}
|
||||
|
||||
} // namespace Plasma
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include <kdemacros.h>
|
||||
|
||||
#include <dataengine.h>
|
||||
#include <widgets/layoutitem.h>
|
||||
|
||||
namespace Plasma
|
||||
{
|
||||
@ -32,7 +33,7 @@ namespace Plasma
|
||||
/**
|
||||
* Class that emulates a QLineEdit inside plasma
|
||||
*/
|
||||
class KDE_EXPORT LineEdit : public QGraphicsTextItem
|
||||
class KDE_EXPORT LineEdit : public QGraphicsTextItem, public LayoutItem
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@ -42,6 +43,22 @@ class KDE_EXPORT LineEdit : public QGraphicsTextItem
|
||||
|
||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
|
||||
|
||||
Qt::Orientations expandingDirections() const;
|
||||
|
||||
QSizeF minimumSize() const;
|
||||
QSizeF maximumSize() const;
|
||||
|
||||
bool hasHeightForWidth() const;
|
||||
qreal heightForWidth(qreal w) const;
|
||||
|
||||
bool hasWidthForHeight() const;
|
||||
qreal widthForHeight(qreal h) const;
|
||||
|
||||
QRectF geometry() const;
|
||||
void setGeometry(const QRectF& geometry);
|
||||
QSizeF sizeHint() const;
|
||||
|
||||
|
||||
public Q_SLOTS:
|
||||
void updated(const QString&, const Plasma::DataEngine::Data&);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user