diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 47d455dd55be855e4cc691c32f687f723d9247ee (patch) | |
tree | 52e236aaa2576bdb3840ebede26619692fed6d7d /kghostview/kgvfactory.cpp | |
download | tdegraphics-47d455dd55be855e4cc691c32f687f723d9247ee.tar.gz tdegraphics-47d455dd55be855e4cc691c32f687f723d9247ee.zip |
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
Diffstat (limited to 'kghostview/kgvfactory.cpp')
-rw-r--r-- | kghostview/kgvfactory.cpp | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/kghostview/kgvfactory.cpp b/kghostview/kgvfactory.cpp new file mode 100644 index 00000000..edf20144 --- /dev/null +++ b/kghostview/kgvfactory.cpp @@ -0,0 +1,105 @@ +/** + * Copyright (C) 2003, Luís Pedro Coelho, + * based on kdelibs/kparts/genericfactory.h + * + * 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. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include <kparts/factory.h> +#include <kparts/part.h> +#include <kgenericfactory.h> +#include <kaboutdata.h> +#include <kdebug.h> +#include "kgv_view.h" + +#include "kgvfactory.h" + +KGVFactory::KGVFactory() +{ + if ( s_self ) + kdWarning() << "KGVFactory instantiated more than once!" << endl; + s_self = this; +} + +KGVFactory::~KGVFactory() +{ + delete s_aboutData; + delete s_instance; + s_aboutData = 0; + s_instance = 0; + s_self = 0; +} + +KInstance *KGVFactory::createInstance() +{ + KInstance* res = new KInstance( aboutData() ); + return res; +} + +KGVFactory *KGVFactory::s_self; +KInstance *KGVFactory::s_instance; +KAboutData *KGVFactory::s_aboutData; + +KParts::Part *KGVFactory::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<KGVPart> KGVFactory + * + * as we did before. + */ + args << QString::fromLatin1( className ); + if ( !strcmp( className, "Browser/View" ) ) { + className = "KParts::ReadOnlyPart"; + } + KGVPart *part = KDEPrivate::ConcreteFactory<KGVPart>::create( parentWidget, + widgetName, + parent, + name, + className, + args ); + + if ( part && !qstrcmp( className, "KParts::ReadOnlyPart" ) ) + { + KParts::ReadWritePart *rwp = dynamic_cast<KParts::ReadWritePart *>( part ); + if ( rwp ) + rwp->setReadWrite( false ); + } + return part; +} + +KInstance *KGVFactory::instance() +{ + if ( !s_instance ) + { + if ( s_self ) + s_instance = s_self->createInstance(); + else + s_instance = new KInstance( aboutData() ); + } + return s_instance; +} + +KAboutData *KGVFactory::aboutData() +{ + if ( !s_aboutData ) + s_aboutData = KGVPart::createAboutData(); + return s_aboutData; +} + |