unity.scopes.qt.QSearchReply
Allows the results of a search query to be sent to the query source. More...
#include <unity/scopes/qt/QSearchReply.h>
Inheritance diagram for unity::scopes::qt::QSearchReply: src="https://assets.ubuntu.com/v1/e39a435a-classunity_1_1scopes_1_1qt_1_1_q_search_reply__inherit__graph.png" border="0" alt="Inheritance graph"/>
Public Member Functions | |
virtual | ~QSearchReply () |
Destroys a QSearchReply. | |
virtual void | register_departments (QDepartment::SCPtr const &parent) |
Register departments for the current search reply and provide the current department. More... | |
virtual QCategory::SCPtr | register_category (QString const &id, QString const &title, QString const &icon, unity::scopes::CategoryRenderer const &renderer_template=unity::scopes::CategoryRenderer()) |
Register new category and send it to the source of the query. More... | |
virtual bool | push (QCategorisedResult const &result) |
Sends a single result to the source of a query. More... | |
virtual void | error (std::exception_ptr ex) |
Informs the source of a query that the query was terminated due to an error. More... | |
Detailed Description
Allows the results of a search query to be sent to the query source.
Member Function Documentation
|
virtual |
Informs the source of a query that the query was terminated due to an error.
Multiple calls to error() and calls to finished() after error() was called are ignored.
- Parameters
-
ex An exception_ptr indicating the cause of the error. If ex is a std::exception
, the return value ofwhat()
is made available to the query source. Otherwise, the query source receives"unknown exception"
.
|
virtual |
Sends a single result to the source of a query.
Any calls to push() after finished() was called are ignored.
- Returns
- The return value is true if the result was accepted, false otherwise. A false return value can be due to finished() having been called earlier, or the client that sent the query having cancelled that query. The return value is false also if the query has a cardinality limit and is reached or exceeded. (The return value is false for the last valid push and subsequent pushes.)
|
virtual |
Register new category and send it to the source of the query.
- Parameters
-
id The identifier of the category title The title of the category icon The icon of the category renderer_template The renderer template to be used for results in this category
- Returns
- The category instance
- Exceptions
-
unity::scopes::InvalidArgumentException if category with that id has already been registered.
|
virtual |
Register departments for the current search reply and provide the current department.
Departments are optional. If scope supports departments, it is expected to register departments on every search as follows:
- create a Department node for current department and attach to it a list of its subdepartments (unless current department is a leaf department) using unity::scopes::Department::set_subdepartments() method. For every subdepartment on the list set "has_subdepartments" flag if applicable.
- provide an alternate label for current department with unity::scopes::Department::set_alternate_label().
- create a Department node for parent of current department (if applicable - not when in root department), and attach current Department node to it with unity::scopes::Department::set_subdepartments() method.
- register the parent department with unity::scopes::qt::QSearchReply::register_departments().
For example, assuming the user is visiting a "History" department in "Books", and "History" has sub-departments such as "World War Two" and "Ancient", the code that registers departments for current search in "History" may look like this:
unity::scopes::qt::QDepartment::SPtr books = move(<a class="code" href="unity.scopes.qt.QDepartment.md#a9bf07a3b3b3e57a391100f15abb4c651">unity::scopes::qt::QDepartment::create</a>(<span class="stringliteral">"books"</span>, query, <span class="stringliteral">"Books"</span>)); <span class="comment">// the</span> parent of <span class="stringliteral">"History"</span> unity::scopes::Department::SPtr history = move(<a class="code" href="unity.scopes.qt.QDepartment.md#a9bf07a3b3b3e57a391100f15abb4c651">unity::scopes::qt::QDepartment::create</a>(<span class="stringliteral">"history"</span>, query, <span class="stringliteral">"History"</span>)); <a class="code" href="unity.scopes.md#ab8effc4ea05a59f2ddea896833f07231">unity::scopes::DepartmentList</a> history_depts({ move(<a class="code" href="unity.scopes.qt.QDepartment.md#a9bf07a3b3b3e57a391100f15abb4c651">unity::scopes::qt::QDepartment::create</a>(<span class="stringliteral">"ww2"</span>, query, <span class="stringliteral">"World War</span> <span class="stringliteral">Two"</span>)), move(<a class="code" href="unity.scopes.qt.QDepartment.md#a9bf07a3b3b3e57a391100f15abb4c651">unity::scopes::qt::QDepartment::create</a>(<span class="stringliteral">"ancient"</span>, query, <span class="stringliteral">"Ancient"</span>))}); history->set_subdepartments(history_depts); books->set_subdepartments({history}); reply->register_departments(books);
Current department should be the department returned by unity::scopes::CannedQuery::department_id(). Empty department id denotes the root deparment.
- Parameters
-
parent The parent department of current department, or current one if visiting root department.
- Exceptions
-
unity::LogicException if departments are invalid (nullptr passed, current department not present in the parent's tree, duplicated department ids present in the tree).