разработка области действия / как изменить результат области действия внутри execute_action

Я немного растерялся из-за того, как установить атрибут результата или вызвать поиск области (обновить) внутри метода Scope::perform_action или в методах объекта ActivationQuery. Идея состоит в том, чтобы изменить данные в источнике, а затем либо обновить ответ новым запросом, либо просто изменить предыдущий результат так же, как изменился источник. Типичным примером будет состояние «был прочитан».

Не могли бы вы немного помочь с приведенным ниже примером?

sc::ActivationQueryBase::UPtr Scope::perform_action(const sc::Result &result,
                                      sc::ActionMetadata const &metadata,
                                      std::string const &widget_id, std::string const &action_id) {

    //update current Result/reply or trigger new search by scope

    return sc::ActivationQueryBase::UPtr(new ActivationQuery(result, metadata, widget_id, action_id, config_));

}
1
задан 16 April 2015 в 23:25

1 ответ

Вы не можете изменить сам Результат, он получен для чтения только, необходимо применить любые обновления данных бэкенда и затем повторно выполнить поиск. Чтобы сделать это, перереализация активирует () метод Вашего ActivationQueryBase в Вашем классе ActivationQuery; сделайте то, в чем необходимо обновить данные бэкенда, активируются () и затем возвращают экземпляр ActivationResponse, созданный с этим ctor:

ActivationResponse (CannedQuery const& запрос);

аргумент запроса должен указать на Вас на объем.

альтернативный подход для перевыполнения поиска, когда кнопка в предварительном просмотре касается, должен установить атрибут uri кнопки со значением CannedQuery:: to_uri (), но в этом случае Ваш обработчик активаций не выполняется.

Примечание, с первым подходом Вы, вероятно, испытаете https://bugs.launchpad.net/ubuntu / + source/unity8 / + ошибка/1335761

, я надеюсь, что это помогает.

1
ответ дан 17 April 2015 в 09:25

Другие вопросы по тегам:

Похожие вопросы: