• 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 
10 namespace 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 = tqt_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 = tqt_dynamic_cast<KParts::Part *>( object );
141 
142  if ( part && !qstrcmp( className, "KParts::ReadOnlyPart" ) )
143  {
144  KParts::ReadWritePart *rwp = tqt_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
TDEAboutData
KParts::Part
Base class for parts.
Definition: part.h:181
KParts::ReadWritePart
Base class for an "editor" part.
Definition: part.h:544
KNotifyClient::instance
TDEInstance * instance()
KTypeList
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
kdWarning
kdbgstream kdWarning(int area=0)
KParts::Factory
A generic factory object to create a Part.
Definition: factory.h:40
KParts::ReadWritePart::setReadWrite
virtual void setReadWrite(bool readwrite=true)
Changes the behavior of this part to readonly or readwrite.
Definition: part.cpp:461
endl
kndbgstream & endl(kndbgstream &s)
KParts
Definition: browserextension.cpp:64
KParts::GenericFactory
A template for a KParts::Factory implementation.
Definition: genericfactory.h:95
TDEInstance

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
  •     tdecore
  • tdeabc
  • tdecmshell
  • tdecore
  • tdefx
  • tdehtml
  • tdeinit
  • tdeio
  •   bookmarks
  •   httpfilter
  •   kpasswdserver
  •   kssl
  • tdeioslave
  •   http
  •   tdefile
  •   tdeio
  •   tdeioexec
  • tdemdi
  •   tdemdi
  • tdenewstuff
  • tdeparts
  • tdeprint
  • tderandr
  • tderesources
  • tdespell2
  • tdesu
  • tdeui
  • tdeunittest
  • tdeutils
  • tdewallet
Generated for tdeparts by doxygen 1.8.8
This website is maintained by Timothy Pearson.