6#include <albert/export.h>
26 std::shared_ptr<Item>
item;
55 inline uint
count()
const {
return results.size(); }
58 bool activate(uint item_index, uint action_index = 0);
67 emit resultsAboutToBeInserted(results.size(), results.size());
68 item->addObserver(
this);
69 results.emplace_back(&extension, std::forward<
decltype(item)>(item));
70 emit resultsInserted();
78 void add(
ItemPtr auto &&item) {
add(context.handler(), std::forward<
decltype(item)>(item)); }
81 void add(std::ranges::range
auto &&query_results)
82 requires(std::same_as<
QueryResult, std::ranges::range_value_t<
decltype(query_results)>>)
84 if (!query_results.empty())
86 const auto count = std::ranges::distance(query_results);
87 results.reserve(results.size() + count);
88 emit resultsAboutToBeInserted(results.size(), results.size() + count - 1);
89 for (
auto&& query_result : query_results)
91 query_result.item->addObserver(
this);
94 if constexpr (std::is_lvalue_reference_v<
decltype(query_results)>)
95 results.emplace_back(query_result);
97 results.emplace_back(std::move(query_result));
99 emit resultsInserted();
108 const auto count = std::ranges::distance(items);
109 results.reserve(results.size() + count);
110 emit resultsAboutToBeInserted(results.size(), results.size() + count - 1);
111 for (
auto&& item : items)
113 item->addObserver(
this);
116 if constexpr (std::is_lvalue_reference_v<
decltype(items)>)
117 results.emplace_back(&extension, item);
119 results.emplace_back(&extension, std::move(item));
121 emit resultsInserted();
126 void add(
ItemRange auto &&items){
add(context.handler(), std::forward<
decltype(items)>(items)); }
131 for (
auto i = index; i < index + count; ++i)
132 results[i].item->removeObserver(
this);
134 emit resultsAboutToBeRemoved(index, index + count - 1);
135 results.erase(results.begin() + index,results.begin() + index + count);
136 emit resultsRemoved();
143 for (
auto&& result : results)
144 result.item->removeObserver(
this);
145 emit resultsAboutToBeReset();
180 void resultActivated(QString query, QString extension_id, QString item_id, QString action_id);
187 std::vector<QueryResult> results;
Abstract extension class.
Definition extension.h:19
Interface class for item observers.
Definition item.h:135
Result items displayed in the query results list.
Definition item.h:71
Query interface.
Definition querycontext.h:19
Result item associating an item with an extension.
Definition queryresults.h:23
std::shared_ptr< Item > item
The item.
Definition queryresults.h:26
const Extension * extension
The extension providing the item.
Definition queryresults.h:25
Query results container.
Definition queryresults.h:37
void add(std::ranges::range auto &&query_results)
Appends query_results to the results.
Definition queryresults.h:81
QueryResults(const QueryContext &context)
Constructs query results with the context it belongs to.
void add(const Extension &extension, ItemPtr auto &&item)
Appends a QueryResult constructed from extension and item.
Definition queryresults.h:65
void add(ItemPtr auto &&item)
Appends a QueryResult constructed from item and the handler this results belong to.
Definition queryresults.h:78
QueryResult & operator[](size_t index)
Returns the result at index index.
Definition queryresults.h:49
void resultsAboutToBeReset()
Emitted before all results are reset.
const QueryResult & operator[](size_t index) const
Returns the result at index index.
Definition queryresults.h:52
void resultsRemoved()
Emitted after results have been removed.
void resultsAboutToBeRemoved(int first, int last)
Emitted before results are removed.
uint count() const
Returns the number of results.
Definition queryresults.h:55
~QueryResults() override
Destructs the query results.
void reset()
Removes all results.
Definition queryresults.h:141
void add(ItemRange auto &&items)
Appends QueryResult's constructed from items and the handler this results belong to.
Definition queryresults.h:126
void resultsReset()
Emitted after all results have been reset.
void resultChanged(uint i)
Emitted when a result changed.
void resultActivated(QString query, QString extension_id, QString item_id, QString action_id)
Emitted when a result was activated.
void resultsMoved()
Emitted after results have been moved.
void add(const Extension &extension, ItemRange auto &&items)
Appends QueryResult's constructed from extension and items.
Definition queryresults.h:104
void resultsAboutToBeMoved(int srcFirst, int srcLast, int dst)
Emitted before results are moved.
void resultsAboutToBeInserted(int first, int last)
Emitted before results are inserted.
void remove(uint index, uint count=1)
Removes count results starting from index.
Definition queryresults.h:129
bool activate(uint item_index, uint action_index=0)
Activates the action at action_index of the result item at item_index.
void resultsInserted()
Emitted after results have been inserted.
A shared pointer to an Item or subclass thereof.
Definition item.h:188
A range of ItemPtr.
Definition item.h:193