centralize the way we know whether a generator is configurable, and properly manage i18n loading in that case

svn path=/trunk/KDE/kdegraphics/okular/; revision=741325
This commit is contained in:
Pino Toscano 2007-11-25 12:49:30 +00:00
parent 07dd3fe824
commit dfce0d1fcd
2 changed files with 24 additions and 7 deletions

View file

@ -488,6 +488,16 @@ void DocumentPrivate::cacheExportFormats()
m_exportCached = true; m_exportCached = true;
} }
ConfigInterface* DocumentPrivate::generatorConfig( GeneratorInfo& info )
{
if ( info.configChecked )
return info.config;
info.config = qobject_cast< Okular::ConfigInterface * >( info.generator );
info.configChecked = true;
return info.config;
}
void DocumentPrivate::saveDocumentInfo() const void DocumentPrivate::saveDocumentInfo() const
{ {
if ( m_docFileName.isEmpty() ) if ( m_docFileName.isEmpty() )
@ -665,10 +675,10 @@ void DocumentPrivate::slotGeneratorConfigChanged( const QString& )
// reparse generator config and if something changed clear Pages // reparse generator config and if something changed clear Pages
bool configchanged = false; bool configchanged = false;
QHash< QString, GeneratorInfo >::const_iterator it = m_loadedGenerators.constBegin(), itEnd = m_loadedGenerators.constEnd(); QHash< QString, GeneratorInfo >::iterator it = m_loadedGenerators.begin(), itEnd = m_loadedGenerators.end();
for ( ; it != itEnd; ++it ) for ( ; it != itEnd; ++it )
{ {
Okular::ConfigInterface * iface = qobject_cast< Okular::ConfigInterface * >( it.value().generator ); Okular::ConfigInterface * iface = generatorConfig( it.value() );
if ( iface ) if ( iface )
{ {
bool it_changed = iface->reparseConfig(); bool it_changed = iface->reparseConfig();
@ -1314,7 +1324,7 @@ void Document::closeDocument()
QHash< QString, GeneratorInfo >::const_iterator genIt = d->m_loadedGenerators.constFind( d->m_generatorName ); QHash< QString, GeneratorInfo >::const_iterator genIt = d->m_loadedGenerators.constFind( d->m_generatorName );
Q_ASSERT( genIt != d->m_loadedGenerators.constEnd() ); Q_ASSERT( genIt != d->m_loadedGenerators.constEnd() );
if ( !genIt.value().catalogName.isEmpty() ) if ( !genIt.value().catalogName.isEmpty() && !genIt.value().config )
KGlobal::locale()->removeCatalog( genIt.value().catalogName ); KGlobal::locale()->removeCatalog( genIt.value().catalogName );
} }
d->m_generator = 0; d->m_generator = 0;
@ -2417,12 +2427,13 @@ void Document::fillConfigDialog( KConfigDialog * dialog )
QHash< QString, GeneratorInfo >::iterator itEnd = d->m_loadedGenerators.end(); QHash< QString, GeneratorInfo >::iterator itEnd = d->m_loadedGenerators.end();
for ( ; it != itEnd; ++it ) for ( ; it != itEnd; ++it )
{ {
Okular::ConfigInterface * iface = qobject_cast< Okular::ConfigInterface * >( it.value().generator ); Okular::ConfigInterface * iface = d->generatorConfig( it.value() );
if ( iface ) if ( iface )
{ {
iface->addPages( dialog ); iface->addPages( dialog );
it.value().hasConfig = true;
pagesAdded = true; pagesAdded = true;
if ( !it.value().catalogName.isEmpty() )
KGlobal::locale()->insertCatalog( it.value().catalogName );
} }
} }
if ( pagesAdded ) if ( pagesAdded )

View file

@ -32,16 +32,21 @@ class KTemporaryFile;
struct AllocatedPixmap; struct AllocatedPixmap;
struct RunningSearch; struct RunningSearch;
namespace Okular {
class ConfigInterface;
}
struct GeneratorInfo struct GeneratorInfo
{ {
GeneratorInfo() GeneratorInfo()
: generator( 0 ), library( 0 ), hasConfig( false ) : generator( 0 ), library( 0 ), config( 0 ), configChecked( false )
{} {}
Okular::Generator * generator; Okular::Generator * generator;
KLibrary * library; KLibrary * library;
QString catalogName; QString catalogName;
bool hasConfig : 1; Okular::ConfigInterface * config;
bool configChecked : 1;
}; };
namespace Okular { namespace Okular {
@ -84,6 +89,7 @@ class DocumentPrivate
void unloadGenerator( const GeneratorInfo& info ); void unloadGenerator( const GeneratorInfo& info );
void cacheExportFormats(); void cacheExportFormats();
void setRotationInternal( int r, bool notify ); void setRotationInternal( int r, bool notify );
ConfigInterface* generatorConfig( GeneratorInfo& info );
// private slots // private slots
void saveDocumentInfo() const; void saveDocumentInfo() const;