Albert
Loading...
Searching...
No Matches
item.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 <QStringList>
6#include <albert/export.h>
7#include <functional>
8#include <vector>
9
10namespace albert
11{
12
14class ALBERT_EXPORT Action final
15{
16public:
17
23 template<typename T1 = QString,
24 typename T2 = QString,
25 typename T3 = std::function<void()>>
26 Action(T1 &&id_,
27 T2 &&text_,
28 T3 &&function_,
29 bool hide_on_activation_ = true) noexcept :
30 id(std::forward<T1>(id_)),
31 text(std::forward<T2>(text_)),
32 function(std::forward<T3>(function_)),
33 hide_on_activation(hide_on_activation_)
34 {}
35
37 QString id;
38
40 QString text;
41
43 std::function<void()> function;
44
47};
48
49
53class ALBERT_EXPORT Item
54{
55public:
56
57 virtual ~Item();
58
63 virtual QString id() const = 0;
64
70 virtual QString text() const = 0;
71
74 virtual QString subtext() const = 0;
75
78 virtual QStringList iconUrls() const = 0;
79
83 virtual QString inputActionText() const;
84
87 virtual std::vector<Action> actions() const;
88
91 {
92 public:
94 virtual void notify(const albert::Item *item) = 0;
95 protected:
96 virtual ~Observer();
97 };
98
100 virtual void addObserver(Observer *observer);
101
103 virtual void removeObserver(Observer *observer);
104
105};
106
107namespace detail
108{
109class ALBERT_EXPORT DynamicItem : public Item
110{
111public:
112
114 ~DynamicItem() override;
115
116 void dataChanged() const;
117
118 void addObserver(Observer *) override;
119 void removeObserver(Observer *) override;
120
121private:
122
123 class Private;
124 std::unique_ptr<Private> d;
125
126};
127}
128
129}
Action used by result items (Item).
Definition item.h:15
bool hide_on_activation
The activation behavior.
Definition item.h:46
QString text
The description.
Definition item.h:40
std::function< void()> function
The function executed on activation.
Definition item.h:43
QString id
The identifier.
Definition item.h:37
Action(T1 &&id_, T2 &&text_, T3 &&function_, bool hide_on_activation_=true) noexcept
Constructs an Action with the contents initialized with the data passed.
Definition item.h:26
Interface class for item observers.
Definition item.h:91
virtual void notify(const albert::Item *item)=0
Notifies the observer about any changes in item.
Result items displayed in the query results list.
Definition item.h:54
virtual ~Item()
virtual void removeObserver(Observer *observer)
Stop notifying observer about any changes.
virtual QString subtext() const =0
Returns the item subtext.
virtual QString id() const =0
Returns the item identifier.
virtual QString inputActionText() const
Returns the input action text.
virtual QString text() const =0
Returns the item text.
virtual std::vector< Action > actions() const
Returns the item actions.
virtual void addObserver(Observer *observer)
Start notifying observer about any changes.
virtual QStringList iconUrls() const =0
Returns the items icon urls.
Definition item.h:110
void removeObserver(Observer *) override
Stop notifying observer about any changes.
void addObserver(Observer *) override
Start notifying observer about any changes.
Albert core interface namespace.
Definition albert.h:14