From 47d455dd55be855e4cc691c32f687f723d9247ee Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: 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/kdegraphics@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kpovmodeler/pmviewfactory.h | 145 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 kpovmodeler/pmviewfactory.h (limited to 'kpovmodeler/pmviewfactory.h') diff --git a/kpovmodeler/pmviewfactory.h b/kpovmodeler/pmviewfactory.h new file mode 100644 index 00000000..b24814cf --- /dev/null +++ b/kpovmodeler/pmviewfactory.h @@ -0,0 +1,145 @@ +/* +************************************************************************** + description + -------------------- + copyright : (C) 2003 by Andreas Zehender + email : zehender@kde.org +************************************************************************** + +************************************************************************** +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +**************************************************************************/ + +#ifndef PMVIEWFACTORY_H +#define PMVIEWFACTORY_H + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include +#include + +class PMViewBase; +class QWidget; +class PMPart; +class QDomElement; +class PMViewOptions; +class PMViewOptionsWidget; + +/** + * Factory and description class for one view type + * @see PMViewFactory + */ +class PMViewTypeFactory +{ +public: + /** + * Default constructor + */ + PMViewTypeFactory( ) { } + /** + * Destructor + */ + virtual ~PMViewTypeFactory( ) { } + /** + * Returns the id for the view type. Choose an unique name. + */ + virtual QString viewType( ) const = 0; + /** + * Returns a i18n'ed description for the view type + */ + virtual QString description( ) const = 0; + /** + * Returns a i18n'ed description for the view type, dependent + * on the options. Calls the method above by default. + */ + virtual QString description( PMViewOptions* ) const + { + return description( ); + } + /** + * Returns the icon name for the view + */ + virtual QString iconName( ) const = 0; + /** + * Returns a new view instance + */ + virtual PMViewBase* newInstance( QWidget* parent, PMPart* part ) const = 0; + /** + * Creates a config object for the view type. + * If the view doesn't have special attributes, the function returns 0; + */ + virtual PMViewOptions* newOptionsInstance( ) const { return 0; } + /** + * Creates a widget to configure the custom options + */ + virtual PMViewOptionsWidget* newOptionsWidget( QWidget*, PMViewOptions* ) + { + return 0; + } +}; + + +/** + * Factory class for KPovModeler views. + * + * Plugins can add new view types by adding new + * @ref PMViewTypeFactory objects. + */ +class PMViewFactory +{ +public: + /** + * Destructor + */ + ~PMViewFactory( ); + /** + * Returns the factory instance + */ + static PMViewFactory* theFactory( ); + + /** + * Adds a new view type + * + * The factory becomes the owner of the object + */ + void addViewType( PMViewTypeFactory* vt ); + /** + * Returns a new view of type viewType if available + */ + PMViewBase* newViewInstance( const QString& viewType, + QWidget* parent, PMPart* part ) const; + /** + * Returns a new view option instance for the given view type + */ + PMViewOptions* newOptionsInstance( const QString& viewType ) const; + /** + * Returns the factory for the given view type + */ + PMViewTypeFactory* viewFactory( const QString& viewType ) const; + /** + * Returns the list of available view types + */ + const QPtrList& viewTypes( ) const; +private: + /** + * Constructor + */ + PMViewFactory( ); + + QPtrList m_viewTypes; + QDict m_dict; + + static PMViewFactory* s_pInstance; + static KStaticDeleter s_staticDeleter; +}; + +#endif -- cgit v1.2.3