diff --git a/sources/awesome-widget/awesome-widget.h b/sources/awesome-widget/awesome-widget.h index fa6999a..5c3ddb8 100644 --- a/sources/awesome-widget/awesome-widget.h +++ b/sources/awesome-widget/awesome-widget.h @@ -82,10 +82,9 @@ private slots: void addBar(); void addCustomScript(); void addNewPkgCommand(QTableWidgetItem *item); - void contextMenuCustomCommand(const QPoint pos); void contextMenuPkgCommand(const QPoint pos); void editBar(QListWidgetItem *item); - void editCustomCommand(const int row, const int column); + void editCustomCommand(QListWidgetItem *item); void editFanItem(QListWidgetItem *item); void editHddItem(QListWidgetItem *item); void editHddSpeedItem(QListWidgetItem *item); diff --git a/sources/awesome-widget/configuration.cpp b/sources/awesome-widget/configuration.cpp index cfc9fa4..ef15fa4 100644 --- a/sources/awesome-widget/configuration.cpp +++ b/sources/awesome-widget/configuration.cpp @@ -366,40 +366,10 @@ void AwesomeWidget::createConfigurationInterface(KConfigDialog *parent) // dataengine QMap deSettings = readDataEngineConfiguration(); uiDEConfig.lineEdit_acpi->setText(deSettings[QString("ACPIPATH")]); - uiDEConfig.tableWidget_customCommand->clear(); QList externalScripts = initScripts(); - uiDEConfig.tableWidget_customCommand->setRowCount(externalScripts.count()); - headerList.clear(); - headerList.append(i18n("Name")); - headerList.append(i18n("Interval")); - headerList.append(i18n("Output")); - headerList.append(i18n("Prefix")); - headerList.append(i18n("Redirect")); - uiDEConfig.tableWidget_customCommand->setHorizontalHeaderLabels(headerList); - uiDEConfig.tableWidget_customCommand->horizontalHeader()->setResizeMode(QHeaderView::Stretch); - for (int i=0; igetName()); - name->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled | Qt::ItemIsEnabled); - if (externalScripts[i]->isActive()) - name->setCheckState(Qt::Checked); - else - name->setCheckState(Qt::Unchecked); - uiDEConfig.tableWidget_customCommand->setItem(i, 0, name); - uiDEConfig.tableWidget_customCommand->setItem(i, 1, new QTableWidgetItem(QString::number(externalScripts[i]->getInterval()))); - QTableWidgetItem *output = new QTableWidgetItem(); - if (externalScripts[i]->hasOutput()) - output->setCheckState(Qt::Checked); - else - output->setCheckState(Qt::Unchecked); - uiDEConfig.tableWidget_customCommand->setItem(i, 2, output); - uiDEConfig.tableWidget_customCommand->setItem(i, 3, new QTableWidgetItem(externalScripts[i]->getPrefix())); - QComboBox *redirect = new QComboBox(); - redirect->addItem(QString("out2err")); - redirect->addItem(QString("nothing")); - redirect->addItem(QString("err2out")); - redirect->setCurrentIndex(externalScripts[i]->getRedirect() + 1); - uiDEConfig.tableWidget_customCommand->setCellWidget(i, 4, redirect); - } + uiDEConfig.listWidget_custom->clear(); + for (int i=0; iaddItem(new QListWidgetItem(externalScripts[i]->getFileName())); externalScripts.clear(); uiDEConfig.comboBox_gpudev->setCurrentIndex( uiDEConfig.comboBox_gpudev->findText(deSettings[QString("GPUDEV")], Qt::MatchFixedString)); @@ -479,15 +449,14 @@ void AwesomeWidget::createConfigurationInterface(KConfigDialog *parent) this, SLOT(editTempItem(QListWidgetItem *))); connect(uiAdvancedConfig.listWidget_bars, SIGNAL(itemActivated(QListWidgetItem *)), this, SLOT(editBar(QListWidgetItem *))); - connect(uiDEConfig.tableWidget_customCommand, SIGNAL(cellDoubleClicked(int, int)), - this, SLOT(editCustomCommand(int, int))); - connect(uiDEConfig.tableWidget_customCommand, SIGNAL(customContextMenuRequested(QPoint)), - this, SLOT(contextMenuCustomCommand(QPoint))); + connect(uiDEConfig.listWidget_custom, SIGNAL(itemActivated(QListWidgetItem *)), + this, SLOT(editCustomCommand(QListWidgetItem *))); connect(uiDEConfig.tableWidget_pkgCommand, SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(addNewPkgCommand(QTableWidgetItem *))); connect(uiDEConfig.tableWidget_pkgCommand, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextMenuPkgCommand(QPoint))); connect(uiAdvancedConfig.pushButton_bars, SIGNAL(clicked(bool)), this, SLOT(addBar())); + connect(uiDEConfig.pushButton_custom, SIGNAL(clicked(bool)), this, SLOT(addCustomScript())); connect(uiWidConfig.pushButton_tags, SIGNAL(clicked(bool)), this, SLOT(setFormating())); connect(uiWidConfig.pushButton_br, SIGNAL(clicked(bool)), this, SLOT(setFormating())); connect(uiWidConfig.pushButton_font, SIGNAL(clicked(bool)), this, SLOT(setFontFormating())); @@ -583,24 +552,6 @@ void AwesomeWidget::configAccepted() // dataengine QMap deSettings; deSettings[QString("ACPIPATH")] = uiDEConfig.lineEdit_acpi->text(); - QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_engine_extsysmon/scripts"); - for (int i=0; irowCount(); i++) { - ExtScript *script = new ExtScript(0, uiDEConfig.tableWidget_customCommand->item(i, 0)->text(), dirs, debug); - if (uiDEConfig.tableWidget_customCommand->item(i, 0)->checkState() == Qt::Checked) - script->setActive(true); - else - script->setActive(false); - script->setInterval(uiDEConfig.tableWidget_customCommand->item(i, 1)->text().toInt()); - if (uiDEConfig.tableWidget_customCommand->item(i, 2)->checkState() == Qt::Checked) - script->setHasOutput(true); - else - script->setHasOutput(false); - script->setPrefix(uiDEConfig.tableWidget_customCommand->item(i, 3)->text()); - int redirect = ((QComboBox *)uiDEConfig.tableWidget_customCommand->cellWidget(i, 4))->currentIndex() - 1; - script->setRedirect((ExtScript::Redirect)redirect); - script->writeConfiguration(); - delete script; - } deSettings[QString("GPUDEV")] = uiDEConfig.comboBox_gpudev->currentText(); deSettings[QString("HDDDEV")] = uiDEConfig.comboBox_hdddev->currentText(); deSettings[QString("HDDTEMPCMD")] = uiDEConfig.lineEdit_hddtempCmd->text(); @@ -783,50 +734,15 @@ void AwesomeWidget::addCustomScript() { if (debug) qDebug() << PDEBUG; - QString name = QInputDialog::getText(0, i18n("Enter script name"), - i18n("Name")); - if (name.isEmpty()) return; - QString localDir = KGlobal::dirs()->locateLocal("data", "plasma_engine_extsysmon/scripts"); + QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_applet_awesome-widget/desktops"); + bool ok; + QString name = QInputDialog::getText(0, i18n("Enter file name"), + i18n("File name"), QLineEdit::Normal, + QString(""), &ok); + if ((!ok) || (name.isEmpty())) return; - QString fileName = QDir(localDir).absoluteFilePath(name); - if (debug) qDebug() << PDEBUG << ":" << "Script" << fileName; - QFile configFile(fileName); - if (!configFile.open(QIODevice::WriteOnly)) return; - configFile.write("#!/bin/bash\n"); - configFile.close(); - configFile.setPermissions(QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner | - QFile::ReadGroup | QFile::ExeGroup | - QFile::ReadOther | QFile::ExeOther); - QDesktopServices::openUrl(QUrl(fileName)); - - fileName = QDir(localDir).absoluteFilePath(name + QString(".conf")); - if (debug) qDebug() << PDEBUG << ":" << "Configuration" << fileName; - configFile.setFileName(fileName); - if (!configFile.open(QIODevice::WriteOnly)) return; - configFile.write("ACTIVE=false\n"); - configFile.write("INTERVAL=1\n"); - configFile.write("OUTPUT=true\n"); - configFile.write("PREFIX=\n"); - configFile.write("REDIRECT=0\n"); - configFile.close(); - - int i = uiDEConfig.tableWidget_customCommand->rowCount(); - uiDEConfig.tableWidget_customCommand->insertRow(i); - QTableWidgetItem *nameItem = new QTableWidgetItem(name); - nameItem->setFlags(Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled | Qt::ItemIsEnabled); - nameItem->setCheckState(Qt::Unchecked); - uiDEConfig.tableWidget_customCommand->setItem(i, 0, nameItem); - uiDEConfig.tableWidget_customCommand->setItem(i, 1, new QTableWidgetItem(QString::number(1))); - QTableWidgetItem *output = new QTableWidgetItem(); - output->setCheckState(Qt::Checked); - uiDEConfig.tableWidget_customCommand->setItem(i, 2, output); - uiDEConfig.tableWidget_customCommand->setItem(i, 3, new QTableWidgetItem(QString(""))); - QComboBox *redirect = new QComboBox(); - redirect->addItem(QString("out2err")); - redirect->addItem(QString("nothing")); - redirect->addItem(QString("err2out")); - redirect->setCurrentIndex(1); - uiDEConfig.tableWidget_customCommand->setCellWidget(i, 4, redirect); + ExtScript *script = new ExtScript(0, name, dirs, debug); + script->showConfiguration(); } @@ -845,31 +761,6 @@ void AwesomeWidget::addNewPkgCommand(QTableWidgetItem *item) } -void AwesomeWidget::contextMenuCustomCommand(const QPoint pos) -{ - if (debug) qDebug() << PDEBUG; - if (uiDEConfig.tableWidget_customCommand->currentItem() == 0) return; - - QMenu menu(uiDEConfig.tableWidget_customCommand); - QAction *edit = menu.addAction(QIcon::fromTheme("document-edit"), i18n("Edit")); - QAction *create = menu.addAction(QIcon::fromTheme("document-new"), i18n("Create")); - QAction *remove = menu.addAction(QIcon::fromTheme("edit-delete"), i18n("Remove")); - QAction *action = menu.exec(uiDEConfig.tableWidget_customCommand->viewport()->mapToGlobal(pos)); - if (action == edit) { - editCustomCommand(uiDEConfig.tableWidget_customCommand->currentRow(), 0); - } else if (action == create) { - addCustomScript(); - } else if (action == remove) { - int row = uiDEConfig.tableWidget_customCommand->currentRow(); - QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_engine_extsysmon/scripts"); - ExtScript *script = new ExtScript(0, uiDEConfig.tableWidget_customCommand->item(row, 0)->text(), dirs, debug); - script->tryDelete(); - delete script; - uiDEConfig.tableWidget_customCommand->removeRow(row); - } -} - - void AwesomeWidget::contextMenuPkgCommand(const QPoint pos) { if (debug) qDebug() << PDEBUG; @@ -900,20 +791,13 @@ void AwesomeWidget::editBar(QListWidgetItem *item) } -void AwesomeWidget::editCustomCommand(const int row, const int column) +void AwesomeWidget::editCustomCommand(QListWidgetItem *item) { - Q_UNUSED(column); if (debug) qDebug() << PDEBUG; - QString name = uiDEConfig.tableWidget_customCommand->item(row, 0)->text(); - QString localDir = KStandardDirs::locateLocal("data", "plasma_engine_extsysmon/scripts"); QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_engine_extsysmon/scripts"); - for (int i=0; itext(), dirs, debug); + script->showConfiguration(); } diff --git a/sources/awesome-widget/deconfig.ui b/sources/awesome-widget/deconfig.ui index 817fc65..d930a94 100644 --- a/sources/awesome-widget/deconfig.ui +++ b/sources/awesome-widget/deconfig.ui @@ -60,6 +60,9 @@ hddtemp cmd + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + @@ -84,6 +87,9 @@ GPU device + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + @@ -137,6 +143,9 @@ HDD + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + @@ -170,6 +179,9 @@ Music player + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + @@ -213,6 +225,9 @@ MPD port + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + @@ -268,6 +283,9 @@ MPD address + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + @@ -305,6 +323,9 @@ ACPI path + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + @@ -316,47 +337,6 @@ - - - - Qt::CustomContextMenu - - - QAbstractItemView::SingleSelection - - - true - - - false - - - - Name - - - - - Interval - - - - - Output - - - - - Prefix - - - - - Redirect - - - - @@ -382,6 +362,9 @@ MPRIS player name + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + @@ -481,6 +464,53 @@ del - remove item + + + + + + + + + 200 + 0 + + + + Custom scripts + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Add + + + + + + + + + + diff --git a/sources/awesome-widget/desktopconfig.ui b/sources/awesome-widget/desktopconfig.ui deleted file mode 100644 index 817fc65..0000000 --- a/sources/awesome-widget/desktopconfig.ui +++ /dev/null @@ -1,492 +0,0 @@ - - - DEWindow - - - - 0 - 0 - 700 - 584 - - - - - 0 - 0 - - - - - 700 - 0 - - - - - 16777215 - 16777215 - - - - DE - - - - - - true - - - - - 0 - 0 - 684 - 568 - - - - - - - - - - 200 - 0 - - - - hddtemp cmd - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - - 200 - 0 - - - - GPU device - - - - - - - - 0 - 0 - - - - - 100 - 0 - - - - - auto - - - - - disable - - - - - nvidia - - - - - ati - - - - - - - - - - - - - 200 - 0 - - - - HDD - - - - - - - - 0 - 0 - - - - - 100 - 0 - - - - - - - - - - - - - 200 - 0 - - - - Music player - - - - - - - - 0 - 0 - - - - - 100 - 0 - - - - - mpris - - - - - mpd - - - - - - - - - - - - - 200 - 0 - - - - MPD port - - - - - - - Qt::Horizontal - - - - 40 - 19 - - - - - - - - - 180 - 0 - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 0 - - - 50000 - - - 100 - - - 6600 - - - - - - - - - - - - 200 - 0 - - - - MPD address - - - - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - 200 - 0 - - - - ACPI path - - - - - - - "/sys/class/power_supply/" by default - - - - - - - - - Qt::CustomContextMenu - - - QAbstractItemView::SingleSelection - - - true - - - false - - - - Name - - - - - Interval - - - - - Output - - - - - Prefix - - - - - Redirect - - - - - - - - - - <b>NOTE:</b> Player DBus interface should be an active - - - Qt::AlignCenter - - - - - - - - - - 200 - 0 - - - - MPRIS player name - - - - - - - - 0 - 0 - - - - - 100 - 0 - - - - true - - - - auto - - - - - amarok - - - - - audacious - - - - - clementine - - - - - deadbeef - - - - - vlc - - - - - qmmp - - - - - xmms2 - - - - - - - - - - - - - - Qt::CustomContextMenu - - - Editable -del - remove item - - - QAbstractItemView::SingleSelection - - - true - - - false - - - - Package manager - - - - - Null lines - - - - - - - - - - - - - - - diff --git a/sources/awesome-widget/graphicalitem.cpp b/sources/awesome-widget/graphicalitem.cpp index 2913285..91bccf0 100644 --- a/sources/awesome-widget/graphicalitem.cpp +++ b/sources/awesome-widget/graphicalitem.cpp @@ -357,7 +357,7 @@ void GraphicalItem::showConfiguration(const QStringList tags) if (ret == 0) { QStringList colorText; setName(ui->label_nameValue->text()); - setComment(ui->label_comment->text()); + setComment(ui->lineEdit_comment->text()); setBar(ui->comboBox_value->currentText()); colorText = ui->pushButton_activeColor->text().split(QChar(',')); setActiveColor(QColor(colorText[0].toInt(), colorText[1].toInt(), @@ -379,7 +379,8 @@ void GraphicalItem::tryDelete() if (debug) qDebug() << PDEBUG; for (int i=0; i #include +#include #include #include @@ -28,7 +29,7 @@ ExtScript::ExtScript(QWidget *parent, const QString scriptName, const QStringList directories, const bool debugCmd) : QDialog(parent), - name(scriptName), + fileName(scriptName), dirs(directories), debug(debugCmd), ui(new Ui::ExtScript) @@ -46,11 +47,35 @@ ExtScript::~ExtScript() } +QString ExtScript::getComment() +{ + if (debug) qDebug() << PDEBUG; + + return _comment; +} + + +QString ExtScript::getExec() +{ + if (debug) qDebug() << PDEBUG; + + return _exec; +} + + +QString ExtScript::getFileName() +{ + if (debug) qDebug() << PDEBUG; + + return fileName; +} + + int ExtScript::getInterval() { if (debug) qDebug() << PDEBUG; - return interval; + return _interval; } @@ -58,7 +83,7 @@ QString ExtScript::getName() { if (debug) qDebug() << PDEBUG; - return name; + return _name; } @@ -103,6 +128,24 @@ void ExtScript::setActive(const bool state) } +void ExtScript::setComment(const QString comment) +{ + if (debug) qDebug() << PDEBUG; + if (debug) qDebug() << PDEBUG << ":" << "Comment" << comment; + + _comment = comment; +} + + +void ExtScript::setExec(const QString exec) +{ + if (debug) qDebug() << PDEBUG; + if (debug) qDebug() << PDEBUG << ":" << "Executable" << exec; + + _exec = exec; +} + + void ExtScript::setHasOutput(const bool state) { if (debug) qDebug() << PDEBUG; @@ -122,6 +165,15 @@ void ExtScript::setInterval(const int interval) } +void ExtScript::setName(const QString name) +{ + if (debug) qDebug() << PDEBUG; + if (debug) qDebug() << PDEBUG << ":" << "Name" << name; + + _name = name; +} + + void ExtScript::setPrefix(const QString prefix) { if (debug) qDebug() << PDEBUG; @@ -149,16 +201,35 @@ void ExtScript::readConfiguration() { if (debug) qDebug() << PDEBUG; - QMap settings; for (int i=dirs.count()-1; i>=0; i--) { - if (!QDir(dirs[i]).entryList(QDir::Files).contains(name + QString(".conf"))) continue; - QString fileName = dirs[i] + QDir::separator() + name + QString(".conf"); - QMap newSettings = getConfigurationFromFile(fileName); - for (int i=0; ilineEdit_name->setText(_name); + ui->lineEdit_comment->setText(_comment); + ui->lineEdit_command->setText(_exec); + ui->lineEdit_prefix->setText(_prefix); + if (_active) + ui->checkBox_active->setCheckState(Qt::Checked); + else + ui->checkBox_active->setCheckState(Qt::Unchecked); + if (_output) + ui->checkBox_output->setCheckState(Qt::Checked); + else + ui->checkBox_output->setCheckState(Qt::Unchecked); + ui->comboBox_redirect->setCurrentIndex((int)_redirect); + ui->spinBox_interval->setValue(_interval); + + int ret = exec(); + if (ret == 0) { + setName(ui->lineEdit_name->text()); + setComment(ui->lineEdit_comment->text()); + setExec(ui->lineEdit_command->text()); + setPrefix(ui->lineEdit_prefix->text()); + setActive(ui->checkBox_active->checkState() == Qt::Checked); + setHasOutput(ui->checkBox_output->checkState() == Qt::Checked); + setRedirect(ui->comboBox_redirect->currentText()); + setInterval(ui->spinBox_interval->value()); + writeConfiguration(); + } } @@ -220,12 +319,9 @@ void ExtScript::tryDelete() { if (debug) qDebug() << PDEBUG; - for (int i=0; i config = toExternalConfiguration(); - for (int i=0; i settings) -{ - if (debug) qDebug() << PDEBUG; - - if (settings.contains(QString("ACTIVE"))) - _active = (settings[QString("ACTIVE")] == QString("true")); - if (settings.contains(QString("INTERVAL"))) - _interval = settings[QString("INTERVAL")].toInt(); - if (settings.contains(QString("PREFIX"))) - _prefix = settings[QString("PREFIX")]; - if (settings.contains(QString("OUTPUT"))) - _output = (settings[QString("OUTPUT")] == QString("true")); - if (settings.contains(QString("REDIRECT"))) - _redirect = (Redirect)settings[QString("REDIRECT")].toInt(); - if (!_output) - _redirect = stdout2stderr; -} - - -QMap ExtScript::getConfigurationFromFile(const QString fileName) -{ - if (debug) qDebug() << PDEBUG; - if (debug) qDebug() << PDEBUG << ":" << "File" << fileName; - - QMap settings; - QFile configFile(fileName); - QString fileStr; - if (!configFile.open(QIODevice::ReadOnly)) return settings; - while (true) { - fileStr = QString(configFile.readLine()).trimmed(); - if ((fileStr.isEmpty()) && (!configFile.atEnd())) continue; - if ((fileStr[0] == QChar('#')) && (!configFile.atEnd())) continue; - if ((fileStr[0] == QChar(';')) && (!configFile.atEnd())) continue; - if (fileStr.contains(QChar('='))) - settings[fileStr.split(QChar('='))[0]] = fileStr.split(QChar('='))[1]; - if (configFile.atEnd()) break; - } - configFile.close(); - for (int i=0; i settings); - QMap getConfigurationFromFile(const QString fileName); - QMap toExternalConfiguration(); // properties bool _active = true; - QString _comment = QString(""); + QString _comment = QString("empty"); + QString _exec = QString("/usr/bin/true"); int _interval = 1; + QString _name = QString("none"); bool _output = true; QString _prefix = QString(""); Redirect _redirect = nothing;