237 {
238 BookmarkBase.ScreenSettings screenSettings = bookmark.getActiveScreenSettings();
239 BookmarkBase.AdvancedSettings advanced = bookmark.getAdvancedSettings();
240 BookmarkBase.DebugSettings debug = bookmark.getDebugSettings();
241
242 String arg;
243 ArrayList<String> args = new ArrayList<>();
244
245 args.add(TAG);
246 args.add("/gdi:sw");
247
248 final String clientName = ApplicationSettingsActivity.getClientName(context);
249 if (!clientName.isEmpty())
250 {
251 args.add("/client-hostname:" + clientName);
252 }
253 String certName = "";
254 if (bookmark.getType() != BookmarkBase.TYPE_MANUAL)
255 {
256 return false;
257 }
258
259 int port = bookmark.<ManualBookmark>get().getPort();
260 String hostname = bookmark.<ManualBookmark>get().getHostname();
261
262 args.add("/v:" + hostname);
263 args.add("/port:" + port);
264
265 arg = bookmark.getUsername();
266 if (!arg.isEmpty())
267 {
268 args.add("/u:" + arg);
269 }
270 arg = bookmark.getDomain();
271 if (!arg.isEmpty())
272 {
273 args.add("/d:" + arg);
274 }
275 arg = bookmark.getPassword();
276 if (!arg.isEmpty())
277 {
278 args.add("/p:" + arg);
279 }
280
281 args.add(
282 String.format("/size:%dx%d", screenSettings.getWidth(), screenSettings.getHeight()));
283 args.add("/bpp:" + screenSettings.getColors());
284
285 if (advanced.getConsoleMode())
286 {
287 args.add("/admin");
288 }
289
290 switch (advanced.getSecurity())
291 {
292 case 3:
293 args.add("/sec:nla");
294 break;
295 case 2:
296 args.add("/sec:tls");
297 break;
298 case 1:
299 args.add("/sec:rdp");
300 break;
301 default:
302 break;
303 }
304
305 if (!certName.isEmpty())
306 {
307 args.add("/cert-name:" + certName);
308 }
309
310 BookmarkBase.PerformanceFlags flags = bookmark.getActivePerformanceFlags();
311 if (flags.getRemoteFX())
312 {
313 args.add("/rfx");
314 }
315
316 if (flags.getGfx())
317 {
318 args.add("/gfx");
319 }
320
321 if (flags.getH264() && mHasH264)
322 {
323 args.add("/gfx:AVC444");
324 }
325
326 args.add(addFlag("wallpaper", flags.getWallpaper()));
327 args.add(addFlag("window-drag", flags.getFullWindowDrag()));
328 args.add(addFlag("menu-anims", flags.getMenuAnimations()));
329 args.add(addFlag("themes", flags.getTheming()));
330 args.add(addFlag("fonts", flags.getFontSmoothing()));
331 args.add(addFlag("aero", flags.getDesktopComposition()));
332
333 if (!advanced.getRemoteProgram().isEmpty())
334 {
335 args.add("/shell:" + advanced.getRemoteProgram());
336 }
337
338 if (!advanced.getWorkDir().isEmpty())
339 {
340 args.add("/shell-dir:" + advanced.getWorkDir());
341 }
342
343 args.add(addFlag("async-channels", debug.getAsyncChannel()));
344 args.add(addFlag("async-update", debug.getAsyncUpdate()));
345
346 if (advanced.getRedirectSDCard())
347 {
348 String path = android.os.Environment.getExternalStorageDirectory().getPath();
349 args.add("/drive:sdcard," + path);
350 }
351
352 args.add("/clipboard");
353
354
355 if (bookmark.getType() == BookmarkBase.TYPE_MANUAL &&
356 bookmark.<ManualBookmark>get().getEnableGatewaySettings())
357 {
358 ManualBookmark.GatewaySettings gateway =
359 bookmark.<ManualBookmark>get().getGatewaySettings();
360
361 args.add(String.format("/g:%s:%d", gateway.getHostname(), gateway.getPort()));
362
363 arg = gateway.getUsername();
364 if (!arg.isEmpty())
365 {
366 args.add("/gu:" + arg);
367 }
368 arg = gateway.getDomain();
369 if (!arg.isEmpty())
370 {
371 args.add("/gd:" + arg);
372 }
373 arg = gateway.getPassword();
374 if (!arg.isEmpty())
375 {
376 args.add("/gp:" + arg);
377 }
378 }
379
380
381
382
383 args.add("/audio-mode:" + advanced.getRedirectSound());
384 if (advanced.getRedirectSound() == 0)
385 {
386 args.add("/sound");
387 }
388
389 if (advanced.getRedirectMicrophone())
390 {
391 args.add("/microphone");
392 }
393
394 args.add("/kbd:unicode:on");
395 args.add("/cert:ignore");
396 args.add("/log-level:" + debug.getDebugLevel());
397 String[] arrayArgs = args.toArray(new String[0]);
398 return freerdp_parse_arguments(inst, arrayArgs);
399 }