addappletdialog.cpp 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. #include "addappletdialog.h"
  2. #include "launcherdialog.h"
  3. #include "clioutputdialog.h"
  4. #include "../panes/panelspane.h"
  5. void AddAppletDialog::setPaneContents() {
  6. mContentsWidget = new QWidget();
  7. QVBoxLayout* contentsLayout = new QVBoxLayout(mContentsWidget);
  8. mContentsWidget->setObjectName("innerPane");
  9. // Adding widgets
  10. QLabel* selectAppletLabel = new QLabel(tr("Select applet from the list:"));
  11. selectAppletLabel->setFont(mTitleFont);
  12. contentsLayout->addWidget(selectAppletLabel);
  13. QListWidget* appletsListWidget = new QListWidget();
  14. appletsListWidget->setFont(mFont);
  15. QString style = QString("QListView::item:selected { "
  16. "background-color: %1; color: #ffffff; "
  17. "};").arg(getConfigValue("accent").toString());
  18. appletsListWidget->setStyleSheet(style);
  19. contentsLayout->addWidget(appletsListWidget);
  20. QHBoxLayout* buttonsLayout = new QHBoxLayout();
  21. buttonsLayout->addSpacerItem(new QSpacerItem(0, 0,
  22. QSizePolicy::MinimumExpanding,
  23. QSizePolicy::Ignored));
  24. QPushButton* cancelButton = new QPushButton(tr("Cancel"));
  25. cancelButton->setFont(mFont);
  26. buttonsLayout->addWidget(cancelButton);
  27. QPushButton* addButton = new QPushButton(tr("Add"));
  28. addButton->setFont(mFont);
  29. buttonsLayout->addWidget(addButton);
  30. contentsLayout->addLayout(buttonsLayout);
  31. // Misc
  32. QListWidgetItem* appMenuItem = new QListWidgetItem(tr("App Menu"));
  33. appMenuItem->setIcon(QIcon::fromTheme("app-launcher"));
  34. appletsListWidget->addItem(appMenuItem);
  35. QListWidgetItem* windowListItem = new QListWidgetItem(tr("Window List"));
  36. windowListItem->setIcon(QIcon::fromTheme("kwin"));
  37. appletsListWidget->addItem(windowListItem);
  38. QListWidgetItem* spacerItem = new QListWidgetItem(tr("Spacer"));
  39. spacerItem->setIcon(QIcon::fromTheme("extensions"));
  40. appletsListWidget->addItem(spacerItem);
  41. QListWidgetItem* workspacesItem = new QListWidgetItem(tr("Workspaces"));
  42. workspacesItem->setIcon(QIcon::fromTheme("cs-workspaces"));
  43. appletsListWidget->addItem(workspacesItem);
  44. QListWidgetItem* volumeItem = new QListWidgetItem(tr("Volume"));
  45. volumeItem->setIcon(QIcon::fromTheme("sound"));
  46. appletsListWidget->addItem(volumeItem);
  47. QListWidgetItem* kbLayoutItem = new QListWidgetItem(tr("Keyboard Layout"));
  48. kbLayoutItem->setIcon(QIcon::fromTheme("keyboard"));
  49. appletsListWidget->addItem(kbLayoutItem);
  50. QListWidgetItem* dateTimeItem = new QListWidgetItem(tr("Date & Time"));
  51. dateTimeItem->setIcon(QIcon::fromTheme("calendar"));
  52. appletsListWidget->addItem(dateTimeItem);
  53. QListWidgetItem* splitterItem = new QListWidgetItem(tr("Splitter"));
  54. splitterItem->setIcon(QIcon::fromTheme("extensions"));
  55. appletsListWidget->addItem(splitterItem);
  56. QListWidgetItem* userMenuItem = new QListWidgetItem(tr("User Menu"));
  57. userMenuItem->setIcon(QIcon::fromTheme("user_icon"));
  58. appletsListWidget->addItem(userMenuItem);
  59. QListWidgetItem* ipAddrItem = new QListWidgetItem(tr("Local IPv4 Address"));
  60. ipAddrItem->setIcon(QIcon::fromTheme("cs-network"));
  61. appletsListWidget->addItem(ipAddrItem);
  62. QListWidgetItem* mprisItem = new QListWidgetItem(tr("Playback Control (MPRIS)"));
  63. mprisItem->setIcon(QIcon::fromTheme("sound"));
  64. appletsListWidget->addItem(mprisItem);
  65. QListWidgetItem* launcherItem = new QListWidgetItem(tr("Launcher"));
  66. launcherItem->setIcon(QIcon::fromTheme("utilities-terminal"));
  67. appletsListWidget->addItem(launcherItem);
  68. QListWidgetItem* batteryItem = new QListWidgetItem(tr("Battery"));
  69. batteryItem->setIcon(QIcon::fromTheme("extensions"));
  70. appletsListWidget->addItem(batteryItem);
  71. QListWidgetItem* sniTrayItem = new QListWidgetItem(tr("Tray (StatusNotifierItem)"));
  72. sniTrayItem->setIcon(QIcon::fromTheme("extensions"));
  73. appletsListWidget->addItem(sniTrayItem);
  74. QListWidgetItem* cliOutputItem = new QListWidgetItem("CLI Output");
  75. cliOutputItem->setIcon(QIcon::fromTheme("utilities-terminal"));
  76. appletsListWidget->addItem(cliOutputItem);
  77. // Making connections
  78. connect(addButton, &QPushButton::clicked, this, [this, appletsListWidget]() {
  79. if (!appletsListWidget->selectedItems().isEmpty()) {
  80. if (!appletsListWidget->currentItem()->text().compare("Launcher")) {
  81. this->hide();
  82. LauncherDialog* dialog = new LauncherDialog(mCfgObj, mPanelID, true, -1, mAppletsListWidget);
  83. dialog->setPaneContents();
  84. dialog->show();
  85. }
  86. else if (!appletsListWidget->currentItem()->text().compare("CLI Output")) {
  87. this->hide();
  88. CLIOutputDialog* dialog = new CLIOutputDialog(mCfgObj, mPanelID, true, -1, mAppletsListWidget);
  89. dialog->setPaneContents();
  90. dialog->show();
  91. }
  92. else {
  93. QListWidgetItem* item = new QListWidgetItem();
  94. item->setText(appletsListWidget->currentItem()->text());
  95. item->setIcon(appletsListWidget->currentItem()->icon());
  96. mAppletsListWidget->addItem(item);
  97. mAppletsListWidget->setCurrentRow(mAppletsListWidget->count() - 1);
  98. this->hide();
  99. delete this;
  100. }
  101. }
  102. });
  103. connect(cancelButton, &QPushButton::clicked, this, [this]() {
  104. this->hide();
  105. delete this;
  106. });
  107. finalizeUI();
  108. setWindowGeometry();
  109. setTransparency(this);
  110. }
  111. AddAppletDialog::AddAppletDialog(QJsonObject* cfgObj,
  112. int panelID,
  113. QListWidget* appletsListWidget) : Dialog(cfgObj,
  114. tr("Adding applet"),
  115. "cs-applets") {
  116. mCfgObj = cfgObj;
  117. mPanelID = panelID;
  118. mAppletsListWidget = appletsListWidget;
  119. }