[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/libs/plasma
From: Aaron J. Seigo <aseigo () kde ! org>
Date: 2008-11-03 3:57:03
Message-ID: 1225684623.948842.16741.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 879356 by aseigo:
simplify this quite a bit by moving some of the code out to a helper method; as an added bonus \
this avoids creating tempdir and other objects unnecessarily
M +35 -36 packagestructure.cpp
--- trunk/KDE/kdebase/workspace/libs/plasma/packagestructure.cpp #879355:879356
@@ -74,6 +74,8 @@
delete metadata;
}
+ void createPackageMetadata(const QString &path);
+
QString type;
QString path;
QString contentsPrefix;
@@ -440,49 +442,46 @@
d->servicePrefix = servicePrefix;
}
-PackageMetadata PackageStructure::metadata()
+void PackageStructurePrivate::createPackageMetadata(const QString &path)
{
- if (!d->metadata) {
- QString metadataPath;
- QString package = d->path;
- KTempDir tempdir;
+ if (metadata) {
+ delete metadata;
+ metadata = 0;
+ }
- QFileInfo fileInfo(package);
- if (fileInfo.exists()) {
- QString path;
+ QString metadataPath(path + "/metadata.desktop");
+ if (!QFile::exists(metadataPath)) {
+ metadataPath.clear();
+ kWarning() << "No metadata file in the package, expected it at:" << metadataPath;
+ }
- if (fileInfo.isDir()) {
- path = package;
- } else {
- KZip archive(package);
- if (archive.open(QIODevice::ReadOnly)) {
- const KArchiveDirectory *source = archive.directory();
- const KArchiveEntry *metadata = source->entry("metadata.desktop");
+ metadata = new PackageMetadata(metadataPath);
+}
- if (metadata) {
- path = tempdir.name();
- source->copyTo(path);
- } else {
- kWarning() << "No metadata file in package" << package;
- }
- } else {
- kWarning() << "Could not open package file:" << package;
- }
+PackageMetadata PackageStructure::metadata()
+{
+ if (!d->metadata && !d->path.isEmpty()) {
+ QFileInfo fileInfo(d->path);
+
+ if (fileInfo.isDir()) {
+ d->createPackageMetadata(d->path);
+ } else if (fileInfo.exists()) {
+ KZip archive(d->path);
+ if (archive.open(QIODevice::ReadOnly)) {
+ const KArchiveDirectory *source = archive.directory();
+ KTempDir tempdir;
+ source->copyTo(tempdir.name());
+ d->createPackageMetadata(tempdir.name());
+ } else {
+ kWarning() << "Could not open package file:" << d->path;
}
- if (!path.isEmpty()) {
- metadataPath = path + "/metadata.desktop";
- if (!QFile::exists(metadataPath)) {
- metadataPath.clear();
- kWarning() << "No such file:" << metadataPath;
- }
- }
}
- if (metadataPath.isEmpty()) {
- d->metadata = new PackageMetadata();
- } else {
- d->metadata = new PackageMetadata(metadataPath);
- }
}
+
+ if (!d->metadata) {
+ d->metadata = new PackageMetadata();
+ }
+
return *d->metadata;
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic