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