#include #include #include #include #include #include "krpmview.h" #include "krpmview_factory.h" KRPMViewFactory::KRPMViewFactory() { if ( s_self ) kdWarning() << "KGVFactory instantiated more than once!" << endl; s_self = this; } KRPMViewFactory::~KRPMViewFactory() { delete s_aboutData; delete s_instance; s_aboutData = 0; s_instance = 0; s_self = 0; } KInstance *KRPMViewFactory::createInstance() { KInstance* res = new KInstance( aboutData() ); return res; } KRPMViewFactory *KRPMViewFactory::s_self; KInstance *KRPMViewFactory::s_instance; KAboutData *KRPMViewFactory::s_aboutData; KParts::Part *KRPMViewFactory::createPartObject( QWidget *parentWidget, const char *widgetName, QObject *parent, const char *name, const char *className, const QStringList &args_ ) { QStringList args = args_; /* Below is the reason why we must * have our own factory instead of * typedef KParts::GenericFactory KGVFactory * * as we did before. */ if ( !strcmp( className, "Browser/View" ) ) { args << QString::fromLatin1( "Browser/View" ); className = "KParts::ReadOnlyPart"; } KRPMViewPart *part = KDEPrivate::ConcreteFactory::create( parentWidget, widgetName, parent, name, className, args ); if ( part && !qstrcmp( className, "KParts::ReadOnlyPart" ) ) { KParts::ReadWritePart *rwp = dynamic_cast( part ); if ( rwp ) rwp->setReadWrite( false ); } return part; } KInstance *KRPMViewFactory::instance() { if ( !s_instance ) { if ( s_self ) s_instance = s_self->createInstance(); else s_instance = new KInstance( aboutData() ); } return s_instance; } KAboutData *KRPMViewFactory::aboutData() { if ( !s_aboutData ) s_aboutData = KRPMViewPart::createAboutData(); return s_aboutData; }