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

#include <sdl_prefs.hpp>

Public Member Functions

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

Static Public Member Functions

static std::shared_ptr< SdlPrefinstance (const std::string &name=SdlPref::get_default_file())
 
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 = {} 
)

Definition at line 90 of file sdl_prefs.cpp.

92{
93 auto item = get_item(key);
94 if (!item || !WINPR_JSON_IsArray(item))
95 return fallback;
96
97 std::vector<std::string> values;
98 for (size_t x = 0; x < WINPR_JSON_GetArraySize(item); x++)
99 {
100 auto cur = WINPR_JSON_GetArrayItem(item, x);
101 values.push_back(item_to_str(cur));
102 }
103
104 return values;
105}
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 
)

Definition at line 73 of file sdl_prefs.cpp.

74{
75 auto item = get_item(key);
76 if (!item || !WINPR_JSON_IsBool(item))
77 return fallback;
78 return WINPR_JSON_IsTrue(item);
79}
WINPR_API BOOL WINPR_JSON_IsBool(const WINPR_JSON *item)
Check if JSON item is of type BOOL.
Definition json.c:312
WINPR_API BOOL WINPR_JSON_IsTrue(const WINPR_JSON *item)
Check if JSON item is BOOL value True.
Definition json.c:297

◆ get_int()

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

Definition at line 81 of file sdl_prefs.cpp.

82{
83 auto item = get_item(key);
84 if (!item || !WINPR_JSON_IsNumber(item))
85 return fallback;
86 auto val = WINPR_JSON_GetNumberValue(item);
87 return static_cast<int64_t>(val);
88}
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 ( )

Definition at line 196 of file sdl_prefs.cpp.

197{
198 return _name;
199}

◆ get_string()

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

Definition at line 67 of file sdl_prefs.cpp.

68{
69 auto item = get_item(key);
70 return item_to_str(item, fallback);
71}

◆ instance()

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

Definition at line 188 of file sdl_prefs.cpp.

189{
190 static std::shared_ptr<SdlPref> _instance;
191 if (!_instance || (_instance->get_pref_file() != name))
192 _instance.reset(new SdlPref(name));
193 return _instance;
194}

◆ print_config_file_help()

void SdlPref::print_config_file_help ( int  version)
static

Definition at line 107 of file sdl_prefs.cpp.

108{
109#if defined(WITH_WINPR_JSON)
110 const std::string url = "https://wiki.libsdl.org/SDL" + std::to_string(version);
111 std::cout << "CONFIGURATION FILE" << std::endl;
112 std::cout << std::endl;
113 std::cout << " The SDL client supports some user defined configuration options." << std::endl;
114 std::cout << " Settings are stored in JSON format" << std::endl;
115 std::cout << " The location is a per user file. Location for current user is "
116 << SdlPref::instance()->get_pref_file() << std::endl;
117 std::cout
118 << " The XDG_CONFIG_HOME environment variable can be used to override the base directory."
119 << std::endl;
120 std::cout << std::endl;
121 std::cout << " The following configuration options are supported:" << std::endl;
122 std::cout << std::endl;
123 std::cout << " SDL_KeyModMask" << std::endl;
124 std::cout << " Defines the key combination required for SDL client shortcuts."
125 << std::endl;
126 std::cout << " Default KMOD_RSHIFT" << std::endl;
127 std::cout << " An array of SDL_Keymod strings as defined at "
128 ""
129 << url << "/SDL_Keymod" << std::endl;
130 std::cout << std::endl;
131 std::cout << " SDL_Fullscreen" << std::endl;
132 std::cout << " Toggles client fullscreen state." << std::endl;
133 std::cout << " Default SDL_SCANCODE_RETURN." << std::endl;
134 std::cout << " A string as "
135 "defined at "
136 << url << "/SDLScancodeLookup" << std::endl;
137 std::cout << std::endl;
138 std::cout << " SDL_Minimize" << std::endl;
139 std::cout << " Minimizes client windows." << std::endl;
140 std::cout << " Default SDL_SCANCODE_M." << std::endl;
141 std::cout << " A string as "
142 "defined at "
143 << url << "/SDLScancodeLookup" << std::endl;
144 std::cout << std::endl;
145 std::cout << " SDL_Resizeable" << std::endl;
146 std::cout << " Toggles local window resizeable state." << std::endl;
147 std::cout << " Default SDL_SCANCODE_R." << std::endl;
148 std::cout << " A string as "
149 "defined at "
150 << url << "/SDLScancodeLookup" << std::endl;
151 std::cout << std::endl;
152 std::cout << " SDL_Grab" << std::endl;
153 std::cout << " Toggles keyboard and mouse grab state." << std::endl;
154 std::cout << " Default SDL_SCANCODE_G." << std::endl;
155 std::cout << " A string as "
156 "defined at "
157 << url << "/SDLScancodeLookup" << std::endl;
158 std::cout << std::endl;
159 std::cout << " SDL_Disconnect" << std::endl;
160 std::cout << " Disconnects from the RDP session." << std::endl;
161 std::cout << " Default SDL_SCANCODE_D." << std::endl;
162 std::cout << " A string as defined at " << url << "/SDLScancodeLookup" << std::endl;
163#endif
164}

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