23 #include <qbytearray.h>
29 #include <kgenericfactory.h>
32 #include <kstandarddirs.h>
37 K_EXPORT_COMPONENT_FACTORY( kfile_kig,
kigFactory(
"kfile_kig" ) )
42 KFileMimeTypeInfo::ItemInfo* item;
44 info = addMimeTypeInfo(
"application/x-kig" );
46 group = addGroupInfo( info,
"KigInfo", i18n(
"Summary" ) );
47 item = addItemInfo( group,
"Version", i18n(
"Version" ), QVariant::String );
48 item = addItemInfo( group,
"CompatVersion", i18n(
"Compatibility Version" ), QVariant::String );
49 item = addItemInfo( group,
"CoordSystem", i18n(
"Coordinate System" ), QVariant::String );
50 item = addItemInfo( group,
"Grid", i18n(
"Grid" ), QVariant::String );
51 item = addItemInfo( group,
"Axes", i18n(
"Axes" ), QVariant::String );
52 item = addItemInfo( group,
"Compressed", i18n(
"Compressed" ), QVariant::String );
57 KFileMetaInfoGroup metagroup = appendGroup( metainfo,
"KigInfo");
59 QString sfile = metainfo.path();
60 bool iscompressed =
false;
62 if ( !sfile.endsWith(
".kig", Qt::CaseInsensitive ) )
66 QString tempdir = KGlobal::dirs()->saveLocation(
"tmp" );
67 if ( tempdir.isEmpty() )
70 QString tempname = sfile.section(
'/', -1 );
71 if ( sfile.endsWith(
".kigz", Qt::CaseInsensitive ) )
73 tempname.remove( QRegExp(
"\\.[Kk][Ii][Gg][Zz]$" ) );
78 KTar* ark =
new KTar( sfile,
"application/x-gzip" );
79 ark->open( QIODevice::ReadOnly );
80 const KArchiveDirectory* dir = ark->directory();
81 QStringList entries = dir->entries();
82 QStringList kigfiles = entries.filter( QRegExp(
"\\.kig$" ) );
83 if ( kigfiles.count() != 1 )
85 const KArchiveEntry* kigz = dir->entry( kigfiles.at( 0 ) );
86 if ( !kigz->isFile() )
88 dynamic_cast<const KArchiveFile*
>( kigz )->copyTo( tempdir );
90 f.setFileName( tempdir + kigz->name() );
93 if ( !f.open( QIODevice::ReadOnly ) )
96 QDomDocument doc(
"KigDocument" );
97 if ( !doc.setContent( &f ) )
106 QDomElement
main = doc.documentElement();
109 QString version = main.attribute(
"Version" );
110 if ( version.isEmpty() ) version = main.attribute(
"version" );
111 if ( version.isEmpty() ) version = i18nc(
"Translators: Not Available",
"n/a" );
112 appendItem( metagroup,
"Version", version );
115 QString compatversion = main.attribute(
"CompatibilityVersion" );
116 if ( compatversion.isEmpty() )
117 compatversion = i18nc(
"%1 represents Kig version",
118 "%1 (as the version)", version );
119 appendItem( metagroup,
"CompatVersion", compatversion );
122 QByteArray coordsystem;
123 for ( QDomNode n = main.firstChild(); ! n.isNull(); n = n.nextSibling() )
125 QDomElement e = n.toElement();
126 if ( e.isNull() )
continue;
127 if ( e.tagName() ==
"CoordinateSystem" )
128 coordsystem = e.text().toLatin1();
130 appendItem( metagroup,
"CoordSystem", coordsystem );
134 QString stmp = main.attribute(
"grid" );
135 if ( !( stmp.isEmpty() || ( stmp !=
"0" ) ) )
136 btmp = ( stmp !=
"0" );
137 QString stmp2 = btmp ? i18n(
"Yes" ) : i18n(
"No" );
138 appendItem( metagroup,
"Grid", stmp2 );
142 stmp = main.attribute(
"axes" );
143 if ( !( stmp.isEmpty() || ( stmp !=
"0" ) ) )
144 btmp = ( stmp !=
"0" );
145 stmp2 = btmp ? i18n(
"Yes" ) : i18n(
"No" );
146 appendItem( metagroup,
"Axes", stmp2 );
148 stmp2 = iscompressed ? i18n(
"Yes" ) : i18n(
"No" );
149 appendItem( metagroup,
"Compressed", stmp2 );
154 #include "kfile_kig.moc"
int main(int argc, char **argv)
virtual bool readInfo(KFileMetaInfo &metainfo, uint what)
KGenericFactory< KigPlugin > kigFactory