• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

KFile

  • sources
  • kde-4.14
  • kdelibs
  • kfile
kurlnavigatortogglebutton.cpp
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (C) 2006 by Peter Penz <peter.penz@gmx.at> *
3  * *
4  * This library is free software; you can redistribute it and/or *
5  * modify it under the terms of the GNU Library General Public *
6  * License as published by the Free Software Foundation; either *
7  * version 2 of the License, or (at your option) any later version. *
8  * *
9  * This library is distributed in the hope that it will be useful, *
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
12  * Library General Public License for more details. *
13  * *
14  * You should have received a copy of the GNU Library General Public License *
15  * along with this library; see the file COPYING.LIB. If not, write to *
16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *
17  * Boston, MA 02110-1301, USA. *
18  *****************************************************************************/
19 
20 #include "kurlnavigatortogglebutton_p.h"
21 
22 #include <kcolorscheme.h>
23 #include <kicon.h>
24 #include <klocale.h>
25 
26 #include <QtGui/QPainter>
27 #include <QtGui/QKeyEvent>
28 #include <QtGui/QApplication>
29 
30 namespace KDEPrivate
31 {
32 
33 KUrlNavigatorToggleButton::KUrlNavigatorToggleButton(QWidget* parent) :
34  KUrlNavigatorButtonBase(parent)
35 {
36  setCheckable(true);
37  connect(this, SIGNAL(toggled(bool)),
38  this, SLOT(updateToolTip()));
39  connect(this, SIGNAL(clicked(bool)),
40  this, SLOT(updateCursor()));
41  m_pixmap = KIcon("dialog-ok").pixmap(QSize(22, 22).expandedTo(iconSize()));
42  updateToolTip();
43 }
44 
45 KUrlNavigatorToggleButton::~KUrlNavigatorToggleButton()
46 {
47 }
48 
49 QSize KUrlNavigatorToggleButton::sizeHint() const
50 {
51  QSize size = KUrlNavigatorButtonBase::sizeHint();
52  size.setWidth(m_pixmap.width() + 4);
53  return size;
54 }
55 
56 void KUrlNavigatorToggleButton::enterEvent(QEvent* event)
57 {
58  KUrlNavigatorButtonBase::enterEvent(event);
59  updateCursor();
60 }
61 
62 void KUrlNavigatorToggleButton::leaveEvent(QEvent* event)
63 {
64  KUrlNavigatorButtonBase::leaveEvent(event);
65  setCursor(Qt::ArrowCursor);
66 }
67 
68 void KUrlNavigatorToggleButton::paintEvent(QPaintEvent* event)
69 {
70  QPainter painter(this);
71  painter.setClipRect(event->rect());
72 
73  const int buttonWidth = width();
74  const int buttonHeight = height();
75  if (isChecked()) {
76  drawHoverBackground(&painter);
77  const int x = (buttonWidth - m_pixmap.width()) / 2;
78  const int y = (buttonHeight - m_pixmap.height()) / 2;
79  painter.drawPixmap(QRect(x, y, m_pixmap.width(), m_pixmap.height()), m_pixmap);
80  } else if (isDisplayHintEnabled(EnteredHint)) {
81  painter.setPen(Qt::NoPen);
82  painter.setBrush(palette().color(foregroundRole()));
83 
84  const int verticalGap = 4;
85  const int caretWidth = 2;
86  const int x = (layoutDirection() == Qt::LeftToRight) ? 0 : width() - caretWidth;
87  painter.drawRect(x, verticalGap, caretWidth, buttonHeight - 2 * verticalGap);
88  }
89 }
90 
91 void KUrlNavigatorToggleButton::updateToolTip()
92 {
93  if (isChecked()) {
94  setToolTip(i18n("Click for Location Navigation"));
95  } else {
96  setToolTip(i18n("Click to Edit Location"));
97  }
98 }
99 
100 void KUrlNavigatorToggleButton::updateCursor()
101 {
102  setCursor(isChecked() ? Qt::ArrowCursor : Qt::IBeamCursor);
103 }
104 
105 } // namespace KDEPrivate
106 
107 #include "kurlnavigatortogglebutton_p.moc"
i18n
QString i18n(const char *text)
QEvent
QWidget
QWidget::palette
const QPalette & palette() const
KDEPrivate::KUrlNavigatorButtonBase::isDisplayHintEnabled
bool isDisplayHintEnabled(DisplayHint hint) const
Definition: kurlnavigatorbuttonbase.cpp:78
KDEPrivate::KUrlNavigatorToggleButton::sizeHint
virtual QSize sizeHint() const
Definition: kurlnavigatortogglebutton.cpp:49
KDEPrivate::KUrlNavigatorToggleButton::~KUrlNavigatorToggleButton
virtual ~KUrlNavigatorToggleButton()
Definition: kurlnavigatortogglebutton.cpp:45
QPixmap::width
int width() const
QWidget::setCursor
void setCursor(const QCursor &)
KDEPrivate::KUrlNavigatorToggleButton::paintEvent
virtual void paintEvent(QPaintEvent *event)
Definition: kurlnavigatortogglebutton.cpp:68
QPushButton::sizeHint
virtual QSize sizeHint() const
QWidget::y
int y() const
KDEPrivate::KUrlNavigatorButtonBase
Base class for buttons of the URL navigator.
Definition: kurlnavigatorbuttonbase_p.h:39
klocale.h
QWidget::foregroundRole
QPalette::ColorRole foregroundRole() const
QIcon::pixmap
QPixmap pixmap(const QSize &size, Mode mode, State state) const
QWidget::width
int width() const
QWidget::size
QSize size() const
QPaintEvent::rect
const QRect & rect() const
QPainter::drawRect
void drawRect(const QRectF &rectangle)
QRect
KDEPrivate::KUrlNavigatorButtonBase::EnteredHint
Definition: kurlnavigatorbuttonbase_p.h:59
QWidget::x
int x() const
QWidget::layoutDirection
Qt::LayoutDirection layoutDirection() const
QPainter::setPen
void setPen(const QColor &color)
QAbstractButton::iconSize
QSize iconSize() const
QPainter::drawPixmap
void drawPixmap(const QRectF &target, const QPixmap &pixmap, const QRectF &source)
QSize::setWidth
void setWidth(int width)
QPainter
QAbstractButton::clicked
void clicked(bool checked)
KIcon
QPainter::setBrush
void setBrush(const QBrush &brush)
QAbstractButton::setCheckable
void setCheckable(bool)
kurlnavigatortogglebutton_p.h
KDEPrivate::KUrlNavigatorButtonBase::leaveEvent
virtual void leaveEvent(QEvent *event)
Definition: kurlnavigatorbuttonbase.cpp:102
KDEPrivate::KUrlNavigatorToggleButton::enterEvent
virtual void enterEvent(QEvent *event)
Definition: kurlnavigatortogglebutton.cpp:56
QSize
QPixmap::height
int height() const
QAbstractButton::isChecked
bool isChecked() const
QPainter::setClipRect
void setClipRect(const QRectF &rectangle, Qt::ClipOperation operation)
KDEPrivate::KUrlNavigatorButtonBase::drawHoverBackground
void drawHoverBackground(QPainter *painter)
Definition: kurlnavigatorbuttonbase.cpp:109
KDEPrivate::KUrlNavigatorToggleButton::leaveEvent
virtual void leaveEvent(QEvent *event)
Definition: kurlnavigatortogglebutton.cpp:62
QAbstractButton::toggled
void toggled(bool checked)
KDEPrivate::KUrlNavigatorToggleButton::KUrlNavigatorToggleButton
KUrlNavigatorToggleButton(QWidget *parent)
Definition: kurlnavigatortogglebutton.cpp:33
QWidget::setToolTip
void setToolTip(const QString &)
QPaintEvent
kicon.h
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
kcolorscheme.h
QWidget::height
int height() const
KDEPrivate::KUrlNavigatorButtonBase::enterEvent
virtual void enterEvent(QEvent *event)
Definition: kurlnavigatorbuttonbase.cpp:95
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:27:27 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KFile

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

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal