* X-PlasmoidCategory => X-KDE-PluginInfo-Category
* allow filtering applets by category and parent app * allow filtering categories by parent app svn path=/trunk/KDE/kdebase/workspace/libs/plasma/; revision=689200
This commit is contained in:
parent
9f555db9a1
commit
f6a4e9612d
56
applet.cpp
56
applet.cpp
@ -188,12 +188,12 @@ QString Applet::name() const
|
|||||||
|
|
||||||
QString Applet::category() const
|
QString Applet::category() const
|
||||||
{
|
{
|
||||||
return d->appletDescription->property("X-PlasmoidCategory").toString();
|
return d->appletDescription->property("X-KDE-PluginInfo-Category").toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Applet::category(const KPluginInfo* applet)
|
QString Applet::category(const KPluginInfo* applet)
|
||||||
{
|
{
|
||||||
return applet->property("X-PlasmoidCategory").toString();
|
return applet->property("X-KDE-PluginInfo-Category").toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Applet::category(const QString& appletName)
|
QString Applet::category(const QString& appletName)
|
||||||
@ -209,7 +209,7 @@ QString Applet::category(const QString& appletName)
|
|||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
return offers.first()->property("X-PlasmoidCategory").toString();
|
return offers.first()->property("X-KDE-PluginInfo-Category").toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Applet::immutable() const
|
bool Applet::immutable() const
|
||||||
@ -405,24 +405,58 @@ void Applet::showConfigurationInterface()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
KPluginInfo::List Applet::knownApplets()
|
KPluginInfo::List Applet::knownApplets(const QString &category,
|
||||||
|
const QString &parentApp)
|
||||||
{
|
{
|
||||||
KService::List offers = KServiceTypeTrader::self()->query("Plasma/Applet");
|
QString constraint;
|
||||||
|
|
||||||
|
if (parentApp.isEmpty()) {
|
||||||
|
constraint.append("not exist [X-KDE-ParentApp]");
|
||||||
|
} else {
|
||||||
|
constraint.append("[X-KDE-ParentApp] == '").append(parentApp).append("'");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!category.isEmpty()) {
|
||||||
|
if (!constraint.isEmpty()) {
|
||||||
|
constraint.append(" and ");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (category == "NONE") {
|
||||||
|
constraint.append("(not exist [X-KDE-PluginInfo-Category] or [X-KDE-PluginInfo-Category] == '')");
|
||||||
|
} else {
|
||||||
|
constraint.append("'").append(category).append("' in [X-KDE-PluginInfo-Category]");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
KService::List offers = KServiceTypeTrader::self()->query("Plasma/Applet", constraint);
|
||||||
return KPluginInfo::fromServices(offers);
|
return KPluginInfo::fromServices(offers);
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList Applet::knownCategories()
|
QStringList Applet::knownCategories(const QString &parentApp)
|
||||||
{
|
{
|
||||||
KService::List offers = KServiceTypeTrader::self()->query("Plasma/Applet", "exist [X-PlasmoidCategory]");
|
QString constraint = "exist [X-KDE-PluginInfo-Category]";
|
||||||
|
|
||||||
|
if (parentApp.isEmpty()) {
|
||||||
|
constraint.append(" and not exist [X-KDE-ParentApp]");
|
||||||
|
} else {
|
||||||
|
constraint.append(" and [X-KDE-ParentApp] == '").append(parentApp).append("'");
|
||||||
|
}
|
||||||
|
|
||||||
|
KService::List offers = KServiceTypeTrader::self()->query("Plasma/Applet", constraint);
|
||||||
QStringList categories;
|
QStringList categories;
|
||||||
foreach (KService::Ptr applet, offers) {
|
foreach (KService::Ptr applet, offers) {
|
||||||
QString appletCategory = applet->property("X-PlasmoidCategory").toString();
|
QString appletCategory = applet->property("X-KDE-PluginInfo-Category").toString();
|
||||||
if (!appletCategory.isEmpty()) {
|
kDebug() << " and we have " << appletCategory << endl;
|
||||||
if (!categories.contains(appletCategory)) {
|
if (appletCategory.isEmpty()) {
|
||||||
categories << appletCategory;
|
if (!categories.contains(i18n("Misc"))) {
|
||||||
|
categories << i18n("Misc");
|
||||||
}
|
}
|
||||||
|
} else if (!categories.contains(appletCategory)) {
|
||||||
|
categories << appletCategory;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
categories.sort();
|
||||||
return categories;
|
return categories;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
23
applet.h
23
applet.h
@ -157,15 +157,34 @@ class PLASMA_EXPORT Applet : public QObject, public Widget
|
|||||||
* Returns a list of all known applets in a hash keyed by a unique
|
* Returns a list of all known applets in a hash keyed by a unique
|
||||||
* identifier for each applet.
|
* identifier for each applet.
|
||||||
*
|
*
|
||||||
|
* @param category Only applets matchin this category will be returned.
|
||||||
|
* Useful in conjunction with knownCategories.
|
||||||
|
* If NONE is passed in, then applets without a
|
||||||
|
* Categories= entry are returned.
|
||||||
|
* If an empty string is passed in, all applets are
|
||||||
|
* returned.
|
||||||
|
* @param parentApp the application to filter applets on. Uses the
|
||||||
|
* X-KDE-ParentApp entry (if any) in the plugin info.
|
||||||
|
* The default value of QString() will result in a
|
||||||
|
* list containing only applets not specifically
|
||||||
|
* registered to an application.
|
||||||
* @return list of applets
|
* @return list of applets
|
||||||
**/
|
**/
|
||||||
static KPluginInfo::List knownApplets();
|
static KPluginInfo::List knownApplets(const QString &category = QString(),
|
||||||
|
const QString &parentApp = QString());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a list of all the categories used by
|
* Returns a list of all the categories used by
|
||||||
* installed applets.
|
* installed applets.
|
||||||
|
*
|
||||||
|
* @param parentApp the application to filter applets on. Uses the
|
||||||
|
* X-KDE-ParentApp entry (if any) in the plugin info.
|
||||||
|
* The default value of QString() will result in a
|
||||||
|
* list containing only applets not specifically
|
||||||
|
* registered to an application.
|
||||||
|
* @return list of categories
|
||||||
*/
|
*/
|
||||||
static QStringList knownCategories();
|
static QStringList knownCategories(const QString &parentApp = QString());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return true if this plasmoid provides a GUI configuration
|
* @return true if this plasmoid provides a GUI configuration
|
||||||
|
@ -20,7 +20,7 @@ Comment[sv]=Plasma-miniprogram
|
|||||||
Comment[uk]=Аплет Плазми
|
Comment[uk]=Аплет Плазми
|
||||||
Comment[zh_TW]=Plasma 小程式
|
Comment[zh_TW]=Plasma 小程式
|
||||||
|
|
||||||
[PropertyDef::X-PlasmoidCategory]
|
[PropertyDef::X-KDE-PluginInfo-Category]
|
||||||
Type=QString
|
Type=QString
|
||||||
|
|
||||||
[PropertyDef::X-KDE-ParentApp]
|
[PropertyDef::X-KDE-ParentApp]
|
||||||
|
Loading…
Reference in New Issue
Block a user