vnewnotebookdialog.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include <QtWidgets>
  2. #include <QDir>
  3. #include "vnewnotebookdialog.h"
  4. VNewNotebookDialog::VNewNotebookDialog(const QString &title, const QString &info,
  5. const QString &defaultName, const QString &defaultPath,
  6. QWidget *parent)
  7. : QDialog(parent), infoLabel(NULL),
  8. title(title), info(info), defaultName(defaultName), defaultPath(defaultPath)
  9. {
  10. setupUI();
  11. connect(nameEdit, &QLineEdit::textChanged, this, &VNewNotebookDialog::enableOkButton);
  12. connect(pathEdit, &QLineEdit::textChanged, this, &VNewNotebookDialog::enableOkButton);
  13. connect(browseBtn, &QPushButton::clicked, this, &VNewNotebookDialog::handleBrowseBtnClicked);
  14. connect(okBtn, &QPushButton::clicked, this, &VNewNotebookDialog::accept);
  15. connect(cancelBtn, &QPushButton::clicked, this, &VNewNotebookDialog::reject);
  16. enableOkButton();
  17. }
  18. void VNewNotebookDialog::setupUI()
  19. {
  20. if (!info.isEmpty()) {
  21. infoLabel = new QLabel(info);
  22. }
  23. nameLabel = new QLabel(tr("&Name"));
  24. nameEdit = new QLineEdit(defaultName);
  25. nameEdit->selectAll();
  26. nameLabel->setBuddy(nameEdit);
  27. QLabel *pathLabel = new QLabel(tr("&Path"));
  28. pathEdit = new QLineEdit(defaultPath);
  29. pathLabel->setBuddy(pathEdit);
  30. browseBtn = new QPushButton(tr("&Browse"));
  31. QHBoxLayout *pathLayout = new QHBoxLayout();
  32. pathLayout->addWidget(pathEdit);
  33. pathLayout->addWidget(browseBtn);
  34. okBtn = new QPushButton(tr("&OK"));
  35. okBtn->setDefault(true);
  36. cancelBtn = new QPushButton(tr("&Cancel"));
  37. QVBoxLayout *topLayout = new QVBoxLayout();
  38. if (infoLabel) {
  39. topLayout->addWidget(infoLabel);
  40. }
  41. topLayout->addWidget(nameLabel);
  42. topLayout->addWidget(nameEdit);
  43. topLayout->addWidget(pathLabel);
  44. topLayout->addLayout(pathLayout);
  45. QHBoxLayout *btmLayout = new QHBoxLayout();
  46. btmLayout->addStretch();
  47. btmLayout->addWidget(okBtn);
  48. btmLayout->addWidget(cancelBtn);
  49. QVBoxLayout *mainLayout = new QVBoxLayout();
  50. mainLayout->addLayout(topLayout);
  51. mainLayout->addLayout(btmLayout);
  52. setLayout(mainLayout);
  53. setWindowTitle(title);
  54. }
  55. void VNewNotebookDialog::enableOkButton()
  56. {
  57. okBtn->setEnabled(!pathEdit->text().isEmpty() && !nameEdit->text().isEmpty());
  58. }
  59. QString VNewNotebookDialog::getNameInput() const
  60. {
  61. return nameEdit->text();
  62. }
  63. QString VNewNotebookDialog::getPathInput() const
  64. {
  65. return pathEdit->text();
  66. }
  67. void VNewNotebookDialog::handleBrowseBtnClicked()
  68. {
  69. QString dirPath = QFileDialog::getExistingDirectory(this, tr("Select a directory as the path of the notebook"),
  70. QDir::homePath(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
  71. pathEdit->setText(dirPath);
  72. }