Expose phone busy event to desktop call interface

This commit is contained in:
evgeny committed 2026-10-19 14:54:01 +02:00
1 parent 6a4a0f45d8
commit b68116eedf
3 files changed
+11 -1

No files matched your search

+2 -1
View File
@@ -18,7 +18,7 @@ class CallVideoWindow;
class CallWindow : public QWidget { class CallWindow : public QWidget {
Q_OBJECT Q_OBJECT
public: public:
enum State { Outgoing, Ringing, Incoming, Active, Ended }; enum State { Outgoing, Ringing, Incoming, Active, Ended, WaitDecision };
explicit CallWindow(QWidget* parent = nullptr); explicit CallWindow(QWidget* parent = nullptr);
~CallWindow() override; ~CallWindow() override;
@@ -78,6 +78,7 @@ private:
QLabel* m_connectionLabel; QLabel* m_connectionLabel;
QLabel* m_statsLabel; QLabel* m_statsLabel;
QPushButton* m_acceptBtn; QPushButton* m_acceptBtn;
QPushButton* m_continueBtn; /* явное разрешение начать вызов занятого телефона */
QPushButton* m_declineBtn; QPushButton* m_declineBtn;
QPushButton* m_hangupBtn; QPushButton* m_hangupBtn;
QPushButton* m_muteBtn; QPushButton* m_muteBtn;
+1
View File
@@ -201,6 +201,7 @@ void gui_bridge_set_call_incoming_cb(gui_call_incoming_fn cb);
/* Callback для звонкового события с call_id (ringing/accepted) */ /* Callback для звонкового события с call_id (ringing/accepted) */
typedef void (*gui_call_id_fn)(uint64_t call_id); typedef void (*gui_call_id_fn)(uint64_t call_id);
void gui_bridge_set_call_ringing_cb(gui_call_id_fn cb); void gui_bridge_set_call_ringing_cb(gui_call_id_fn cb);
void gui_bridge_set_call_phone_busy_cb(gui_call_id_fn cb);
void gui_bridge_set_call_accepted_cb(gui_call_id_fn cb); void gui_bridge_set_call_accepted_cb(gui_call_id_fn cb);
/* Callback для завершения/отклонения звонка (вызывается из GUI-потока) */ /* Callback для завершения/отклонения звонка (вызывается из GUI-потока) */
@@ -58,6 +58,7 @@ static gui_local_event_fn g_local_invite_cb = nullptr;
static gui_local_event_fn g_local_delivery_cb = nullptr; static gui_local_event_fn g_local_delivery_cb = nullptr;
static gui_call_incoming_fn g_call_incoming_cb = nullptr; static gui_call_incoming_fn g_call_incoming_cb = nullptr;
static gui_call_id_fn g_call_ringing_cb = nullptr; static gui_call_id_fn g_call_ringing_cb = nullptr;
static gui_call_id_fn g_call_phone_busy_cb = nullptr;
static gui_call_id_fn g_call_accepted_cb = nullptr; static gui_call_id_fn g_call_accepted_cb = nullptr;
static gui_call_ended_fn g_call_ended_cb = nullptr; static gui_call_ended_fn g_call_ended_cb = nullptr;
static gui_call_ended_fn g_call_declined_cb = nullptr; static gui_call_ended_fn g_call_declined_cb = nullptr;
@@ -375,6 +376,12 @@ void GuiBridgeReceiver::processPost(int eventType, QByteArray data) {
if (g_call_ringing_cb) g_call_ringing_cb(callId); if (g_call_ringing_cb) g_call_ringing_cb(callId);
} }
break; break;
case CHAT_EVT_CALL_PHONE_BUSY:
if (dlen == 9) {
uint64_t callId; memcpy(&callId, d, 8);
if (g_call_phone_busy_cb) g_call_phone_busy_cb(callId);
} else DEBUG_WARN(DEBUG_CATEGORY_CALL, "gui_bridge: invalid PHONE_BUSY bytes=%d", dlen);
break;
case GUI_EVT_CALL_ACCEPTED: case GUI_EVT_CALL_ACCEPTED:
if (dlen >= 8) { if (dlen >= 8) {
uint64_t callId; memcpy(&callId, d, 8); uint64_t callId; memcpy(&callId, d, 8);
@@ -604,6 +611,7 @@ void gui_bridge_set_call_incoming_cb(gui_call_incoming_fn cb) {
void gui_bridge_set_call_ringing_cb(gui_call_id_fn cb) { void gui_bridge_set_call_ringing_cb(gui_call_id_fn cb) {
g_call_ringing_cb = cb; g_call_ringing_cb = cb;
} }
void gui_bridge_set_call_phone_busy_cb(gui_call_id_fn cb) { g_call_phone_busy_cb = cb; }
void gui_bridge_set_call_accepted_cb(gui_call_id_fn cb) { void gui_bridge_set_call_accepted_cb(gui_call_id_fn cb) {
g_call_accepted_cb = cb; g_call_accepted_cb = cb;