summaryrefslogtreecommitdiffstats
path: root/kdeui/kaboutdialog.h
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commitce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch)
tree5ac38a06f3dde268dc7927dc155896926aaf7012 /kdeui/kaboutdialog.h
downloadtdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz
tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kdeui/kaboutdialog.h')
-rw-r--r--kdeui/kaboutdialog.h633
1 files changed, 633 insertions, 0 deletions
diff --git a/kdeui/kaboutdialog.h b/kdeui/kaboutdialog.h
new file mode 100644
index 000000000..25afc0a3b
--- /dev/null
+++ b/kdeui/kaboutdialog.h
@@ -0,0 +1,633 @@
+/*
+ * This file is part of the KDE Libraries
+ * Copyright (C) 1999-2001 Mirko Boehm (mirko@kde.org) and
+ * Espen Sand (espen@kde.org)
+ *
+ * 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.
+ *
+ */
+
+/*
+ * This file declares a class for creating "About ..." dialogs
+ * in a general way. It provides geometry management and some
+ * options to connect for, like emailing the author or maintainer.
+ */
+
+
+#ifndef _KABOUTDIALOG_H_
+#define _KABOUTDIALOG_H_
+
+#include <kdialogbase.h>
+#include <qstring.h>
+
+class QFrame;
+class QLabel;
+class QVBoxLayout;
+class QTabWidget;
+class KURLLabel;
+class KAboutContainer;
+class KAboutContainerBase;
+
+class KAboutWidgetPrivate;
+
+class KAboutContainerPrivate;
+/**
+ * KAboutContainer can be used to make a application specific AboutDialog.
+ */
+class KDEUI_EXPORT KAboutContainer : public QFrame
+{
+ Q_OBJECT
+
+ public:
+ KAboutContainer( QWidget *parent=0, const char *name=0,
+ int margin=0, int spacing=0,
+ int childAlignment = AlignCenter,
+ int innerAlignment = AlignCenter );
+
+ void addWidget( QWidget *widget );
+ void addPerson( const QString &name, const QString &email,
+ const QString &url, const QString &task,
+ bool showHeader = false, bool showframe = false,
+ bool showBold = false );
+ void addTitle( const QString &title, int alignment=AlignLeft,
+ bool showframe = false, bool showBold = false );
+ void addImage( const QString &fileName, int alignment=AlignLeft );
+
+ virtual QSize sizeHint( void ) const;
+ virtual QSize minimumSizeHint( void ) const;
+
+ protected:
+ virtual void childEvent( QChildEvent *e );
+
+ signals:
+ void urlClick( const QString &url );
+ void mailClick( const QString &name, const QString &address );
+
+
+ private:
+ QVBoxLayout *mVbox;
+ int mAlignment;
+ KAboutContainerPrivate* const d;
+};
+
+class KAboutContributorPrivate;
+
+/**
+ * Used internally by KAboutWidget
+ * @internal
+ */
+class KDEUI_EXPORT KAboutContributor : public QFrame
+{
+ Q_OBJECT
+
+ public:
+ KAboutContributor( QWidget *parent=0, const char *name=0,
+ const QString &username=QString::null,
+ const QString &email=QString::null,
+ const QString &url=QString::null,
+ const QString &work=QString::null,
+ bool showHeader=false, bool showFrame=true,
+ bool showBold=false );
+
+ void setName( const QString &text, const QString &header=QString::null,
+ bool update = true );
+ void setEmail( const QString &text, const QString &header=QString::null,
+ bool update = true );
+ void setURL( const QString &text, const QString &header=QString::null,
+ bool update = true );
+ void setWork( const QString &text, const QString &header=QString::null,
+ bool update = true );
+ QString getName( void ) const;
+ QString getEmail( void ) const;
+ QString getURL( void ) const;
+ QString getWork( void ) const;
+
+ virtual QSize sizeHint( void ) const;
+
+ protected:
+ virtual void fontChange( const QFont &oldFont );
+
+ protected slots:
+ void urlClickedSlot( const QString& );
+ void emailClickedSlot( const QString& emailaddress );
+
+ private:
+ void updateLayout( void );
+
+ signals:
+ void sendEmail(const QString& name, const QString& email);
+ void openURL(const QString& url);
+
+ private:
+ QLabel *mLabel[4];
+ QLabel *mText[4];
+ bool mShowHeader;
+ bool mShowBold;
+
+ KAboutContributorPrivate* const d;
+
+ virtual void setName(const char *_name) { QFrame::setName(_name); }
+};
+
+/**
+ * KAboutWidget is the main widget for KAboutDialog.
+ *
+ * It has a minimum size set.
+ */
+class KDEUI_EXPORT KAboutWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+
+ /**
+ * The Qt constructor.
+ */
+ KAboutWidget(QWidget* parent=0, const char* name=0 );
+
+ /**
+ * Adjust the minimum size (after setting the properties of the image and
+ * the labels.
+ */
+ void adjust();
+
+ /**
+ * Sets the image as the application logo.
+ */
+ void setLogo(const QPixmap&);
+ /**
+ * Sets the author's name and email address.
+ */
+ void setAuthor(const QString& name, const QString& email,
+ const QString& url, const QString& work);
+ /**
+ * Sets the maintainers name and email address.
+ */
+ void setMaintainer(const QString& name, const QString& email,
+ const QString& url, const QString& work);
+ /**
+ * Shows this person as one of the major contributors.
+ */
+ void addContributor(const QString& name, const QString& email,
+ const QString& url, const QString& work);
+ /**
+ * Sets the text describing the version.
+ */
+ void setVersion(const QString& name);
+ // -------------------------------------------------------------------------
+protected slots:
+ /**
+ * Catches the signals from the contributors elements.
+ */
+ void sendEmailSlot(const QString& name, const QString& email);
+ /**
+ * Catches the clicked URLs.
+ */
+ void openURLSlot(const QString& url);
+ // -------------------------------------------------------------------------
+signals:
+ /**
+ * An email address has been selected by the user.
+ */
+ void sendEmail(const QString& name, const QString& email);
+ /**
+ * An URL has been clicked.
+ */
+ void openURL(const QString& url);
+ // -------------------------------------------------------------------------
+protected:
+ // events:
+ /**
+ * The resize event.
+ */
+ void resizeEvent(QResizeEvent*);
+ /**
+ * The label showing the program version.
+ */
+ QLabel *version;
+ /**
+ * The label showing the text "Other contributors:".
+ */
+ QLabel *cont;
+ /**
+ * The frame showing the logo.
+ */
+ QLabel *logo;
+ /**
+ * The application developer.
+ */
+ KAboutContributor *author;
+ /**
+ * The application maintainer.
+ */
+ KAboutContributor *maintainer;
+ /**
+ * Show the maintainer?
+ */
+ bool showMaintainer;
+ /**
+ * A set of people who contributed to the application.
+ */
+ QPtrList<KAboutContributor> contributors;
+ // #########################################################################
+ //
+private:
+ KAboutWidgetPrivate* const d;
+};
+
+class KAboutDialogPrivate;
+/**
+ * A KDialogBase with predefined main widget.
+ *
+ * As a KDialogBase it uses your application wide settings
+ * for KDialogBase
+ * objects (base frame tiles, main frame tiles etc).
+ * To use it, simply create a KAboutDialog object, set all (or some) of its
+ * properties and show it. Do not derive it to create your own about dialog
+ * until you need some cool features that are unsupported and you have
+ * contacted me to add them.
+ *
+ * The dialog can be created using two different constructors. The
+ * difference between these constructors is the available components that
+ * can be used to build the contents of the dialog. The first (Constructor I)
+ * provides a number of easy to use methods. Basically it allows you
+ * to add the components of choice, and the components are placed in a
+ * predefined layout. You do not have to plan the layout. Everything is
+ * taken care of.
+ *
+ * The second constructor (Constructor II) works in quite the same manner
+ * as the first, but you have better control on where the components
+ * are postioned in the layout and you have access to an extended number
+ * of components you can install such as titles, product information,
+ * a tabbed pages (where you can display rich text with url links) and
+ * a person (developer) information field. The "About KDE" dialog box is
+ * created with Constructor II.
+ *
+ * For the derived features, see the basic class KDialogBase.
+ * @author Mirko Boehm (mirko@kde.org) and Espen Sand (espensa@online.no)
+ * @see KDialogBase
+ */
+class KDEUI_EXPORT KAboutDialog : public KDialogBase
+{
+ Q_OBJECT
+
+ public:
+ /**
+ * Layout formats.
+ **/
+ enum LayoutType
+ {
+ AbtPlain = 0x0001,
+ AbtTabbed = 0x0002,
+ AbtTitle = 0x0004,
+ AbtImageLeft = 0x0008,
+ AbtImageRight = 0x0010,
+ AbtImageOnly = 0x0020,
+ AbtProduct = 0x0040,
+ AbtKDEStandard = AbtTabbed|AbtTitle|AbtImageLeft,
+ AbtAppStandard = AbtTabbed|AbtTitle|AbtProduct,
+ AbtImageAndTitle = AbtPlain|AbtTitle|AbtImageOnly
+ };
+
+ public:
+ /**
+ * The standard Qt constructor (Constructor I).
+ *
+ * Add components with the following methods:
+ * setLogo(), setAuthor(), setMaintainer(),
+ * addContributor(), or setVersion().
+ * The dialog will be laid out automatically.
+ */
+ KAboutDialog( QWidget *parent=0, const char *name=0, bool modal=true );
+
+ /**
+ * The extended constructor. (Constructor II).
+ *
+ * Add components with the methods:
+ * setTitle(), setImage(), setImageBackgroundColor(),
+ * setImageFrame(), setProduct(), addTextPage(),
+ * addContainerPage(), addContainer(), or addPage().
+ *
+ * @param dialogLayout Use a mask of LayoutType flags.
+ * @param caption The dialog caption. The text you specify is prepended
+ * by i18n("About").
+ * @param buttonMask Specifies what buttons will be visible.
+ * @param defaultButton Specifies what button will be marked as the default.
+ * @param parent Parent of the dialog.
+ * @param name Dialog name (for internal use only)
+ * @param modal Sets dialog modality. If false, the rest of the
+ * program interface (other dialogs, for example) is accessible while
+ * the dialog is open.
+ * @param separator If true, a separator line is drawn between the action
+ * buttons an the main widget.
+ * @param user1 User button1 text.
+ * @param user2 User button2 text.
+ * @param user3 User button3 text.
+ *
+ */
+ KAboutDialog( int dialogLayout, const QString &caption, int buttonMask,
+ ButtonCode defaultButton, QWidget *parent=0,
+ const char *name=0, bool modal=false, bool separator = false,
+ const QString &user1 = QString::null,
+ const QString &user2 = QString::null,
+ const QString &user3 = QString::null );
+
+ /**
+ * Adjusts the dialog.
+ *
+ * You can call this method after you have set up all
+ * the contents but it is not required. It is done automatically when
+ * show() is executed.
+ */
+ void adjust();
+
+ /**
+ * Makes a modeless (modal = false in constructor) dialog visible.
+ *
+ * If you reimplement this method make sure you run it
+ * in the new method (e.g., show()). Reimplemented
+ * from KDialogBase.
+ */
+ virtual void show( void );
+
+ /**
+ * Makes a modeless (modal = false in constructor) dialog visible.
+ *
+ * If you reimplmement this method make sure you run it
+ * in the new method (i.e., show( parent )).
+ *
+ * @param centerParent Center the dialog with respect to this widget.
+ */
+ virtual void show( QWidget *centerParent );
+
+ /**
+ * (Constructor II only)
+ * Sets a title (not caption) in the uppermost area of the dialog.
+ *
+ * @param title Title string.
+ */
+ void setTitle( const QString &title );
+
+ /**
+ * (Constructor II only)
+ * Define an image to be shown in the dialog. The position is dependent
+ * on the @p dialogLayout in the constructor
+ *
+ * @param fileName Path to image file.
+ */
+ void setImage( const QString &fileName );
+
+ /**
+ * (Constructor II only)
+ * Define the program logo to be shown in the dialog. Use this to override the
+ * default program logo. For example, use this function if the
+ * KAboutDialog is for a panel applet and you want to override the
+ * appletproxy logo with your own pixmap.
+ *
+ * @param fileName Path to file containing logo data in a format that
+ * can be loaded by QPixmap.
+ *
+ * @since 3.3
+ */
+ void setIcon( const QString &fileName ) KDE_DEPRECATED; // KDE4: remove
+
+ /**
+ * Overloaded version of setProgramLogo(const QPixmap& pixmap).
+ *
+ * @since 3.4
+ */
+ void setProgramLogo( const QString &fileName );
+
+ /**
+ * (Constructor II only)
+ * Define the program logo to be shown in the dialog. Use this to override the
+ * default program logo. For example, use this function if the
+ * KAboutDialog is for a panel applet and you want to override the
+ * appletproxy logo with your own pixmap.
+ *
+ * @param pixmap The logo pixmap.
+ *
+ * @since 3.4
+ */
+ void setProgramLogo( const QPixmap &pixmap );
+
+ /**
+ * (Constructor II only)
+ * The image has a minimum size, but is centered within an area if the
+ * dialog box is enlarged by the user. You set the background color
+ * of the area with this method.
+ *
+ * @param color Background color.
+ */
+ void setImageBackgroundColor( const QColor &color );
+
+ /**
+ * (Constructor II only)
+ * Enables or disables a frame around the image. The frame is, by default,
+ * enabled in the constructor
+ *
+ * @param state A value of @p true enables the frame
+ */
+ void setImageFrame( bool state );
+
+ /**
+ * (Constructor II only)
+ * Prints the application name, KDE version, author, a copyright sign
+ * and a year string. To the left of the text the standard application
+ * icon is displayed.
+ *
+ * @param appName The application name.
+ * @param version Application version.
+ * @param author One or more authors.
+ * @param year A string telling when the application was made.
+ */
+ void setProduct( const QString &appName, const QString &version,
+ const QString &author, const QString &year );
+
+ /**
+ * (Constructor II only)
+ * Adds a text page to a tab box. The text can be regular text or
+ * rich text. The rich text can contain URLs and mail links.
+ *
+ * @param title Tab name.
+ * @param text The text to display.
+ * @param richText Set this to @p true if 'text' is rich text.
+ * @param numLines The text area height will be adjusted so that this
+ * is the minimum number of lines of text that are visible.
+ * @return The frame that contains the page.
+ */
+ QFrame *addTextPage( const QString &title, const QString &text,
+ bool richText=false, int numLines=10 );
+
+ /**
+ * (Constructor II only)
+ * Adds a license page to a tab box.
+ *
+ * @param title Tab name.
+ * @param text The text to display.
+ * @param numLines The text area height will be adjusted so that this
+ * is the minimum number of lines of text that are visible.
+ * @return The frame that contains the page.
+ */
+ QFrame *addLicensePage( const QString &title, const QString &text,
+ int numLines=10 );
+
+ /**
+ * (Constructor II only)
+ * Adds a container to a tab box. You can add text and images to a
+ * container.
+ *
+ * @param title Tab name.
+ * @param childAlignment Specifies how the children of the container are
+ * aligned with respect to the container.
+ * @param innerAlignment Specifies how the children are aligned with
+ * respect to each other.
+ * @return The new container.
+ */
+ KAboutContainer *addContainerPage( const QString &title,
+ int childAlignment = AlignCenter, int innerAlignment = AlignCenter );
+
+ /**
+ * (Constructor II only)
+ * Adds a container inside a QScrollView to a tab box. You can add text
+ * and images to a container.
+ *
+ * @param title Tab name.
+ * @param childAlignment Specifies how the children of the container are
+ * aligned with respect to the container.
+ * @param innerAlignment Specifies how the children are aligned with
+ * respect to each other.
+ * @return The new container.
+ */
+ KAboutContainer *addScrolledContainerPage( const QString &title,
+ int childAlignment = AlignCenter, int innerAlignment = AlignCenter );
+
+ /**
+ * (Constructor II only)
+ * Adds a container. You can add text and images to a container.
+ *
+ * @param childAlignment Specifies how the children of the container are
+ * aligned with respect to the container.
+ * @param innerAlignment Specifies how the children are aligned with
+ * respect to each other.
+ * @return The new container.
+ */
+ KAboutContainer *addContainer( int childAlignment, int innerAlignment );
+
+ /**
+ * (Constructor II only)
+ * Adds an empty page to a tab box.
+ *
+ * @param title Tab name
+ * @return The new page.
+ */
+ QFrame *addPage( const QString &title );
+
+
+ /**
+ * (Constructor I only)
+ * Sets the image as the application logo.
+ */
+ void setLogo(const QPixmap&);
+
+ /**
+ * (Constructor I only)
+ * Sets the author's name and email address.
+ */
+ void setAuthor(const QString& name, const QString& email,
+ const QString& url, const QString& work);
+
+ /**
+ * (Constructor I only)
+ * Sets the maintainer's name and email address.
+ */
+ void setMaintainer(const QString& name, const QString& email,
+ const QString& url, const QString& work);
+
+ /**
+ * (Constructor I only)
+ * Show this person as one of the major contributors.
+ */
+ void addContributor(const QString& name, const QString& email,
+ const QString& url, const QString& work);
+
+ /**
+ * (Constructor I only)
+ * Sets the text describing the version.
+ */
+ void setVersion(const QString& name);
+
+ /**
+ * Create a modal dialog with an image in the upper area with a
+ * URL link below.
+ */
+ static void imageURL( QWidget *parent, const QString &caption,
+ const QString &path, const QColor &imageColor,
+ const QString &url );
+
+signals:
+ /**
+ * Send an email to this person.
+ *
+ * The application must provide the
+ * functionality.
+ */
+ void sendEmail(const QString& name, const QString& email);
+
+ /**
+ * Open the selected URL.
+ */
+ void openURL(const QString& url);
+ // ----------------------------------------------------------------------------
+protected:
+ /**
+ * The main widget (Constructor I)
+ */
+ KAboutWidget * about;
+
+ /**
+ * The main widget (Constructor II)
+ */
+ KAboutContainerBase *mContainerBase;
+
+ // -------------------------------------------------------------------------
+protected slots:
+
+ /**
+ * Connected to widget->sendEmail.
+ */
+ void sendEmailSlot(const QString& name, const QString& email);
+
+ /**
+ * Open this URL.
+ */
+ void openURLSlot(const QString& url);
+
+ /**
+ * (Constructor II only)
+ * Tells the position of the mouse cursor when the left mouse button
+ * is pressed above an image
+ */
+ virtual void mouseTrackSlot( int mode, const QMouseEvent *e );
+
+ // #########################################################################
+protected:
+ virtual void virtual_hook( int id, void* data );
+private:
+ KAboutDialogPrivate* const d;
+};
+
+#endif // defined KABOUTDIALOG_H