summaryrefslogtreecommitdiffstats
path: root/kdeui/kurllabel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdeui/kurllabel.cpp')
-rw-r--r--kdeui/kurllabel.cpp450
1 files changed, 0 insertions, 450 deletions
diff --git a/kdeui/kurllabel.cpp b/kdeui/kurllabel.cpp
deleted file mode 100644
index 9846059ed..000000000
--- a/kdeui/kurllabel.cpp
+++ /dev/null
@@ -1,450 +0,0 @@
-/* This file is part of the KDE libraries
- Copyright (C) 1998 Kurt Granroth <[email protected]>
- Copyright (C) 2000 Peter Putzer <[email protected]>
- Copyright (C) 2005 Jaroslaw Staniek <[email protected]>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License version 2 as published by the Free Software Foundation.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include <tqcolor.h>
-#include <tqtimer.h>
-#include <tqtooltip.h>
-#include <tqpixmap.h>
-#include <tqpainter.h>
-#include <tqstyle.h>
-#include <tqapplication.h>
-
-#include <kcursor.h>
-#include <kglobalsettings.h>
-
-#include "kurllabel.h"
-
-class KURLLabel::Private
-{
-public:
- Private (const TQString& url, KURLLabel* label)
- : URL (url),
- LinkColor (KGlobalSettings::linkColor()),
- HighlightedLinkColor (Qt::red),
- Tip(url),
- Cursor (0L),
- Underline (true),
- UseTips (false),
- Glow (true),
- Float (false),
- RealUnderline (true),
- MousePressed(false),
- WasInsideRect(false),
- MarginAltered(false),
- Timer (new TQTimer (label))
- {
- connect (Timer, TQT_SIGNAL (timeout ()), label, TQT_SLOT (updateColor ()));
- }
-
- ~Private ()
- {
- delete Cursor;
- }
-
- TQString URL;
- TQPixmap AltPixmap;
-
- TQColor LinkColor;
- TQColor HighlightedLinkColor;
-
- TQString Tip;
- TQCursor* Cursor;
- bool Underline:1;
- bool UseTips:1;
- bool Glow:1;
- bool Float:1;
- bool RealUnderline:1;
- bool MousePressed:1;
- bool WasInsideRect:1;
- bool MarginAltered:1;
- TQPixmap RealPixmap;
-
- TQTimer* Timer;
-};
-
-KURLLabel::KURLLabel (const TQString& url, const TQString& text,
- TQWidget* parent, const char* name)
- : TQLabel (!text.isNull() ? text : url, parent, name),
- d (new Private (url, this))
-{
- setFont (font());
- setUseCursor (true);
- setLinkColor (d->LinkColor);
- setFocusPolicy( TQ_StrongFocus ); //better accessibility
- setMouseTracking (true);
-}
-
-KURLLabel::KURLLabel (TQWidget* parent, const char* name)
- : TQLabel (parent, name),
- d (new Private (TQString::null, this))
-{
- setFont (font());
- setUseCursor (true);
- setLinkColor (d->LinkColor);
- setFocusPolicy( TQ_StrongFocus ); //better accessibility
- setMouseTracking (true);
-}
-
-KURLLabel::~KURLLabel ()
-{
- delete d;
-}
-
-void KURLLabel::mouseReleaseEvent (TQMouseEvent* e)
-{
- TQLabel::mouseReleaseEvent (e);
- if (!d->MousePressed)
- return;
- d->MousePressed = false;
- TQRect r( activeRect() );
- if (!r.contains(e->pos()))
- return;
-
- setLinkColor (d->HighlightedLinkColor);
- d->Timer->start (300);
-
- switch (e->button())
- {
- case Qt::LeftButton:
- emit leftClickedURL ();
- emit leftClickedURL (d->URL);
- break;
-
- case Qt::MidButton:
- emit middleClickedURL ();
- emit middleClickedURL (d->URL);
- break;
-
- case Qt::RightButton:
- emit rightClickedURL ();
- emit rightClickedURL (d->URL);
- break;
-
- default:
- ; // nothing
- }
-}
-
-void KURLLabel::setFont (const TQFont& f)
-{
- TQFont newFont = f;
- newFont.setUnderline (d->Underline);
-
- TQLabel::setFont (newFont);
-}
-
-void KURLLabel::setUnderline (bool on)
-{
- d->Underline = on;
-
- setFont (font());
-}
-
-void KURLLabel::updateColor ()
-{
- d->Timer->stop();
-
- TQRect r( activeRect() );
- if (!(d->Glow || d->Float) || !r.contains (mapFromGlobal(TQCursor::pos())))
- setLinkColor (d->LinkColor);
-}
-
-void KURLLabel::setLinkColor (const TQColor& col)
-{
- TQPalette p = palette();
- p.setColor (TQColorGroup::Foreground, col);
- setPalette (p);
-
- update();
-}
-
-void KURLLabel::setURL (const TQString& url)
-{
- if ( d->Tip == d->URL ) { // update the tip as well
- d->Tip = url;
- setUseTips( d->UseTips );
- }
-
- d->URL = url;
-}
-
-const TQString& KURLLabel::url () const
-{
- return d->URL;
-}
-
-void KURLLabel::unsetCursor ()
-{
- delete d->Cursor;
- d->Cursor = 0;
-}
-
-void KURLLabel::setCursor ( const TQCursor& cursor )
-{
- delete d->Cursor;
- d->Cursor = new TQCursor( cursor );
-}
-
-void KURLLabel::setUseCursor (bool on, TQCursor* cursor)
-{
- if (on)
- {
- if (cursor)
- KURLLabel::setCursor (*cursor);
- else
- KURLLabel::setCursor (KCursor::handCursor());
- }
- else
- KURLLabel::unsetCursor ();
-}
-
-bool KURLLabel::useCursor () const
-{
- return d->Cursor;
-}
-
-void KURLLabel::setUseTips (bool on)
-{
- d->UseTips = on;
-
- if (on) {
- TQToolTip::add (this, activeRect(), d->Tip);
- } else
- TQToolTip::remove (this);
-}
-
-void KURLLabel::setTipText (const TQString& tip)
-{
- d->Tip = tip;
-
- setUseTips (d->UseTips);
-}
-
-bool KURLLabel::useTips () const
-{
- return d->UseTips;
-}
-
-const TQString& KURLLabel::tipText () const
-{
- return d->Tip;
-}
-
-void KURLLabel::setHighlightedColor (const TQColor& highcolor)
-{
- d->LinkColor = highcolor;
-
- if (!d->Timer->isActive())
- setLinkColor (highcolor);
-}
-
-void KURLLabel::setHighlightedColor (const TQString& highcolor)
-{
- setHighlightedColor (TQColor (highcolor));
-}
-
-void KURLLabel::setSelectedColor (const TQColor& selcolor)
-{
- d->HighlightedLinkColor = selcolor;
-
- if (d->Timer->isActive())
- setLinkColor (selcolor);
-}
-
-void KURLLabel::setSelectedColor (const TQString& selcolor)
-{
- setSelectedColor (TQColor (selcolor));
-}
-
-void KURLLabel::setGlow (bool glow)
-{
- d->Glow = glow;
-}
-
-void KURLLabel::setFloat (bool do_float)
-{
- d->Float = do_float;
-}
-
-bool KURLLabel::isGlowEnabled () const
-{
- return d->Glow;
-}
-
-bool KURLLabel::isFloatEnabled () const
-{
- return d->Float;
-}
-
-void KURLLabel::setAltPixmap (const TQPixmap& altPix)
-{
- d->AltPixmap = altPix;
-}
-
-const TQPixmap* KURLLabel::altPixmap () const
-{
- return &d->AltPixmap;
-}
-
-void KURLLabel::enterEvent (TQEvent* e)
-{
- TQLabel::enterEvent (e);
-
- TQRect r( activeRect() );
- if (!r.contains( TQT_TQMOUSEEVENT(e)->pos() ))
- return;
-
- if (!d->AltPixmap.isNull() && pixmap())
- {
- d->RealPixmap = *pixmap();
- setPixmap (d->AltPixmap);
- }
-
- if (d->Glow || d->Float)
- {
- d->Timer->stop();
-
- setLinkColor (d->HighlightedLinkColor);
-
- d->RealUnderline = d->Underline;
-
- if (d->Float)
- setUnderline (true);
- }
-
- emit enteredURL ();
- emit enteredURL (d->URL);
-}
-
-void KURLLabel::leaveEvent (TQEvent* e)
-{
- TQLabel::leaveEvent (e);
-
- if (!d->AltPixmap.isNull() && pixmap())
- setPixmap (d->RealPixmap);
-
- if ((d->Glow || d->Float) && !d->Timer->isActive())
- setLinkColor (d->LinkColor);
-
- setUnderline (d->RealUnderline);
-
- emit leftURL ();
- emit leftURL (d->URL);
-}
-
-bool KURLLabel::event (TQEvent *e)
-{
- if (e && e->type() == TQEvent::ParentPaletteChange)
- {
- // use parentWidget() unless you are a toplevel widget, then try qAapp
- TQPalette p = parentWidget() ? parentWidget()->palette() : tqApp->palette();
- p.setBrush(TQColorGroup::Base, p.brush(TQPalette::Normal, TQColorGroup::Background));
- p.setColor(TQColorGroup::Foreground, tqpalette().active().foreground());
- setPalette(p);
- d->LinkColor = KGlobalSettings::linkColor();
- setLinkColor(d->LinkColor);
- return true;
- }
- else if (e->type() == TQEvent::Paint) {
- const bool result = TQLabel::event(e);
- if (result && hasFocus()) {
- TQPainter p(this);
- TQRect r( activeRect() );
- tqstyle().tqdrawPrimitive( TQStyle::PE_FocusRect, &p, r, tqcolorGroup() );
- }
- return result;
- }
- else if (e->type() == TQEvent::KeyPress) {
- TQKeyEvent* ke = TQT_TQKEYEVENT(e);
- if (ke->key() == Qt::Key_Enter || ke->key() == Qt::Key_Return) {
- setLinkColor (d->HighlightedLinkColor);
- d->Timer->start (300);
- emit leftClickedURL ();
- emit leftClickedURL (d->URL);
- ke->accept();
- return true;
- }
- }
- else if (e->type() == TQEvent::MouseButtonPress) {
- TQRect r( activeRect() );
- d->MousePressed = r.contains(TQT_TQMOUSEEVENT(e)->pos());
- }
- else if (e->type() == TQEvent::MouseMove) {
- if (d->Cursor) {
- TQRect r( activeRect() );
- bool inside = r.contains(TQT_TQMOUSEEVENT(e)->pos());
- if (d->WasInsideRect != inside) {
- if (inside)
- TQLabel::setCursor(*d->Cursor);
- else
- TQLabel::unsetCursor();
- d->WasInsideRect = inside;
- }
- }
- }
- return TQLabel::event(e);
-}
-
-TQRect KURLLabel::activeRect() const
-{
- TQRect r( contentsRect() );
- if (text().isEmpty() || (!d->MarginAltered && sizePolicy() == TQSizePolicy(TQSizePolicy::Fixed, TQSizePolicy::Fixed)))
- return r; //fixed size is sometimes used with pixmap
- int hAlign = TQApplication::horizontalAlignment( tqalignment() );
- int indentX = (hAlign && indent()>0) ? indent() : 0;
- TQFontMetrics fm(font());
- r.setWidth( QMIN(fm.width(text()), r.width()));
- if ( hAlign & AlignLeft )
- r.moveLeft(r.left() + indentX);
- if ( hAlign & AlignCenter )
- r.moveLeft((contentsRect().width()-r.width())/2+margin());
- if ( hAlign & AlignRight )
- r.moveLeft(contentsRect().width()-r.width()-indentX+margin());
- int add = QMIN(3, margin());
- r = TQRect(r.left()-add, r.top()-add, r.width()+2*add, r.height()+2*add);
- return r;
-}
-
-void KURLLabel::setMargin( int margin )
-{
- TQLabel::setMargin(margin);
- d->MarginAltered = true;
-}
-
-void KURLLabel::setFocusPolicy( TQ_FocusPolicy policy )
-{
- TQLabel::setFocusPolicy(policy);
- if (!d->MarginAltered) {
- TQLabel::setMargin(policy == TQ_NoFocus ? 0 : 3); //better default : better look when focused
- }
-}
-
-void KURLLabel::tqsetSizePolicy ( TQSizePolicy policy )
-{
- TQLabel::tqsetSizePolicy(policy);
- if (!d->MarginAltered && policy.horData()==TQSizePolicy::Fixed && policy.verData()==TQSizePolicy::Fixed) {
- TQLabel::setMargin(0); //better default : better look when fixed size
- }
-}
-
-void KURLLabel::virtual_hook( int, void* )
-{ /*BASE::virtual_hook( id, data );*/ }
-
-#include "kurllabel.moc"