Albert
Loading...
Searching...
No Matches
query.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2024 Manuel Schneider
2// SPDX-License-Identifier: MIT
3
4#pragma once
5#include <QAbstractListModel>
6#include <QObject>
7#include <QString>
8#include <albert/export.h>
9#include <memory>
10#include <vector>
11
12namespace albert
13{
14class Item;
15class Extension;
16
17class ALBERT_EXPORT ResultItem
18{
19public:
21 std::shared_ptr<Item> item;
22};
23
27class ALBERT_EXPORT Query : public QObject
28{
29 Q_OBJECT
30
31public:
32
34 Q_INVOKABLE virtual QString synopsis() const = 0;
35
37 Q_INVOKABLE virtual QString trigger() const = 0;
38
40 Q_INVOKABLE virtual QString string() const = 0;
41
43 Q_INVOKABLE virtual bool isActive() const = 0;
44
46 Q_INVOKABLE virtual bool isFinished() const = 0;
47
49 Q_INVOKABLE virtual const bool &isValid() const = 0;
50
52 Q_INVOKABLE virtual bool isTriggered() const = 0;
53
55 Q_INVOKABLE virtual const std::vector<ResultItem> &matches() = 0;
56
58 Q_INVOKABLE virtual const std::vector<ResultItem> &fallbacks() = 0;
59
61 Q_INVOKABLE virtual bool activateMatch(uint item, uint action = 0) = 0;
62
64 Q_INVOKABLE virtual bool activateFallback(uint item, uint action = 0) = 0;
65
69 virtual void add(const std::shared_ptr<Item> &item) = 0;
70
74 virtual void add(std::shared_ptr<Item> &&item) = 0;
75
77 virtual void add(const std::vector<std::shared_ptr<Item>> &items) = 0;
78
80 virtual void add(std::vector<std::shared_ptr<Item>> &&items) = 0;
81
85 inline operator QString() const { return string(); }
86
87protected:
88
89 ~Query() override;
90
91signals:
92
94 void matchesAboutToBeAdded(uint count);
95
98
101
103 void activeChanged(bool active);
104};
105
106}
Abstract extension class.
Definition extension.h:19
Common query object.
Definition query.h:28
virtual Q_INVOKABLE QString synopsis() const =0
The synopsis of this query.
virtual Q_INVOKABLE const std::vector< ResultItem > & fallbacks()=0
Returns the fallbacks.
virtual Q_INVOKABLE bool isActive() const =0
True if the query is currently being processed.
virtual void add(std::vector< std::shared_ptr< Item > > &&items)=0
Move add multiple items.
virtual void add(std::shared_ptr< Item > &&item)=0
Move add single item.
void matchesAdded()
Emitted after matches have been added to the matches.
virtual void add(const std::vector< std::shared_ptr< Item > > &items)=0
Copy add multiple items.
virtual Q_INVOKABLE const std::vector< ResultItem > & matches()=0
Returns the matches.
virtual Q_INVOKABLE bool activateFallback(uint item, uint action=0)=0
Executes match a fallback action.
virtual Q_INVOKABLE bool isFinished() const =0
True if the query thread stopped.
~Query() override
virtual Q_INVOKABLE QString trigger() const =0
The trigger of this query.
virtual Q_INVOKABLE bool isTriggered() const =0
True if this query has a trigger.
virtual Q_INVOKABLE bool activateMatch(uint item, uint action=0)=0
Executes match a match action.
void matchesAboutToBeAdded(uint count)
Emitted before count matches are added to the matches.
void activeChanged(bool active)
Emitted when query processing started or finished.
virtual void add(const std::shared_ptr< Item > &item)=0
Copy add single item.
virtual Q_INVOKABLE const bool & isValid() const =0
True if query has not been cancelled.
virtual Q_INVOKABLE QString string() const =0
Query string excluding the trigger.
void invalidated()
Emitted when the query has been invalidated.
Definition query.h:18
std::shared_ptr< Item > item
Definition query.h:21
const Extension & extension
Definition query.h:20
Definition action.h:10