Skip to content

Commit 6f8471a

Browse files
committed
feat: Add DisplayEventHandler class for handling display events with callbacks
1 parent 9a6ee91 commit 6f8471a

File tree

3 files changed

+49
-3
lines changed

3 files changed

+49
-3
lines changed

examples/display_example/main.cpp

+11-1
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,22 @@
22
#include "nativeapi.h"
33

44
using nativeapi::Display;
5-
using nativeapi::Point;
5+
using nativeapi::DisplayEventHandler;
66
using nativeapi::DisplayManager;
7+
using nativeapi::Point;
78

89
int main() {
910
DisplayManager displayManager = DisplayManager();
1011

12+
// DisplayEventHandler displayEventHandler = DisplayEventHandler(
13+
// [](const Display& display) {
14+
// std::cout << "Display added: " << display.id << std::endl;
15+
// },
16+
// [](const Display& display) {
17+
// std::cout << "Display removed: " << display.id << std::endl;
18+
// });
19+
// displayManager.AddListener(&displayEventHandler);
20+
1121
// Get primary display information
1222
Display primaryDisplay = displayManager.GetPrimary();
1323
std::cout << "Primary Display Information:" << std::endl;

src/display_manager.cpp

+18-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
#include <set>
2-
31
#include "display_manager.h"
42

53
namespace nativeapi {
@@ -25,4 +23,22 @@ void DisplayManager::NotifyDisplayRemoved(const Display& display) {
2523
}
2624
}
2725

26+
DisplayEventHandler::DisplayEventHandler(
27+
std::function<void(const Display&)> onDisplayAddedCallback,
28+
std::function<void(const Display&)> onDisplayRemovedCallback)
29+
: onDisplayAddedCallback_(onDisplayAddedCallback),
30+
onDisplayRemovedCallback_(onDisplayRemovedCallback) {}
31+
32+
void DisplayEventHandler::OnDisplayAdded(const Display& display) {
33+
if (onDisplayAddedCallback_) {
34+
onDisplayAddedCallback_(display);
35+
}
36+
}
37+
38+
void DisplayEventHandler::OnDisplayRemoved(const Display& display) {
39+
if (onDisplayRemovedCallback_) {
40+
onDisplayRemovedCallback_(display);
41+
}
42+
}
43+
2844
} // namespace nativeapi

src/display_manager.h

+20
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,24 @@ class DisplayManager {
4646
void NotifyDisplayRemoved(const Display& display);
4747
};
4848

49+
// DisplayEventHandler is an implementation of DisplayListener that uses
50+
// callbacks to handle display events.
51+
class DisplayEventHandler : public DisplayListener {
52+
public:
53+
// Constructor that takes callbacks for display events
54+
DisplayEventHandler(
55+
std::function<void(const Display&)> onDisplayAddedCallback,
56+
std::function<void(const Display&)> onDisplayRemovedCallback);
57+
58+
// Implementation of OnDisplayAdded from DisplayListener interface
59+
void OnDisplayAdded(const Display& display) override;
60+
61+
// Implementation of OnDisplayRemoved from DisplayListener interface
62+
void OnDisplayRemoved(const Display& display) override;
63+
64+
private:
65+
std::function<void(const Display&)> onDisplayAddedCallback_;
66+
std::function<void(const Display&)> onDisplayRemovedCallback_;
67+
};
68+
4969
} // namespace nativeapi

0 commit comments

Comments
 (0)