Commit 681143c5e2133eb5fe1dec67dd03aee6f56a3173
1 parent
6f106f40
Exists in
master
and in
1 other branch
Refactoring popup engine.
Showing
3 changed files
with
24 additions
and
28 deletions
Show diff stats
client/src/session/local/events.cc
@@ -37,6 +37,7 @@ | @@ -37,6 +37,7 @@ | ||
37 | */ | 37 | */ |
38 | 38 | ||
39 | #include "private.h" | 39 | #include "private.h" |
40 | + #include <lib3270/popup.h> | ||
40 | 41 | ||
41 | extern "C" { | 42 | extern "C" { |
42 | #include <lib3270/actions.h> | 43 | #include <lib3270/actions.h> |
@@ -79,7 +80,7 @@ | @@ -79,7 +80,7 @@ | ||
79 | namespace TN3270 { | 80 | namespace TN3270 { |
80 | 81 | ||
81 | /// @brief Popup Handler. | 82 | /// @brief Popup Handler. |
82 | - void Local::Session::popupHandler(H3270 *h3270, LIB3270_NOTIFY type, const char *title, const char *msg, const char *fmt, va_list arg) { | 83 | + int Local::Session::popupHandler(H3270 *h3270, const LIB3270_POPUP *popup, unsigned char wait) { |
83 | 84 | ||
84 | Local::Session * session = (Local::Session *) lib3270_get_user_data(h3270); | 85 | Local::Session * session = (Local::Session *) lib3270_get_user_data(h3270); |
85 | 86 | ||
@@ -91,35 +92,27 @@ | @@ -91,35 +92,27 @@ | ||
91 | private: | 92 | private: |
92 | LIB3270_NOTIFY type; | 93 | LIB3270_NOTIFY type; |
93 | string title; | 94 | string title; |
94 | - string msg; | ||
95 | - string description; | 95 | + string summary; |
96 | + string body; | ||
96 | 97 | ||
97 | public: | 98 | public: |
98 | - PopupEvent(LIB3270_NOTIFY type, const char *title, const char *msg, const char *fmt, va_list arg) : Event(Event::Popup) { | 99 | + PopupEvent(LIB3270_NOTIFY type, const char *title, const char *summary, const char *body) : Event(Event::Popup) { |
99 | 100 | ||
100 | this->type = type; | 101 | this->type = type; |
101 | - this->title = title; | ||
102 | - this->msg = msg; | ||
103 | 102 | ||
104 | - char * buffer = NULL; | ||
105 | -#ifdef _WIN32 | ||
106 | - if(win32_vasprintf(&buffer,fmt,arg) != -1) { | ||
107 | - this->description = buffer; | ||
108 | - free(buffer); | ||
109 | - } | ||
110 | -#else | ||
111 | - if(vasprintf(&buffer,fmt,arg) != -1) { | ||
112 | - this->description = buffer; | ||
113 | - free(buffer); | ||
114 | - } | ||
115 | -#endif | 103 | + if(title) |
104 | + this->title = title; | ||
116 | 105 | ||
117 | -#ifdef DEBUG | ||
118 | - std::cerr << "Popup:" << std::endl | ||
119 | - << "\t" << title << std::endl | ||
120 | - << "\t" << msg << std::endl | ||
121 | - << "\t" << description << std::endl; | ||
122 | -#endif // DEBUG | 106 | + if(summary) |
107 | + this->summary = summary; | ||
108 | + | ||
109 | + if(body) | ||
110 | + this->body = body; | ||
111 | + | ||
112 | + std::clog << "Popup:" << std::endl | ||
113 | + << "\t" << this->title << std::endl | ||
114 | + << "\t" << this->summary << std::endl | ||
115 | + << "\t" << this->body << std::endl; | ||
123 | 116 | ||
124 | } | 117 | } |
125 | 118 | ||
@@ -128,13 +121,15 @@ | @@ -128,13 +121,15 @@ | ||
128 | 121 | ||
129 | /// @brief Get event description. | 122 | /// @brief Get event description. |
130 | std::string toString() const override { | 123 | std::string toString() const override { |
131 | - return msg; | 124 | + return summary; |
132 | } | 125 | } |
133 | 126 | ||
134 | 127 | ||
135 | }; | 128 | }; |
136 | 129 | ||
137 | - session->fire(PopupEvent(type,title,msg,fmt,arg)); | 130 | + session->fire(PopupEvent(popup->type,popup->title,popup->summary,popup->body)); |
131 | + | ||
132 | + return ECANCELED; | ||
138 | 133 | ||
139 | } | 134 | } |
140 | 135 |
client/src/session/local/init.cc
@@ -69,7 +69,7 @@ | @@ -69,7 +69,7 @@ | ||
69 | 69 | ||
70 | this->setCharSet(charset); | 70 | this->setCharSet(charset); |
71 | 71 | ||
72 | - lib3270_set_popup_handler(this->hSession, popupHandler); | 72 | + lib3270_set_popup_handler(this->hSession, &popupHandler); |
73 | 73 | ||
74 | // Setup callbacks | 74 | // Setup callbacks |
75 | struct lib3270_session_callbacks *cbk; | 75 | struct lib3270_session_callbacks *cbk; |
client/src/session/local/private.h
@@ -48,6 +48,7 @@ | @@ -48,6 +48,7 @@ | ||
48 | #include <lib3270/ipc/action.h> | 48 | #include <lib3270/ipc/action.h> |
49 | #include <string> | 49 | #include <string> |
50 | #include <lib3270.h> | 50 | #include <lib3270.h> |
51 | + #include <lib3270/popup.h> | ||
51 | #include <stdexcept> | 52 | #include <stdexcept> |
52 | 53 | ||
53 | using std::string; | 54 | using std::string; |
@@ -83,7 +84,7 @@ | @@ -83,7 +84,7 @@ | ||
83 | std::mutex sync; | 84 | std::mutex sync; |
84 | 85 | ||
85 | /// @brief Popup Handler. | 86 | /// @brief Popup Handler. |
86 | - static void popupHandler(H3270 *session, LIB3270_NOTIFY type, const char *title, const char *msg, const char *fmt, va_list arg); | 87 | + static int popupHandler(H3270 *session, const LIB3270_POPUP *popup, unsigned char wait); |
87 | 88 | ||
88 | /// @brief Connect Handler. | 89 | /// @brief Connect Handler. |
89 | static void connectHandler(H3270 *session, unsigned char connected); | 90 | static void connectHandler(H3270 *session, unsigned char connected); |