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 119 of file sdl_prefs.cpp.

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

◆ get_bool()

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

Definition at line 104 of file sdl_prefs.cpp.

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

◆ get_int()

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

Definition at line 110 of file sdl_prefs.cpp.

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

◆ get_pref_file()

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

Definition at line 247 of file sdl_prefs.cpp.

248{
249 if (systemConfigOnly)
250 return _system_name;
251
252 return _name;
253}

◆ get_string()

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

Definition at line 97 of file sdl_prefs.cpp.

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

◆ instance()

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

Definition at line 239 of file sdl_prefs.cpp.

240{
241 static std::shared_ptr<SdlPref> _instance;
242 if (!_instance || (_instance->get_pref_file() != name))
243 _instance.reset(new SdlPref(name));
244 return _instance;
245}

◆ print_config_file_help()

void SdlPref::print_config_file_help ( int  version)
static

Definition at line 137 of file sdl_prefs.cpp.

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

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