選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

rdpoptionshelper.cpp 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include <QSettings>
  2. #include "rdpoptionshelper.h"
  3. #include <QList>
  4. #include <QStringList>
  5. void RdpOptionsHelper::save(const RdpOptions &opt)
  6. {
  7. QString group;
  8. if (opt.host().isEmpty())
  9. group = RdpOptionsHelper::getDefaultName();
  10. else if (opt.username().isEmpty())
  11. group = opt.host();
  12. else
  13. group = opt.username() + "@" + opt.host();
  14. QSettings set(QSettings::UserScope, "RdpOptions");
  15. set.beginGroup(group);
  16. set.setValue("host", opt.host());
  17. set.setValue("username", opt.username());
  18. set.setValue("password", QByteArray(opt.password().toStdString().c_str()).toBase64());
  19. set.setValue("fullscreen", opt.fullscreen());
  20. set.setValue("resolution", opt.resolution());
  21. set.setValue("useAllMonitors", opt.useAllMonitors());
  22. set.setValue("colors", opt.colors());
  23. set.setValue("fullscreenBar", opt.fullscreenBar());
  24. set.setValue("metaKeys", opt.metaKeys());
  25. set.setValue("useShell", opt.useShell());
  26. set.setValue("shell", opt.shell());
  27. set.setValue("shellWorkingDir", opt.shellWorkingDir());
  28. set.setValue("experience", opt.experience());
  29. set.setValue("bitmapCache", opt.bitmapCache());
  30. set.setValue("autoReconnect", opt.autoReconnect());
  31. set.setValue("keymap", opt.keymap());
  32. set.endGroup();
  33. }
  34. RdpOptions RdpOptionsHelper::load(QString group)
  35. {
  36. if (group.isEmpty())
  37. group = getDefaultName();
  38. QSettings set(QSettings::UserScope, "RdpOptions");
  39. set.beginGroup(group);
  40. RdpOptions opt;
  41. opt.setHost(set.value("host", "").toString());
  42. opt.setUsername(set.value("username", "").toString());
  43. opt.setPassword(QByteArray::fromBase64(set.value("password", "").toByteArray()));
  44. opt.setFullscreen(set.value("fullscreen", true).toBool());
  45. opt.setResolution(set.value("resolution", QSize(0, 0)).toSize());
  46. opt.setUseAllMonitors(set.value("useAllMonitors", false).toBool());
  47. opt.setColors((RdpOptions::Colors)set.value("colors", RdpOptions::HighestQuality).toInt());
  48. opt.setFullscreenBar(set.value("fullscreenBar", true).toBool());
  49. opt.setMetaKeys(set.value("metaKeys", true).toBool());
  50. opt.setUseShell(set.value("useShell", false).toBool());
  51. opt.setShell(set.value("shell", "").toString());
  52. opt.setShellWorkingDir(set.value("shellWorkingDir", "").toString());
  53. opt.setExperience((RdpOptions::Experience)set.value("experience", RdpOptions::Detect).toInt());
  54. opt.setBitmapCache(set.value("bitmapCache", true).toBool());
  55. opt.setAutoReconnect(set.value("autoReconnect", true).toBool());
  56. opt.setKeymap(set.value("keymap", "en_US").toString());
  57. set.endGroup();
  58. return opt;
  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. }