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