* install wallpaper plasma packages
* auto detect (plasmoids,) dataengines, runners and wallpapers (install them without --type) Review: http://reviewboard.kde.org/r/2006/#review2908 svn path=/trunk/KDE/kdebase/runtime/; revision=1044426
This commit is contained in:
parent
ad5e59fdeb
commit
31ef3721c1
@ -109,11 +109,48 @@ int main(int argc, char **argv)
|
|||||||
KApplication app;
|
KApplication app;
|
||||||
|
|
||||||
KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
|
KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
|
||||||
const QString type = args->getOption("type").toLower();
|
QString type = args->getOption("type").toLower();
|
||||||
QString packageRoot = type;
|
QString packageRoot = type;
|
||||||
QString servicePrefix;
|
QString servicePrefix;
|
||||||
QStringList pluginTypes;
|
QStringList pluginTypes;
|
||||||
Plasma::PackageStructure *installer = 0;
|
Plasma::PackageStructure *installer = 0;
|
||||||
|
QString package;
|
||||||
|
QString packageFile;
|
||||||
|
|
||||||
|
if (args->isSet("remove")) {
|
||||||
|
package = args->getOption("remove");
|
||||||
|
} else if (args->isSet("upgrade")) {
|
||||||
|
package = args->getOption("upgrade");
|
||||||
|
} else if (args->isSet("install")) {
|
||||||
|
package = args->getOption("install");
|
||||||
|
}
|
||||||
|
if (!QDir::isAbsolutePath(package)) {
|
||||||
|
packageFile = QDir(QDir::currentPath() + '/' + package).absolutePath();
|
||||||
|
} else {
|
||||||
|
packageFile = package;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!packageFile.isEmpty() && (!args->isSet("type") ||
|
||||||
|
type == i18nc("package type", "wallpaper") || type == "wallpaper")) {
|
||||||
|
// Check type for common plasma packages
|
||||||
|
Plasma::PackageStructure package;
|
||||||
|
package.setPath(packageFile);
|
||||||
|
QString serviceType = package.metadata().serviceType();
|
||||||
|
if (!serviceType.isEmpty()) {
|
||||||
|
if (serviceType == "Plasma/Applet" || serviceType == "Plasma/PopupApplet") {
|
||||||
|
type = "plasmoid";
|
||||||
|
} else if (serviceType == "Plasma/DataEngine") {
|
||||||
|
type = "dataengine";
|
||||||
|
} else if (serviceType == "Plasma/Runner") {
|
||||||
|
type = "runner";
|
||||||
|
} else if (serviceType == "Plasma/Wallpaper") {
|
||||||
|
// This also changes type to wallpaperplugin when --type wallpaper
|
||||||
|
// was specified and we have wallpaper plugin package (instead of
|
||||||
|
// wallpaper image package)
|
||||||
|
type = "wallpaperplugin";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (type == i18nc("package type", "plasmoid") || type == "plasmoid") {
|
if (type == i18nc("package type", "plasmoid") || type == "plasmoid") {
|
||||||
packageRoot = "plasma/plasmoids/";
|
packageRoot = "plasma/plasmoids/";
|
||||||
@ -132,6 +169,10 @@ int main(int argc, char **argv)
|
|||||||
packageRoot = "plasma/runners/";
|
packageRoot = "plasma/runners/";
|
||||||
servicePrefix = "plasma-runner-";
|
servicePrefix = "plasma-runner-";
|
||||||
pluginTypes << "Runner";
|
pluginTypes << "Runner";
|
||||||
|
} else if (type == i18nc("package type", "wallpaperplugin") || type == "wallpaperplugin") {
|
||||||
|
packageRoot = "plasma/wallpapers/";
|
||||||
|
servicePrefix = "plasma-wallpaper-";
|
||||||
|
pluginTypes << "Wallpaper";
|
||||||
} else {
|
} else {
|
||||||
QString constraint = QString("'%1' == [X-KDE-PluginInfo-Name]").arg(packageRoot);
|
QString constraint = QString("'%1' == [X-KDE-PluginInfo-Name]").arg(packageRoot);
|
||||||
KService::List offers = KServiceTypeTrader::self()->query("Plasma/PackageStructure", constraint);
|
KService::List offers = KServiceTypeTrader::self()->query("Plasma/PackageStructure", constraint);
|
||||||
@ -172,21 +213,6 @@ int main(int argc, char **argv)
|
|||||||
packageRoot = KStandardDirs::locateLocal("data", packageRoot);
|
packageRoot = KStandardDirs::locateLocal("data", packageRoot);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString package;
|
|
||||||
QString packageFile;
|
|
||||||
if (args->isSet("remove")) {
|
|
||||||
package = args->getOption("remove");
|
|
||||||
} else if (args->isSet("upgrade")) {
|
|
||||||
package = args->getOption("upgrade");
|
|
||||||
} else if (args->isSet("install")) {
|
|
||||||
package = args->getOption("install");
|
|
||||||
}
|
|
||||||
if (!QDir::isAbsolutePath(package)) {
|
|
||||||
packageFile = QDir(QDir::currentPath() + '/' + package).absolutePath();
|
|
||||||
} else {
|
|
||||||
packageFile = package;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args->isSet("remove") || args->isSet("upgrade")) {
|
if (args->isSet("remove") || args->isSet("upgrade")) {
|
||||||
installer->setPath(packageFile);
|
installer->setPath(packageFile);
|
||||||
Plasma::PackageMetadata metadata = installer->metadata();
|
Plasma::PackageMetadata metadata = installer->metadata();
|
||||||
|
Loading…
Reference in New Issue
Block a user