• Skip to content
  • Skip to link menu
KDE 3.5 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

kdeui

kactivelabel.cpp

Go to the documentation of this file.
00001 /*  This file is part of the KDE libraries
00002     Copyright (C) 1999 Waldo Bastian (bastian@kde.org)
00003 
00004     This library is free software; you can redistribute it and/or
00005     modify it under the terms of the GNU Library General Public
00006     License as published by the Free Software Foundation; version 2
00007     of the License.
00008 
00009     This library is distributed in the hope that it will be useful,
00010     but WITHOUT ANY WARRANTY; without even the implied warranty of
00011     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012     Library General Public License for more details.
00013 
00014     You should have received a copy of the GNU Library General Public License
00015     along with this library; see the file COPYING.LIB.  If not, write to
00016     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017     Boston, MA 02110-1301, USA.
00018 */
00019 
00020 #include "kactivelabel.h"
00021 
00022 #include <kapplication.h>
00023 #include <qregexp.h>
00024 #include <qwhatsthis.h>
00025 #include <qsimplerichtext.h>
00026 #include <kdebug.h>
00027 
00028 KActiveLabel::KActiveLabel(QWidget * parent, const char * name)
00029  : QTextBrowser(parent, name)
00030 {
00031    init();
00032 }
00033 
00034 KActiveLabel::KActiveLabel(const QString &text, QWidget * parent, const char * name)
00035  : QTextBrowser(parent, name)
00036 {
00037    init();
00038    setText(text);
00039 }
00040 
00041 void KActiveLabel::init()
00042 {
00043    setTextFormat(Qt::RichText);
00044    setVScrollBarMode(QScrollView::AlwaysOff);
00045    setHScrollBarMode(QScrollView::AlwaysOff);
00046    setFrameStyle(QFrame::NoFrame);
00047    setFocusPolicy( QWidget::TabFocus );
00048    paletteChanged();
00049 
00050    connect(this, SIGNAL(linkClicked(const QString &)),
00051            this, SLOT(openLink(const QString &)));
00052    if (kapp)
00053    {
00054       connect(kapp, SIGNAL(kdisplayPaletteChanged()),
00055               this, SLOT(paletteChanged()));
00056    }
00057 }
00058 
00059 void KActiveLabel::paletteChanged()
00060 {
00061    QPalette p = kapp ? kapp->palette() : palette();
00062    p.setBrush(QColorGroup::Base, p.brush(QPalette::Normal, QColorGroup::Background));
00063    p.setColor(QColorGroup::Text, p.color(QPalette::Normal, QColorGroup::Foreground));
00064    setPalette(p);
00065 }
00066 
00067 void KActiveLabel::openLink(const QString & link)
00068 {
00069    QRegExp whatsthis("whatsthis:/*([^/].*)");
00070    if (whatsthis.exactMatch(link)) {
00071       QWhatsThis::display(whatsthis.cap(1));
00072       return;
00073    }
00074 
00075    QStringList args;
00076    args << "exec" << link;
00077    kapp->kdeinitExec("kfmclient", args);
00078 }
00079 
00080 void KActiveLabel::virtual_hook( int, void* )
00081 { /*BASE::virtual_hook( id, data );*/ }
00082 
00083 void KActiveLabel::focusInEvent( QFocusEvent* fe )
00084 {
00085    QTextBrowser::focusInEvent(fe);
00086    if(fe->reason() == QFocusEvent::Tab || fe->reason() == QFocusEvent::Backtab)
00087       selectAll(true);
00088 }
00089 
00090 void KActiveLabel::focusOutEvent( QFocusEvent* fe )
00091 {
00092    QTextBrowser::focusOutEvent(fe);
00093    if(fe->reason() == QFocusEvent::Tab || fe->reason() == QFocusEvent::Backtab)
00094       selectAll(false);
00095 }
00096 
00097 void KActiveLabel::keyPressEvent( QKeyEvent *e )
00098 {
00099     switch ( e->key() )
00100     {
00101     case Key_Down:
00102     case Key_Up:
00103     case Key_Left:
00104     case Key_Right:
00105         // jump over QTextEdit's key navigation breakage.
00106         // we're not interested in keyboard navigation within the text
00107         QWidget::keyPressEvent( e );
00108         break;
00109     default:
00110         QTextBrowser::keyPressEvent( e );
00111     }
00112 }
00113 
00114 QSize KActiveLabel::minimumSizeHint() const
00115 {
00116    QSize ms = minimumSize();
00117    if ((ms.width() > 0) && (ms.height() > 0))
00118       return ms;
00119 
00120    int w = 400;
00121    if (ms.width() > 0)
00122       w = ms.width();
00123 
00124    QString txt = text();
00125    QSimpleRichText rt(txt, font());
00126    rt.setWidth(w - 2*frameWidth() - 10);
00127    w = 10 + rt.widthUsed() + 2*frameWidth();
00128    if (w < ms.width())
00129       w = ms.width();
00130    int h = rt.height() + 2*frameWidth();
00131    if ( h < ms.height())
00132       h = ms.height();
00133 
00134    return QSize(w, h);
00135 }
00136 
00137 QSize KActiveLabel::sizeHint() const
00138 {
00139    return minimumSizeHint();
00140 }
00141 
00142 #include "kactivelabel.moc"

kdeui

Skip menu "kdeui"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

API Reference

Skip menu "API Reference"
  • dcop
  • DNSSD
  • interfaces
  • Kate
  • kconf_update
  • KDECore
  • KDED
  • kdefx
  • KDEsu
  • kdeui
  • KDocTools
  • KHTML
  • KImgIO
  • KInit
  • kio
  • kioslave
  • KJS
  • KNewStuff
  • KParts
  • KUtils
Generated for API Reference by doxygen 1.5.9
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal