22#include <QGraphicsSceneWheelEvent>
28#include <ktextbrowser.h>
32#include "private/style_p.h"
33#include "private/themedwidgetinterface_p.h"
38class TextBrowserPrivate :
public ThemedWidgetInterface<TextBrowser>
41 TextBrowserPrivate(TextBrowser *browser)
42 : ThemedWidgetInterface<TextBrowser>(browser),
43 savedMinimumHeight(0),
44 savedMaximumHeight(QWIDGETSIZE_MAX),
51 KTextBrowser *native = q->nativeWidget();
52 if (native->document() &&
53 q->sizePolicy().verticalPolicy() == QSizePolicy::Fixed &&
54 native->verticalScrollBarPolicy() == Qt::ScrollBarAlwaysOff) {
55 native->document()->setTextWidth(q->size().width());
56 QSize s = native->document()->size().toSize();
58 savedMinimumHeight = q->minimumHeight();
59 savedMaximumHeight = q->maximumHeight();
62 q->setMinimumHeight(s.height());
63 q->setMaximumHeight(s.height());
64 }
else if (!wasNotFixed) {
65 q->setMinimumHeight(savedMinimumHeight);
66 q->setMaximumHeight(savedMaximumHeight);
72 Plasma::Style::Ptr style;
73 int savedMinimumHeight;
74 int savedMaximumHeight;
80 d(new TextBrowserPrivate(this))
82 KTextBrowser *native =
new KTextBrowser;
83 native->setWindowFlags(native->windowFlags()|Qt::BypassGraphicsProxyWidget);
85 connect(native, SIGNAL(
textChanged()),
this, SLOT(setFixedHeight()));
86 native->setWindowIcon(QIcon());
89 native->setAttribute(Qt::WA_NoSystemBackground);
90 native->setFrameShape(QFrame::NoFrame);
91 native->setTextBackgroundColor(Qt::transparent);
92 native->viewport()->setAutoFillBackground(
false);
93 d->style = Plasma::Style::sharedStyle();
94 native->verticalScrollBar()->setStyle(d->style.data());
95 native->horizontalScrollBar()->setStyle(d->style.data());
99TextBrowser::~TextBrowser()
102 Plasma::Style::doneWithSharedStyle();
105void TextBrowser::setText(
const QString &text)
107 static_cast<KTextBrowser*
>(widget())->
setText(
text);
110QString TextBrowser::text()
const
112 return static_cast<KTextBrowser*
>(widget())->toHtml();
115void TextBrowser::setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy policy)
120void TextBrowser::setVerticalScrollBarPolicy(Qt::ScrollBarPolicy policy)
125void TextBrowser::setStyleSheet(
const QString &stylesheet)
127 widget()->setStyleSheet(stylesheet);
130QString TextBrowser::styleSheet()
132 return widget()->styleSheet();
135KTextBrowser *TextBrowser::nativeWidget()
const
137 return static_cast<KTextBrowser*
>(widget());
140void TextBrowser::append(
const QString &text)
152 foreach (
const QVariant &v, data) {
153 if (v.canConvert(QVariant::String)) {
154 te->append(v.toString() +
'\n');
159void TextBrowser::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
161 QMenu *popup =
nativeWidget()->createStandardContextMenu(event->screenPos());
163 popup->exec(event->screenPos());
168void TextBrowser::resizeEvent(QGraphicsSceneResizeEvent *event)
171 QGraphicsProxyWidget::resizeEvent(event);
174void TextBrowser::wheelEvent(QGraphicsSceneWheelEvent *event)
176 if (
nativeWidget()->verticalScrollBarPolicy() == Qt::ScrollBarAlwaysOff &&
177 nativeWidget()->horizontalScrollBarPolicy() == Qt::ScrollBarAlwaysOff) {
180 QGraphicsProxyWidget::wheelEvent(event);
184void TextBrowser::changeEvent(QEvent *event)
186 d->changeEvent(event);
187 QGraphicsProxyWidget::changeEvent(event);
192#include <textbrowser.moc>
QHash< QString, QVariant > Data
void setText(const QString &text)
Sets the display text for this TextBrowser.
KTextBrowser * nativeWidget
Namespace for everything in libplasma.