FreeRDP
Loading...
Searching...
No Matches
SdlPref Class Reference

#include <sdl_prefs.hpp>

Public Member Functions

std::string get_pref_file (bool systemConfigOnly=false) const
 
std::string get_string (const std::string &key, const std::string &fallback="", bool systemConfigOnly=false) const
 
int64_t get_int (const std::string &key, int64_t fallback=0, bool systemConfigOnly=false) const
 
bool get_bool (const std::string &key, bool fallback=false, bool systemConfigOnly=false) const
 
std::vector< std::string > get_array (const std::string &key, const std::vector< std::string > &fallback={}, bool systemConfigOnly=false) const
 

Static Public Member Functions

static std::shared_ptr< SdlPrefinstance (const std::string &name=SdlPref::get_default_file(false))
 
static void print_config_file_help (int version)
 

Detailed Description

FreeRDP: A Remote Desktop Protocol Implementation SDL Prefs

Copyright 2022 Armin Novak armin.nosp@m..nov.nosp@m.ak@th.nosp@m.inca.nosp@m.st.co.nosp@m.m

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Definition at line 27 of file sdl_prefs.hpp.

Member Function Documentation

◆ get_array()

std::vector< std::string > SdlPref::get_array ( const std::string &  key,
const std::vector< std::string > &  fallback = {},
bool  systemConfigOnly = false 
) const

Definition at line 120 of file sdl_prefs.cpp.

123{
124 auto item = get_item(key, systemConfigOnly);
125 if (!item || !WINPR_JSON_IsArray(item))
126 return fallback;
127
128 std::vector<std::string> values;
129 for (size_t x = 0; x < WINPR_JSON_GetArraySize(item); x++)
130 {
131 auto cur = WINPR_JSON_GetArrayItem(item, x);
132 values.push_back(item_to_str(cur));
133 }
134
135 return values;
136}
WINPR_API WINPR_JSON * WINPR_JSON_GetArrayItem(const WINPR_JSON *array, size_t index)
Return a pointer to an item in the array.
Definition c-json.c:108
WINPR_API size_t WINPR_JSON_GetArraySize(const WINPR_JSON *array)
Get the number of arrayitems from an array.
Definition c-json.c:114
WINPR_API BOOL WINPR_JSON_IsArray(const WINPR_JSON *item)
Check if JSON item is of type Array.
Definition c-json.c:187

◆ get_bool()

bool SdlPref::get_bool ( const std::string &  key,
bool  fallback = false,
bool  systemConfigOnly = false 
) const

Definition at line 105 of file sdl_prefs.cpp.

106{
107 auto& config = systemConfigOnly ? _system_config : _config;
108 return get_bool(config, key, fallback);
109}

◆ get_int()

int64_t SdlPref::get_int ( const std::string &  key,
int64_t  fallback = 0,
bool  systemConfigOnly = false 
) const

Definition at line 111 of file sdl_prefs.cpp.

112{
113 auto item = get_item(key, systemConfigOnly);
114 if (!item || !WINPR_JSON_IsNumber(item))
115 return fallback;
116 auto val = WINPR_JSON_GetNumberValue(item);
117 return static_cast<int64_t>(val);
118}
WINPR_API double WINPR_JSON_GetNumberValue(const WINPR_JSON *item)
Return the Number value of a JSON item.
Definition c-json.c:147
WINPR_API BOOL WINPR_JSON_IsNumber(const WINPR_JSON *item)
Check if JSON item is of type Number.
Definition c-json.c:177

◆ get_pref_file()

std::string SdlPref::get_pref_file ( bool  systemConfigOnly = false) const

Definition at line 237 of file sdl_prefs.cpp.

238{
239 if (systemConfigOnly)
240 return _system_name;
241
242 return _name;
243}

◆ get_string()

std::string SdlPref::get_string ( const std::string &  key,
const std::string &  fallback = "",
bool  systemConfigOnly = false 
) const

Definition at line 98 of file sdl_prefs.cpp.

100{
101 auto item = get_item(key, systemConfigOnly);
102 return item_to_str(item, fallback);
103}

◆ instance()

std::shared_ptr< SdlPref > SdlPref::instance ( const std::string &  name = SdlPref::get_default_file(false))
static

