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