diff options
Diffstat (limited to 'lib/kofficeui/KoTemplateChooseDia.h')
| -rw-r--r-- | lib/kofficeui/KoTemplateChooseDia.h | 250 |
1 files changed, 250 insertions, 0 deletions
diff --git a/lib/kofficeui/KoTemplateChooseDia.h b/lib/kofficeui/KoTemplateChooseDia.h new file mode 100644 index 000000000..41389b20e --- /dev/null +++ b/lib/kofficeui/KoTemplateChooseDia.h @@ -0,0 +1,250 @@ +/* + This file is part of the KDE project + Copyright (C) 1998, 1999 Reginald Stadlbauer <reggie@kde.org> + 2000, 2001 Werner Trobin <trobin@kde.org> + 2002, 2003 Thomas Nagy <tnagy@eleve.emn.fr> + 2004 David Faure <faure@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. + */ + +#ifndef koTemplateChooseDia_h +#define koTemplateChooseDia_h + +#include <kdialogbase.h> +#include <kicondialog.h> +#include <kiconview.h> +#include <koffice_export.h> + +// KoTCD : KoTemplateChooseDia + +class KoTCDIconViewItem; +class KoTemplateTree; +class KoTemplateGroup; +class QGridLayout; + +/** + * Our reimplementation of KIconCanvas used within the template-chooser dialog. + * @internal + */ +class KoTCDIconCanvas : public KIconCanvas +{ + Q_OBJECT + public: + KoTCDIconCanvas( QWidget *parent = 0, const char *name = 0L ) + : KIconCanvas( parent, name ) {} + + bool isCurrentValid() { return currentItem(); } + QIconViewItem * load(KoTemplateGroup *group, const QString& name, KInstance* instance); + + protected: + virtual void keyPressEvent( QKeyEvent *e ) { + if ( e->key() == Key_Return || e->key() == Key_Enter ) + e->ignore(); + else + KIconCanvas::keyPressEvent( e ); + } +}; + +/// @internal +class KoTCDIconViewItem : public KIconViewItem +{ + public: + KoTCDIconViewItem(QIconView *parent=0) + : KIconViewItem ( parent ) + {} + + KoTCDIconViewItem(QIconView *parent=0, const QString &text=0, const QPixmap &icon=0, + const QString &descr=0, const QString &fullname=0) + : KIconViewItem(parent, text, icon) + { + m_descr = descr; + m_full = fullname; + } + + QString getDescr() const { return m_descr; } + QString getFName() const { return m_full; } + + private : + QString m_descr; + QString m_full; + +}; + +#include <kfileiconview.h> +#include <qlabel.h> +/** + * Our reimplementation of KFileIconView used as the "recent files" view + * within the template-chooser dialog. + * @internal + */ +class KoTCDRecentFilesIconView : public KFileIconView { + Q_OBJECT + public: + KoTCDRecentFilesIconView( QWidget* parent, const char* name ) : + KFileIconView( parent, name ), toolTip(0) + { + connect( this, SIGNAL( onItem( QIconViewItem * ) ), + SLOT( showToolTip( QIconViewItem * ) ) ); + connect( this, SIGNAL( onViewport() ), + SLOT( removeToolTip() ) ); + } + virtual ~KoTCDRecentFilesIconView(); + protected: + /** + * Reimplemented to remove an eventual tooltip + */ + virtual void hideEvent( QHideEvent * ); + + private slots: + void showToolTip( QIconViewItem* ); + void removeToolTip(); + private: + QLabel* toolTip; +}; + +class KInstance; +class KoTemplateChooseDiaPrivate; + +/** + * This class is used to show the template dialog + * on startup. Unless you need something special, you should use the static + * method choose(). + * + * @short The template choose dialog + * @author Reginald Stadlbauer <reggie@kde.org> + * @author Werner Trobin <trobin@kde.org> + */ +class KOFFICEUI_EXPORT KoTemplateChooseDia : public KDialogBase +{ + Q_OBJECT + +public: + /** + * The Dialog returns one of these values depending + * on the input of the user. + * Cancel = The user pressed 'Cancel' + * Template = The user selected a template + * File = The user has chosen a file + * Empty = The user selected "Empty document" + */ + enum ReturnType { Cancel, Template, File, Empty }; + /** + * To configure the dialog you have to use this enum. + * Everything = Show templates and the rest of the dialog + * OnlyTemplates = Show only the templates + * NoTemplates = Just guess :) + */ + enum DialogType { Everything, OnlyTemplates, NoTemplates }; + + ~KoTemplateChooseDia(); + + /** + * This is the static method you'll normally use to show the + * dialog. + * + * @param instance the KInstance of your app + * The native mimetype is retrieved from the (desktop file of) that instance. + * @param file this is the filename which is returned to your app + * More precisely, it's a url (to give to KURL) if ReturnType is File + * and it's a path (to open directly) if ReturnType is Template + * + * @param dialogType the type of the dialog + * @param templateType the template type of your application (see kword or + * kpresenter for details) + * @param parent pointer to parent widget + * @return The return type (see above) + */ + static ReturnType choose(KInstance* instance, QString &file, + const DialogType &dialogType, + const QCString& templateType, + QWidget* parent); + +private: + /// Ditto, with extraNativeMimeTypes added + static ReturnType choose(KInstance* instance, QString &file, + const QCString &format, + const QString &nativeName, + const QStringList& extraNativeMimeTypes, + const DialogType &dialogType=Everything, + const QCString& templateType="", + QWidget* parent = 0); +public: + + /** + * Method to get the current template + */ + QString getTemplate() const; + /** + * Method to get the "full" template (path+template) + */ + QString getFullTemplate() const; + /** + * The ReturnType (call this one after exec()) + */ + ReturnType getReturnType() const; + /** + * The dialogType - normally you won't need this one + */ + DialogType getDialogType() const; + +protected slots: + /** + * Activated when the Ok button has been clicked. + */ + virtual void slotOk(); + +private: + /** + * + * @param parent parent the parent of the dialog + * @param name the Qt internal name + * @param instance the KInstance of your app + * @param format is the mimetype of the app (e.g. application/x-kspread) + * @param nativeName is the name of your app (e.g KSpread) + * @param dialogType the type of the dialog + * @param templateType the template type of your application (see kword or + * kpresenter for details) + * + * @return The return type (see above) + */ + KoTemplateChooseDia(QWidget *parent, const char *name, KInstance* instance, + const QCString &format, + const QString &nativeName, + const QStringList &extraNativeMimeTypes, + const DialogType &dialogType=Everything, + const QCString& templateType=""); + +private: + KoTemplateChooseDiaPrivate *d; + + QString descriptionText(const QString &name, const QString &description); + void setupDialog(); + void setupTemplateDialog(QWidget * widgetbase, QGridLayout * layout); + void setupFileDialog(QWidget * widgetbase, QGridLayout * layout); + void setupRecentDialog(QWidget * widgetbase, QGridLayout * layout); + bool collectInfo(); + bool noStartupDlg() const; + +private slots: + + void chosen(QIconViewItem *); + void currentChanged( QIconViewItem * ); + void recentSelected( QIconViewItem * ); +}; + +#endif + |
