Albert
Loading...
Searching...
No Matches
item.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2024-2025 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{
12class Icon;
13
15class ALBERT_EXPORT Action final
16{
17public:
18
24 template<typename T1 = QString,
25 typename T2 = QString,
26 typename T3 = std::function<void()>>
27 Action(T1 &&id_,
28 T2 &&text_,
29 T3 &&function_,
30 bool hide_on_activation_ = true) noexcept :
31 id(std::forward<T1>(id_)),
32 text(std::forward<T2>(text_)),
33 function(std::forward<T3>(function_)),
34 hide_on_activation(hide_on_activation_)
35 {}
36
38 QString id;
39
41 QString text;
42
44 std::function<void()> function;
45
48};
49
50
54class ALBERT_EXPORT Item
55{
56public:
57
58 virtual ~Item();
59
64 virtual QString id() const = 0;
65
71 virtual QString text() const = 0;
72
75 virtual QString subtext() const = 0;
76
80 virtual QString inputActionText() const;
81
87 virtual std::unique_ptr<Icon> icon() const = 0;
88
91 virtual std::vector<Action> actions() const;
92
95 {
96 public:
98 virtual void notify(const albert::Item *item) = 0;
99 protected:
100 virtual ~Observer();
101 };
102
104 virtual void addObserver(Observer *observer);
105
107 virtual void removeObserver(Observer *observer);
108
109};
110
111namespace detail
112{
113class ALBERT_EXPORT DynamicItem : public Item
114{
115public:
116
118 ~DynamicItem() override;
119
120 void dataChanged() const;
121
122 void addObserver(Observer *) override;
123 void removeObserver(Observer *) override;
124
125private:
126
127 class Private;
128 std::unique_ptr<Private> d;
129
130};
131}
132
133}
Action used by result items (Item).
Definition item.h:16
bool hide_on_activation
The activation behavior.
Definition item.h:47
QString text
The description.
Definition item.h:41
std::function< void()> function
The function executed on activation.
Definition item.h:44
QString id
The identifier.
Definition item.h:38
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:27
Interface class for item observers.
Definition item.h:95
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:55
virtual ~Item()
virtual std::unique_ptr< Icon > icon() const =0
Returns the item icon.
virtual void removeObserver(Observer *observer)
Stops 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 item actions.
virtual void addObserver(Observer *observer)
Starts notifying observer about any changes.
Definition item.h:114
void removeObserver(Observer *) override
Stops notifying observer about any changes.
void addObserver(Observer *) override
Starts notifying observer about any changes.
Albert core interface namespace.
Definition albert.h:14