You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/lib/kofficeui/KoContextCelp.h

280 lines
6.3 KiB

/* This file is part of the KDE project
Copyright (C) 2002, Benoit Vautrin <benoit.vautrin@free.fr>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
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.
*/
#ifndef __KOCONTEXTHELPACTION_H__
#define __KOCONTEXTHELPACTION_H__
#include <qwidget.h>
#include <qbitmap.h>
#include <qdockwindow.h>
#include <kaction.h>
#include <koffice_export.h>
class QPixmap;
class QLabel;
class QSimpleRichText;
class KoVerticalLabel : public QWidget
{
Q_OBJECT
public:
KoVerticalLabel( QWidget* parent = 0, const char* name = 0 );
~KoVerticalLabel();
public slots:
void setText( const QString& text );
protected:
void paintEvent( QPaintEvent* );
private:
QString m_text;
}; // KoVerticalLabel
class KoHelpNavButton : public QWidget
{
Q_OBJECT
public:
enum NavDirection {
Up,
Down
};
KoHelpNavButton( NavDirection d, QWidget* parent );
signals:
void pressed();
void released();
protected:
void paintEvent( QPaintEvent* );
void enterEvent( QEvent* );
void leaveEvent( QEvent* );
private:
QBitmap m_bitmap;
bool m_pressed;
}; // KoHelpNavButton
class KoTinyButton : public QWidget
{
Q_OBJECT
public:
enum Action {
Close,
Sticky
};
KoTinyButton( Action a, QWidget* parent );
signals:
void clicked();
void toggled( bool );
protected:
void paintEvent( QPaintEvent* );
void mousePressEvent( QMouseEvent* );
void mouseReleaseEvent( QMouseEvent* );
private:
QBitmap m_bitmap;
bool m_pressed;
Action m_action;
bool m_toggled;
}; // KoTinyButton
class KoHelpView : public QWidget
{
Q_OBJECT
public:
KoHelpView( QWidget* parent );
~KoHelpView();
void setText( const QString& text );
bool eventFilter( QObject* watched, QEvent* e );
signals:
void linkClicked( const QString& link );
protected:
virtual void mousePressEvent( QMouseEvent* e );
virtual void mouseReleaseEvent( QMouseEvent* e );
virtual void mouseMoveEvent( QMouseEvent* e );
virtual void paintEvent( QPaintEvent* e );
private:
QSimpleRichText* currentText;
QString currentAnchor;
}; // KoHelpView
class KoHelpWidget : public QWidget
{
Q_OBJECT
public:
KoHelpWidget( QString help, QWidget* parent );
void setText( QString text );
void timerEvent( QTimerEvent* );
void updateButtons();
signals:
void linkClicked( const QString& link );
public slots:
void scrollUp();
void scrollDown();
void startScrollingUp();
void startScrollingDown();
void stopScrolling();
protected:
void resizeEvent( QResizeEvent* );
private:
int m_ypos;
bool m_scrollDown;
QWidget* m_helpViewport;
KoHelpView* m_helpView;
KoHelpNavButton* m_upButton;
KoHelpNavButton* m_downButton;
}; // KoHelpWidget
/**
* KoContextHelpPopup is the popup displayed by ContextHelpAction.
*/
class KoContextHelpPopup : public QWidget
{
Q_OBJECT
public:
KoContextHelpPopup( QWidget* parent = 0 );
~KoContextHelpPopup();
public slots:
void setContextHelp( const QString& title, const QString& text, const QPixmap* icon = 0 );
void setSticky( bool sticky ) { m_isSticky = sticky; }
protected:
virtual void mousePressEvent( QMouseEvent* );
virtual void mouseMoveEvent( QMouseEvent* );
virtual void resizeEvent( QResizeEvent* );
virtual void paintEvent( QPaintEvent* );
virtual void windowActivationChange( bool );
virtual void keyPressEvent ( QKeyEvent* );
virtual void keyReleaseEvent ( QKeyEvent* );
signals:
void wantsToBeClosed();
/**
* Connect to this signal to receive the href value of the links clicked.
*/
void linkClicked( const QString& link );
private:
KoHelpWidget* m_helpViewer;
KoVerticalLabel* m_helpTitle;
QLabel* m_helpIcon;
KoTinyButton* m_close;
KoTinyButton* m_sticky;
QPoint m_mousePos;
bool m_isSticky;
}; // KoContextHelpPopup
/**
* KoContextHelpAction provides a easy to use context help system.
*
* This action displays on demand a context help in a popup.
* The context help is set by the updateHelp slot.
*/
class KOFFICEUI_EXPORT KoContextHelpAction : public KToggleAction
{
Q_OBJECT
public:
KoContextHelpAction( KActionCollection* parentCollection, QWidget* parent = 0 );
virtual ~KoContextHelpAction();
public slots:
void updateHelp( const QString& title, const QString& text, const QPixmap* icon = 0 );
void closePopup();
signals:
/**
* Connect to this signal to receive the href value of the links clicked.
*/
void linkClicked( const QString& link );
private:
KoContextHelpPopup* m_popup;
}; // KoContextHelpAction
class KoContextHelpWidget : public QWidget
{
Q_OBJECT
public:
KoContextHelpWidget( QWidget* parent = 0, const char* name = 0 );
~KoContextHelpWidget();
public slots:
void setContextHelp( const QString& title, const QString& text, const QPixmap* icon = 0 );
signals:
/**
* Connect to this signal to receive the href value of the links clicked.
*/
void linkClicked( const QString& link );
private:
KoHelpWidget* m_helpViewer;
KoVerticalLabel* m_helpTitle;
QLabel* m_helpIcon;
}; // KoContextHelpWidget
class KoContextHelpDocker : public QDockWindow
{
Q_OBJECT
public:
KoContextHelpDocker( QWidget* parent = 0, const char* name = 0 );
~KoContextHelpDocker();
public slots:
void setContextHelp( const QString& title, const QString& text, const QPixmap* icon = 0 );
signals:
/**
* Connect to this signal to receive the href value of the links clicked.
*/
void linkClicked( const QString& link );
private:
KoHelpWidget* m_helpViewer;
KoVerticalLabel* m_helpTitle;
QLabel* m_helpIcon;
}; // KoContextHelpDocker
#endif /* __KOCONTEXTHELPACTION_H__ */