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.

maindialog.cpp 4.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. #include <QApplication>
  2. #include <QDesktopWidget>
  3. #include <QDebug>
  4. #include "maindialog.h"
  5. #include "ui_maindialog.h"
  6. #include "rdesktoplauncher.h"
  7. MainDialog::MainDialog(QWidget *parent) :
  8. QDialog(parent),
  9. ui(new Ui::MainDialog)
  10. {
  11. ui->setupUi(this);
  12. connect(ui->lineComputer->lineEdit(), SIGNAL(returnPressed()), ui->btnConnect, SLOT(animateClick()));
  13. connect(ui->lineComputer->lineEdit(), SIGNAL(textChanged(QString)), this, SLOT(textChanged(QString)));
  14. computeResolutions();
  15. ui->lineComputer->setFocus();
  16. }
  17. MainDialog::~MainDialog()
  18. {
  19. delete ui;
  20. }
  21. RdpOptions MainDialog::getRdpOptions() const
  22. {
  23. RdpOptions opt;
  24. opt.setHost(ui->lineComputer->currentText());
  25. opt.setUsername(ui->lineUsername->text());
  26. opt.setPassword(ui->linePassword->text());
  27. opt.setFullescreen(ui->slidResolution->value() == m_resolutions.size());
  28. if (!opt.fullescreen())
  29. opt.setResolution(m_resolutions.at(m_resolutions.size() - 1));
  30. opt.setUseAllMonitors(ui->checkAllDisplays->isChecked());
  31. int colors = ui->comboColors->currentIndex();
  32. RdpOptions::Colors c;
  33. if (colors == 0)
  34. c = RdpOptions::HighColor_15;
  35. else if (colors == 1)
  36. c = RdpOptions::HighColor_16;
  37. else if (colors == 2)
  38. c = RdpOptions::TrueColor;
  39. else if (colors == 3)
  40. c = RdpOptions::HighestQuality;
  41. opt.setColors(c);
  42. opt.setFullscreenBar(ui->checkFullscreenBar->isChecked());
  43. int meta = ui->comboMetaKeys->currentIndex();
  44. opt.setMetaKeys(meta == 0 || (opt.fullescreen() && meta == 2));
  45. opt.setUseShell(ui->checkShell->isChecked());
  46. if (opt.useShell())
  47. {
  48. opt.setShell(ui->lineShellPath->text());
  49. opt.setShellWorkingDir(ui->lineShellWorkingDir->text());
  50. }
  51. opt.setExperience((RdpOptions::Experience)ui->comboExperience->currentIndex());
  52. opt.setBitmapCache(ui->checkCacheBitmap->isChecked());
  53. opt.setAutoReconnect(ui->checkAutoReconnect->isChecked());
  54. return opt;
  55. }
  56. void MainDialog::setRdpOptions(const RdpOptions &opt)
  57. {
  58. ui->lineComputer->lineEdit()->setText(opt.host());
  59. ui->lineUsername->setText(opt.username());
  60. ui->linePassword->setText(opt.password());
  61. if (opt.fullescreen())
  62. {
  63. ui->slidResolution->setValue(ui->slidResolution->maximum());
  64. }
  65. else
  66. {
  67. }
  68. ui->checkAllDisplays->setChecked(opt.useAllMonitors());
  69. int index = 0;
  70. RdpOptions::Colors c = opt.colors();
  71. if (c == RdpOptions::HighColor_15)
  72. index = 0;
  73. else if (c == RdpOptions::HighColor_16)
  74. index = 1;
  75. else if (c == RdpOptions::TrueColor)
  76. index = 2;
  77. else if (c == RdpOptions::HighestQuality)
  78. index = 3;
  79. ui->comboColors->setCurrentIndex(index);
  80. ui->checkFullscreenBar->setChecked(opt.fullscreenBar());
  81. ui->comboMetaKeys->setCurrentIndex(opt.metaKeys() ? 2 : 1);
  82. ui->checkShell->setChecked(opt.useShell());
  83. ui->lineShellPath->setText(opt.shell());
  84. ui->lineShellWorkingDir->setText(opt.shellWorkingDir());
  85. ui->comboExperience->setCurrentIndex((int)opt.experience());
  86. ui->checkCacheBitmap->setChecked(opt.bitmapCache());
  87. ui->checkAutoReconnect->setChecked(opt.autoReconnect());
  88. }
  89. void MainDialog::on_btnConnect_clicked()
  90. {
  91. RdpOptions opt = getRdpOptions();
  92. RDesktopLauncher launcher;
  93. launcher.start(opt);
  94. }
  95. void MainDialog::textChanged(QString)
  96. {
  97. ui->btnConnect->setEnabled(!ui->lineComputer->lineEdit()->text().isEmpty());
  98. }
  99. void MainDialog::computeResolutions()
  100. {
  101. m_resolutions.append(QApplication::desktop()->availableGeometry().size());
  102. ui->slidResolution->setMinimum(0);
  103. ui->slidResolution->setMaximum(m_resolutions.size());
  104. ui->slidResolution->setValue(m_resolutions.size());
  105. }
  106. void MainDialog::on_slidResolution_valueChanged(int value)
  107. {
  108. if (value < m_resolutions.size())
  109. {
  110. QSize reso = m_resolutions.at(value);
  111. ui->lblResolution->setText(QString("%1x%2").arg(reso.width()).arg(reso.height()));
  112. }
  113. else
  114. {
  115. ui->lblResolution->setText(tr("Plein écran"));
  116. }
  117. }
  118. void MainDialog::on_btnSaveSession_clicked()
  119. {
  120. }
  121. void MainDialog::on_btnSaveAsSession_clicked()
  122. {
  123. }
  124. void MainDialog::on_btnOpenSession_clicked()
  125. {
  126. }