From c69957e9059ac5bcf10e36260ed9a93eac37f195 Mon Sep 17 00:00:00 2001 From: arcan1s Date: Tue, 2 Sep 2014 01:10:27 +0400 Subject: [PATCH] add configuration interface slots --- sources/awesome-widget/awesome-widget.cpp | 47 ++---- sources/awesome-widget/awesome-widget.h | 9 ++ sources/awesome-widget/configuration.cpp | 176 +++++++++++++++++----- sources/awesome-widget/deconfig.ui | 6 + 4 files changed, 169 insertions(+), 69 deletions(-) diff --git a/sources/awesome-widget/awesome-widget.cpp b/sources/awesome-widget/awesome-widget.cpp index fcdb5aa..1ba9174 100644 --- a/sources/awesome-widget/awesome-widget.cpp +++ b/sources/awesome-widget/awesome-widget.cpp @@ -144,6 +144,7 @@ void AwesomeWidget::init() // dataengines extsysmonEngine = dataEngine(QString("ext-sysmon")); sysmonEngine = dataEngine(QString("systemmonitor")); + connect(sysmonEngine, SIGNAL(sourceAdded(QString)), this, SLOT(addDiskDevice(QString))); timeEngine = dataEngine(QString("time")); // tooltip @@ -175,6 +176,19 @@ void AwesomeWidget::init() } +void AwesomeWidget::addDiskDevice(const QString source) +{ + if (debug) qDebug() << PDEBUG; + + QRegExp diskRegexp = QRegExp(QString("disk/(?:md|sd|hd)[a-z|0-9]_.*/Rate/(?:rblk)")); + if (diskRegexp.indexIn(source) > -1) { + QStringList splitSource = source.split(QChar('/')); + QString device = splitSource[0] + QString("/") + splitSource[1]; + diskDevices.append(device); + } +} + + QStringList AwesomeWidget::findKeys() { if (debug) qDebug() << PDEBUG; @@ -284,37 +298,4 @@ QStringList AwesomeWidget::getKeys() } -//QString DesktopPanel::parsePattern(const QString rawLine, const int num) -//{ -// if (debug) qDebug() << PDEBUG; -// if (debug) qDebug() << PDEBUG << ":" << "Run function with raw line" << rawLine; -// if (debug) qDebug() << PDEBUG << ":" << "Run function with number" << num; - -// QString line, mark; -// line = rawLine; -// if (currentDesktop == num + 1) -// mark = configuration[QString("mark")]; -// else -// mark = QString(""); -// if (line.split(QString("$mark"))[0] != line) { -// if (debug) qDebug() << PDEBUG << ":" << "Found mark"; -// line = line.split(QString("$mark"))[0] + mark + line.split(QString("$mark"))[1]; -// } -// if (line.split(QString("$name"))[0] != line) { -// if (debug) qDebug() << PDEBUG << ":" << "Found name"; -// line = line.split(QString("$name"))[0] + desktopNames[num] + line.split(QString("$name"))[1]; -// } -// if (line.split(QString("$number"))[0] != line) { -// if (debug) qDebug() << PDEBUG << ":" << "Found number"; -// line = line.split(QString("$number"))[0] + QString::number(num + 1) + line.split(QString("$number"))[1]; -// } -// if (line.split(QString("$total"))[0] != line) { -// if (debug) qDebug() << PDEBUG << ":" << "Found total"; -// line = line.split(QString("$total"))[0] + QString::number(desktopNames.count()) + line.split(QString("$total"))[1]; -// } - -// return line; -//} - - K_EXPORT_PLASMA_APPLET(ptm-awesome-widget, AwesomeWidget) diff --git a/sources/awesome-widget/awesome-widget.h b/sources/awesome-widget/awesome-widget.h index 47e2fda..19fa94c 100644 --- a/sources/awesome-widget/awesome-widget.h +++ b/sources/awesome-widget/awesome-widget.h @@ -53,6 +53,7 @@ public: public slots: // dataengine + void addDiskDevice(const QString source); void connectToEngine(); void dataUpdated(const QString &sourceName, const Plasma::DataEngine::Data &data); void disconnectFromEngine(); @@ -66,6 +67,14 @@ public slots: private slots: void reinit(); // configuration interface + void addNewCustomCommand(QTableWidgetItem *item); + void addNewPkgCommand(QTableWidgetItem *item); + void contextMenuCustomCommand(const QPoint pos); + void contextMenuPkgCommand(const QPoint pos); + void editHddItem(QListWidgetItem *item); + void editHddSpeedItem(QListWidgetItem *item); + void editMountItem(QListWidgetItem *item); + void editTempItem(QListWidgetItem *item); protected: void createConfigurationInterface(KConfigDialog *parent); diff --git a/sources/awesome-widget/configuration.cpp b/sources/awesome-widget/configuration.cpp index e7fcf4c..4cd53cf 100644 --- a/sources/awesome-widget/configuration.cpp +++ b/sources/awesome-widget/configuration.cpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -125,7 +126,6 @@ void AwesomeWidget::createConfigurationInterface(KConfigDialog *parent) if (debug) qDebug() << PDEBUG; QString cmd, qoutput; QStringList headerList; - TaskResult process; QWidget *advWidget = new QWidget; uiAdvancedConfig.setupUi(advWidget); @@ -169,21 +169,21 @@ void AwesomeWidget::createConfigurationInterface(KConfigDialog *parent) Qt::MatchFixedString)); cmd = QString("sensors"); if (debug) qDebug() << PDEBUG << ":" << "cmd" << cmd; - process = runTask(cmd); - if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode; - if (process.exitCode != 0) - if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error; - qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output); + TaskResult sensorsProcess = runTask(cmd); + if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << sensorsProcess.exitCode; + if (sensorsProcess.exitCode != 0) + if (debug) qDebug() << PDEBUG << ":" << "Error" << sensorsProcess.error; + qoutput = QTextCodec::codecForMib(106)->toUnicode(sensorsProcess.output); uiAdvancedConfig.listWidget_tempDevice->clear(); for (int i=0; i -1) { - QListWidgetItem item = QListWidgetItem(QString("lmsensors/") + sensor.split(QChar('\n'))[0] + QString("/") + + if (device.indexOf(QChar(0260)) > -1) { + QListWidgetItem *item = new QListWidgetItem(QString("lmsensors/") + sensor.split(QChar('\n'))[0] + QString("/") + device.split(QChar(':'))[0].replace(QChar(' '), QChar('_'))); - item.setCheckState(Qt::Unchecked); - uiAdvancedConfig.listWidget_tempDevice->addItem(&item); + item->setCheckState(Qt::Unchecked); + uiAdvancedConfig.listWidget_tempDevice->addItem(item); } } } @@ -195,17 +195,17 @@ void AwesomeWidget::createConfigurationInterface(KConfigDialog *parent) } cmd = QString("mount"); if (debug) qDebug() << PDEBUG << ":" << "cmd" << cmd; - process = runTask(cmd); - if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode; - if (process.exitCode != 0) - if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error; - qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output); + TaskResult mountProcess = runTask(cmd); + if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << mountProcess.exitCode; + if (mountProcess.exitCode != 0) + if (debug) qDebug() << PDEBUG << ":" << "Error" << mountProcess.error; + qoutput = QTextCodec::codecForMib(106)->toUnicode(mountProcess.output); uiAdvancedConfig.listWidget_mount->clear(); for (int i=0; iaddItem(&item); + QListWidgetItem *item = new QListWidgetItem(mountPoint); + item->setCheckState(Qt::Unchecked); + uiAdvancedConfig.listWidget_mount->addItem(item); } for (int i=0; i items = uiAdvancedConfig.listWidget_mount @@ -215,9 +215,9 @@ void AwesomeWidget::createConfigurationInterface(KConfigDialog *parent) } uiAdvancedConfig.listWidget_hddSpeedDevice->clear(); for (int i=0; iaddItem(&item); + QListWidgetItem *item = new QListWidgetItem(diskDevices[i]); + item->setCheckState(Qt::Unchecked); + uiAdvancedConfig.listWidget_hddSpeedDevice->addItem(item); } for (int i=0; i items = uiAdvancedConfig.listWidget_hddSpeedDevice @@ -225,18 +225,18 @@ void AwesomeWidget::createConfigurationInterface(KConfigDialog *parent) for (int j=0; jsetCheckState(Qt::Checked); } - cmd = QString("find /dev -name '[hms]d[a-z]'"); + cmd = QString("find /dev -name [hms]d[a-z]"); if (debug) qDebug() << PDEBUG << ":" << "cmd" << cmd; - process = runTask(cmd); - if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode; - if (process.exitCode != 0) - if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error; - qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output); + TaskResult findProcess = runTask(cmd); + if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << findProcess.exitCode; + if (findProcess.exitCode != 0) + if (debug) qDebug() << PDEBUG << ":" << "Error" << findProcess.error; + qoutput = QTextCodec::codecForMib(106)->toUnicode(findProcess.output).trimmed(); uiAdvancedConfig.listWidget_hddDevice->clear(); for (int i=0; iaddItem(&item); + QListWidgetItem *item = new QListWidgetItem(qoutput.split(QChar('\n'))[i]); + item->setCheckState(Qt::Unchecked); + uiAdvancedConfig.listWidget_hddDevice->addItem(item); } for (int i=0; i items = uiAdvancedConfig.listWidget_hddDevice @@ -331,13 +331,13 @@ void AwesomeWidget::createConfigurationInterface(KConfigDialog *parent) uiDEConfig.lineEdit_desktopCmd->setText(deSettings[QString("DESKTOPCMD")]); uiDEConfig.comboBox_gpudev->setCurrentIndex( uiDEConfig.comboBox_gpudev->findText(deSettings[QString("GPUDEV")], Qt::MatchFixedString)); - cmd = QString("find /dev -name '[hms]d[a-z]'"); + cmd = QString("find /dev -name [hms]d[a-z]"); if (debug) qDebug() << PDEBUG << ":" << "cmd" << cmd; - process = runTask(cmd); - if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << process.exitCode; - if (process.exitCode != 0) - if (debug) qDebug() << PDEBUG << ":" << "Error" << process.error; - qoutput = QTextCodec::codecForMib(106)->toUnicode(process.output); + TaskResult hddProcess = runTask(cmd); + if (debug) qDebug() << PDEBUG << ":" << "Cmd returns" << hddProcess.exitCode; + if (hddProcess.exitCode != 0) + if (debug) qDebug() << PDEBUG << ":" << "Error" << hddProcess.error; + qoutput = QTextCodec::codecForMib(106)->toUnicode(hddProcess.output).trimmed(); uiDEConfig.comboBox_hdddev->clear(); uiDEConfig.comboBox_hdddev->addItem(QString("all")); uiDEConfig.comboBox_hdddev->addItem(QString("disable")); @@ -361,6 +361,8 @@ void AwesomeWidget::createConfigurationInterface(KConfigDialog *parent) uiDEConfig.tableWidget_pkgCommand->setItem(i, 0, new QTableWidgetItem(deSettings[QString("PKGCMD")].split(QChar(','))[i])); uiDEConfig.tableWidget_pkgCommand->setItem(i, 1, new QTableWidgetItem(deSettings[QString("PKGNULL")].split(QChar(','))[i])); } + uiDEConfig.tableWidget_pkgCommand->setItem(uiDEConfig.tableWidget_pkgCommand->rowCount() - 1, 1, + new QTableWidgetItem(QString("0"))); uiDEConfig.comboBox_playerSelect->setCurrentIndex( uiDEConfig.comboBox_playerSelect->findText(deSettings[QString("PLAYER")], Qt::MatchFixedString)); @@ -370,6 +372,23 @@ void AwesomeWidget::createConfigurationInterface(KConfigDialog *parent) parent->addPage(appWidget, i18n("Appearance"), QString("preferences-desktop-theme")); parent->addPage(deConfigWidget, i18n("DataEngine"), QString("utilities-system-monitor")); + connect(uiAdvancedConfig.listWidget_hddDevice, SIGNAL(itemActivated(QListWidgetItem *)), + this, SLOT(editHddItem(QListWidgetItem *))); + connect(uiAdvancedConfig.listWidget_hddSpeedDevice, SIGNAL(itemActivated(QListWidgetItem *)), + this, SLOT(editHddSpeedItem(QListWidgetItem *))); + connect(uiAdvancedConfig.listWidget_mount, SIGNAL(itemActivated(QListWidgetItem *)), + this, SLOT(editMountItem(QListWidgetItem *))); + connect(uiAdvancedConfig.listWidget_tempDevice, SIGNAL(itemActivated(QListWidgetItem *)), + this, SLOT(editTempItem(QListWidgetItem *))); + connect(uiDEConfig.tableWidget_customCommand, SIGNAL(itemChanged(QTableWidgetItem *)), + this, SLOT(addNewCustomCommand(QTableWidgetItem *))); + connect(uiDEConfig.tableWidget_customCommand, SIGNAL(customContextMenuRequested(QPoint)), + this, SLOT(contextMenuCustomCommand(QPoint))); + connect(uiDEConfig.tableWidget_pkgCommand, SIGNAL(itemChanged(QTableWidgetItem *)), + this, SLOT(addNewPkgCommand(QTableWidgetItem *))); + connect(uiDEConfig.tableWidget_pkgCommand, SIGNAL(customContextMenuRequested(QPoint)), + this, SLOT(contextMenuPkgCommand(QPoint))); + connect(parent, SIGNAL(okClicked()), this, SLOT(configAccepted())); connect(parent, SIGNAL(applyClicked()), this, SLOT(configAccepted())); } @@ -558,3 +577,88 @@ void AwesomeWidget::configChanged() reinit(); } + + +void AwesomeWidget::addNewCustomCommand(QTableWidgetItem *item) +{ + if (debug) qDebug() << PDEBUG; + + if (item->row() == (uiDEConfig.tableWidget_customCommand->rowCount() - 1)) + uiDEConfig.tableWidget_customCommand->insertRow( + uiDEConfig.tableWidget_customCommand->rowCount()); +} + + +void AwesomeWidget::addNewPkgCommand(QTableWidgetItem *item) +{ + if (debug) qDebug() << PDEBUG; + + if ((item->row() == (uiDEConfig.tableWidget_pkgCommand->rowCount() - 1)) && + (item->column() == 0)) { + uiDEConfig.tableWidget_pkgCommand->insertRow( + uiDEConfig.tableWidget_pkgCommand->rowCount()); + uiDEConfig.tableWidget_pkgCommand->setItem( + uiDEConfig.tableWidget_pkgCommand->rowCount() - 1, 1, + new QTableWidgetItem(QString("0"))); + } +} + + +void AwesomeWidget::contextMenuCustomCommand(const QPoint pos) +{ + if (debug) qDebug() << PDEBUG; + if (uiDEConfig.tableWidget_customCommand->currentItem() == 0) return; + + QMenu menu(uiDEConfig.tableWidget_customCommand); + QAction *remove = menu.addAction(i18n("Remove")); + QAction *action = menu.exec(uiDEConfig.tableWidget_customCommand->viewport()->mapToGlobal(pos)); + if (action == remove) + uiDEConfig.tableWidget_customCommand->removeRow( + uiDEConfig.tableWidget_customCommand->currentRow()); +} + + +void AwesomeWidget::contextMenuPkgCommand(const QPoint pos) +{ + if (debug) qDebug() << PDEBUG; + if (uiDEConfig.tableWidget_pkgCommand->currentItem() == 0) return; + + QMenu menu(uiDEConfig.tableWidget_pkgCommand); + QAction *remove = menu.addAction(i18n("Remove")); + QAction *action = menu.exec(uiDEConfig.tableWidget_pkgCommand->viewport()->mapToGlobal(pos)); + if (action == remove) + uiDEConfig.tableWidget_pkgCommand->removeRow( + uiDEConfig.tableWidget_pkgCommand->currentRow()); +} + + +void AwesomeWidget::editHddItem(QListWidgetItem *item) +{ + if (debug) qDebug() << PDEBUG; + + uiAdvancedConfig.listWidget_hddDevice->openPersistentEditor(item); +} + + +void AwesomeWidget::editHddSpeedItem(QListWidgetItem *item) +{ + if (debug) qDebug() << PDEBUG; + + uiAdvancedConfig.listWidget_hddSpeedDevice->openPersistentEditor(item); +} + + +void AwesomeWidget::editMountItem(QListWidgetItem *item) +{ + if (debug) qDebug() << PDEBUG; + + uiAdvancedConfig.listWidget_mount->openPersistentEditor(item); +} + + +void AwesomeWidget::editTempItem(QListWidgetItem *item) +{ + if (debug) qDebug() << PDEBUG; + + uiAdvancedConfig.listWidget_tempDevice->openPersistentEditor(item); +} diff --git a/sources/awesome-widget/deconfig.ui b/sources/awesome-widget/deconfig.ui index 4cd0f0a..e5d1971 100644 --- a/sources/awesome-widget/deconfig.ui +++ b/sources/awesome-widget/deconfig.ui @@ -410,6 +410,9 @@ + + Qt::CustomContextMenu + Editable del - remove item @@ -439,6 +442,9 @@ del - remove item + + Qt::CustomContextMenu + Editable del - remove item