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 | 37 | */ |
| 38 | 38 | |
| 39 | 39 | #include "private.h" |
| 40 | + #include <lib3270/popup.h> | |
| 40 | 41 | |
| 41 | 42 | extern "C" { |
| 42 | 43 | #include <lib3270/actions.h> |
| ... | ... | @@ -79,7 +80,7 @@ |
| 79 | 80 | namespace TN3270 { |
| 80 | 81 | |
| 81 | 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 | 85 | Local::Session * session = (Local::Session *) lib3270_get_user_data(h3270); |
| 85 | 86 | |
| ... | ... | @@ -91,35 +92,27 @@ |
| 91 | 92 | private: |
| 92 | 93 | LIB3270_NOTIFY type; |
| 93 | 94 | string title; |
| 94 | - string msg; | |
| 95 | - string description; | |
| 95 | + string summary; | |
| 96 | + string body; | |
| 96 | 97 | |
| 97 | 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 | 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 | 121 | |
| 129 | 122 | /// @brief Get event description. |
| 130 | 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
client/src/session/local/private.h
| ... | ... | @@ -48,6 +48,7 @@ |
| 48 | 48 | #include <lib3270/ipc/action.h> |
| 49 | 49 | #include <string> |
| 50 | 50 | #include <lib3270.h> |
| 51 | + #include <lib3270/popup.h> | |
| 51 | 52 | #include <stdexcept> |
| 52 | 53 | |
| 53 | 54 | using std::string; |
| ... | ... | @@ -83,7 +84,7 @@ |
| 83 | 84 | std::mutex sync; |
| 84 | 85 | |
| 85 | 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 | 89 | /// @brief Connect Handler. |
| 89 | 90 | static void connectHandler(H3270 *session, unsigned char connected); | ... | ... |