/*************************************************************************** * This file is part of awesome-widgets * * * * awesome-widgets is free software: you can redistribute it and/or * * modify it under the terms of the GNU General Public License as * * published by the Free Software Foundation, either version 3 of the * * License, or (at your option) any later version. * * * * awesome-widgets is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with awesome-widgets. If not, see http://www.gnu.org/licenses/ * ***************************************************************************/ #include "awesome-widget.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "version.h" QMap AwesomeWidget::readDataEngineConfiguration() { if (debug) qDebug() << PDEBUG; QMap rawConfig; rawConfig[QString("ACPIPATH")] = QString("/sys/class/power_supply/"); rawConfig[QString("GPUDEV")] = QString("auto"); rawConfig[QString("HDDDEV")] = QString("all"); rawConfig[QString("HDDTEMPCMD")] = QString("sudo hddtemp"); rawConfig[QString("MPDADDRESS")] = QString("localhost"); rawConfig[QString("MPDPORT")] = QString("6600"); rawConfig[QString("MPRIS")] = QString("auto"); rawConfig[QString("PLAYER")] = QString("mpris"); QString fileName = KGlobal::dirs()->findResource("config", "plasma-dataengine-extsysmon.conf"); if (debug) qDebug() << PDEBUG << ":" << "Configuration file" << fileName; QFile configFile(fileName); if (!configFile.open(QIODevice::ReadOnly)) return rawConfig; QString fileStr; QStringList value; 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('='))) { value.clear(); for (int i=1; i settings) { if (debug) qDebug() << PDEBUG; QMap config = settings; QString fileName = KGlobal::dirs()->locateLocal("config", "plasma-dataengine-extsysmon.conf"); if (debug) qDebug() << PDEBUG << ":" << "Configuration file" << fileName; QFile configFile(fileName); if (!configFile.open(QIODevice::WriteOnly)) return; for (int i=0; isetPlainText(configuration[QString("text")]); uiWidConfig.comboBox_tags->clear(); uiWidConfig.comboBox_tags->addItems(getKeys()); for (int i=0; iaddItem(graphicalItems[i]->name() + graphicalItems[i]->bar()); // advanced if (configuration[QString("background")].toInt() == 0) uiAdvancedConfig.checkBox_background->setCheckState(Qt::Unchecked); else uiAdvancedConfig.checkBox_background->setCheckState(Qt::Checked); if (configuration[QString("popup")].toInt() == 0) uiAdvancedConfig.checkBox_popup->setCheckState(Qt::Unchecked); else uiAdvancedConfig.checkBox_popup->setCheckState(Qt::Checked); uiAdvancedConfig.lineEdit_timeFormat->setText(configuration[QString("customTime")]); uiAdvancedConfig.lineEdit_uptimeFormat->setText(configuration[QString("customUptime")]); uiAdvancedConfig.comboBox_tempUnits->setCurrentIndex( uiAdvancedConfig.comboBox_tempUnits->findText(configuration[QString("tempUnits")], 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).trimmed(); uiAdvancedConfig.listWidget_tempDevice->clear(); for (int i=0; isetCheckState(Qt::Unchecked); uiAdvancedConfig.listWidget_tempDevice->addItem(item); } else if (device.contains(QString("RPM"))) { 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_fanDevice->addItem(item); } } } for (int i=0; i items = uiAdvancedConfig.listWidget_tempDevice ->findItems(configuration[QString("tempDevice")].split(QString("@@"))[i], Qt::MatchFixedString); if ((items.isEmpty()) && (!configuration[QString("tempDevice")].split(QString("@@"))[i].isEmpty())) { QListWidgetItem *item = new QListWidgetItem(configuration[QString("tempDevice")].split(QString("@@"))[i]); item->setCheckState(Qt::Checked); uiAdvancedConfig.listWidget_tempDevice->addItem(item); } else for (int j=0; jsetCheckState(Qt::Checked); } for (int i=0; i items = uiAdvancedConfig.listWidget_fanDevice ->findItems(configuration[QString("fanDevice")].split(QString("@@"))[i], Qt::MatchFixedString); if ((items.isEmpty()) && (!configuration[QString("fanDevice")].split(QString("@@"))[i].isEmpty())) { QListWidgetItem *item = new QListWidgetItem(configuration[QString("fanDevice")].split(QString("@@"))[i]); item->setCheckState(Qt::Checked); uiAdvancedConfig.listWidget_fanDevice->addItem(item); } else for (int j=0; jsetCheckState(Qt::Checked); } 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).trimmed(); uiAdvancedConfig.listWidget_mount->clear(); for (int i=0; isetCheckState(Qt::Unchecked); uiAdvancedConfig.listWidget_mount->addItem(item); } for (int i=0; i items = uiAdvancedConfig.listWidget_mount ->findItems(configuration[QString("mount")].split(QString("@@"))[i], Qt::MatchFixedString); if ((items.isEmpty()) && (!configuration[QString("mount")].split(QString("@@"))[i].isEmpty())) { QListWidgetItem *item = new QListWidgetItem(configuration[QString("mount")].split(QString("@@"))[i]); item->setCheckState(Qt::Checked); uiAdvancedConfig.listWidget_mount->addItem(item); } else for (int j=0; jsetCheckState(Qt::Checked); } uiAdvancedConfig.listWidget_hddSpeedDevice->clear(); for (int i=0; isetCheckState(Qt::Unchecked); uiAdvancedConfig.listWidget_hddSpeedDevice->addItem(item); } for (int i=0; i items = uiAdvancedConfig.listWidget_hddSpeedDevice ->findItems(configuration[QString("disk")].split(QString("@@"))[i], Qt::MatchFixedString); if ((items.isEmpty()) && (!configuration[QString("disk")].split(QString("@@"))[i].isEmpty())) { QListWidgetItem *item = new QListWidgetItem(configuration[QString("disk")].split(QString("@@"))[i]); item->setCheckState(Qt::Checked); uiAdvancedConfig.listWidget_hddSpeedDevice->addItem(item); } else for (int j=0; jsetCheckState(Qt::Checked); } 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).trimmed(); uiAdvancedConfig.listWidget_hddDevice->clear(); for (int i=0; isetCheckState(Qt::Unchecked); uiAdvancedConfig.listWidget_hddDevice->addItem(item); } for (int i=0; i items = uiAdvancedConfig.listWidget_hddDevice ->findItems(configuration[QString("hdd")].split(QString("@@"))[i], Qt::MatchFixedString); if ((items.isEmpty()) && (!configuration[QString("hdd")].split(QString("@@"))[i].isEmpty())) { QListWidgetItem *item = new QListWidgetItem(configuration[QString("hdd")].split(QString("@@"))[i]); item->setCheckState(Qt::Checked); uiAdvancedConfig.listWidget_hddDevice->addItem(item); } else for (int j=0; jsetCheckState(Qt::Checked); } if (configuration[QString("useCustomNetdev")].toInt() == 0) uiAdvancedConfig.checkBox_netdev->setCheckState(Qt::Unchecked); else uiAdvancedConfig.checkBox_netdev->setCheckState(Qt::Checked); QList rawInterfaceList = QNetworkInterface::allInterfaces(); QStringList interfaceList; for (int i=0; iclear(); uiAdvancedConfig.comboBox_netdev->addItems(interfaceList); uiAdvancedConfig.comboBox_netdev->setCurrentIndex( uiAdvancedConfig.comboBox_netdev->findText(configuration[QString("customNetdev")], Qt::MatchFixedString)); uiAdvancedConfig.lineEdit_acOnline->setText(configuration[QString("acOnline")]); uiAdvancedConfig.lineEdit_acOffline->setText(configuration[QString("acOffline")]); uiAdvancedConfig.listWidget_bars->clear(); for (int i=0; ifileName()); QStringList tooltip; tooltip.append(i18n("Tag: %1", graphicalItems[i]->name() + graphicalItems[i]->bar())); tooltip.append(i18n("Comment: %1", graphicalItems[i]->comment())); item->setToolTip(tooltip.join(QChar('\n'))); uiAdvancedConfig.listWidget_bars->addItem(item); } if (configuration[QString("checkUpdates")].toInt() == 0) uiAdvancedConfig.checkBox_updates->setCheckState(Qt::Unchecked); else uiAdvancedConfig.checkBox_updates->setCheckState(Qt::Checked); // tooltip uiTooltipConfig.spinBox_tooltipNum->setValue(configuration[QString("tooltipNumber")].toInt()); if (configuration[QString("useTooltipBackground")].toInt() == 0) uiTooltipConfig.checkBox_background->setCheckState(Qt::Unchecked); else uiTooltipConfig.checkBox_background->setCheckState(Qt::Checked); uiTooltipConfig.kcolorcombo_background->setColor(QColor(configuration[QString("tooltipBackground")])); if (configuration[QString("cpuTooltip")].toInt() == 0) uiTooltipConfig.checkBox_cpu->setCheckState(Qt::Unchecked); else uiTooltipConfig.checkBox_cpu->setCheckState(Qt::Checked); uiTooltipConfig.kcolorcombo_cpu->setColor(QColor(configuration[QString("cpuColor")])); if (configuration[QString("cpuclTooltip")].toInt() == 0) uiTooltipConfig.checkBox_cpuclock->setCheckState(Qt::Unchecked); else uiTooltipConfig.checkBox_cpuclock->setCheckState(Qt::Checked); uiTooltipConfig.kcolorcombo_cpuclock->setColor(QColor(configuration[QString("cpuclColor")])); if (configuration[QString("memTooltip")].toInt() == 0) uiTooltipConfig.checkBox_mem->setCheckState(Qt::Unchecked); else uiTooltipConfig.checkBox_mem->setCheckState(Qt::Checked); uiTooltipConfig.kcolorcombo_mem->setColor(QColor(configuration[QString("memColor")])); if (configuration[QString("swapTooltip")].toInt() == 0) uiTooltipConfig.checkBox_swap->setCheckState(Qt::Unchecked); else uiTooltipConfig.checkBox_swap->setCheckState(Qt::Checked); uiTooltipConfig.kcolorcombo_swap->setColor(QColor(configuration[QString("swapColor")])); if (configuration[QString("downTooltip")].toInt() == 0) uiTooltipConfig.checkBox_down->setCheckState(Qt::Unchecked); else uiTooltipConfig.checkBox_down->setCheckState(Qt::Checked); uiTooltipConfig.kcolorcombo_down->setColor(QColor(configuration[QString("downColor")])); uiTooltipConfig.kcolorcombo_up->setColor(QColor(configuration[QString("upColor")])); if (configuration[QString("batteryTooltip")].toInt() == 0) uiTooltipConfig.checkBox_battery->setCheckState(Qt::Unchecked); else uiTooltipConfig.checkBox_battery->setCheckState(Qt::Checked); uiTooltipConfig.kcolorcombo_battery->setColor(QColor(configuration[QString("batteryColor")])); uiTooltipConfig.kcolorcombo_batteryIn->setColor(QColor(configuration[QString("batteryInColor")])); // appearance KConfigGroup cg = config(); CFont font = CFont(cg.readEntry("fontFamily", "Terminus")); font.setPointSize(cg.readEntry("fontSize", 10)); font.setCurrentColor(QColor(cg.readEntry("fontColor", "#000000"))); font.setHtmlWeight(cg.readEntry("fontWeight", 400)); font.setItalic(cg.readEntry("fontStyle", "normal") == QString("italic")); uiAppConfig.spinBox_interval->setValue(configuration[QString("interval")].toInt()); uiAppConfig.fontComboBox->setCurrentFont(font.toQFont()); uiAppConfig.spinBox_size->setValue(font.pointSize()); uiAppConfig.kcolorcombo->setColor(font.color()); if (font.italic()) uiAppConfig.comboBox_style->setCurrentIndex(1); else uiAppConfig.comboBox_style->setCurrentIndex(0); uiAppConfig.spinBox_weight->setValue(font.htmlWeight()); // dataengine QMap deSettings = readDataEngineConfiguration(); uiDEConfig.lineEdit_acpi->setText(deSettings[QString("ACPIPATH")]); QList externalScripts = initScripts(); uiDEConfig.listWidget_custom->clear(); for (int i=0; ifileName()); QStringList tooltip; tooltip.append(i18n("Name: %1", externalScripts[i]->name())); tooltip.append(i18n("Comment: %1", externalScripts[i]->comment())); tooltip.append(i18n("Exec: %1", externalScripts[i]->executable())); item->setToolTip(tooltip.join(QChar('\n'))); uiDEConfig.listWidget_custom->addItem(item); } externalScripts.clear(); uiDEConfig.comboBox_gpudev->setCurrentIndex( uiDEConfig.comboBox_gpudev->findText(deSettings[QString("GPUDEV")], Qt::MatchFixedString)); 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).trimmed(); uiDEConfig.comboBox_hdddev->clear(); uiDEConfig.comboBox_hdddev->addItem(QString("all")); uiDEConfig.comboBox_hdddev->addItem(QString("disable")); for (int i=0; iaddItem(qoutput.split(QChar('\n'))[i]); uiDEConfig.comboBox_hdddev->setCurrentIndex( uiDEConfig.comboBox_hdddev->findText(deSettings[QString("HDDDEV")], Qt::MatchFixedString)); uiDEConfig.lineEdit_hddtempCmd->setText(deSettings[QString("HDDTEMPCMD")]); uiDEConfig.lineEdit_mpdaddress->setText(deSettings[QString("MPDADDRESS")]); uiDEConfig.spinBox_mpdport->setValue(deSettings[QString("MPDPORT")].toInt()); uiDEConfig.comboBox_mpris->addItem(deSettings[QString("MPRIS")]); uiDEConfig.comboBox_mpris->setCurrentIndex(uiDEConfig.comboBox_mpris->count() - 1); QList externalUpgrade = initUpgrades(); uiDEConfig.listWidget_pkgCommand->clear(); for (int i=0; ifileName()); QStringList tooltip; tooltip.append(i18n("Name: %1", externalUpgrade[i]->name())); tooltip.append(i18n("Comment: %1", externalUpgrade[i]->comment())); tooltip.append(i18n("Exec: %1", externalUpgrade[i]->executable())); item->setToolTip(tooltip.join(QChar('\n'))); uiDEConfig.listWidget_pkgCommand->addItem(item); } externalUpgrade.clear(); uiDEConfig.comboBox_playerSelect->setCurrentIndex( uiDEConfig.comboBox_playerSelect->findText(deSettings[QString("PLAYER")], Qt::MatchFixedString)); // about uiAboutConfig.label_name->setText(QString(NAME)); uiAboutConfig.label_version->setText(i18n("Version %1\n(build date %2)", QString(VERSION), QString(BUILD_DATE))); uiAboutConfig.label_description->setText(i18n("A set of minimalistic plasmoid widgets")); uiAboutConfig.label_links->setText(i18n("Links:") + QString("
") + QString("%2
").arg(QString(HOMEPAGE)).arg(i18n("Homepage")) + QString("%2
").arg(QString(REPOSITORY)).arg(i18n("Repository")) + QString("%2
").arg(QString(BUGTRACKER)).arg(i18n("Bugtracker")) + QString("%2
").arg(QString(TRANSLATION)).arg(i18n("Translation issue")) + QString("%2").arg(QString(AUR_PACKAGES)).arg(i18n("AUR packages"))); uiAboutConfig.label_license->setText(QString("© %1 %3
").arg(QString(DATE)).arg(QString(EMAIL)).arg(QString(AUTHOR)) + i18n("This software is licensed under %1", QString(LICENSE)) + QString("
")); // 2nd tab QStringList trdPartyList = QString(TRDPARTY_LICENSE).split(QChar(';'), QString::SkipEmptyParts); for (int i=0; i%1 (%2 license)") .arg(trdPartyList[i].split(QChar(','))[0]) .arg(trdPartyList[i].split(QChar(','))[1]) .arg(trdPartyList[i].split(QChar(','))[2]); uiAboutConfig.label_translators->setText(i18n("Translators: %1", QString(TRANSLATORS))); uiAboutConfig.label_trdparty->setText(i18n("This software uses: %1", trdPartyList.join(QString(", ")))); parent->addPage(configWidget, i18n("Widget"), Applet::icon()); parent->addPage(advWidget, i18n("Advanced"), QString("system-run")); parent->addPage(tooltipWidget, i18n("Tooltip"), QString("preferences-desktop-color")); parent->addPage(appWidget, i18n("Appearance"), QString("preferences-desktop-theme")); parent->addPage(deConfigWidget, i18n("DataEngine"), QString("utilities-system-monitor")); parent->addPage(aboutWidget, i18n("About"), QString("help-about")); connect(uiAdvancedConfig.listWidget_fanDevice, SIGNAL(itemActivated(QListWidgetItem *)), this, SLOT(editFanItem(QListWidgetItem *))); 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(uiAdvancedConfig.listWidget_bars, SIGNAL(itemActivated(QListWidgetItem *)), this, SLOT(editBar(QListWidgetItem *))); connect(uiAdvancedConfig.listWidget_bars, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextMenuBars(QPoint))); connect(uiDEConfig.listWidget_custom, SIGNAL(itemActivated(QListWidgetItem *)), this, SLOT(editCustomCommand(QListWidgetItem *))); connect(uiDEConfig.listWidget_custom, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(contextMenuCustomCommand(QPoint))); connect(uiDEConfig.listWidget_pkgCommand, SIGNAL(itemActivated(QListWidgetItem *)), this, SLOT(editPkgCommand(QListWidgetItem *))); connect(uiDEConfig.listWidget_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(uiDEConfig.pushButton_pkgCommand, SIGNAL(clicked(bool)), this, SLOT(addPkgCommand())); 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())); connect(uiWidConfig.pushButton_bold, SIGNAL(clicked(bool)), this, SLOT(setFormating())); connect(uiWidConfig.pushButton_italic, SIGNAL(clicked(bool)), this, SLOT(setFormating())); connect(uiWidConfig.pushButton_underline, SIGNAL(clicked(bool)), this, SLOT(setFormating())); connect(uiWidConfig.pushButton_strike, SIGNAL(clicked(bool)), this, SLOT(setFormating())); connect(uiWidConfig.pushButton_left, SIGNAL(clicked(bool)), this, SLOT(setFormating())); connect(uiWidConfig.pushButton_center, SIGNAL(clicked(bool)), this, SLOT(setFormating())); connect(uiWidConfig.pushButton_right, SIGNAL(clicked(bool)), this, SLOT(setFormating())); connect(uiWidConfig.pushButton_fill, SIGNAL(clicked(bool)), this, SLOT(setFormating())); connect(parent, SIGNAL(okClicked()), this, SLOT(configAccepted())); connect(parent, SIGNAL(applyClicked()), this, SLOT(configAccepted())); } void AwesomeWidget::configAccepted() { if (debug) qDebug() << PDEBUG; QStringList items; disconnectFromEngine(); KConfigGroup cg = config(); // widget cg.writeEntry("text", uiWidConfig.textEdit_elements->toPlainText()); // advanced cg.writeEntry("background", QString::number(uiAdvancedConfig.checkBox_background->checkState())); cg.writeEntry("popup", QString::number(uiAdvancedConfig.checkBox_popup->checkState())); cg.writeEntry("customTime", uiAdvancedConfig.lineEdit_timeFormat->text()); cg.writeEntry("customUptime", uiAdvancedConfig.lineEdit_uptimeFormat->text()); cg.writeEntry("tempUnits", uiAdvancedConfig.comboBox_tempUnits->currentText()); items.clear(); for (int i=0; icount(); i++) if (uiAdvancedConfig.listWidget_tempDevice->item(i)->checkState() == Qt::Checked) items.append(uiAdvancedConfig.listWidget_tempDevice->item(i)->text()); cg.writeEntry("tempDevice", items.join(QString("@@"))); items.clear(); for (int i=0; icount(); i++) if (uiAdvancedConfig.listWidget_fanDevice->item(i)->checkState() == Qt::Checked) items.append(uiAdvancedConfig.listWidget_fanDevice->item(i)->text()); cg.writeEntry("fanDevice", items.join(QString("@@"))); items.clear(); for (int i=0; icount(); i++) if (uiAdvancedConfig.listWidget_mount->item(i)->checkState() == Qt::Checked) items.append(uiAdvancedConfig.listWidget_mount->item(i)->text()); cg.writeEntry("mount", items.join(QString("@@"))); items.clear(); for (int i=0; icount(); i++) if (uiAdvancedConfig.listWidget_hddDevice->item(i)->checkState() == Qt::Checked) items.append(uiAdvancedConfig.listWidget_hddDevice->item(i)->text()); cg.writeEntry("hdd", items.join(QString("@@"))); items.clear(); for (int i=0; icount(); i++) if (uiAdvancedConfig.listWidget_hddSpeedDevice->item(i)->checkState() == Qt::Checked) items.append(uiAdvancedConfig.listWidget_hddSpeedDevice->item(i)->text()); cg.writeEntry("disk", items.join(QString("@@"))); cg.writeEntry("useCustomNetdev", QString::number(uiAdvancedConfig.checkBox_netdev->checkState())); cg.writeEntry("customNetdev", uiAdvancedConfig.comboBox_netdev->currentText()); cg.writeEntry("acOnline", uiAdvancedConfig.lineEdit_acOnline->text()); cg.writeEntry("acOffline", uiAdvancedConfig.lineEdit_acOffline->text()); cg.writeEntry("checkUpdates", QString::number(uiAdvancedConfig.checkBox_updates->checkState())); // tooltip cg.writeEntry("tooltipNumber", QString::number(uiTooltipConfig.spinBox_tooltipNum->value())); cg.writeEntry("useTooltipBackground", QString::number(uiTooltipConfig.checkBox_background->checkState())); cg.writeEntry("tooltipBackground", uiTooltipConfig.kcolorcombo_background->color().name()); cg.writeEntry("cpuTooltip", QString::number(uiTooltipConfig.checkBox_cpu->checkState())); cg.writeEntry("cpuColor", uiTooltipConfig.kcolorcombo_cpu->color().name()); cg.writeEntry("cpuclTooltip", QString::number(uiTooltipConfig.checkBox_cpuclock->checkState())); cg.writeEntry("cpuclColor", uiTooltipConfig.kcolorcombo_cpuclock->color().name()); cg.writeEntry("memTooltip", QString::number(uiTooltipConfig.checkBox_mem->checkState())); cg.writeEntry("memColor", uiTooltipConfig.kcolorcombo_mem->color().name()); cg.writeEntry("swapTooltip", QString::number(uiTooltipConfig.checkBox_swap->checkState())); cg.writeEntry("swapColor", uiTooltipConfig.kcolorcombo_swap->color().name()); cg.writeEntry("downTooltip", QString::number(uiTooltipConfig.checkBox_down->checkState())); cg.writeEntry("downColor", uiTooltipConfig.kcolorcombo_down->color().name()); cg.writeEntry("upColor", uiTooltipConfig.kcolorcombo_up->color().name()); cg.writeEntry("batteryTooltip", QString::number(uiTooltipConfig.checkBox_battery->checkState())); cg.writeEntry("batteryColor", uiTooltipConfig.kcolorcombo_battery->color().name()); cg.writeEntry("batteryInColor", uiTooltipConfig.kcolorcombo_batteryIn->color().name()); // appearance cg.writeEntry("interval", QString::number(uiAppConfig.spinBox_interval->value())); cg.writeEntry("fontFamily", uiAppConfig.fontComboBox->currentFont().family()); cg.writeEntry("fontSize", QString::number(uiAppConfig.spinBox_size->value())); cg.writeEntry("fontColor", uiAppConfig.kcolorcombo->color().name()); cg.writeEntry("fontStyle", uiAppConfig.comboBox_style->currentText()); cg.writeEntry("fontWeight", QString::number(uiAppConfig.spinBox_weight->value())); // dataengine QMap deSettings; deSettings[QString("ACPIPATH")] = uiDEConfig.lineEdit_acpi->text(); deSettings[QString("GPUDEV")] = uiDEConfig.comboBox_gpudev->currentText(); deSettings[QString("HDDDEV")] = uiDEConfig.comboBox_hdddev->currentText(); deSettings[QString("HDDTEMPCMD")] = uiDEConfig.lineEdit_hddtempCmd->text(); deSettings[QString("MPDADDRESS")] = uiDEConfig.lineEdit_mpdaddress->text(); deSettings[QString("MPDPORT")] = QString::number(uiDEConfig.spinBox_mpdport->value()); deSettings[QString("MPRIS")] = uiDEConfig.comboBox_mpris->currentText(); deSettings[QString("PKGNULL")] = items.join(QChar(',')); deSettings[QString("PLAYER")] = uiDEConfig.comboBox_playerSelect->currentText(); writeDataEngineConfiguration(deSettings); } void AwesomeWidget::configChanged() { if (debug) qDebug() << PDEBUG; KConfigGroup cg = config(); // widget configuration[QString("text")] = cg.readEntry("text", "[cpu: $cpu%] [mem: $mem%] [swap: $swap%] [$netdev: $down/$upKB/s]"); // advanced configuration[QString("background")] = cg.readEntry("background", "2"); configuration[QString("popup")] = cg.readEntry("popup", "2"); configuration[QString("customTime")] = cg.readEntry("customTime", "$hh:$mm"); configuration[QString("customUptime")] = cg.readEntry("customUptime", "$dd,$hh,$mm"); configuration[QString("tempUnits")] = cg.readEntry("tempUnits", "Celsius"); configuration[QString("tempDevice")] = cg.readEntry("tempDevice", ""); configuration[QString("fanDevice")] = cg.readEntry("fanDevice", ""); configuration[QString("mount")] = cg.readEntry("mount", "/"); configuration[QString("hdd")] = cg.readEntry("hdd", "/dev/sda"); configuration[QString("disk")] = cg.readEntry("disk", "disk/sda_(8:0)"); configuration[QString("useCustomNetdev")] = cg.readEntry("useCustomNetdev", "0"); configuration[QString("customNetdev")] = cg.readEntry("customNetdev", "lo"); configuration[QString("acOnline")] = cg.readEntry("acOnline", "(*)"); configuration[QString("acOffline")] = cg.readEntry("acOffline", "( )"); configuration[QString("checkUpdates")] = cg.readEntry("checkUpdates", "2"); // tooltip tooltipValues.clear(); configuration[QString("tooltipNumber")] = cg.readEntry("tooltipNumber", "100"); configuration[QString("useTooltipBackground")] = cg.readEntry("useTooltipBackground", "2"); configuration[QString("tooltipBackground")] = cg.readEntry("tooltipBackground", "#ffffff"); configuration[QString("cpuTooltip")] = cg.readEntry("cpuTooltip", "2"); if (configuration[QString("cpuTooltip")].toInt() == 2) { tooltipValues[QString("cpu")].append(0.0); tooltipValues[QString("cpu")].append(0.01); } configuration[QString("cpuColor")] = cg.readEntry("cpuColor", "#ff0000"); configuration[QString("cpuclTooltip")] = cg.readEntry("cpuclTooltip", "2"); if (configuration[QString("cpuclTooltip")].toInt() == 2) { tooltipValues[QString("cpucl")].append(0.0); tooltipValues[QString("cpucl")].append(0.01); } configuration[QString("cpuclColor")] = cg.readEntry("cpuclColor", "#00ff00"); configuration[QString("memTooltip")] = cg.readEntry("memTooltip", "2"); if (configuration[QString("memTooltip")].toInt() == 2) { tooltipValues[QString("mem")].append(0.0); tooltipValues[QString("mem")].append(0.01); } configuration[QString("memColor")] = cg.readEntry("memColor", "#0000ff"); configuration[QString("swapTooltip")] = cg.readEntry("swapTooltip", "2"); if (configuration[QString("swapTooltip")].toInt() == 2) { tooltipValues[QString("swap")].append(0.0); tooltipValues[QString("swap")].append(0.01); } configuration[QString("swapColor")] = cg.readEntry("swapColor", "#ffff00"); configuration[QString("downTooltip")] = cg.readEntry("downTooltip", "2"); if (configuration[QString("downTooltip")].toInt() == 2) { tooltipValues[QString("down")].append(0.0); tooltipValues[QString("down")].append(0.01); tooltipValues[QString("up")].append(0.0); tooltipValues[QString("up")].append(0.01); } configuration[QString("downColor")] = cg.readEntry("downColor", "#00ffff"); configuration[QString("upColor")] = cg.readEntry("upColor", "#ff00ff"); configuration[QString("batteryTooltip")] = cg.readEntry("batteryTooltip", "2"); if (configuration[QString("batteryTooltip")].toInt() == 2) { tooltipValues[QString("bat")].append(0.0); tooltipValues[QString("bat")].append(0.01); } configuration[QString("batteryColor")] = cg.readEntry("batteryColor", "#008800"); configuration[QString("batteryInColor")] = cg.readEntry("batteryInColor", "#880000"); // appearance configuration[QString("interval")] = cg.readEntry("interval", "1000"); CFont font = CFont(cg.readEntry("fontFamily", "Terminus")); font.setPointSize(cg.readEntry("fontSize", 10)); font.setCurrentColor(QColor(cg.readEntry("fontColor", "#000000"))); font.setHtmlWeight(cg.readEntry("fontWeight", 400)); font.setItalic(cg.readEntry("fontStyle", "normal") == QString("italic")); QString fontStyle; if (font.italic()) fontStyle = QString("italic"); else fontStyle = QString("normal"); formatLine[0] = QString("\ ") .arg(font.family()) .arg(font.pointSize()) .arg(font.htmlWeight()) .arg(fontStyle) .arg(font.color().name()); formatLine[1] = QString(""); // counts QMap deSettings = readDataEngineConfiguration(); counts[QString("bat")] = 0; QStringList acpiDevices = QDir(deSettings[QString("ACPIPATH")]).entryList(QDir::Dirs | QDir::NoDotAndDotDot); QRegExp batRegexp = QRegExp(QString("BAT.*")); for (int i=0; iname() == QString("bar%1").arg(number)) { number++; exit = false; break; } if (exit) break; } 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; if (!name.endsWith(QString(".desktop"))) name += QString(".desktop"); QStringList bars; bars.append(keys.filter((QRegExp(QString("cpu(?!cl).*"))))); bars.append(keys.filter((QRegExp(QString("^gpu$"))))); bars.append(keys.filter((QRegExp(QString("^mem$"))))); bars.append(keys.filter((QRegExp(QString("^swap$"))))); bars.append(keys.filter((QRegExp(QString("^hdd[0-9].*"))))); bars.append(keys.filter((QRegExp(QString("^bat.*"))))); GraphicalItem *item = new GraphicalItem(0, name, dirs, debug); item->setName(QString("bar%1").arg(number)); item->showConfiguration(bars); } void AwesomeWidget::addCustomScript() { if (debug) qDebug() << PDEBUG; QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_dataengine_extsysmon/scripts"); bool ok; QString name = QInputDialog::getText(0, i18n("Enter file name"), i18n("File name"), QLineEdit::Normal, QString(""), &ok); if ((!ok) || (name.isEmpty())) return; if (!name.endsWith(QString(".desktop"))) name += QString(".desktop"); ExtScript *script = new ExtScript(0, name, dirs, debug); script->showConfiguration(); } void AwesomeWidget::addPkgCommand() { if (debug) qDebug() << PDEBUG; QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_dataengine_extsysmon/upgrade"); bool ok; QString name = QInputDialog::getText(0, i18n("Enter file name"), i18n("File name"), QLineEdit::Normal, QString(""), &ok); if ((!ok) || (name.isEmpty())) return; if (!name.endsWith(QString(".desktop"))) name += QString(".desktop"); ExtUpgrade *upgrade = new ExtUpgrade(0, name, dirs, debug); upgrade->showConfiguration(); } void AwesomeWidget::contextMenuBars(const QPoint pos) { if (debug) qDebug() << PDEBUG; if (uiAdvancedConfig.listWidget_bars->currentItem() == 0) return; QMenu menu(uiAdvancedConfig.listWidget_bars); QAction *edit = menu.addAction(QIcon::fromTheme("document-edit"), i18n("Edit")); QAction *copy = menu.addAction(QIcon::fromTheme("edit-copy"), i18n("Copy")); QAction *remove = menu.addAction(QIcon::fromTheme("edit-delete"), i18n("Remove")); QAction *action = menu.exec(uiAdvancedConfig.listWidget_bars->viewport()->mapToGlobal(pos)); if (action == edit) editBar(uiAdvancedConfig.listWidget_bars->currentItem()); else if (action == copy) copyBar(uiAdvancedConfig.listWidget_bars->currentItem()->text()); else if (action == remove) for (int i=0; ifileName() != uiAdvancedConfig.listWidget_bars->currentItem()->text()) continue; graphicalItems[i]->tryDelete(); graphicalItems.takeAt(i); uiAdvancedConfig.listWidget_bars->takeItem(uiAdvancedConfig.listWidget_bars->currentRow()); break; } } void AwesomeWidget::contextMenuCustomCommand(const QPoint pos) { if (debug) qDebug() << PDEBUG; if (uiDEConfig.listWidget_custom->currentItem() == 0) return; QMenu menu(uiDEConfig.listWidget_custom); QAction *edit = menu.addAction(QIcon::fromTheme("document-edit"), i18n("Edit")); QAction *copy = menu.addAction(QIcon::fromTheme("edit-copy"), i18n("Copy")); QAction *remove = menu.addAction(QIcon::fromTheme("edit-delete"), i18n("Remove")); QAction *action = menu.exec(uiDEConfig.listWidget_custom->viewport()->mapToGlobal(pos)); if (action == edit) editCustomCommand(uiDEConfig.listWidget_custom->currentItem()); else if (action == copy) copyCustomCommand(uiDEConfig.listWidget_custom->currentItem()->text()); else if (action == remove) { QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_dataengine_extsysmon/scripts"); ExtScript *script = new ExtScript(0, uiDEConfig.listWidget_custom->currentItem()->text(), dirs, debug); script->tryDelete(); delete script; uiDEConfig.listWidget_custom->takeItem(uiDEConfig.listWidget_custom->currentRow()); } } void AwesomeWidget::contextMenuPkgCommand(const QPoint pos) { if (debug) qDebug() << PDEBUG; if (uiDEConfig.listWidget_pkgCommand->currentItem() == 0) return; QMenu menu(uiDEConfig.listWidget_pkgCommand); QAction *remove = menu.addAction(QIcon::fromTheme("edit-delete"), i18n("Remove")); QAction *action = menu.exec(uiDEConfig.listWidget_pkgCommand->viewport()->mapToGlobal(pos)); if (action == remove) { QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_dataengine_extsysmon/upgrade"); ExtUpgrade *upgrade = new ExtUpgrade(0, uiDEConfig.listWidget_pkgCommand->currentItem()->text(), dirs, debug); upgrade->tryDelete(); delete upgrade; uiDEConfig.listWidget_pkgCommand->takeItem(uiDEConfig.listWidget_pkgCommand->currentRow()); } } void AwesomeWidget::copyBar(const QString original) { if (debug) qDebug() << PDEBUG; int number = 0; while (true) { bool exit = true; for (int i=0; iname() == QString("bar%1").arg(number)) { number++; exit = false; break; } if (exit) break; } 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; if (!name.endsWith(QString(".desktop"))) name += QString(".desktop"); QStringList bars; bars.append(keys.filter((QRegExp(QString("cpu(?!cl).*"))))); bars.append(keys.filter((QRegExp(QString("^gpu$"))))); bars.append(keys.filter((QRegExp(QString("^mem$"))))); bars.append(keys.filter((QRegExp(QString("^swap$"))))); bars.append(keys.filter((QRegExp(QString("^hdd[0-9].*"))))); bars.append(keys.filter((QRegExp(QString("^bat.*"))))); GraphicalItem *originalItem = nullptr; for (int i=0; ifileName() != original) continue; originalItem = graphicalItems[i]; break; } GraphicalItem *item = new GraphicalItem(0, name, dirs, debug); item->setName(QString("bar%1").arg(number)); item->setComment(originalItem->comment()); item->setBar(originalItem->bar()); item->setActiveColor(originalItem->activeColor()); item->setInactiveColor(originalItem->inactiveColor()); item->setType(originalItem->type()); item->setDirection(originalItem->direction()); item->setHeight(originalItem->height()); item->setWidth(originalItem->width()); delete originalItem; item->showConfiguration(bars); delete item; } void AwesomeWidget::copyCustomCommand(const QString original) { if (debug) qDebug() << PDEBUG; QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_dataengine_extsysmon/scripts"); bool ok; QString name = QInputDialog::getText(0, i18n("Enter file name"), i18n("File name"), QLineEdit::Normal, QString(""), &ok); if ((!ok) || (name.isEmpty())) return; if (!name.endsWith(QString(".desktop"))) name += QString(".desktop"); ExtScript *originalScript = new ExtScript(0, original, dirs, debug); ExtScript *script = new ExtScript(0, name, dirs, debug); script->setActive(originalScript->isActive()); script->setComment(originalScript->comment()); script->setExecutable(originalScript->executable()); script->setHasOutput(originalScript->hasOutput()); script->setInterval(originalScript->interval()); script->setName(originalScript->name()); script->setPrefix(originalScript->prefix()); script->setRedirect(originalScript->redirect()); delete originalScript; script->showConfiguration(); delete script; } void AwesomeWidget::editBar(QListWidgetItem *item) { if (debug) qDebug() << PDEBUG; QStringList bars; bars.append(keys.filter((QRegExp(QString("^cpu(?!cl).*"))))); bars.append(keys.filter((QRegExp(QString("^gpu$"))))); bars.append(keys.filter((QRegExp(QString("^mem$"))))); bars.append(keys.filter((QRegExp(QString("^swap$"))))); bars.append(keys.filter((QRegExp(QString("^hdd[0-9].*"))))); bars.append(keys.filter((QRegExp(QString("^bat.*"))))); for (int i=0; ifileName() != item->text()) continue; graphicalItems[i]->showConfiguration(bars); break; } } void AwesomeWidget::editCustomCommand(QListWidgetItem *item) { if (debug) qDebug() << PDEBUG; QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_dataengine_extsysmon/scripts"); ExtScript *script = new ExtScript(0, item->text(), dirs, debug); script->showConfiguration(); } void AwesomeWidget::editPkgCommand(QListWidgetItem *item) { if (debug) qDebug() << PDEBUG; QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_dataengine_extsysmon/upgrade"); ExtUpgrade *upgrade = new ExtUpgrade(0, item->text(), dirs, debug); upgrade->showConfiguration(); } void AwesomeWidget::editFanItem(QListWidgetItem *item) { if (debug) qDebug() << PDEBUG; uiAdvancedConfig.listWidget_fanDevice->openPersistentEditor(item); } 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); } QList AwesomeWidget::initScripts() { if (debug) qDebug() << PDEBUG; QList externalScripts; // create directory at $HOME QString localDir = KStandardDirs::locateLocal("data", "plasma_dataengine_extsysmon/scripts"); if (KStandardDirs::makeDir(localDir)) if (debug) qDebug() << PDEBUG << ":" << "Created directory" << localDir; QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_dataengine_extsysmon/scripts"); QStringList names; for (int i=0; i AwesomeWidget::initUpgrades() { if (debug) qDebug() << PDEBUG; QList externalUpgrade; // create directory at $HOME QString localDir = KStandardDirs::locateLocal("data", "plasma_dataengine_extsysmon/upgrade"); if (KStandardDirs::makeDir(localDir)) if (debug) qDebug() << PDEBUG << ":" << "Created directory" << localDir; QStringList dirs = KGlobal::dirs()->findDirs("data", "plasma_dataengine_extsysmon/upgrade"); QStringList names; for (int i=0; icurrentFont().family(), uiAppConfig.spinBox_size->value(), 400, false, uiAppConfig.kcolorcombo->color()); CFont font = CFontDialog::getFont(i18n("Select font"), defaultFont, false, false); if (font != defaultFont) { QString selectedText = uiWidConfig.textEdit_elements->textCursor().selectedText(); uiWidConfig.textEdit_elements->insertPlainText(QString("") .arg(font.color().name()).arg(font.family()).arg(font.pointSize()) + selectedText + QString("")); } } void AwesomeWidget::setFormating() { if (debug) qDebug() << PDEBUG; if (debug) qDebug() << PDEBUG << ":" << "Sender" << sender(); QString selectedText = uiWidConfig.textEdit_elements->textCursor().selectedText(); if (sender() == uiWidConfig.pushButton_tags) uiWidConfig.textEdit_elements->insertPlainText(QString("$") + uiWidConfig.comboBox_tags->currentText()); else if (sender() == uiWidConfig.pushButton_br) uiWidConfig.textEdit_elements->insertPlainText(QString("
\n")); else if (sender() == uiWidConfig.pushButton_bold) uiWidConfig.textEdit_elements->insertPlainText(QString("") + selectedText + QString("")); else if (sender() == uiWidConfig.pushButton_italic) uiWidConfig.textEdit_elements->insertPlainText(QString("") + selectedText + QString("")); else if (sender() == uiWidConfig.pushButton_underline) uiWidConfig.textEdit_elements->insertPlainText(QString("") + selectedText + QString("")); else if (sender() == uiWidConfig.pushButton_strike) uiWidConfig.textEdit_elements->insertPlainText(QString("") + selectedText + QString("")); else if (sender() == uiWidConfig.pushButton_left) uiWidConfig.textEdit_elements->insertPlainText(QString("

") + selectedText + QString("

")); else if (sender() == uiWidConfig.pushButton_center) uiWidConfig.textEdit_elements->insertPlainText(QString("

") + selectedText + QString("

")); else if (sender() == uiWidConfig.pushButton_right) uiWidConfig.textEdit_elements->insertPlainText(QString("

") + selectedText + QString("

")); else if (sender() == uiWidConfig.pushButton_fill) uiWidConfig.textEdit_elements->insertPlainText(QString("

") + selectedText + QString("

")); }