• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • tdeparts
 

tdeparts

  • tdeparts
genericfactory.h
1#ifndef __tdeparts__genericfactory_h__
2#define __tdeparts__genericfactory_h__
3
4#include <tdeparts/factory.h>
5#include <tdeparts/part.h>
6#include <kgenericfactory.h>
7#include <tdeaboutdata.h>
8#include <kdebug.h>
9
10namespace KParts
11{
12
16 template <class T>
17 class GenericFactoryBase : public KParts::Factory
18 {
19 public:
20 GenericFactoryBase()
21 {
22 if ( s_self )
23 kdWarning() << "KParts::GenericFactory instantiated more than once!" << endl;
24 s_self = this;
25 }
26 virtual ~GenericFactoryBase()
27 {
28 delete s_aboutData;
29 delete s_instance;
30 s_aboutData = 0;
31 s_instance = 0;
32 s_self = 0;
33 }
34
35 static TDEInstance *instance();
36 static TDEAboutData *aboutData();
37
38 protected:
39 virtual TDEInstance *createInstance()
40 {
41 return new TDEInstance( aboutData() );
42 }
43
44 virtual void virtual_hook( int id, void *data )
45 {
46 if ( id != VIRTUAL_QUERY_INSTANCE_PARAMS ) {
47 KParts::Factory::virtual_hook( id, data );
48 return;
49 }
50
51 QueryInstanceParams *params = reinterpret_cast<QueryInstanceParams *>( data );
52 params->instance = instance();
53 }
54
55 private:
56 static GenericFactoryBase<T> *s_self;
57 static TDEInstance *s_instance;
58 static TDEAboutData *s_aboutData;
59 };
60
94 template <class T>
95 class GenericFactory : public GenericFactoryBase<T>
96 {
97 public:
98 GenericFactory() { }
99
100 virtual KParts::Part *createPartObject( TQWidget *parentWidget, const char *widgetName,
101 TQObject *parent, const char *name,
102 const char *className,
103 const TQStringList &args )
104 {
105 T *part = KDEPrivate::ConcreteFactory<T>::create( parentWidget,
106 widgetName,
107 parent,
108 name,
109 className,
110 args );
111
112 if ( part && !qstrcmp( className, "KParts::ReadOnlyPart" ) )
113 {
114 KParts::ReadWritePart *rwp = dynamic_cast<KParts::ReadWritePart *>( part );
115 if ( rwp )
116 rwp->setReadWrite( false );
117 }
118 return part;
119 }
120 };
121
122 template <class T1, class T2>
123 class GenericFactory< KTypeList<T1, T2> > : public GenericFactoryBase<T1>
124 {
125 public:
126 GenericFactory() { }
127
128 virtual KParts::Part *createPartObject( TQWidget *parentWidget, const char *widgetName,
129 TQObject *parent, const char *name,
130 const char *className,
131 const TQStringList &args )
132 {
133 TQObject *object = KDEPrivate::MultiFactory< KTypeList<T1, T2> >::create( parentWidget,
134 widgetName,
135 parent, name,
136 className,
137 args );
138
139 // (this cast is guaranteed to work...)
140 KParts::Part *part = dynamic_cast<KParts::Part *>( object );
141
142 if ( part && !qstrcmp( className, "KParts::ReadOnlyPart" ) )
143 {
144 KParts::ReadWritePart *rwp = dynamic_cast<KParts::ReadWritePart *>( part );
145 if ( rwp )
146 rwp->setReadWrite( false );
147 }
148 return part;
149 }
150 };
151
155 template <class T>
156 GenericFactoryBase<T> *GenericFactoryBase<T>::s_self = 0;
157
161 template <class T>
162 TDEInstance *GenericFactoryBase<T>::s_instance = 0;
163
167 template <class T>
168 TDEAboutData *GenericFactoryBase<T>::s_aboutData = 0;
169
173 template <class T>
174 TDEInstance *GenericFactoryBase<T>::instance()
175 {
176 if ( !s_instance )
177 {
178 if ( s_self )
179 s_instance = s_self->createInstance();
180 else
181 s_instance = new TDEInstance( aboutData() );
182 }
183 return s_instance;
184 }
185
189 template <class T>
190 TDEAboutData *GenericFactoryBase<T>::aboutData()
191 {
192 if ( !s_aboutData )
193 s_aboutData = T::createAboutData();
194 return s_aboutData;
195 }
196
197}
198
199#endif
KLibFactory::create
TQObject * create(TQObject *parent=0, const char *name=0, const char *classname="TQObject", const TQStringList &args=TQStringList())
KParts::Factory
A generic factory object to create a Part.
Definition: factory.h:41
KParts::GenericFactory
A template for a KParts::Factory implementation.
Definition: genericfactory.h:96
KParts::GenericFactory::createPartObject
virtual KParts::Part * createPartObject(TQWidget *parentWidget, const char *widgetName, TQObject *parent, const char *name, const char *className, const TQStringList &args)
Reimplement this method in your implementation to create the Part.
Definition: genericfactory.h:100
KParts::Part
Base class for parts.
Definition: part.h:182
KParts::ReadWritePart
Base class for an "editor" part.
Definition: part.h:545
KParts::ReadWritePart::setReadWrite
virtual void setReadWrite(bool readwrite=true)
Changes the behavior of this part to readonly or readwrite.
Definition: part.cpp:461
TDEAboutData
TDEInstance
kdWarning
kdbgstream kdWarning(int area=0)
endl
kndbgstream & endl(kndbgstream &s)
KNotifyClient::instance
TDEInstance * instance()
KTypeList

tdeparts

Skip menu "tdeparts"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

tdeparts

Skip menu "tdeparts"
  • arts
  • dcop
  • dnssd
  • interfaces
  •   kspeech
  •     interface
  •     library
  •   tdetexteditor
  • kate
  • kded
  • kdoctools
  • kimgio
  • kjs
  • libtdemid
  • libtdescreensaver
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdeioslave
  •   http
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdeparts by doxygen 1.9.4
This website is maintained by Timothy Pearson.