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

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

71{
72 auto item = get_item(key);
73 if (!item || !WINPR_JSON_IsBool(item))
74 return fallback;
75 return WINPR_JSON_IsTrue(item);
76}
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 78 of file sdl_prefs.cpp.

79{
80 auto item = get_item(key);
81 if (!item || !WINPR_JSON_IsNumber(item))
82 return fallback;
83 auto val = WINPR_JSON_GetNumberValue(item);
84 return static_cast<int64_t>(val);
85}
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 193 of file sdl_prefs.cpp.

194{
195 return _name;
196}

◆ get_string()

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

Definition at line 64 of file sdl_prefs.cpp.

65{
66 auto item = get_item(key);
67 return item_to_str(item, fallback);
68}

◆ instance()

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

Definition at line 185 of file sdl_prefs.cpp.

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

◆ print_config_file_help()

void SdlPref::print_config_file_help ( int  version)
static

Definition at line 104 of file sdl_prefs.cpp.

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

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