Rabbit Remote Control 0.0.37
Loading...
Searching...
No Matches
ParameterFreeRDP.cpp
1#include "ParameterFreeRDP.h"
2
3#if HAVE_OPENSSL
4#include <openssl/tls1.h>
5#endif
6
7#include <QSettings>
8#include <QScreen>
9#include <QApplication>
10#include <QLoggingCategory>
11
12static Q_LOGGING_CATEGORY(log, "FreeRDP.Parameter")
14 : CParameterBase(parent),
15 m_nWidth(GetScreenGeometry().width()),
16 m_nHeight(GetScreenGeometry().height()),
17 m_nColorDepth(32),
18 m_bUseMultimon(false),
19 m_nReconnectInterval(0),
20 m_bShowVerifyDiaglog(true),
21 m_bRedirectionPrinter(false),
22 m_nRedirectionSound(RedirecionSoundType::Disable),
23 m_bRedirectionMicrophone(false),
24 m_bNegotiateSecurityLayer(true),
25 m_Security((Security)(Security::RDP|Security::TLS|Security::NLA)),
26 m_tlsVersion(TLS1_VERSION),
27 m_ConnectType(CONNECTION_TYPE_AUTODETECT),
28 m_PerformanceFlags(PERF_FLAG_NONE)
29{
30 m_Net.SetPort(3389);
31
32 QList<CParameterProxy::TYPE> lstType;
33 lstType << CParameterProxy::TYPE::None
34 << CParameterProxy::TYPE::SockesV5
35 << CParameterProxy::TYPE::Http;
36#if HAVE_LIBSSH
37 lstType << CParameterProxy::TYPE::SSHTunnel;
38#endif
39 m_Proxy.SetType(lstType);
40
41 m_szRedirectionSoundParameters =
42 #if defined (Q_OS_WINDOWS) || defined(Q_OS_WIN) || defined(Q_OS_WIN32) || defined(Q_OS_WINRT)
43 "sys:winmm"
44 #elif defined(Q_OS_IOS)
45 "sys:ios"
46 #elif defined (Q_OS_ANDROID)
47 "sys:opensles"
48 #elif defined (Q_OS_LINUX) || defined (Q_OS_UNIX)
49 "sys:alsa"
50 #endif
51 ;
52 m_szRedirectionMicrophoneParameters = m_szRedirectionSoundParameters;
53}
54
55int CParameterFreeRDP::OnLoad(QSettings &set)
56{
57 CParameterBase::OnLoad(set);
58
59 set.beginGroup("FreeRDP");
60 SetDomain(set.value("Domain", GetDomain()).toString());
61 SetDesktopWidth(set.value("Width", GetDesktopWidth()).toInt());
62 SetDesktopHeight(set.value("Height", GetDesktopHeight()).toInt());
63 SetColorDepth(set.value("ColorDepth", GetColorDepth()).toInt());
64 SetUseMultimon(set.value("UseMultimon", GetUseMultimon()).toBool());
65 SetReconnectInterval(set.value("ReconnectionInterval",
66 GetReconnectInterval()).toInt());
67
68 SetShowVerifyDiaglog(set.value("ShowVerifyDiaglog",
69 GetShowVerifyDiaglog()).toBool());
70
71 SetRedirectionPrinter(set.value("Redirection/Printer",
72 GetRedirectionPrinter()).toBool());
73 SetRedirectionSound(static_cast<RedirecionSoundType>(set.value("Redirection/Sound",
74 static_cast<int>(GetRedirectionSound())).toInt()));
75 SetRedirectionSoundParameters(set.value("Redirection/Sound/Parameters",
76 GetRedirectionSoundParameters()).toString());
77 SetRedirectionMicrophone(set.value("Redirection/Microphone",
78 GetRedirectionMicrophone()).toBool());
79 SetRedirectionMicrophoneParameters(set.value("Redirection/Microphone/Parameters",
80 GetRedirectionMicrophoneParameters()).toString());
81 SetRedirectionDrives(set.value("Redirection/Drive").toStringList());
82
83 SetNegotiateSecurityLayer(set.value("Security/Enable", GetNegotiateSecurityLayer()).toBool());
84 SetSecurity((Security)set.value("Security/Type", GetSecurity()).toUInt());
85 SetTlsVersion(set.value("Security/Tls/Version", GetTlsVersion()).toUInt());
86
87 set.beginGroup("Performance");
88 SetConnectType(set.value("Connect/Type", GetConnectType()).toUInt());
89 SetPerformanceFlags(set.value("Flags", GetPerformanceFlags()).toUInt());
90 set.endGroup();
91
92 set.endGroup();
93
94 return 0;
95}
96
97int CParameterFreeRDP::OnSave(QSettings &set)
98{
99 CParameterBase::OnSave(set);
100
101 set.beginGroup("FreeRDP");
102 set.setValue("Domain", GetDomain());
103 set.setValue("Width", GetDesktopWidth());
104 set.setValue("Height", GetDesktopHeight());
105 set.setValue("ColorDepth", GetColorDepth());
106 set.setValue("UseMultimon", GetUseMultimon());
107
108 set.setValue("ReconnectionInterval", GetReconnectInterval());
109 set.setValue("ShowVerifyDiaglog", GetShowVerifyDiaglog());
110
111 set.setValue("Redirection/Printer", GetRedirectionPrinter());
112 set.setValue("Redirection/Sound", static_cast<int>(GetRedirectionSound()));
113 set.setValue("Redirection/Sound/Parameters", GetRedirectionSoundParameters());
114 set.setValue("Redirection/Microphone", GetRedirectionMicrophone());
115 set.setValue("Redirection/Microphone/Parameters", GetRedirectionMicrophoneParameters());
116 set.setValue("Redirection/Drive", GetRedirectionDrives());
117
118 set.setValue("Security/Enable", GetNegotiateSecurityLayer());
119 set.setValue("Security/Type", (uint)GetSecurity());
120 set.setValue("Security/Tls/Version", GetTlsVersion());
121
122 set.beginGroup("Performance");
123 set.setValue("Connect/Type", GetConnectType());
124 set.setValue("Flags", GetPerformanceFlags());
125 set.endGroup();
126
127 set.endGroup();
128
129 return 0;
130}
131
132UINT32 CParameterFreeRDP::GetDesktopWidth() const
133{
134 return m_nWidth;
135}
136
137int CParameterFreeRDP::SetDesktopWidth(UINT32 nWidth)
138{
139 if(m_nWidth == nWidth)
140 return 0;
141 m_nWidth = nWidth;
142 SetModified(true);
143 return 0;
144}
145
146UINT32 CParameterFreeRDP::GetDesktopHeight() const
147{
148 return m_nHeight;
149}
150
151int CParameterFreeRDP::SetDesktopHeight(UINT32 nHeight)
152{
153 if(m_nHeight == nHeight)
154 return 0;
155 m_nHeight = nHeight;
156 SetModified(true);
157 return 0;
158}
159
160UINT32 CParameterFreeRDP::GetColorDepth() const
161{
162 return m_nColorDepth;
163}
164
165int CParameterFreeRDP::SetColorDepth(UINT32 color)
166{
167 if(m_nColorDepth == color)
168 return 0;
169 m_nColorDepth = color;
170 SetModified(true);
171 return 0;
172}
173
174bool CParameterFreeRDP::GetUseMultimon() const
175{
176 return m_bUseMultimon;
177}
178
179int CParameterFreeRDP::SetUseMultimon(bool bUse)
180{
181 if(m_bUseMultimon == bUse)
182 return 0;
183 m_bUseMultimon = bUse;
184 SetModified(true);
185 return 0;
186}
187
188UINT CParameterFreeRDP::GetReconnectInterval() const
189{
190 return m_nReconnectInterval;
191}
192
193void CParameterFreeRDP::SetReconnectInterval(UINT newReconnectInterval)
194{
195 if (m_nReconnectInterval == newReconnectInterval)
196 return;
197
198 m_nReconnectInterval = newReconnectInterval;
199 SetModified(true);
200 emit sigReconnectIntervalChanged();
201}
202
203bool CParameterFreeRDP::GetShowVerifyDiaglog() const
204{
205 return m_bShowVerifyDiaglog;
206}
207
208void CParameterFreeRDP::SetShowVerifyDiaglog(bool bShow)
209{
210 if(m_bShowVerifyDiaglog == bShow)
211 return;
212 m_bShowVerifyDiaglog = bShow;
213 SetModified(true);
214}
215
216CParameterFreeRDP::RedirecionSoundType CParameterFreeRDP::GetRedirectionSound() const
217{
218 return m_nRedirectionSound;
219}
220
221void CParameterFreeRDP::SetRedirectionSound(RedirecionSoundType newRedirectionSound)
222{
223 if (m_nRedirectionSound == newRedirectionSound)
224 return;
225 m_nRedirectionSound = newRedirectionSound;
226 SetModified(true);
227 emit sigRedirectionSoundChanged(m_nRedirectionSound);
228}
229
230bool CParameterFreeRDP::GetRedirectionMicrophone() const
231{
232 return m_bRedirectionMicrophone;
233}
234
235void CParameterFreeRDP::SetRedirectionMicrophone(bool newRedirectionMicrophone)
236{
237 if (m_bRedirectionMicrophone == newRedirectionMicrophone)
238 return;
239 m_bRedirectionMicrophone = newRedirectionMicrophone;
240 SetModified(true);
241 emit sigRedirectionMicrophoneChanged(m_bRedirectionMicrophone);
242}
243
244QStringList CParameterFreeRDP::GetRedirectionDrives() const
245{
246 return m_lstRedirectionDrives;
247}
248
249void CParameterFreeRDP::SetRedirectionDrives(const QStringList &newRedirectionDrive)
250{
251 if (m_lstRedirectionDrives == newRedirectionDrive)
252 return;
253 m_lstRedirectionDrives = newRedirectionDrive;
254 SetModified(true);
255 emit sigRedirectionDrivesChanged(m_lstRedirectionDrives);
256}
257
258bool CParameterFreeRDP::GetRedirectionPrinter() const
259{
260 return m_bRedirectionPrinter;
261}
262
263void CParameterFreeRDP::SetRedirectionPrinter(bool newRedirectionPrinter)
264{
265 if (m_bRedirectionPrinter == newRedirectionPrinter)
266 return;
267 m_bRedirectionPrinter = newRedirectionPrinter;
268 SetModified(true);
269 emit sigRedirectionPrinterChanged(m_bRedirectionPrinter);
270}
271
272const QString &CParameterFreeRDP::GetRedirectionSoundParameters() const
273{
274 return m_szRedirectionSoundParameters;
275}
276
277void CParameterFreeRDP::SetRedirectionSoundParameters(const QString &newRedirectionSoundParameters)
278{
279 if (m_szRedirectionSoundParameters == newRedirectionSoundParameters)
280 return;
281 m_szRedirectionSoundParameters = newRedirectionSoundParameters;
282 SetModified(true);
283 emit sigRedirectionSoundParametersChanged();
284}
285
286const QString &CParameterFreeRDP::GetRedirectionMicrophoneParameters() const
287{
288 return m_szRedirectionMicrophoneParameters;
289}
290
291void CParameterFreeRDP::SetRedirectionMicrophoneParameters(const QString &newRedirectionMicrophoneParameters)
292{
293 if (m_szRedirectionMicrophoneParameters == newRedirectionMicrophoneParameters)
294 return;
295 m_szRedirectionMicrophoneParameters = newRedirectionMicrophoneParameters;
296 SetModified(true);
297 emit sigRedirectionMicrophoneParametersChanged();
298}
299
300UINT16 CParameterFreeRDP::GetTlsVersion() const
301{
302 return m_tlsVersion;
303}
304
305void CParameterFreeRDP::SetTlsVersion(UINT16 newTlsVersion)
306{
307 if(m_tlsVersion == newTlsVersion)
308 return;
309 m_tlsVersion = newTlsVersion;
310 SetModified(true);
311}
312
313UINT32 CParameterFreeRDP::GetConnectType() const
314{
315 return m_ConnectType;
316}
317
318void CParameterFreeRDP::SetConnectType(UINT32 newConnectType)
319{
320 if(m_ConnectType == newConnectType)
321 return;
322 m_ConnectType = newConnectType;
323 SetModified(true);
324}
325
326UINT32 CParameterFreeRDP::GetPerformanceFlags() const
327{
328 return m_PerformanceFlags;
329}
330
331void CParameterFreeRDP::SetPerformanceFlags(UINT32 newPerformanceFlags)
332{
333 if(m_PerformanceFlags == newPerformanceFlags)
334 return;
335 m_PerformanceFlags = newPerformanceFlags;
336 SetModified(true);
337}
338
339bool CParameterFreeRDP::GetNegotiateSecurityLayer() const
340{
341 return m_bNegotiateSecurityLayer;
342}
343
344void CParameterFreeRDP::SetNegotiateSecurityLayer(bool newNegotiateSecurityLayer)
345{
346 if(m_bNegotiateSecurityLayer == newNegotiateSecurityLayer)
347 return;
348 m_bNegotiateSecurityLayer = newNegotiateSecurityLayer;
349 SetModified(true);
350}
351
352CParameterFreeRDP::Security CParameterFreeRDP::GetSecurity() const
353{
354 return m_Security;
355}
356
357void CParameterFreeRDP::SetSecurity(Security newSecurity)
358{
359 if(m_Security == newSecurity)
360 return;
361 m_Security = newSecurity;
362 SetModified(true);
363}
364
365void CParameterFreeRDP::SetDomain(const QString& szDomain)
366{
367 if(m_szDomain == szDomain)
368 return;
369 m_szDomain = szDomain;
370 SetModified(true);
371}
372
373const QString CParameterFreeRDP::GetDomain() const
374{
375 return m_szDomain;
376}
377
378QRect CParameterFreeRDP::GetScreenGeometry()
379{
380 QRect r;
381 QScreen* pScreen = QApplication::primaryScreen();
382 r = pScreen->geometry();
383 return r;
384}
The interface of connecter parameters.
[Declare CParameterFreeRDP]
int SetModified(bool bModified=true)
When setting parameters, if there is a modification, it is called.