本文整理汇总了C++中kservice::List::isEmpty方法的典型用法代码示例。如果您正苦于以下问题:C++ List::isEmpty方法的具体用法?C++ List::isEmpty怎么用?C++ List::isEmpty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类kservice::List
的用法示例。
在下文中一共展示了List::isEmpty方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getViewer
KService::Ptr ArkViewer::getViewer(const QString &mimeType)
{
// No point in even trying to find anything for application/octet-stream
if (mimeType == QStringLiteral("application/octet-stream")) {
return KService::Ptr();
}
// Try to get a read-only kpart for the internal viewer
KService::List offers = KMimeTypeTrader::self()->query(mimeType, QStringLiteral("KParts/ReadOnlyPart"));
auto arkPartIt = std::find_if(offers.begin(), offers.end(), [](KService::Ptr service) {
return service->storageId() == QLatin1String("ark_part.desktop");
});
// Use the Ark part only when the mime type matches an archive type directly.
// Many file types (e.g. Open Document) are technically just archives
// but browsing their internals is typically not what the user wants.
if (arkPartIt != offers.end()) {
// Not using hasMimeType() as we're explicitly not interested in inheritance.
if (!(*arkPartIt)->mimeTypes().contains(mimeType)) {
offers.erase(arkPartIt);
}
}
// If we can't find a kpart, try to get an external application
if (offers.isEmpty()) {
offers = KMimeTypeTrader::self()->query(mimeType, QStringLiteral("Application"));
}
if (!offers.isEmpty()) {
return offers.first();
} else {
return KService::Ptr();
}
}
示例2: addPlugins
void KonqPopupMenuPrivate::addPlugins()
{
QString commonMimeType = m_popupItemProperties.mimeType();
if (commonMimeType.isEmpty()) {
commonMimeType = QLatin1String("application/octet-stream");
}
const KService::List konqPlugins = KMimeTypeTrader::self()->query(commonMimeType, "KonqPopupMenu/Plugin", "exist Library");
if (!konqPlugins.isEmpty()) {
m_popupMenuInfo.setItemListProperties(m_popupItemProperties);
m_popupMenuInfo.setParentWidget(m_parentWidget);
KService::List::ConstIterator iterator = konqPlugins.begin();
const KService::List::ConstIterator end = konqPlugins.end();
for(; iterator != end; ++iterator) {
//kDebug() << (*iterator)->name() << (*iterator)->library();
KonqPopupMenuPlugin *plugin = (*iterator)->createInstance<KonqPopupMenuPlugin>(q);
if (!plugin)
continue;
plugin->setParent(q);
plugin->setup(&m_ownActionCollection, m_popupMenuInfo, q);
}
}
const KService::List fileItemPlugins = KMimeTypeTrader::self()->query(commonMimeType, "KFileItemAction/Plugin", "exist Library");
if (!fileItemPlugins.isEmpty()) {
const KConfig config("kservicemenurc", KConfig::NoGlobals);
const KConfigGroup showGroup = config.group("Show");
foreach (const KSharedPtr<KService>& service, fileItemPlugins) {
if (!showGroup.readEntry(service->desktopEntryName(), true)) {
// The plugin has been disabled
continue;
}
// Old API (kdelibs-4.6.0 only)
KFileItemActionPlugin* plugin = service->createInstance<KFileItemActionPlugin>();
if (plugin) {
plugin->setParent(q);
q->addActions(plugin->actions(m_popupItemProperties, m_parentWidget));
}
// New API (kdelibs >= 4.6.1)
KAbstractFileItemActionPlugin* abstractPlugin = service->createInstance<KAbstractFileItemActionPlugin>();
if (abstractPlugin) {
abstractPlugin->setParent(q);
q->addActions(abstractPlugin->actions(m_popupItemProperties, m_parentWidget));
}
}
}
}
示例3: match
void ServiceRunner::match(Plasma::RunnerContext &context)
{
const QString term = context.query();
if (term.length() < 3) {
return;
}
// Search for applications which are executable and case-insensitively match the search term
// See http://techbase.kde.org/Development/Tutorials/Services/Traders#The_KTrader_Query_Language
// if the following is unclear to you.
QString query = QString("exist Exec and ('%1' =~ Name)").arg(term);
KService::List services = KServiceTypeTrader::self()->query("Application", query);
QList<Plasma::QueryMatch> matches;
QSet<QString> seen;
if (!services.isEmpty()) {
//kDebug() << service->name() << "is an exact match!" << service->storageId() << service->exec();
foreach (const KService::Ptr &service, services) {
if (!service->noDisplay() && service->property("NotShowIn", QVariant::String) != "KDE") {
Plasma::QueryMatch match(this);
match.setType(Plasma::QueryMatch::ExactMatch);
setupMatch(service, match);
match.setRelevance(1);
matches << match;
seen.insert(service->storageId());
seen.insert(service->exec());
}
}
}
示例4: installButton
bool
EngineController::installDistroCodec()
{
KService::List services = KServiceTypeTrader::self()->query( "Amarok/CodecInstall"
, QString( "[X-KDE-Amarok-codec] == 'mp3' and [X-KDE-Amarok-engine] == 'phonon-%1'").arg( "xine" ) );
//todo - figure out how to query Phonon for the current backend loaded
if( !services.isEmpty() )
{
KService::Ptr service = services.first(); //list is not empty
QString installScript = service->exec();
if( !installScript.isNull() ) //just a sanity check
{
KGuiItem installButton( i18n( "Install MP3 Support" ) );
if(KMessageBox::questionYesNo( The::mainWindow()
, i18n("Amarok currently cannot play MP3 files. Do you want to install support for MP3?")
, i18n( "No MP3 Support" )
, installButton
, KStandardGuiItem::no()
, "codecInstallWarning" ) == KMessageBox::Yes )
{
KRun::runCommand(installScript, 0);
return true;
}
}
}
return false;
}
示例5: ChannelApprover
TubeChannelApprover::TubeChannelApprover(const Tp::TubeChannelPtr& channel, QObject* parent):
ChannelApprover(0),
m_channel(channel)
{
Q_UNUSED(parent);
qCDebug(APPROVER) << "Incoming tube channel";
qCDebug(APPROVER) << "\tTube Type:" << channel->channelType();
connect(m_channel.data(), SIGNAL(invalidated(Tp::DBusProxy*,QString,QString)), SLOT(onChannelInvalidated()));
QString serviceName;
if (Tp::StreamTubeChannelPtr streamTube = Tp::StreamTubeChannelPtr::dynamicCast(channel)) {
qCDebug(APPROVER) << "\tService:" << streamTube->service();
serviceName = streamTube->service();
} else if (Tp::DBusTubeChannelPtr dbusTube = Tp::DBusTubeChannelPtr::dynamicCast(channel)) {
qCDebug(APPROVER) << "\tService name:" << dbusTube->serviceName();
serviceName = dbusTube->serviceName();
}
KService::List services = KServiceTypeTrader::self()->query(QLatin1String("KTpApprover"));
qCDebug(APPROVER) << "Found" << services.count() << "KTpApprover services";
if (!services.isEmpty()) {
Q_FOREACH(const KService::Ptr &service, services) {
if ((service->property(QLatin1String("X-KTp-ChannelType")) != channel->channelType()) ||
(service->property(QLatin1String("X-KTp-Service")) != serviceName)) {
continue;
}
m_service = service;
}
}
示例6: addPlugins
void KonqPopupMenuPrivate::addPlugins()
{
QString commonMimeType = m_popupItemProperties.mimeType();
if (commonMimeType.isEmpty()) {
commonMimeType = QLatin1String("application/octet-stream");
}
const KService::List fileItemPlugins = KMimeTypeTrader::self()->query(commonMimeType, QStringLiteral("KFileItemAction/Plugin"), QStringLiteral("exist Library"));
if (!fileItemPlugins.isEmpty()) {
const KConfig config(QStringLiteral("kservicemenurc"), KConfig::NoGlobals);
const KConfigGroup showGroup = config.group("Show");
foreach (const auto &service, fileItemPlugins) {
if (!showGroup.readEntry(service->desktopEntryName(), true)) {
// The plugin has been disabled
continue;
}
KAbstractFileItemActionPlugin *abstractPlugin = service->createInstance<KAbstractFileItemActionPlugin>();
if (abstractPlugin) {
abstractPlugin->setParent(q);
q->addActions(abstractPlugin->actions(m_popupItemProperties, m_parentWidget));
}
}
}
}
示例7: plugin
TestDataEngineBlackBox::TestDataEngineBlackBox(QString identifier)
{
Plasma::DataEngine* engine = 0;
// load the engine, add it to the engines
QString constraint = QString("[X-KDE-PluginInfo-Name] == '" + identifier + '\'').arg(identifier);
KService::List offers = KServiceTypeTrader::self()->query("Plasma/DataEngine", constraint);
QString error;
if (!offers.isEmpty()) {
QVariantList allArgs;
allArgs << offers.first()->storageId();
QString api = offers.first()->property("X-Plasma-API").toString();
if (api.isEmpty()) {
if (offers.first()) {
KPluginLoader plugin(*offers.first());
if (Plasma::isPluginVersionCompatible(plugin.pluginVersion())) {
engine = offers.first()->createInstance<Plasma::DataEngine>(0, allArgs, &error);
}
}
} else {
engine = new Plasma::DataEngine(0, offers.first());
}
}
m_engine = engine;
}
示例8: urlSelected
bool DocumentationViewer::urlSelected(const QString &url, int button, int state, const QString &_target, const KParts::OpenUrlArguments &args, const KParts::BrowserArguments & /* browserArgs */)
{
KUrl cURL = completeURL(url);
QString mime = KMimeType::findByUrl(cURL).data()->name();
//load this URL in the embedded viewer if KHTML can handle it, or when mimetype detection failed
KService::Ptr service = KService::serviceByDesktopName("khtml");
if(( mime == KMimeType::defaultMimeType() ) || (service && service->hasServiceType(mime))) {
KHTMLPart::urlSelected(url, button, state, _target, args);
openUrl(cURL);
addToHistory(cURL.url());
}
//KHTML can't handle it, look for an appropriate application
else {
KService::List offers = KMimeTypeTrader::self()->query(mime, "Type == 'Application'");
if(offers.isEmpty()) {
KMessageBox::error(view(), i18n("No KDE service found for the MIME type \"%1\".", mime));
return false;
}
KUrl::List lst;
lst.append(cURL);
KRun::run(*(offers.first()), lst, view());
}
return true;
}
示例9: findPartFactory
KParts::Factory* IPartController::findPartFactory ( const QString& mimetype, const QString& parttype, const QString& preferredName )
{
// parttype may be a interface type not derived from KParts/ReadOnlyPart
const KService::List offers = KMimeTypeTrader::self()->query( mimetype,
QString::fromLatin1( "KParts/ReadOnlyPart" ),
QString::fromLatin1( "'%1' in ServiceTypes" ).arg( parttype ) );
if ( ! offers.isEmpty() )
{
KService::Ptr ptr;
// if there is a preferred plugin we'll take it
if ( !preferredName.isEmpty() )
{
KService::List::ConstIterator it;
for ( it = offers.constBegin(); it != offers.constEnd(); ++it )
{
if ( ( *it ) ->desktopEntryName() == preferredName )
{
ptr = ( *it );
break;
}
}
}
// else we just take the first in the list
if ( !ptr )
{
ptr = offers.first();
}
KPluginLoader loader( QFile::encodeName( ptr->library() ) );
return static_cast<KParts::Factory*>( loader.factory() );
}
return 0;
}
示例10: activateConnection
void Handler::activateConnection(const QString& connection, const QString& device, const QString& specificObject)
{
NetworkManager::Connection::Ptr con = NetworkManager::findConnection(connection);
if (!con) {
qCWarning(NM) << "Not possible to activate this connection";
return;
}
if (con->settings()->connectionType() == NetworkManager::ConnectionSettings::Vpn) {
NetworkManager::VpnSetting::Ptr vpnSetting = con->settings()->setting(NetworkManager::Setting::Vpn).staticCast<NetworkManager::VpnSetting>();
if (vpnSetting) {
// qCDebug(NM) << "Checking VPN" << con->name() << "type:" << vpnSetting->serviceType();
#if 0
// get the list of supported VPN service types
const KService::List services = KServiceTypeTrader::self()->query("PlasmaNetworkManagement/VpnUiPlugin",
QString::fromLatin1("[X-NetworkManager-Services]=='%1'").arg(vpnSetting->serviceType()));
if (services.isEmpty()) {
qCWarning(NM) << "VPN" << vpnSetting->serviceType() << "not found, skipping";
KNotification *notification = new KNotification("MissingVpnPlugin", KNotification::CloseOnTimeout, this);
notification->setComponentName("networkmanagement");
notification->setTitle(con->name());
notification->setText(i18n("Missing VPN plugin"));
notification->setPixmap(QIcon::fromTheme("dialog-warning").pixmap(KIconLoader::SizeHuge));
notification->sendEvent();
return;
}
#endif
}
}
#if WITH_MODEMMANAGER_SUPPORT
if (con->settings()->connectionType() == NetworkManager::ConnectionSettings::Gsm) {
NetworkManager::ModemDevice::Ptr nmModemDevice = NetworkManager::findNetworkInterface(device).objectCast<NetworkManager::ModemDevice>();
if (nmModemDevice) {
ModemManager::ModemDevice::Ptr mmModemDevice = ModemManager::findModemDevice(nmModemDevice->udi());
if (mmModemDevice) {
ModemManager::Modem::Ptr modem = mmModemDevice->interface(ModemManager::ModemDevice::ModemInterface).objectCast<ModemManager::Modem>();
NetworkManager::GsmSetting::Ptr gsmSetting = con->settings()->setting(NetworkManager::Setting::Gsm).staticCast<NetworkManager::GsmSetting>();
if (gsmSetting && gsmSetting->pinFlags() == NetworkManager::Setting::NotSaved &&
modem && modem->unlockRequired() > MM_MODEM_LOCK_NONE) {
QDBusInterface managerIface("org.kde.plasmanetworkmanagement", "/org/kde/plasmanetworkmanagement", "org.kde.plasmanetworkmanagement", QDBusConnection::sessionBus(), this);
managerIface.call("unlockModem", mmModemDevice->uni());
connect(modem.data(), &ModemManager::Modem::unlockRequiredChanged, this, &Handler::unlockRequiredChanged);
m_tmpConnectionPath = connection;
m_tmpDevicePath = device;
m_tmpSpecificPath = specificObject;
return;
}
}
}
}
#endif
QDBusPendingReply<QDBusObjectPath> reply = NetworkManager::activateConnection(connection, device, specificObject);
QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this);
watcher->setProperty("action", Handler::ActivateConnection);
watcher->setProperty("connection", con->name());
connect(watcher, &QDBusPendingCallWatcher::finished, this, &Handler::replyFinished);
}
示例11: launchDateKcm
void Clock::launchDateKcm() //SLOT
{
KService::List offers = KServiceTypeTrader::self()->query("KCModule", "Library == 'kcm_locale'");
if (!offers.isEmpty()) {
KService::Ptr service = offers.first();
KRun::run(*service, KUrl::List(), 0);
}
update();
}
示例12: findPropertyByCountry
QVariant ibanBicData::findPropertyByCountry(const QString& countryCode, const QString& property, const QVariant::Type type)
{
const KService::List services = KServiceTypeTrader::self()->query("KMyMoney/IbanBicData",
QString("'%1' ~in [X-KMyMoney-CountryCodes] and exist [%2]").arg(countryCode).arg(property)
);
if (!services.isEmpty())
return services.first()->property(property, type);
// Something went wrong
return QVariant();
}
示例13: activityLinkingEnabled
bool PlacesModel::activityLinkingEnabled()
{
const KService::List services = KServiceTypeTrader::self()->query(QStringLiteral("KFileItemAction/Plugin"),
QStringLiteral("Library == 'kactivitymanagerd_fileitem_linking_plugin'"));
if (services.isEmpty()) {
return false;
}
return !services.at(0).data()->noDisplay();
}
示例14:
KFileWritePlugin*
KFileWriterProvider::loadPlugin(const QString& key) {
//kDebug() << "loading writer for key " << key;
const QString constraint = QString::fromLatin1("'%1' in MetaDataKeys")
.arg(key);
const KService::List offers = KServiceTypeTrader::self()->query(
"KFileWrite", constraint);
if (offers.isEmpty()) {
return 0;
}
return offers.first()->createInstance<KFileWritePlugin>();
}
示例15: match
void KJiebaRunner::match(Plasma::RunnerContext &context)
{
const QString term = context.query();
QList<Plasma::QueryMatch> matches;
QSet<QString> seen;
if (term.length() > 1) {
#if DEBUG
qDebug() << "DEBUG:" << __PRETTY_FUNCTION__ << term;
#endif
KService::List services = KServiceTypeTrader::self()->query("Application");
services.erase(std::remove_if(services.begin(),
services.end(),
[=](QExplicitlySharedDataPointer<KService> it) {
return it->exec().isEmpty() ||
(!kjiebaPtr->query(it->genericName()).contains(term) &&
!kjiebaPtr->topinyin(it->genericName()).contains(term) &&
!kjiebaPtr->topinyin(it->genericName(), false).contains(term) &&
!kjiebaPtr->query(it->name()).contains(term) &&
!kjiebaPtr->topinyin(it->name()).contains(term) &&
!kjiebaPtr->topinyin(it->name(), false).contains(term));
}), services.end());
if (!services.isEmpty()) {
Q_FOREACH (const KService::Ptr &service, services) {
if (!service->noDisplay() &&
service->property(QStringLiteral("NotShowIn"), QVariant::String) != "KDE") {
Plasma::QueryMatch match(this);
match.setType(Plasma::QueryMatch::ExactMatch);
const QString name = service->name();
#if DEBUG
qDebug() << "DEBUG:" << name;
#endif
match.setText(name);
match.setData(service->storageId());
if (!service->genericName().isEmpty() && service->genericName() != name)
match.setSubtext(service->genericName());
else if (!service->comment().isEmpty())
match.setSubtext(service->comment());
if (!service->icon().isEmpty())
match.setIcon(QIcon::fromTheme(service->icon()));
match.setRelevance(1);
matches << match;
seen.insert(service->storageId());
seen.insert(service->exec());
}
}
}