keep the name of the current generator, and make it possible to load the custom translation of the backend

svn path=/trunk/playground/graphics/okular/; revision=641598
This commit is contained in:
Pino Toscano 2007-03-11 22:35:14 +00:00
parent 6ea5badeab
commit 49c2a80585

View file

@ -19,7 +19,9 @@
#include <QtCore/QTimer> #include <QtCore/QTimer>
#include <QtGui/QApplication> #include <QtGui/QApplication>
#include <kaboutdata.h>
#include <kauthorized.h> #include <kauthorized.h>
#include <kcomponentdata.h>
#include <kconfigdialog.h> #include <kconfigdialog.h>
#include <kdebug.h> #include <kdebug.h>
#include <klibloader.h> #include <klibloader.h>
@ -87,6 +89,7 @@ struct GeneratorInfo
Generator * generator; Generator * generator;
KLibrary * library; KLibrary * library;
QString appName;
}; };
#define foreachObserver( cmd ) {\ #define foreachObserver( cmd ) {\
@ -185,6 +188,7 @@ class Document::Private
QHash<QString, GeneratorInfo> m_loadedGenerators; QHash<QString, GeneratorInfo> m_loadedGenerators;
Generator * m_generator; Generator * m_generator;
QString m_generatorName;
bool m_generatorsLoaded; bool m_generatorsLoaded;
QVector< Page * > m_pagesVector; QVector< Page * > m_pagesVector;
QVector< VisiblePageRect * > m_pageRects; QVector< VisiblePageRect * > m_pageRects;
@ -489,6 +493,8 @@ Generator * Document::Private::loadGeneratorLibrary( const QString& name, const
GeneratorInfo info; GeneratorInfo info;
info.generator = generator; info.generator = generator;
info.library = lib; info.library = lib;
if ( generator->componentData() && generator->componentData()->aboutData() )
info.appName = QLatin1String( generator->componentData()->aboutData()->appName() );
m_loadedGenerators.insert( name, info ); m_loadedGenerators.insert( name, info );
return generator; return generator;
} }
@ -783,18 +789,26 @@ bool Document::openDocument( const QString & docFile, const KUrl& url, const KMi
QString propName = offers.at(hRank)->name(); QString propName = offers.at(hRank)->name();
QHash< QString, GeneratorInfo >::const_iterator genIt = d->m_loadedGenerators.constFind( propName ); QHash< QString, GeneratorInfo >::const_iterator genIt = d->m_loadedGenerators.constFind( propName );
QString appName;
if ( genIt != d->m_loadedGenerators.constEnd() ) if ( genIt != d->m_loadedGenerators.constEnd() )
{ {
d->m_generator = genIt.value().generator; d->m_generator = genIt.value().generator;
appName = genIt.value().appName;
} }
else else
{ {
d->m_generator = d->loadGeneratorLibrary( propName, offers.at(hRank)->library() ); d->m_generator = d->loadGeneratorLibrary( propName, offers.at(hRank)->library() );
if ( !d->m_generator ) if ( !d->m_generator )
return false; return false;
genIt = d->m_loadedGenerators.constFind( propName );
Q_ASSERT( genIt != d->m_loadedGenerators.constEnd() );
appName = genIt.value().appName;
} }
Q_ASSERT_X( d->m_generator, "Document::load()", "null generator?!" ); Q_ASSERT_X( d->m_generator, "Document::load()", "null generator?!" );
if ( !appName.isEmpty() )
KGlobal::locale()->insertCatalog( appName );
d->m_generator->setDocument( this ); d->m_generator->setDocument( this );
// connect error reporting signals // connect error reporting signals
@ -840,10 +854,15 @@ bool Document::openDocument( const QString & docFile, const KUrl& url, const KMi
QApplication::restoreOverrideCursor(); QApplication::restoreOverrideCursor();
if ( !openOk || d->m_pagesVector.size() <= 0 ) if ( !openOk || d->m_pagesVector.size() <= 0 )
{ {
if ( !appName.isEmpty() )
KGlobal::locale()->removeCatalog( appName );
d->m_generator = 0; d->m_generator = 0;
return openOk; return openOk;
} }
d->m_generatorName = propName;
// 2. load Additional Data (our bookmarks and metadata) about the document // 2. load Additional Data (our bookmarks and metadata) about the document
d->loadDocumentInfo(); d->loadDocumentInfo();
d->m_bookmarkManager->setUrl( d->m_url ); d->m_bookmarkManager->setUrl( d->m_url );
@ -934,8 +953,14 @@ void Document::closeDocument()
d->m_generator->setDocument( 0 ); d->m_generator->setDocument( 0 );
// .. and this document from the generator signals // .. and this document from the generator signals
disconnect( d->m_generator, 0, this, 0 ); disconnect( d->m_generator, 0, this, 0 );
QHash< QString, GeneratorInfo >::const_iterator genIt = d->m_loadedGenerators.constFind( d->m_generatorName );
Q_ASSERT( genIt != d->m_loadedGenerators.constEnd() );
if ( !genIt.value().appName.isEmpty() )
KGlobal::locale()->removeCatalog( genIt.value().appName );
} }
d->m_generator = 0; d->m_generator = 0;
d->m_generatorName = QString();
d->m_url = KUrl(); d->m_url = KUrl();
d->m_docFileName = QString(); d->m_docFileName = QString();
d->m_xmlFileName = QString(); d->m_xmlFileName = QString();