kcatalogue.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <config.h>
00021
00022 #include <qfile.h>
00023
00024 #include <kdebug.h>
00025
00026 #include "kcatalogue.h"
00027
00028 char *k_nl_find_msg(struct loaded_l10nfile *domain_file,
00029 const char *msgid);
00030 void k_nl_unload_domain (struct loaded_domain *domain);
00031
00032 #ifndef KDE_USE_FINAL // with --enable-final, we're getting this from libintl.cpp
00033 struct loaded_l10nfile
00034 {
00035 const char *filename;
00036 int decided;
00037
00038 const void *data;
00039
00040 loaded_l10nfile() : filename(0), decided(0), data(0) {}
00041 };
00042 #endif
00043
00044 class KCataloguePrivate
00045 {
00046 public:
00047 QString name;
00048
00049 loaded_l10nfile domain;
00050 };
00051
00052 KCatalogue::KCatalogue(const QString & name)
00053 : d( new KCataloguePrivate )
00054 {
00055 d->name = name;
00056 }
00057
00058 KCatalogue::KCatalogue(const KCatalogue & rhs)
00059 : d( new KCataloguePrivate )
00060 {
00061 *this = rhs;
00062 }
00063
00064 KCatalogue & KCatalogue::operator=(const KCatalogue & rhs)
00065 {
00066 d->name = rhs.d->name;
00067 setFileName( rhs.fileName() );
00068
00069 return *this;
00070 }
00071
00072 KCatalogue::~KCatalogue()
00073 {
00074 doUnload();
00075
00076 delete d;
00077 }
00078
00079 QString KCatalogue::name() const
00080 {
00081 return d->name;
00082 }
00083
00084 void KCatalogue::setFileName( const QString & fileName )
00085 {
00086
00087 if ( this->fileName() == fileName ) return;
00088
00089 doUnload();
00090
00091 QCString newFileName = QFile::encodeName( fileName );
00092
00093 if ( !fileName.isEmpty() )
00094 {
00095
00096 char *filename = new char[ newFileName.length() + 1 ];
00097 ::qstrcpy( filename, newFileName );
00098 d->domain.filename = filename;
00099 }
00100 }
00101
00102 QString KCatalogue::fileName() const
00103 {
00104 return QFile::decodeName( d->domain.filename );
00105 }
00106
00107 const char * KCatalogue::translate(const char * msgid) const
00108 {
00109 return ::k_nl_find_msg( &d->domain, msgid );
00110 }
00111
00112 void KCatalogue::doUnload()
00113 {
00114
00115 if ( d->domain.data )
00116 ::k_nl_unload_domain( (struct loaded_domain *)d->domain.data );
00117 d->domain.data = 0;
00118
00119
00120 delete [] const_cast<char *>(d->domain.filename);
00121 d->domain.filename = 0;
00122
00123 d->domain.decided = 0;
00124 }
This file is part of the documentation for kdelibs Version 3.1.0.