From 315f3705b25caa24f334b7fd521a6651c22e83df Mon Sep 17 00:00:00 2001 From: Benoit LeBlanc Date: Mon, 15 Apr 2013 15:58:56 -0400 Subject: [PATCH] Added settings set/get functions to client API - setting setter function has internal handling. TODO: callback to client. - added missing SmartSizing param --- client/Windows/wf_interface.c | 82 +++++++++++++++++++++++++++++++++++ client/Windows/wf_interface.h | 13 ++++++ libfreerdp/common/settings.c | 8 ++++ 3 files changed, 103 insertions(+) diff --git a/client/Windows/wf_interface.c b/client/Windows/wf_interface.c index 125992021..ab558bbca 100644 --- a/client/Windows/wf_interface.c +++ b/client/Windows/wf_interface.c @@ -872,3 +872,85 @@ int freerdp_client_free(wfInfo* wfi) return 0; } + +BOOL freerdp_client_get_param_bool(wfInfo* cfi, int id) +{ + return freerdp_get_param_bool(cfi->instance->settings, id); +} + +int freerdp_client_set_param_bool(wfInfo* cfi, int id, BOOL param) +{ + int rc; + + rc = freerdp_set_param_bool(cfi->instance->settings, id, param); + + // Process callbacks here + + return rc; +} + +UINT32 freerdp_client_get_param_uint32(wfInfo* cfi, int id) +{ + return freerdp_get_param_uint32(cfi->instance->settings, id); +} + +int freerdp_client_set_param_uint32(wfInfo* cfi, int id, UINT32 param) +{ + int rc; + + rc = freerdp_set_param_uint32(cfi->instance->settings, id, param); + + // Process callbacks here + + return rc; +} + +UINT64 freerdp_client_get_param_uint64(wfInfo* cfi, int id) +{ + return freerdp_get_param_uint64(cfi->instance->settings, id); +} + +int freerdp_client_set_param_uint64(wfInfo* cfi, int id, UINT64 param) +{ + int rc; + + rc = freerdp_set_param_uint64(cfi->instance->settings, id, param); + + // Process callbacks here + + return rc; +} + +char* freerdp_client_get_param_string(wfInfo* cfi, int id) +{ + return freerdp_get_param_string(cfi->instance->settings, id); +} + +void wf_on_param_change(wfInfo* cfi, int id) +{ + RECT rect; + + // specific processing here + switch(id) + { + case FreeRDP_SmartSizing: + fprintf(stderr, "SmartSizing changed.\n"); + + GetWindowRect(cfi->hwnd, &rect); + InvalidateRect(cfi->hwnd, &rect, TRUE); + break; + } + + // trigger callback to client + +} + +int freerdp_client_set_param_string(wfInfo* cfi, int id, char* param) +{ + int rc; + rc = freerdp_set_param_string(cfi->instance->settings, id, param); + + wf_on_param_change(cfi, id); + + return rc; +} \ No newline at end of file diff --git a/client/Windows/wf_interface.h b/client/Windows/wf_interface.h index 8d933c409..b91a5274f 100644 --- a/client/Windows/wf_interface.h +++ b/client/Windows/wf_interface.h @@ -140,6 +140,19 @@ FREERDP_API int freerdp_client_set_window_size(wfInfo* cfi, int width, int heigh FREERDP_API cfInfo* freerdp_client_new(int argc, char** argv); FREERDP_API int freerdp_client_free(wfInfo* cfi); +FREERDP_API BOOL freerdp_client_get_param_bool(wfInfo* cfi, int id); +FREERDP_API int freerdp_client_set_param_bool(wfInfo* cfi, int id, BOOL param); + +FREERDP_API UINT32 freerdp_client_get_param_uint32(wfInfo* cfi, int id); +FREERDP_API int freerdp_client_set_param_uint32(wfInfo* cfi, int id, UINT32 param); + +FREERDP_API UINT64 freerdp_client_get_param_uint64(wfInfo* cfi, int id); +FREERDP_API int freerdp_client_set_param_uint64(wfInfo* cfi, int id, UINT64 param); + +FREERDP_API char* freerdp_client_get_param_string(wfInfo* cfi, int id); +FREERDP_API int freerdp_client_set_param_string(wfInfo* cfi, int id, char* param); + + #ifdef __cplusplus } #endif diff --git a/libfreerdp/common/settings.c b/libfreerdp/common/settings.c index c8a82cde8..d08078334 100644 --- a/libfreerdp/common/settings.c +++ b/libfreerdp/common/settings.c @@ -513,6 +513,10 @@ BOOL freerdp_get_param_bool(rdpSettings* settings, int id) return settings->Decorations; break; + case FreeRDP_SmartSizing: + return settings->SmartSizing; + break; + case FreeRDP_MouseMotion: return settings->MouseMotion; break; @@ -949,6 +953,10 @@ int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param) settings->Decorations = param; break; + case FreeRDP_SmartSizing: + settings->SmartSizing = param; + break; + case FreeRDP_MouseMotion: settings->MouseMotion = param; break;