void reflectable_descriptor::read_value(const symbol& source_symbol, void* target_ptr) const { VAR* reflectable_ptr = static_cast<reflectable*>(target_ptr); match3(source_symbol, [](VAL&) { throw std::invalid_argument("Expected symbols value."); }, [](VAL&) { throw std::invalid_argument("Expected symbols value."); }, [&](VAL& symbols) { VAR& reflectable = *reflectable_ptr; VAL& type = get_type(reflectable); read_value_internal(type, symbols, reflectable); }); }
void PowerDevilRunner::match(Plasma::RunnerContext &context) { const QString term = context.query(); if (term.length() < m_shortestCommand) { return; } QList<Plasma::QueryMatch> matches; QString parameter; if (parseQuery(term, QList<QRegExp>() << QRegExp(i18nc("Note this is a KRunner keyword; %1 is a parameter", "power profile %1", "(.*)"), Qt::CaseInsensitive) << QRegExp(i18nc("Note this is a KRunner keyword", "power profile"), Qt::CaseInsensitive), parameter)) { for (StringStringMap::const_iterator i = m_availableProfiles.constBegin(); i != m_availableProfiles.constEnd(); ++i) { if (!parameter.isEmpty()) { if (!i.value().startsWith(parameter, Qt::CaseInsensitive)) { continue; } } Plasma::QueryMatch match(this); match.setType(Plasma::QueryMatch::ExactMatch); match.setIcon(KIcon(m_profileIcon[i.key()])); match.setText(i18n("Set Profile to '%1'", i.value())); match.setData(i.key()); match.setRelevance(1); match.setId("ProfileChange "+ i.key()); matches.append(match); } } else if (parseQuery(term, QList<QRegExp>() << QRegExp(i18nc("Note this is a KRunner keyword; %1 is a parameter", "screen brightness %1", "(.*)"), Qt::CaseInsensitive) << QRegExp(i18nc("Note this is a KRunner keyword", "screen brightness"), Qt::CaseInsensitive) << QRegExp(i18nc("Note this is a KRunner keyword; %1 is a parameter", "dim screen %1", "(.*)"), Qt::CaseInsensitive) << QRegExp(i18nc("Note this is a KRunner keyword", "dim screen"), Qt::CaseInsensitive), parameter)) { if (!parameter.isEmpty()) { bool test; int b = parameter.toInt(&test); if (test) { int brightness = qBound(0, b, 100); Plasma::QueryMatch match(this); match.setType(Plasma::QueryMatch::ExactMatch); match.setIcon(KIcon("preferences-system-power-management")); match.setText(i18n("Set Brightness to %1", brightness)); match.setData(brightness); match.setRelevance(1); match.setId("BrightnessChange"); matches.append(match); } } else { Plasma::QueryMatch match1(this); match1.setType(Plasma::QueryMatch::ExactMatch); match1.setIcon(KIcon("preferences-system-power-management")); match1.setText(i18n("Dim screen totally")); match1.setRelevance(1); match1.setId("DimTotal"); matches.append(match1); Plasma::QueryMatch match2(this); match2.setType(Plasma::QueryMatch::ExactMatch); match2.setIcon(KIcon("preferences-system-power-management")); match2.setText(i18n("Dim screen by half")); match2.setRelevance(1); match2.setId("DimHalf"); matches.append(match2); Plasma::QueryMatch match3(this); match3.setType(Plasma::QueryMatch::ExactMatch); match3.setIcon(KIcon("video-display")); match3.setText(i18n("Turn off screen")); match3.setRelevance(1); match3.setId("TurnOffScreen"); matches.append(match3); } } else if (term.compare(i18nc("Note this is a KRunner keyword", "suspend"), Qt::CaseInsensitive) == 0) { QSet< Solid::PowerManagement::SleepState > states = Solid::PowerManagement::supportedSleepStates(); if (states.contains(Solid::PowerManagement::SuspendState)) { addSuspendMatch(Solid::PowerManagement::SuspendState, matches); } if (states.contains(Solid::PowerManagement::HibernateState)) { addSuspendMatch(Solid::PowerManagement::HibernateState, matches); } } else if (term.compare(i18nc("Note this is a KRunner keyword", "sleep"), Qt::CaseInsensitive) == 0 || term.compare(i18nc("Note this is a KRunner keyword", "to ram"), Qt::CaseInsensitive) == 0) { addSuspendMatch(Solid::PowerManagement::SuspendState, matches); } else if (term.compare(i18nc("Note this is a KRunner keyword", "hibernate"), Qt::CaseInsensitive) == 0 || term.compare(i18nc("Note this is a KRunner keyword", "to disk"), Qt::CaseInsensitive) == 0) { addSuspendMatch(Solid::PowerManagement::HibernateState, matches); } if (!matches.isEmpty()) { context.addMatches(term, matches); } }