layoutadddialog.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #include "layoutadddialog.h"
  2. void LayoutAddDialog::setPaneContents() {
  3. mContentsWidget = new QWidget();
  4. QVBoxLayout* contentsLayout = new QVBoxLayout(mContentsWidget);
  5. mContentsWidget->setObjectName("innerPane");
  6. // Adding widgets
  7. QLabel* selectLayoutLabel = new QLabel(tr("Select layout from the list:"));
  8. selectLayoutLabel->setFont(mTitleFont);
  9. contentsLayout->addWidget(selectLayoutLabel);
  10. QListWidget* layoutsListWidget = new QListWidget();
  11. layoutsListWidget->setFont(mFont);
  12. QString style = QString("QListView::item:selected { "
  13. "background-color: %1; color: #ffffff; "
  14. "};").arg(getConfigValue("accent").toString());
  15. layoutsListWidget->setStyleSheet(style);
  16. contentsLayout->addWidget(layoutsListWidget);
  17. QHBoxLayout* buttonsLayout = new QHBoxLayout();
  18. buttonsLayout->addSpacerItem(new QSpacerItem(0, 0,
  19. QSizePolicy::MinimumExpanding,
  20. QSizePolicy::Ignored));
  21. QPushButton* cancelButton = new QPushButton(tr("Cancel"));
  22. cancelButton->setFont(mFont);
  23. buttonsLayout->addWidget(cancelButton);
  24. QPushButton* addButton = new QPushButton(tr("Add"));
  25. addButton->setFont(mFont);
  26. buttonsLayout->addWidget(addButton);
  27. contentsLayout->addLayout(buttonsLayout);
  28. // Misc
  29. QFile layoutsFile("/usr/share/plainDE/layouts.json");
  30. layoutsFile.open(QIODevice::ReadOnly | QIODevice::Text);
  31. QString layoutsData = layoutsFile.readAll();
  32. layoutsFile.close();
  33. mLayouts = QJsonDocument::fromJson(layoutsData.toUtf8()).object().toVariantMap();
  34. foreach (QVariant layout, mLayouts.keys()) {
  35. QString flagPath = QString("/usr/share/flags/%1.png").arg(mLayouts[layout.toString()].toString());
  36. QListWidgetItem* item = new QListWidgetItem(QIcon(flagPath), layout.toString());
  37. layoutsListWidget->addItem(item);
  38. }
  39. // Making connections
  40. connect(cancelButton, &QPushButton::clicked, this, [this]() {
  41. this->hide();
  42. delete this;
  43. });
  44. connect(addButton, &QPushButton::clicked, this, [this, layoutsListWidget]() {
  45. if (!layoutsListWidget->selectedItems().isEmpty()) {
  46. foreach (QListWidgetItem* selItem, layoutsListWidget->selectedItems()) {
  47. QString layoutCode = mLayouts[selItem->text()].toString();
  48. QString flagPath = QString("/usr/share/flags/%1.png").arg(layoutCode);
  49. QListWidgetItem* item = new QListWidgetItem(selItem->text());
  50. item->setIcon(QIcon(flagPath));
  51. mActiveLayoutsListWidget->addItem(item);
  52. }
  53. this->hide();
  54. delete this;
  55. }
  56. });
  57. finalizeUI();
  58. setWindowGeometry();
  59. if (getConfigValue("theme").toString().contains("transparent")) {
  60. setTransparency(this);
  61. }
  62. }
  63. LayoutAddDialog::LayoutAddDialog(QJsonObject* cfgObj,
  64. QListWidget* activeLayoutsListWidget) : Dialog(cfgObj,
  65. tr("Layout Selection"),
  66. "cs-keyboard") {
  67. mActiveLayoutsListWidget = activeLayoutsListWidget;
  68. }