rewrited plasmoid

This commit is contained in:
arcan1s 2014-08-05 12:57:27 +04:00
parent dc81a44034
commit 7ed3e4e01b
7 changed files with 269 additions and 217 deletions

View File

@ -63,6 +63,10 @@ Additional information
TODO (wish list) TODO (wish list)
---------------- ----------------
* refactoring of library (using QtNetwork module instead of some system calls)
* refactoring of GUI according to library changes
* rewrite changelog to more comfortable format
Links Links
----- -----

View File

@ -411,7 +411,6 @@ void Netctl::setProfileList(int exitCode, QProcess::ExitStatus exitStatus)
profileList[i].remove(0, 2); profileList[i].remove(0, 2);
setData(QString("profiles"), QString("value"), profileList.join(QChar(','))); setData(QString("profiles"), QString("value"), profileList.join(QChar(',')));
qDebug() << profileList;
} }

View File

@ -20,7 +20,7 @@
<string notr="true">Configuration Window</string> <string notr="true">Configuration Window</string>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="8" column="0"> <item row="9" column="0">
<spacer name="verticalSpacer_appearance"> <spacer name="verticalSpacer_appearance">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@ -33,7 +33,7 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="7" column="0"> <item row="8" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_inactiveIcon"> <layout class="QHBoxLayout" name="horizontalLayout_inactiveIcon">
<item> <item>
<widget class="QLabel" name="label_inactiveIcon"> <widget class="QLabel" name="label_inactiveIcon">
@ -66,7 +66,7 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="2" column="0"> <item row="3" column="0">
<layout class="QHBoxLayout" name="layout_fontColor"> <layout class="QHBoxLayout" name="layout_fontColor">
<item> <item>
<widget class="QLabel" name="label_fontColor"> <widget class="QLabel" name="label_fontColor">
@ -115,7 +115,7 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="5" column="0"> <item row="6" column="0">
<widget class="Line" name="line_appearance"> <widget class="Line" name="line_appearance">
<property name="lineWidth"> <property name="lineWidth">
<number>5</number> <number>5</number>
@ -128,7 +128,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="2" column="0">
<layout class="QHBoxLayout" name="layout_fontSize"> <layout class="QHBoxLayout" name="layout_fontSize">
<item> <item>
<widget class="QLabel" name="label_fontSize"> <widget class="QLabel" name="label_fontSize">
@ -189,7 +189,7 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="3" column="0"> <item row="4" column="0">
<layout class="QHBoxLayout" name="layout_fontWeight"> <layout class="QHBoxLayout" name="layout_fontWeight">
<item> <item>
<widget class="QLabel" name="label_fontWeight"> <widget class="QLabel" name="label_fontWeight">
@ -253,7 +253,7 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="4" column="0"> <item row="5" column="0">
<layout class="QHBoxLayout" name="layout_fontStyle"> <layout class="QHBoxLayout" name="layout_fontStyle">
<item> <item>
<widget class="QLabel" name="label_fontStyle"> <widget class="QLabel" name="label_fontStyle">
@ -300,19 +300,19 @@
</property> </property>
<item> <item>
<property name="text"> <property name="text">
<string>normal</string> <string notr="true">normal</string>
</property> </property>
</item> </item>
<item> <item>
<property name="text"> <property name="text">
<string>italic</string> <string notr="true">italic</string>
</property> </property>
</item> </item>
</widget> </widget>
</item> </item>
</layout> </layout>
</item> </item>
<item row="0" column="0"> <item row="1" column="0">
<layout class="QHBoxLayout" name="layout_font"> <layout class="QHBoxLayout" name="layout_font">
<item> <item>
<widget class="QLabel" name="label_font"> <widget class="QLabel" name="label_font">
@ -361,7 +361,7 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="6" column="0"> <item row="7" column="0">
<layout class="QHBoxLayout" name="layout_activeIcon"> <layout class="QHBoxLayout" name="layout_activeIcon">
<item> <item>
<widget class="QLabel" name="label_activeIcon"> <widget class="QLabel" name="label_activeIcon">
@ -394,6 +394,75 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="0" column="0">
<layout class="QHBoxLayout" name="layout_textAlign">
<item>
<widget class="QLabel" name="label_textAlign">
<property name="minimumSize">
<size>
<width>80</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Text align</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_textAlign">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QComboBox" name="comboBox_textAlign">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>100</width>
<height>23</height>
</size>
</property>
<property name="toolTip">
<string>Set text align</string>
</property>
<item>
<property name="text">
<string notr="true">center</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">right</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">left</string>
</property>
</item>
<item>
<property name="text">
<string notr="true">justify</string>
</property>
</item>
</widget>
</item>
</layout>
</item>
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>

