summaryrefslogtreecommitdiffstats
path: root/src/qt3support/widgets/q3whatsthis.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/qt3support/widgets/q3whatsthis.cpp')
-rw-r--r--src/qt3support/widgets/q3whatsthis.cpp220
1 files changed, 220 insertions, 0 deletions
diff --git a/src/qt3support/widgets/q3whatsthis.cpp b/src/qt3support/widgets/q3whatsthis.cpp
new file mode 100644
index 0000000..30d3801
--- /dev/null
+++ b/src/qt3support/widgets/q3whatsthis.cpp
@@ -0,0 +1,220 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3Support module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "q3whatsthis.h"
+#ifndef QT_NO_WHATSTHIS
+#include "qapplication.h"
+#include "qwidget.h"
+#include "qevent.h"
+
+QT_BEGIN_NAMESPACE
+
+/*! \class Q3WhatsThis
+ \compat
+*/
+
+/*!
+ Constructs a new "What's This?" object for \a widget.
+*/
+Q3WhatsThis::Q3WhatsThis(QWidget *widget)
+ : QObject(widget)
+{
+ if (widget)
+ widget->installEventFilter(this);
+}
+
+/*!
+ Destroys the "What's This?" object.
+*/
+Q3WhatsThis::~Q3WhatsThis()
+{
+}
+
+/*!
+ \internal
+
+ Handles "What's This?" events.
+*/
+bool Q3WhatsThis::eventFilter(QObject *o, QEvent *e)
+{
+ if (o != parent() || !o->isWidgetType())
+ return false;
+
+ if (e->type() == QEvent::WhatsThis) {
+ QString s = text(static_cast<QHelpEvent*>(e)->pos());
+ if (!s.isEmpty())
+ QWhatsThis::showText(static_cast<QHelpEvent*>(e)->globalPos(), s, static_cast<QWidget*>(o));
+ } else if (e->type() == QEvent::QueryWhatsThis) {
+ QString s = text(static_cast<QHelpEvent*>(e)->pos());
+ if (s.isEmpty())
+ return false;
+ } else if (e->type() == QEvent::WhatsThisClicked) {
+ QString href = static_cast<QWhatsThisClickedEvent*>(e)->href();
+ if (clicked(href))
+ QWhatsThis::hideText();
+ } else {
+ return false;
+ }
+ return true;
+}
+
+/*!
+ This virtual function returns the text for position \a pos in the
+ widget that this "What's This?" object documents. If there is no
+ "What's This?" text for the position, an empty string is returned.
+
+ The default implementation returns an empty string.
+*/
+QString Q3WhatsThis::text(const QPoint & /* pos */)
+{
+ if (parent() && parent()->isWidgetType())
+ return static_cast<QWidget*>(parent())->whatsThis();
+ return QString();
+}
+
+/*!
+ This virtual function is called when the user clicks inside the
+ "What's this?" window. \a href is the link the user clicked on, or
+ an empty string if there was no link.
+
+ If the function returns true (the default), the "What's this?"
+ window is closed, otherwise it remains visible.
+
+ The default implementation ignores \a href and returns true.
+*/
+bool Q3WhatsThis::clicked(const QString & /* href */)
+{
+ return true;
+}
+
+/*!
+ \fn void Q3WhatsThis::enterWhatsThisMode()
+
+ Enters "What's This?" mode and returns immediately.
+
+ Qt will install a special cursor and take over mouse input until
+ the user clicks somewhere. It then shows any help available and
+ ends "What's This?" mode. Finally, Qt removes the special cursor
+ and help window and then restores ordinary event processing, at
+ which point the left mouse button is no longer pressed.
+
+ The user can also use the Esc key to leave "What's This?" mode.
+
+ \sa inWhatsThisMode(), leaveWhatsThisMode()
+*/
+
+/*!
+ \fn bool Q3WhatsThis::inWhatsThisMode()
+
+ Returns true if the application is in "What's This?" mode;
+ otherwise returns false.
+
+ \sa enterWhatsThisMode(), leaveWhatsThisMode()
+*/
+
+/*!
+ \fn void Q3WhatsThis::add(QWidget *widget, const QString &text)
+
+ Adds \a text as "What's This?" help for \a widget. If the text is
+ rich text formatted (i.e. it contains markup) it will be rendered
+ with the default stylesheet QStyleSheet::defaultSheet().
+
+ The text is destroyed if the widget is later destroyed, so it need
+ not be explicitly removed.
+
+ \sa remove()
+*/
+
+/*!
+ \fn void Q3WhatsThis::remove(QWidget *widget)
+
+ Removes the "What's This?" help associated with the \a widget.
+ This happens automatically if the widget is destroyed.
+
+ \sa add()
+*/
+
+/*!
+ \fn void Q3WhatsThis::leaveWhatsThisMode(const QString& text = QString(), const QPoint& pos = QCursor::pos(), QWidget* widget = 0)
+
+ This function is used internally by widgets that support
+ QWidget::customWhatsThis(); applications do not usually call it.
+ An example of such a widget is Q3PopupMenu: menus still work
+ normally in "What's This?" mode but also provide help texts for
+ individual menu items.
+
+ If \a text is not empty, a "What's This?" help window is
+ displayed at the global screen position \a pos. If widget \a widget is
+ not 0 and has its own dedicated QWhatsThis object, this object
+ will receive clicked() messages when the user clicks on hyperlinks
+ inside the help text.
+
+ \sa inWhatsThisMode(), enterWhatsThisMode(), clicked()
+*/
+
+/*!
+ \fn void Q3WhatsThis::display(const QString &text, const QPoint &pos, QWidget *widget)
+
+ Display \a text in a help window at the global screen position \a
+ pos.
+
+ If widget \a widget is not 0 and has its own dedicated QWhatsThis
+ object, this object will receive clicked() messages when the user
+ clicks on hyperlinks inside the help text.
+
+ \sa clicked()
+*/
+
+/*!
+ Creates a QToolButton preconfigured to enter "What's This?" mode
+ when clicked. You will often use this with a tool bar as \a
+ parent:
+
+ \snippet doc/src/snippets/code/src_qt3support_widgets_q3whatsthis.cpp 0
+*/
+QToolButton *Q3WhatsThis::whatsThisButton(QWidget * parent)
+{
+ return QWhatsThis::whatsThisButton(parent);
+}
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_WHATSTHIS