void PackageStructureTest::validPackages() { QVERIFY(ps.isValid()); QVERIFY(!KPackage::Package().isValid()); QVERIFY(!KPackage::PackageLoader::self()->loadPackage(QStringLiteral("doesNotExist")).isValid()); QVERIFY(NoPrefixes().isValid()); KPackage::Package p = KPackage::PackageLoader::self()->loadPackage(QStringLiteral("KPackage/Generic")); p.addFileDefinition("mainscript", QStringLiteral("ui/main.qml"), i18n("Main Script File")); QVERIFY(!p.isValid()); p.setPath(QStringLiteral("/does/not/exist")); QVERIFY(!p.isValid()); p.setPath(ps.path()); QVERIFY(p.isValid()); }
void Image::findPreferedImageInPackage(KPackage::Package &package) { if (!package.isValid() || !package.filePath("preferred").isEmpty()) { return; } QStringList images = package.entryList("images"); if (images.empty()) { return; } //qDebug() << "wanted" << size; // choose the nearest resolution float best = FLT_MAX; QString bestImage; foreach (const QString &entry, images) { QSize candidate = resSize(QFileInfo(entry).baseName()); if (candidate == QSize()) { continue; } double dist = distance(candidate, m_targetSize); //qDebug() << "candidate" << candidate << "distance" << dist; if (bestImage.isEmpty() || dist < best) { bestImage = entry; best = dist; //qDebug() << "best" << bestImage; if (dist == 0) { break; } } }
void BackgroundListModel::processPaths(const QStringList &paths) { if (!m_wallpaper) { return; } QList<KPackage::Package> newPackages; Q_FOREACH (QString file, paths) { // check if the path is a symlink and if it is, // work with the target rather than the symlink QFileInfo info(file); if (info.isSymLink()) { file = info.symLinkTarget(); } // now check if the path contains "contents" part // which could indicate that the file is part of some other // package (could have been symlinked) and we should work // with the package (which can already be present) rather // than just one file from it int contentsIndex = file.indexOf(QStringLiteral("contents")); // FIXME: additionally check for metadata.desktop being present // which would confirm a package but might be slowing things if (contentsIndex != -1) { file.truncate(contentsIndex); } // so now we have a path to a package, check if we're not // processing the same path twice (this is different from // the "!contains(file)" call lower down, that one checks paths // already in the model and does not include the paths // that are being checked in here); we want to check for duplicates // if and only if we actually changed the path (so the conditions from above // are reused here as that means we did change the path) if ((info.isSymLink() || contentsIndex != -1) && paths.contains(file)) { continue; } if (!contains(file) && QFile::exists(file)) { KPackage::Package package = KPackage::PackageLoader::self()->loadPackage(QStringLiteral("Wallpaper/Images")); package.setPath(file); if (package.isValid()) { m_wallpaper->findPreferedImageInPackage(package); newPackages << package; } } }