View File

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>480</width> <width>480</width>
<height>337</height> <height>335</height>
</rect> </rect>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
@ -86,72 +86,6 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<layout class="QHBoxLayout" name="layout_ip">
<item>
<widget class="QLabel" name="label_ip">
<property name="minimumSize">
<size>
<width>150</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Path to ip</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_ip"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_ip">
<property name="minimumSize">
<size>
<width>100</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="layout_interface">
<item>
<widget class="QLabel" name="label_interface">
<property name="minimumSize">
<size>
<width>150</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Path to interface list</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_interface"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_interface">
<property name="minimumSize">
<size>
<width>100</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item> <item>
<layout class="QHBoxLayout" name="layout_extIp"> <layout class="QHBoxLayout" name="layout_extIp">
<item> <item>
@ -163,7 +97,7 @@
</size> </size>
</property> </property>
<property name="text"> <property name="text">
<string>Check external IP</string> <string>Check external IPv4</string>
</property> </property>
<property name="checked"> <property name="checked">
<bool>true</bool> <bool>true</bool>
@ -188,6 +122,42 @@
</item> </item>
</layout> </layout>
</item> </item>
<item>
<layout class="QHBoxLayout" name="layout_extIp6">
<item>
<widget class="QCheckBox" name="checkBox_extIp6">
<property name="minimumSize">
<size>
<width>150</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Check external IPv6</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit_extIp6"/>
</item>
<item>
<widget class="QPushButton" name="pushButton_extIp6">
<property name="minimumSize">
<size>
<width>100</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
</layout>
</item>
<item> <item>
<spacer name="verticalSpacer_dataengine"> <spacer name="verticalSpacer_dataengine">
<property name="orientation"> <property name="orientation">
@ -204,7 +174,6 @@
</layout> </layout>
</widget> </widget>
<tabstops> <tabstops>
<tabstop>lineEdit_ip</tabstop>
<tabstop>lineEdit_netctl</tabstop> <tabstop>lineEdit_netctl</tabstop>
<tabstop>pushButton_netctl</tabstop> <tabstop>pushButton_netctl</tabstop>
<tabstop>checkBox_extIp</tabstop> <tabstop>checkBox_extIp</tabstop>

View File

@ -102,8 +102,10 @@ void Netctl::init()
info[QString("name")] = QString("N\\A"); info[QString("name")] = QString("N\\A");
info[QString("status")] = QString("N\\A"); info[QString("status")] = QString("N\\A");
info[QString("intIp")] = QString("N\\A"); info[QString("intIp")] = QString("N\\A");
info[QString("intIp6")] = QString("N\\A");
info[QString("extIp")] = QString("N\\A"); info[QString("extIp")] = QString("N\\A");
info[QString("interfaces")] = QString("lo"); info[QString("extIp6")] = QString("N\\A");
info[QString("interfaces")] = QString("N\\A");
netctlEngine = dataEngine(QString("netctl")); netctlEngine = dataEngine(QString("netctl"));
createActions(); createActions();
@ -124,6 +126,48 @@ void Netctl::init()
} }
QString Netctl::parsePattern(const QString rawLine)
{
if (debug) qDebug() << "[PLASMOID]" << "[parsePattern]";
QString line = rawLine;
if (line.contains(QString("$current"))) {
if (debug) qDebug() << "[PLASMOID]" << "[parsePattern]" << "Found $current";
line = line.split(QString("$current"))[0] + info[QString("name")] + line.split(QString("$current"))[1];
}
if (line.contains(QString("$extip4"))) {
if (debug) qDebug() << "[PLASMOID]" << "[parsePattern]" << "Found $extip4";
line = line.split(QString("$extip4"))[0] + info[QString("extIp")] + line.split(QString("$extip4"))[1];
}
if (line.contains(QString("$extip6"))) {
if (debug) qDebug() << "[PLASMOID]" << "[parsePattern]" << "Found $extip6";
line = line.split(QString("$extip6"))[0] + info[QString("extIp6")] + line.split(QString("$extip6"))[1];
}
if (line.contains(QString("$interfaces"))) {
if (debug) qDebug() << "[PLASMOID]" << "[parsePattern]" << "Found $interfaces";
line = line.split(QString("$interfaces"))[0] + info[QString("interfaces")] + line.split(QString("$interfaces"))[1];
}
if (line.contains(QString("$intip4"))) {
if (debug) qDebug() << "[PLASMOID]" << "[parsePattern]" << "Found $intip4";
line = line.split(QString("$intip4"))[0] + info[QString("intIp")] + line.split(QString("$intip4"))[1];
}
if (line.contains(QString("$intip6"))) {
if (debug) qDebug() << "[PLASMOID]" << "[parsePattern]" << "Found $intip6";
line = line.split(QString("$intip6"))[0] + info[QString("intIp6")] + line.split(QString("$intip6"))[1];
}
if (line.contains(QString("$profiles"))) {
if (debug) qDebug() << "[PLASMOID]" << "[parsePattern]" << "Found $profiles";
line = line.split(QString("$profiles"))[0] + profileList.join(QChar(',')) + line.split(QString("$profiles"))[1];
}
if (line.contains(QString("$status"))) {
if (debug) qDebug() << "[PLASMOID]" << "[parsePattern]" << "Found $status";
line = line.split(QString("$status"))[0] + info[QString("status")] + line.split(QString("$status"))[1];
}
return line;
}
QMap<QString, QString> Netctl::readDataEngineConfiguration() QMap<QString, QString> Netctl::readDataEngineConfiguration()
{ {
if (debug) qDebug() << "[PLASMOID]" << "[readDataEngineConfiguration]"; if (debug) qDebug() << "[PLASMOID]" << "[readDataEngineConfiguration]";
@ -131,9 +175,9 @@ QMap<QString, QString> Netctl::readDataEngineConfiguration()
QMap<QString, QString> rawConfig; QMap<QString, QString> rawConfig;
rawConfig[QString("CMD")] = QString("/usr/bin/netctl"); rawConfig[QString("CMD")] = QString("/usr/bin/netctl");
rawConfig[QString("EXTIP")] = QString("false"); rawConfig[QString("EXTIP")] = QString("false");
rawConfig[QString("EXTIPCMD")] = QString("wget -qO- http://ifconfig.me/ip"); rawConfig[QString("EXTIPCMD")] = QString("curl ip4.telize.com");
rawConfig[QString("IPCMD")] = QString("/usr/bin/ip"); rawConfig[QString("EXTIP6")] = QString("false");
rawConfig[QString("NETDIR")] = QString("/sys/class/net/"); rawConfig[QString("EXTIP6CMD")] = QString("curl ip6.telize.com");
rawConfig[QString("NETCTLAUTOCMD")] = QString("/usr/bin/netctl-auto"); rawConfig[QString("NETCTLAUTOCMD")] = QString("/usr/bin/netctl-auto");
QString fileName = KGlobal::dirs()->findResource("config", "netctl.conf"); QString fileName = KGlobal::dirs()->findResource("config", "netctl.conf");
@ -193,7 +237,7 @@ QMap<QString, QString> Netctl::updateDataEngineConfiguration(const QMap<QString,
key.remove(QChar(' ')); key.remove(QChar(' '));
if ((key != QString("CMD")) && if ((key != QString("CMD")) &&
(key != QString("EXTIPCMD")) && (key != QString("EXTIPCMD")) &&
(key != QString("IPCMD")) && (key != QString("EXTIP6CMD")) &&
(key != QString("NETCTLAUTOCMD"))) (key != QString("NETCTLAUTOCMD")))
value.remove(QChar(' ')); value.remove(QChar(' '));
config[key] = value; config[key] = value;
@ -308,7 +352,6 @@ void Netctl::switchToProfileSlot(QAction *profile)
sendNotification(QString("Info"), i18n("Switch to profile %1", profile->text().remove(QChar('&')))); sendNotification(QString("Info"), i18n("Switch to profile %1", profile->text().remove(QChar('&'))));
commandLine = paths[QString("netctlAuto")] + QString(" switch-to ") + commandLine = paths[QString("netctlAuto")] + QString(" switch-to ") +
profile->text().remove(QChar('&')); profile->text().remove(QChar('&'));
qDebug() << commandLine;
command.startDetached(commandLine); command.startDetached(commandLine);
} }
@ -471,20 +514,16 @@ void Netctl::connectToEngine()
{ {
if (debug) qDebug() << "[PLASMOID]" << "[connectToEngine]"; if (debug) qDebug() << "[PLASMOID]" << "[connectToEngine]";
netctlEngine->connectSource(QString("currentProfile"), this, autoUpdateInterval);
netctlEngine->connectSource(QString("extIp"), this, autoUpdateInterval);
netctlEngine->connectSource(QString("extIp6"), this, autoUpdateInterval);
netctlEngine->connectSource(QString("interfaces"), this, autoUpdateInterval);
netctlEngine->connectSource(QString("intIp"), this, autoUpdateInterval);
netctlEngine->connectSource(QString("intIp6"), this, autoUpdateInterval);
netctlEngine->connectSource(QString("profiles"), this, autoUpdateInterval); netctlEngine->connectSource(QString("profiles"), this, autoUpdateInterval);
netctlEngine->connectSource(QString("statusBool"), this, autoUpdateInterval); netctlEngine->connectSource(QString("statusBool"), this, autoUpdateInterval);
netctlEngine->connectSource(QString("currentProfile"), this, autoUpdateInterval);
netctlEngine->connectSource(QString("statusString"), this, autoUpdateInterval); netctlEngine->connectSource(QString("statusString"), this, autoUpdateInterval);
updateInterface(false); updateInterface(bigInterface);
if (bigInterface[QString("main")]) {
if (bigInterface[QString("extIp")])
netctlEngine->connectSource(QString("extIp"), this, autoUpdateInterval);
if (bigInterface[QString("intIp")])
netctlEngine->connectSource(QString("intIp"), this, autoUpdateInterval);
if (bigInterface[QString("netDev")])
netctlEngine->connectSource(QString("interfaces"), this, autoUpdateInterval);
updateInterface(true);
}
} }
@ -503,26 +542,24 @@ void Netctl::dataUpdated(const QString &sourceName, const Plasma::DataEngine::Da
info[QString("name")] = value; info[QString("name")] = value;
// update text // update text
QStringList text; if (bigInterface)
text.append(info[QString("name")] + QString(" ") + info[QString("status")]); textLabel->setText(formatLine[0] + parsePattern(textPattern) + formatLine[1]);
if (bigInterface[QString("intIp")])
text.append(info[QString("intIp")]);
if (bigInterface[QString("extIp")])
text.append(info[QString("extIp")]);
if (bigInterface[QString("netDev")])
text.append(info[QString("interfaces")]);
if (bigInterface[QString("main")])
textLabel->setText(formatLine[0] + text.join(QString("<br>")) + formatLine[1]);
} }
else if (sourceName == QString("extIp")) { else if (sourceName == QString("extIp")) {
info[QString("extIp")] = value; info[QString("extIp")] = value;
} }
else if (sourceName == QString("intIp")) { else if (sourceName == QString("extIp6")) {
info[QString("intIp")] = value; info[QString("extIp6")] = value;
} }
else if (sourceName == QString("interfaces")) { else if (sourceName == QString("interfaces")) {
info[QString("interfaces")] = value; info[QString("interfaces")] = value;
} }
else if (sourceName == QString("intIp")) {
info[QString("intIp")] = value;
}
else if (sourceName == QString("intIp6")) {
info[QString("intIp6")] = value;
}
else if (sourceName == QString("profiles")) { else if (sourceName == QString("profiles")) {
profileList = value.split(QChar(',')); profileList = value.split(QChar(','));
} }
@ -551,18 +588,15 @@ void Netctl::disconnectFromEngine()
{ {
if (debug) qDebug() << "[PLASMOID]" << "[disconnectFromEngine]"; if (debug) qDebug() << "[PLASMOID]" << "[disconnectFromEngine]";
netctlEngine->disconnectSource(QString("currentProfile"), this);
netctlEngine->disconnectSource(QString("extIp"), this);
netctlEngine->disconnectSource(QString("extIp6"), this);
netctlEngine->disconnectSource(QString("interfaces"), this);
netctlEngine->disconnectSource(QString("intIp"), this);
netctlEngine->disconnectSource(QString("intIp6"), this);
netctlEngine->disconnectSource(QString("profiles"), this); netctlEngine->disconnectSource(QString("profiles"), this);
netctlEngine->disconnectSource(QString("statusBool"), this); netctlEngine->disconnectSource(QString("statusBool"), this);
netctlEngine->disconnectSource(QString("currentProfile"), this);
netctlEngine->disconnectSource(QString("statusString"), this); netctlEngine->disconnectSource(QString("statusString"), this);
if (bigInterface[QString("main")]) {
if (bigInterface[QString("extIp")])
netctlEngine->disconnectSource(QString("extIp"), this);
if (bigInterface[QString("intIp")])
netctlEngine->disconnectSource(QString("intIp"), this);
if (bigInterface[QString("netDev")])
netctlEngine->disconnectSource(QString("interfaces"), this);
}
updateInterface(false); updateInterface(false);
} }
@ -572,10 +606,8 @@ void Netctl::selectAbstractSomething()
{ {
if (debug) qDebug() << "[PLASMOID]" << "[selectAbstractSomething]"; if (debug) qDebug() << "[PLASMOID]" << "[selectAbstractSomething]";
bool isDir = false;
QString path = QString("/usr/bin"); QString path = QString("/usr/bin");
QLineEdit *lineEdit = uiWidConfig.lineEdit_gui; QLineEdit *lineEdit = uiWidConfig.lineEdit_gui;
KUrl url;
if (sender() == uiAppConfig.pushButton_activeIcon) { if (sender() == uiAppConfig.pushButton_activeIcon) {
path = QString("/usr/share/icons"); path = QString("/usr/share/icons");
lineEdit = uiAppConfig.lineEdit_activeIcon; lineEdit = uiAppConfig.lineEdit_activeIcon;
@ -596,22 +628,14 @@ void Netctl::selectAbstractSomething()
lineEdit = uiWidConfig.lineEdit_wifi; lineEdit = uiWidConfig.lineEdit_wifi;
else if (sender() == uiDEConfig.pushButton_extIp) else if (sender() == uiDEConfig.pushButton_extIp)
lineEdit = uiDEConfig.lineEdit_extIp; lineEdit = uiDEConfig.lineEdit_extIp;
else if (sender() == uiDEConfig.pushButton_interface) { else if (sender() == uiDEConfig.pushButton_extIp6)
path = QString("/sys"); lineEdit = uiDEConfig.lineEdit_extIp6;
lineEdit = uiDEConfig.lineEdit_interface;
isDir = true;
}
else if (sender() == uiDEConfig.pushButton_ip)
lineEdit = uiDEConfig.lineEdit_ip;
else if (sender() == uiDEConfig.pushButton_netctl) else if (sender() == uiDEConfig.pushButton_netctl)
lineEdit = uiDEConfig.lineEdit_netctl; lineEdit = uiDEConfig.lineEdit_netctl;
else if (sender() == uiDEConfig.pushButton_netctlAuto) else if (sender() == uiDEConfig.pushButton_netctlAuto)
lineEdit = uiDEConfig.lineEdit_netctlAuto; lineEdit = uiDEConfig.lineEdit_netctlAuto;
if (isDir) KUrl url = KFileDialog::getOpenUrl(KUrl(path), "*");
url = KFileDialog::getExistingDirectoryUrl(path);
else
url = KFileDialog::getOpenUrl(KUrl(path), "*");
lineEdit->setText(url.path()); lineEdit->setText(url.path());
} }
@ -645,53 +669,46 @@ void Netctl::createConfigurationInterface(KConfigDialog *parent)
uiWidConfig.checkBox_wifi->setCheckState(Qt::Unchecked); uiWidConfig.checkBox_wifi->setCheckState(Qt::Unchecked);
uiWidConfig.lineEdit_wifi->setText(paths[QString("wifi")]); uiWidConfig.lineEdit_wifi->setText(paths[QString("wifi")]);
setWifi(); setWifi();
if (bigInterface[QString("main")]) if (bigInterface)
uiWidConfig.checkBox_showBigInterface->setCheckState(Qt::Checked); uiWidConfig.checkBox_showBigInterface->setCheckState(Qt::Checked);
else else
uiWidConfig.checkBox_showBigInterface->setCheckState(Qt::Unchecked); uiWidConfig.checkBox_showBigInterface->setCheckState(Qt::Unchecked);
if (bigInterface[QString("netDev")]) QString pattern = textPattern;
uiWidConfig.checkBox_showNetDev->setCheckState(Qt::Checked); uiWidConfig.textEdit->setPlainText(pattern.replace(QString("<br>"), QString("\n")));
else
uiWidConfig.checkBox_showNetDev->setCheckState(Qt::Unchecked);
if (bigInterface[QString("extIp")])
uiWidConfig.checkBox_showExtIp->setCheckState(Qt::Checked);
else
uiWidConfig.checkBox_showExtIp->setCheckState(Qt::Unchecked);
if (bigInterface[QString("intIp")])
uiWidConfig.checkBox_showIntIp->setCheckState(Qt::Checked);
else
uiWidConfig.checkBox_showIntIp->setCheckState(Qt::Unchecked);
setBigInterface(); setBigInterface();
KConfigGroup cg = config(); KConfigGroup cg = config();
QString textAlign = cg.readEntry("textAlign", "center");
QString fontFamily = cg.readEntry("fontFamily", "Terminus"); QString fontFamily = cg.readEntry("fontFamily", "Terminus");
int fontSize = cg.readEntry("fontSize", 10); int fontSize = cg.readEntry("fontSize", 10);
QString fontColor = cg.readEntry("fontColor", "#000000"); QString fontColor = cg.readEntry("fontColor", "#000000");
int fontWeight = cg.readEntry("fontWeight", 400); int fontWeight = cg.readEntry("fontWeight", 400);
QString fontStyle = cg.readEntry("fontStyle", "normal"); QString fontStyle = cg.readEntry("fontStyle", "normal");
QFont font = QFont(fontFamily, 12, 400, FALSE); QFont font = QFont(fontFamily, 12, 400, FALSE);
uiAppConfig.comboBox_textAlign->setCurrentIndex(uiAppConfig.comboBox_textAlign->findText(textAlign));
uiAppConfig.fontComboBox_font->setCurrentFont(font); uiAppConfig.fontComboBox_font->setCurrentFont(font);
uiAppConfig.spinBox_fontSize->setValue(fontSize); uiAppConfig.spinBox_fontSize->setValue(fontSize);
uiAppConfig.kcolorcombo_fontColor->setColor(fontColor); uiAppConfig.kcolorcombo_fontColor->setColor(fontColor);
uiAppConfig.spinBox_fontWeight->setValue(fontWeight); uiAppConfig.spinBox_fontWeight->setValue(fontWeight);
if (fontStyle == "normal") uiAppConfig.comboBox_fontStyle->setCurrentIndex(uiAppConfig.comboBox_fontStyle->findText(fontStyle));
uiAppConfig.comboBox_fontStyle->setCurrentIndex(0);
else if (fontStyle == "italic")
uiAppConfig.comboBox_fontStyle->setCurrentIndex(1);
uiAppConfig.lineEdit_activeIcon->setText(paths[QString("active")]); uiAppConfig.lineEdit_activeIcon->setText(paths[QString("active")]);
uiAppConfig.lineEdit_inactiveIcon->setText(paths[QString("inactive")]); uiAppConfig.lineEdit_inactiveIcon->setText(paths[QString("inactive")]);
QMap<QString, QString> deSettings = readDataEngineConfiguration(); QMap<QString, QString> deSettings = readDataEngineConfiguration();
uiDEConfig.lineEdit_netctl->setText(deSettings[QString("CMD")]); uiDEConfig.lineEdit_netctl->setText(deSettings[QString("CMD")]);
uiDEConfig.lineEdit_netctlAuto->setText(deSettings[QString("NETCTLAUTOCMD")]); uiDEConfig.lineEdit_netctlAuto->setText(deSettings[QString("NETCTLAUTOCMD")]);
uiDEConfig.lineEdit_ip->setText(deSettings[QString("IPCMD")]);
uiDEConfig.lineEdit_interface->setText(deSettings[QString("NETDIR")]);
if (deSettings[QString("EXTIP")] == QString("true")) if (deSettings[QString("EXTIP")] == QString("true"))
uiDEConfig.checkBox_extIp->setCheckState(Qt::Checked); uiDEConfig.checkBox_extIp->setCheckState(Qt::Checked);
else else
uiDEConfig.checkBox_extIp->setCheckState(Qt::Unchecked); uiDEConfig.checkBox_extIp->setCheckState(Qt::Unchecked);
uiDEConfig.lineEdit_extIp->setText(deSettings[QString("EXTIPCMD")]); uiDEConfig.lineEdit_extIp->setText(deSettings[QString("EXTIPCMD")]);
setDataEngineExternalIp(); setDataEngineExternalIp();
if (deSettings[QString("EXTIP6")] == QString("true"))
uiDEConfig.checkBox_extIp6->setCheckState(Qt::Checked);
else
uiDEConfig.checkBox_extIp6->setCheckState(Qt::Unchecked);
uiDEConfig.lineEdit_extIp6->setText(deSettings[QString("EXTIP6CMD")]);
setDataEngineExternalIp6();
uiAboutConfig.label_name->setText(QString(NAME)); uiAboutConfig.label_name->setText(QString(NAME));
uiAboutConfig.label_version->setText(i18n("Version %1\n(build date %2)", QString(VERSION), QString(BUILD_DATE))); uiAboutConfig.label_version->setText(i18n("Version %1\n(build date %2)", QString(VERSION), QString(BUILD_DATE)));
@ -717,6 +734,7 @@ void Netctl::createConfigurationInterface(KConfigDialog *parent)
connect(uiWidConfig.checkBox_sudo, SIGNAL(stateChanged(int)), this, SLOT(setSudo())); connect(uiWidConfig.checkBox_sudo, SIGNAL(stateChanged(int)), this, SLOT(setSudo()));
connect(uiWidConfig.checkBox_wifi, SIGNAL(stateChanged(int)), this, SLOT(setWifi())); connect(uiWidConfig.checkBox_wifi, SIGNAL(stateChanged(int)), this, SLOT(setWifi()));
connect(uiDEConfig.checkBox_extIp, SIGNAL(stateChanged(int)), this, SLOT(setDataEngineExternalIp())); connect(uiDEConfig.checkBox_extIp, SIGNAL(stateChanged(int)), this, SLOT(setDataEngineExternalIp()));
connect(uiDEConfig.checkBox_extIp6, SIGNAL(stateChanged(int)), this, SLOT(setDataEngineExternalIp6()));
connect(uiWidConfig.pushButton_gui, SIGNAL(clicked()), this, SLOT(selectAbstractSomething())); connect(uiWidConfig.pushButton_gui, SIGNAL(clicked()), this, SLOT(selectAbstractSomething()));
connect(uiWidConfig.pushButton_netctl, SIGNAL(clicked()), this, SLOT(selectAbstractSomething())); connect(uiWidConfig.pushButton_netctl, SIGNAL(clicked()), this, SLOT(selectAbstractSomething()));
@ -726,8 +744,7 @@ void Netctl::createConfigurationInterface(KConfigDialog *parent)
connect(uiAppConfig.pushButton_activeIcon, SIGNAL(clicked()), this, SLOT(selectAbstractSomething())); connect(uiAppConfig.pushButton_activeIcon, SIGNAL(clicked()), this, SLOT(selectAbstractSomething()));
connect(uiAppConfig.pushButton_inactiveIcon, SIGNAL(clicked()), this, SLOT(selectAbstractSomething())); connect(uiAppConfig.pushButton_inactiveIcon, SIGNAL(clicked()), this, SLOT(selectAbstractSomething()));
connect(uiDEConfig.pushButton_extIp, SIGNAL(clicked()), this, SLOT(selectAbstractSomething())); connect(uiDEConfig.pushButton_extIp, SIGNAL(clicked()), this, SLOT(selectAbstractSomething()));
connect(uiDEConfig.pushButton_interface, SIGNAL(clicked()), this, SLOT(selectAbstractSomething())); connect(uiDEConfig.pushButton_extIp6, SIGNAL(clicked()), this, SLOT(selectAbstractSomething()));
connect(uiDEConfig.pushButton_ip, SIGNAL(clicked()), this, SLOT(selectAbstractSomething()));
connect(uiDEConfig.pushButton_netctl, SIGNAL(clicked()), this, SLOT(selectAbstractSomething())); connect(uiDEConfig.pushButton_netctl, SIGNAL(clicked()), this, SLOT(selectAbstractSomething()));
connect(uiDEConfig.pushButton_netctlAuto, SIGNAL(clicked()), this, SLOT(selectAbstractSomething())); connect(uiDEConfig.pushButton_netctlAuto, SIGNAL(clicked()), this, SLOT(selectAbstractSomething()));
@ -761,19 +778,11 @@ void Netctl::configAccepted()
cg.writeEntry("showBigInterface", false); cg.writeEntry("showBigInterface", false);
else else
cg.writeEntry("showBigInterface", true); cg.writeEntry("showBigInterface", true);
if (uiWidConfig.checkBox_showNetDev->checkState() == 0) QString pattern = uiWidConfig.textEdit->toPlainText();
cg.writeEntry("showNetDev", false); pattern.replace(QString("\n"), QString("<br>"));
else cg.writeEntry("textPattern", pattern);
cg.writeEntry("showNetDev", true);
if (uiWidConfig.checkBox_showExtIp->checkState() == 0)
cg.writeEntry("showExtIp", false);
else
cg.writeEntry("showExtIp", true);
if (uiWidConfig.checkBox_showIntIp->checkState() == 0)
cg.writeEntry("showIntIp", false);
else
cg.writeEntry("showIntIp", true);
cg.writeEntry("textAlign", uiAppConfig.comboBox_textAlign->currentText());
cg.writeEntry("fontFamily", uiAppConfig.fontComboBox_font->currentFont().family()); cg.writeEntry("fontFamily", uiAppConfig.fontComboBox_font->currentFont().family());
cg.writeEntry("fontSize", uiAppConfig.spinBox_fontSize->value()); cg.writeEntry("fontSize", uiAppConfig.spinBox_fontSize->value());
cg.writeEntry("fontColor", uiAppConfig.kcolorcombo_fontColor->color().name()); cg.writeEntry("fontColor", uiAppConfig.kcolorcombo_fontColor->color().name());
@ -785,13 +794,16 @@ void Netctl::configAccepted()
QMap<QString, QString> deSettings; QMap<QString, QString> deSettings;
deSettings[QString("CMD")] = uiDEConfig.lineEdit_netctl->text(); deSettings[QString("CMD")] = uiDEConfig.lineEdit_netctl->text();
deSettings[QString("NETCTLAUTOCMD")] = uiDEConfig.lineEdit_netctlAuto->text(); deSettings[QString("NETCTLAUTOCMD")] = uiDEConfig.lineEdit_netctlAuto->text();
deSettings[QString("IPCMD")] = uiDEConfig.lineEdit_ip->text();
deSettings[QString("NETDIR")] = uiDEConfig.lineEdit_interface->text();
if (uiDEConfig.checkBox_extIp->checkState() == 0) if (uiDEConfig.checkBox_extIp->checkState() == 0)
deSettings[QString("EXTIP")] = QString("false"); deSettings[QString("EXTIP")] = QString("false");
else else
deSettings[QString("EXTIP")] = QString("true"); deSettings[QString("EXTIP")] = QString("true");
deSettings[QString("EXTIPCMD")] = uiDEConfig.lineEdit_extIp->text(); deSettings[QString("EXTIPCMD")] = uiDEConfig.lineEdit_extIp->text();
if (uiDEConfig.checkBox_extIp6->checkState() == 0)
deSettings[QString("EXTIP6")] = QString("false");
else
deSettings[QString("EXTIP6")] = QString("true");
deSettings[QString("EXTIP6CMD")] = uiDEConfig.lineEdit_extIp6->text();
writeDataEngineConfiguration(deSettings); writeDataEngineConfiguration(deSettings);
} }
@ -810,11 +822,10 @@ void Netctl::configChanged()
paths[QString("wifi")] = cg.readEntry("wifiPath", "/usr/bin/netctl-gui -t 3"); paths[QString("wifi")] = cg.readEntry("wifiPath", "/usr/bin/netctl-gui -t 3");
useSudo = cg.readEntry("useSudo", true); useSudo = cg.readEntry("useSudo", true);
useWifi = cg.readEntry("useWifi", false); useWifi = cg.readEntry("useWifi", false);
bigInterface[QString("main")] = cg.readEntry("showBigInterface", true); bigInterface = cg.readEntry("showBigInterface", true);
bigInterface[QString("extIp")] = cg.readEntry("showExtIp", false); textPattern = cg.readEntry("textPattern", "$current $status<br>IPv4: $intip4<br>IPv6: $intip6");
bigInterface[QString("netDev")] = cg.readEntry("showNetDev", true);
bigInterface[QString("intIp")] = cg.readEntry("showIntIp", true);
QString textAlign = cg.readEntry("textAlign", "center");
QString fontFamily = cg.readEntry("fontFamily", "Terminus"); QString fontFamily = cg.readEntry("fontFamily", "Terminus");
int fontSize = cg.readEntry("fontSize", 10); int fontSize = cg.readEntry("fontSize", 10);
QString fontColor = cg.readEntry("fontColor", "#000000"); QString fontColor = cg.readEntry("fontColor", "#000000");
@ -825,13 +836,17 @@ void Netctl::configChanged()
paths[QString("inactive")] = cg.readEntry("inactiveIconPath", paths[QString("inactive")] = cg.readEntry("inactiveIconPath",
"/usr/share/icons/hicolor/64x64/apps/netctl-offline.png"); "/usr/share/icons/hicolor/64x64/apps/netctl-offline.png");
formatLine[0] = ("<p align=\"center\"><span style=\" font-family:'" + fontFamily + \ formatLine[0] = QString("<html><head><meta name=\"qrichtext\" content=\"1\" />\
"'; font-style:" + fontStyle + \ <style type=\"text/css\">p, li { white-space: pre-wrap; }</style>\
"; font-size:" + QString::number(fontSize) + \ </head><body style=\"font-family:'%2'; font-size:%3pt; font-weight:%4; font-style:%5; color:%6;\"><p align=%1>")
"pt; font-weight:" + QString::number(fontWeight) + \ .arg(textAlign)
"; color:" + fontColor + \ .arg(fontFamily)
";\">"); .arg(QString::number(fontSize))
formatLine[1] = ("</span></p>"); .arg(QString::number(fontWeight))
.arg(fontStyle)
.arg(fontColor);
formatLine[1] = QString("</p></body></html>");
connectToEngine(); connectToEngine();
} }
@ -840,16 +855,10 @@ void Netctl::setBigInterface()
{ {
if (debug) qDebug() << "[PLASMOID]" << "[setBigInterface]"; if (debug) qDebug() << "[PLASMOID]" << "[setBigInterface]";
if (uiWidConfig.checkBox_showBigInterface->checkState() == 0) { if (uiWidConfig.checkBox_showBigInterface->checkState() == 0)
uiWidConfig.checkBox_showNetDev->setDisabled(true); uiWidConfig.textEdit->setDisabled(true);
uiWidConfig.checkBox_showExtIp->setDisabled(true); else if (uiWidConfig.checkBox_showBigInterface->checkState() == 2)
uiWidConfig.checkBox_showIntIp->setDisabled(true); uiWidConfig.textEdit->setDisabled(false);
}
else if (uiWidConfig.checkBox_showBigInterface->checkState() == 2) {
uiWidConfig.checkBox_showNetDev->setEnabled(true);
uiWidConfig.checkBox_showExtIp->setEnabled(true);
uiWidConfig.checkBox_showIntIp->setEnabled(true);
}
} }
@ -868,6 +877,21 @@ void Netctl::setDataEngineExternalIp()
} }
void Netctl::setDataEngineExternalIp6()
{
if (debug) qDebug() << "[PLASMOID]" << "[setDataEngineExternalIp6]";
if (uiDEConfig.checkBox_extIp6->checkState() == 0) {
uiDEConfig.lineEdit_extIp6->setDisabled(true);
uiDEConfig.pushButton_extIp6->setDisabled(true);
}
else if (uiDEConfig.checkBox_extIp6->checkState() == 2) {
uiDEConfig.lineEdit_extIp6->setEnabled(true);
uiDEConfig.pushButton_extIp6->setEnabled(true);
}
}
void Netctl::setSudo() void Netctl::setSudo()
{ {
if (debug) qDebug() << "[PLASMOID]" << "[setSudo]"; if (debug) qDebug() << "[PLASMOID]" << "[setSudo]";

View File

@ -55,6 +55,7 @@ public:
Netctl(QObject *parent, const QVariantList &args); Netctl(QObject *parent, const QVariantList &args);
~Netctl(); ~Netctl();
void init(); void init();
QString parsePattern(const QString rawLine);
QMap<QString, QString> readDataEngineConfiguration(); QMap<QString, QString> readDataEngineConfiguration();
void writeDataEngineConfiguration(const QMap<QString, QString> settings); void writeDataEngineConfiguration(const QMap<QString, QString> settings);
QMap<QString, QString> updateDataEngineConfiguration(const QMap<QString, QString> rawConfig); QMap<QString, QString> updateDataEngineConfiguration(const QMap<QString, QString> rawConfig);
@ -71,6 +72,7 @@ public slots:
void configChanged(); void configChanged();
void setBigInterface(); void setBigInterface();
void setDataEngineExternalIp(); void setDataEngineExternalIp();
void setDataEngineExternalIp6();
void setSudo(); void setSudo();
void setWifi(); void setWifi();
@ -117,9 +119,10 @@ private:
Ui::ConfigWindow uiWidConfig; Ui::ConfigWindow uiWidConfig;
Ui::About uiAboutConfig; Ui::About uiAboutConfig;
// configuration // configuration
bool debug;
int autoUpdateInterval; int autoUpdateInterval;
QMap<QString, bool> bigInterface; bool bigInterface;
bool debug;
QString textPattern;
QStringList formatLine; QStringList formatLine;
QMap<QString, QString> paths; QMap<QString, QString> paths;
bool useSudo, useWifi; bool useSudo, useWifi;

View File

@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>480</width> <width>480</width>
<height>337</height> <height>335</height>
</rect> </rect>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
@ -260,32 +260,16 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QCheckBox" name="checkBox_showNetDev"> <widget class="QPlainTextEdit" name="textEdit">
<property name="text"> <property name="toolTip">
<string>Show network devices</string> <string>$current - current profile name
</property> $extip - external IPv4
<property name="checked"> $extip6 - external IPv6
<bool>true</bool> $interfaces - list of the network interfaces
</property> $intip - internal IPv4
</widget> $intip6 - internal IPv6
</item> $profiles - list of the netctl profiles
<item> $status - current profile status (static/enabled)</string>
<widget class="QCheckBox" name="checkBox_showExtIp">
<property name="text">
<string>Show external IP</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBox_showIntIp">
<property name="text">
<string>Show internal IP</string>
</property>
<property name="checked">
<bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>