You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

rdpoptionshelper.cpp 3.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #include <QSettings>
  2. #include <QList>
  3. #include <QStringList>
  4. #include "rdpoptionshelper.h"
  5. void RdpOptionsHelper::save(const RdpOptions &opt)
  6. {
  7. QString group = getGroupName(opt);
  8. QSettings set(QSettings::UserScope, "RdpOptions");
  9. set.beginGroup(group);
  10. set.setValue("host", opt.host());
  11. set.setValue("username", opt.username());
  12. set.setValue("password", QByteArray(opt.password().toStdString().c_str()).toBase64());
  13. set.setValue("fullscreen", opt.fullscreen());
  14. set.setValue("resolution", opt.resolution());
  15. set.setValue("useAllMonitors", opt.useAllMonitors());
  16. set.setValue("colors", opt.colors());
  17. set.setValue("fullscreenBar", opt.fullscreenBar());
  18. set.setValue("metaKeys", opt.metaKeys());
  19. set.setValue("useShell", opt.useShell());
  20. set.setValue("shell", opt.shell());
  21. set.setValue("shellWorkingDir", opt.shellWorkingDir());
  22. set.setValue("experience", opt.experience());
  23. set.setValue("bitmapCache", opt.bitmapCache());
  24. set.setValue("autoReconnect", opt.autoReconnect());
  25. set.setValue("keymap", opt.keymap());
  26. set.endGroup();
  27. }
  28. RdpOptions RdpOptionsHelper::load(QString group)
  29. {
  30. if (group.isEmpty())
  31. group = getDefaultName();
  32. QSettings set(QSettings::UserScope, "RdpOptions");
  33. set.beginGroup(group);
  34. RdpOptions opt;
  35. opt.setHost(set.value("host", "").toString());
  36. opt.setUsername(set.value("username", "").toString());
  37. opt.setPassword(QByteArray::fromBase64(set.value("password", "").toByteArray()));
  38. opt.setFullscreen(set.value("fullscreen", true).toBool());
  39. opt.setResolution(set.value("resolution", QSize(0, 0)).toSize());
  40. opt.setUseAllMonitors(set.value("useAllMonitors", false).toBool());
  41. opt.setColors((RdpOptions::Colors)set.value("colors", RdpOptions::HighestQuality).toInt());
  42. opt.setFullscreenBar(set.value("fullscreenBar", true).toBool());
  43. opt.setMetaKeys(set.value("metaKeys", true).toBool());
  44. opt.setUseShell(set.value("useShell", false).toBool());
  45. opt.setShell(set.value("shell", "").toString());
  46. opt.setShellWorkingDir(set.value("shellWorkingDir", "").toString());
  47. opt.setExperience((RdpOptions::Experience)set.value("experience", RdpOptions::Detect).toInt());
  48. opt.setBitmapCache(set.value("bitmapCache", true).toBool());
  49. opt.setAutoReconnect(set.value("autoReconnect", true).toBool());
  50. opt.setKeymap(set.value("keymap", "en_US").toString());
  51. set.endGroup();
  52. return opt;
  53. }
  54. void RdpOptionsHelper::remove(const RdpOptions &opt)
  55. {
  56. QString group = getGroupName(opt);
  57. QSettings set(QSettings::UserScope, "RdpOptions");
  58. set.remove(group);
  59. }
  60. QList<RdpOptions> RdpOptionsHelper::loadAll()
  61. {
  62. QSettings set(QSettings::UserScope, "RdpOptions");
  63. QList<RdpOptions> opts;
  64. opts.append(load(getDefaultName()));
  65. QStringList groups = set.childGroups();
  66. for (int i = 0; i < groups.size(); ++i)
  67. {
  68. QString group = groups.at(i);
  69. if (group != getDefaultName())
  70. opts.append(load(groups.at(i)));
  71. }
  72. return opts;
  73. }
  74. QString RdpOptionsHelper::getDefaultName()
  75. {
  76. return "__Default__";
  77. }
  78. QString RdpOptionsHelper::getGroupName(const RdpOptions &opt)
  79. {
  80. if (opt.host().isEmpty())
  81. return RdpOptionsHelper::getDefaultName();
  82. else if (opt.username().isEmpty())
  83. return opt.host();
  84. else
  85. return opt.username() + "@" + opt.host();
  86. }