Definition at line 229 of file sdl_prefs.cpp.

230{
231 static std::shared_ptr<SdlPref> _instance;
232 if (!_instance || (_instance->get_pref_file() != name))
233 _instance.reset(new SdlPref(name));
234 return _instance;
235}

◆ print_config_file_help()

void SdlPref::print_config_file_help ( int  version)
static

Definition at line 138 of file sdl_prefs.cpp.

139{
140#if defined(WITH_WINPR_JSON)
141 const std::string url = "https://wiki.libsdl.org/SDL" + std::to_string(version);
142 std::cout << "GLOBAL CONFIGURATION FILE" << std::endl;
143 std::cout << std::endl;
144 std::cout << " The SDL client supports some system defined configuration options."
145 << std::endl;
146 std::cout << " Settings are stored in JSON format" << std::endl;
147 std::cout << " The location is a system configuration file. Location for current machine is "
148 << SdlPref::instance()->get_pref_file(true) << std::endl;
149 std::cout << std::endl;
150 std::cout << " The following configuration options are supported:" << std::endl;
151 std::cout << std::endl;
152 std::cout << " isUserConfigEnabled" << std::endl;
153 std::cout << " Allows to enable/disable user specific configuration files." << std::endl;
154 std::cout << " Default enabled" << std::endl;
155 std::cout << std::endl;
156 std::cout << " All options of the following user configuration file are also supported here."
157 << std::endl;
158 std::cout << std::endl;
159
160 std::cout << "CONFIGURATION FILE" << std::endl;
161 std::cout << std::endl;
162 std::cout << " The SDL client supports some user defined configuration options." << std::endl;
163 std::cout << " Settings are stored in JSON format" << std::endl;
164 std::cout << " The location is a per user file. Location for current user is "
165 << SdlPref::instance()->get_pref_file() << std::endl;
166 std::cout
167 << " The XDG_CONFIG_HOME environment variable can be used to override the base directory."
168 << std::endl;
169 std::cout << std::endl;
170 std::cout << " The following configuration options are supported:" << std::endl;
171 std::cout << std::endl;
172 std::cout << " SDL_KeyModMask" << std::endl;
173 std::cout << " Defines the key combination required for SDL client shortcuts."
174 << std::endl;
175 std::cout << " Default KMOD_RSHIFT" << std::endl;
176 std::cout << " An array of SDL_Keymod strings as defined at "
177 ""
178 << url << "/SDL_Keymod" << std::endl;
179 std::cout << std::endl;
180 std::cout << " SDL_Fullscreen" << std::endl;
181 std::cout << " Toggles client fullscreen state." << std::endl;
182 std::cout << " Default SDL_SCANCODE_RETURN." << std::endl;
183 std::cout << " A string as "
184 "defined at "
185 << url << "/SDLScancodeLookup" << std::endl;
186 std::cout << std::endl;
187 std::cout << " SDL_Minimize" << std::endl;
188 std::cout << " Minimizes client windows." << std::endl;
189 std::cout << " Default SDL_SCANCODE_M." << std::endl;
190 std::cout << " A string as "
191 "defined at "
192 << url << "/SDLScancodeLookup" << std::endl;
193 std::cout << std::endl;
194 std::cout << " SDL_Resizeable" << std::endl;
195 std::cout << " Toggles local window resizeable state." << std::endl;
196 std::cout << " Default SDL_SCANCODE_R." << std::endl;
197 std::cout << " A string as "
198 "defined at "
199 << url << "/SDLScancodeLookup" << std::endl;
200 std::cout << std::endl;
201 std::cout << " SDL_Grab" << std::endl;
202 std::cout << " Toggles keyboard and mouse grab state." << std::endl;
203 std::cout << " Default SDL_SCANCODE_G." << std::endl;
204 std::cout << " A string as "
205 "defined at "
206 << url << "/SDLScancodeLookup" << std::endl;
207 std::cout << std::endl;
208 std::cout << " SDL_Disconnect" << std::endl;
209 std::cout << " Disconnects from the RDP session." << std::endl;
210 std::cout << " Default SDL_SCANCODE_D." << std::endl;
211 std::cout << " A string as defined at " << url << "/SDLScancodeLookup" << std::endl;
212
213#endif
214}

The documentation for this class was generated from the following files: