summaryrefslogtreecommitdiff
authorkergoth <kergoth>2003-04-15 02:35:50 (UTC)
committer kergoth <kergoth>2003-04-15 02:35:50 (UTC)
commit114383b92b066aa06bc6a3ed4e04e87baa0dc990 (patch) (side-by-side diff)
tree48556717e33ca8c22a7ac274b1b05f03a3443b1f
parentd2f7c238e852eb60fdcfe3e4024823480713e50e (diff)
downloadopie-114383b92b066aa06bc6a3ed4e04e87baa0dc990.zip
opie-114383b92b066aa06bc6a3ed4e04e87baa0dc990.tar.gz
opie-114383b92b066aa06bc6a3ed4e04e87baa0dc990.tar.bz2
Implement feature request. Only asterisk out the WEP key when the lineedit
does not have focus.
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/networksettings/wlan/keyedit.cpp21
-rw-r--r--noncore/settings/networksettings/wlan/keyedit.h21
-rw-r--r--noncore/settings/networksettings/wlan/wlan.pro4
-rw-r--r--noncore/settings/networksettings/wlan/wlan.ui179
-rw-r--r--noncore/settings/networksettings/wlan/wlanimp2.cpp1
5 files changed, 160 insertions, 66 deletions
diff --git a/noncore/settings/networksettings/wlan/keyedit.cpp b/noncore/settings/networksettings/wlan/keyedit.cpp
new file mode 100644
index 0000000..ad9ecae
--- a/dev/null
+++ b/noncore/settings/networksettings/wlan/keyedit.cpp
@@ -0,0 +1,21 @@
+#include "keyedit.h"
+#include <qlineedit.h>
+
+KeyEdit::KeyEdit(QWidget* parent, const char* name) :
+ QLineEdit(parent, name)
+{
+}
+
+KeyEdit::~KeyEdit()
+{
+}
+
+void KeyEdit::focusInEvent(QFocusEvent *event)
+{
+ setEchoMode(Normal);
+}
+
+void KeyEdit::focusOutEvent(QFocusEvent *event)
+{
+ setEchoMode(Password);
+}
diff --git a/noncore/settings/networksettings/wlan/keyedit.h b/noncore/settings/networksettings/wlan/keyedit.h
new file mode 100644
index 0000000..7d418a6
--- a/dev/null
+++ b/noncore/settings/networksettings/wlan/keyedit.h
@@ -0,0 +1,21 @@
+#ifndef KEYEDIT_H
+#define KEYEDIT_H
+
+#include <qlineedit.h>
+
+class KeyEdit : public QLineEdit {
+ Q_OBJECT
+
+public:
+ KeyEdit(QWidget* parent = 0, const char* name = 0);
+ ~KeyEdit();
+
+protected:
+ void focusInEvent(QFocusEvent *event);
+ void focusOutEvent(QFocusEvent *event);
+
+private:
+};
+
+#endif
+
diff --git a/noncore/settings/networksettings/wlan/wlan.pro b/noncore/settings/networksettings/wlan/wlan.pro
index 9ddc154..7a55a8e 100644
--- a/noncore/settings/networksettings/wlan/wlan.pro
+++ b/noncore/settings/networksettings/wlan/wlan.pro
@@ -1,26 +1,26 @@
TEMPLATE = lib
CONFIG += qt warn_on release
#CONFIG += qt warn_on debug
DESTDIR = $(OPIEDIR)/plugins/networksettings
-HEADERS = infoimp.h wlanmodule.h wextensions.h
-SOURCES = infoimp.cpp wlanmodule.cpp wextensions.cpp
+HEADERS = infoimp.h wlanmodule.h wextensions.h keyedit.h
+SOURCES = infoimp.cpp wlanmodule.cpp wextensions.cpp keyedit.cpp
INCLUDEPATH += $(OPIEDIR)/include ../ ../interfaces/
DEPENDPATH += $(OPIEDIR)/include
LIBS += -lqpe -L../interfaces/ -linterfaces
INTERFACES = wlan.ui info.ui
TARGET = wlanplugin
VERSION = 1.0.0
#CONFIG += wirelessopts
wirelessopts {
HEADERS += wlanimp.h
SOURCES += wlanimp.cpp
}
! wirelessopts {
HEADERS += wlanimp2.h
SOURCES += wlanimp2.cpp
}
include ( $(OPIEDIR)/include.pro )
diff --git a/noncore/settings/networksettings/wlan/wlan.ui b/noncore/settings/networksettings/wlan/wlan.ui
index e7c8dbb..2e2d4d7 100644
--- a/noncore/settings/networksettings/wlan/wlan.ui
+++ b/noncore/settings/networksettings/wlan/wlan.ui
@@ -1,667 +1,718 @@
<!DOCTYPE UI><UI>
<class>WLAN</class>
<widget>
<class>QDialog</class>
<property stdset="1">
<name>name</name>
<cstring>WLAN</cstring>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>0</x>
<y>0</y>
- <width>255</width>
+ <width>251</width>
<height>299</height>
</rect>
</property>
<property stdset="1">
<name>caption</name>
<string>Wireless Configuration</string>
</property>
<property stdset="1">
<name>sizeGripEnabled</name>
<bool>true</bool>
</property>
<property>
<name>layoutMargin</name>
</property>
<vbox>
<property stdset="1">
<name>margin</name>
<number>0</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget>
<class>QTabWidget</class>
<property stdset="1">
<name>name</name>
<cstring>tabWidget</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>true</bool>
</property>
<widget>
<class>QWidget</class>
<property stdset="1">
<name>name</name>
<cstring>ConfigPage</cstring>
</property>
<attribute>
<name>title</name>
<string>General</string>
</attribute>
<spacer>
<property>
<name>name</name>
<cstring>Spacer31</cstring>
</property>
<property stdset="1">
<name>orientation</name>
<enum>Vertical</enum>
</property>
<property stdset="1">
<name>sizeType</name>
<enum>Expanding</enum>
</property>
<property>
<name>sizeHint</name>
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
<widget>
<class>QLabel</class>
<property stdset="1">
<name>name</name>
<cstring>modeLabel</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>11</x>
<y>11</y>
<width>84</width>
<height>29</height>
</rect>
</property>
<property stdset="1">
<name>sizePolicy</name>
<sizepolicy>
<hsizetype>1</hsizetype>
<vsizetype>1</vsizetype>
</sizepolicy>
</property>
<property stdset="1">
<name>text</name>
<string>Mode</string>
</property>
</widget>
<widget>
<class>QLabel</class>
<property stdset="1">
<name>name</name>
<cstring>essidLabel</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>11</x>
<y>46</y>
<width>84</width>
<height>29</height>
</rect>
</property>
<property stdset="1">
<name>sizePolicy</name>
<sizepolicy>
<hsizetype>1</hsizetype>
<vsizetype>1</vsizetype>
</sizepolicy>
</property>
<property stdset="1">
<name>text</name>
<string>ESS-ID</string>
</property>
</widget>
<widget>
<class>QSpinBox</class>
<property stdset="1">
<name>name</name>
<cstring>networkChannel</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>146</x>
<y>139</y>
<width>58</width>
<height>25</height>
</rect>
</property>
<property stdset="1">
<name>maxValue</name>
<number>15</number>
</property>
<property stdset="1">
<name>minValue</name>
<number>1</number>
</property>
<property stdset="1">
<name>value</name>
<number>1</number>
</property>
</widget>
<widget>
<class>QLineEdit</class>
<property stdset="1">
<name>name</name>
<cstring>macEdit</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>56</x>
<y>108</y>
<width>182</width>
<height>25</height>
</rect>
</property>
<property stdset="1">
<name>sizePolicy</name>
<sizepolicy>
<hsizetype>5</hsizetype>
<vsizetype>1</vsizetype>
</sizepolicy>
</property>
</widget>
<widget>
<class>QLabel</class>
<property stdset="1">
<name>name</name>
<cstring>macLabel</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>11</x>
<y>108</y>
<width>39</width>
<height>25</height>
</rect>
</property>
<property stdset="1">
<name>text</name>
<string>MAC</string>
</property>
</widget>
<widget>
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>specifyAp</cstring>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>11</x>
<y>81</y>
<width>227</width>
<height>21</height>
</rect>
</property>
<property stdset="1">
<name>text</name>
<string>Specify &amp;Access Point</string>
</property>
</widget>
<widget>
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>specifyChan</cstring>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>11</x>
<y>141</y>
<width>129</width>
<height>21</height>
</rect>
</property>
<property stdset="1">
<name>text</name>
<string>Specify &amp;Channel</string>
</property>
</widget>
<spacer>
<property>
<name>name</name>
<cstring>Spacer10</cstring>
</property>
<property stdset="1">
<name>orientation</name>
<enum>Horizontal</enum>
</property>
<property stdset="1">
<name>sizeType</name>
<enum>Expanding</enum>
</property>
<property>
<name>sizeHint</name>
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
<widget>
<class>QComboBox</class>
<item>
<property>
<name>text</name>
<string>Auto</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Managed</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Ad-Hoc</string>
</property>
</item>
<property stdset="1">
<name>name</name>
<cstring>mode</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>101</x>
<y>11</y>
<width>103</width>
<height>29</height>
</rect>
</property>
<property stdset="1">
<name>sizePolicy</name>
<sizepolicy>
<hsizetype>1</hsizetype>
<vsizetype>0</vsizetype>
</sizepolicy>
</property>
</widget>
<widget>
<class>QComboBox</class>
<item>
<property>
<name>text</name>
<string>any</string>
</property>
</item>
<property stdset="1">
<name>name</name>
<cstring>essid</cstring>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>101</x>
<y>46</y>
<width>103</width>
<height>29</height>
</rect>
</property>
<property stdset="1">
<name>sizePolicy</name>
<sizepolicy>
<hsizetype>7</hsizetype>
<vsizetype>0</vsizetype>
</sizepolicy>
</property>
<property stdset="1">
<name>editable</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>currentItem</name>
<number>0</number>
</property>
<property stdset="1">
<name>sizeLimit</name>
<number>5</number>
</property>
<property stdset="1">
<name>autoCompletion</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>duplicatesEnabled</name>
<bool>false</bool>
</property>
</widget>
</widget>
<widget>
<class>QWidget</class>
<property stdset="1">
<name>name</name>
<cstring>WepPage</cstring>
</property>
<attribute>
<name>title</name>
<string>Encryption</string>
</attribute>
<grid>
<property stdset="1">
<name>margin</name>
<number>11</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
- <spacer row="0" column="0" >
- <property>
- <name>name</name>
- <cstring>Spacer30</cstring>
- </property>
- <property stdset="1">
- <name>orientation</name>
- <enum>Vertical</enum>
- </property>
- <property stdset="1">
- <name>sizeType</name>
- <enum>Expanding</enum>
- </property>
- <property>
- <name>sizeHint</name>
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
<widget row="0" column="0" >
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>wepEnabled</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>&amp;Enable Encryption</string>
</property>
</widget>
<widget row="1" column="0" >
<class>QButtonGroup</class>
<property stdset="1">
<name>name</name>
<cstring>KeyButtonGroup</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
<property stdset="1">
<name>title</name>
<string>&amp;Key Setting</string>
</property>
<grid>
<property stdset="1">
<name>margin</name>
<number>11</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
- <widget row="0" column="1" >
- <class>QLineEdit</class>
+ <widget row="0" column="0" >
+ <class>QRadioButton</class>
<property stdset="1">
<name>name</name>
- <cstring>keyLineEdit0</cstring>
+ <cstring>keyRadio0</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Key &amp;1</string>
</property>
<property stdset="1">
- <name>echoMode</name>
- <enum>Password</enum>
+ <name>checked</name>
+ <bool>true</bool>
</property>
</widget>
- <widget row="1" column="1" >
- <class>QLineEdit</class>
+ <widget row="1" column="0" >
+ <class>QRadioButton</class>
<property stdset="1">
<name>name</name>
- <cstring>keyLineEdit1</cstring>
+ <cstring>keyRadio1</cstring>
</property>
<property stdset="1">
- <name>echoMode</name>
- <enum>Password</enum>
+ <name>text</name>
+ <string>Key &amp;2</string>
</property>
</widget>
- <widget row="2" column="1" >
- <class>QLineEdit</class>
+ <widget row="2" column="0" >
+ <class>QRadioButton</class>
<property stdset="1">
<name>name</name>
- <cstring>keyLineEdit2</cstring>
+ <cstring>keyRadio2</cstring>
</property>
<property stdset="1">
- <name>echoMode</name>
- <enum>Password</enum>
+ <name>text</name>
+ <string>Key &amp;3</string>
</property>
</widget>
- <widget row="3" column="1" >
- <class>QLineEdit</class>
+ <widget row="3" column="0" >
+ <class>QRadioButton</class>
<property stdset="1">
<name>name</name>
- <cstring>keyLineEdit3</cstring>
+ <cstring>keyRadio3</cstring>
</property>
<property stdset="1">
- <name>echoMode</name>
- <enum>Password</enum>
+ <name>text</name>
+ <string>Key &amp;4</string>
</property>
</widget>
- <widget row="0" column="0" >
- <class>QRadioButton</class>
+ <widget row="0" column="1" >
+ <class>KeyEdit</class>
<property stdset="1">
<name>name</name>
- <cstring>keyRadio0</cstring>
+ <cstring>keyLineEdit0</cstring>
</property>
<property stdset="1">
- <name>text</name>
- <string>Key &amp;1</string>
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>5</vsizetype>
+ </sizepolicy>
</property>
<property stdset="1">
- <name>checked</name>
- <bool>true</bool>
+ <name>focusPolicy</name>
+ <enum>StrongFocus</enum>
</property>
</widget>
- <widget row="1" column="0" >
- <class>QRadioButton</class>
+ <widget row="1" column="1" >
+ <class>KeyEdit</class>
<property stdset="1">
<name>name</name>
- <cstring>keyRadio1</cstring>
+ <cstring>keyLineEdit1</cstring>
</property>
<property stdset="1">
- <name>text</name>
- <string>Key &amp;2</string>
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>5</vsizetype>
+ </sizepolicy>
+ </property>
+ <property stdset="1">
+ <name>focusPolicy</name>
+ <enum>StrongFocus</enum>
</property>
</widget>
- <widget row="2" column="0" >
- <class>QRadioButton</class>
+ <widget row="2" column="1" >
+ <class>KeyEdit</class>
<property stdset="1">
<name>name</name>
- <cstring>keyRadio2</cstring>
+ <cstring>keyLineEdit2</cstring>
</property>
<property stdset="1">
- <name>text</name>
- <string>Key &amp;3</string>
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>5</vsizetype>
+ </sizepolicy>
+ </property>
+ <property stdset="1">
+ <name>focusPolicy</name>
+ <enum>StrongFocus</enum>
</property>
</widget>
- <widget row="3" column="0" >
- <class>QRadioButton</class>
+ <widget row="3" column="1" >
+ <class>KeyEdit</class>
<property stdset="1">
<name>name</name>
- <cstring>keyRadio3</cstring>
+ <cstring>keyLineEdit3</cstring>
</property>
<property stdset="1">
- <name>text</name>
- <string>Key &amp;4</string>
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>3</hsizetype>
+ <vsizetype>5</vsizetype>
+ </sizepolicy>
+ </property>
+ <property stdset="1">
+ <name>focusPolicy</name>
+ <enum>StrongFocus</enum>
</property>
</widget>
</grid>
</widget>
<widget row="2" column="0" >
<class>QButtonGroup</class>
<property stdset="1">
<name>name</name>
<cstring>NonEncButtonGroup</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
<property stdset="1">
<name>title</name>
<string>Non-encrypted Packets</string>
</property>
<property stdset="1">
<name>radioButtonExclusive</name>
<bool>true</bool>
</property>
<grid>
<property stdset="1">
<name>margin</name>
<number>11</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget row="0" column="0" >
<class>QRadioButton</class>
<property stdset="1">
<name>name</name>
<cstring>acceptNonEnc</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>&amp;Accept</string>
</property>
<property stdset="1">
<name>checked</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>buttonGroupId</name>
<number>0</number>
</property>
</widget>
<widget row="0" column="1" >
<class>QRadioButton</class>
<property stdset="1">
<name>name</name>
<cstring>rejectNonEnc</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>&amp;Reject</string>
</property>
<property stdset="1">
<name>buttonGroupId</name>
<number>1</number>
</property>
</widget>
</grid>
</widget>
+ <spacer row="3" column="0" >
+ <property>
+ <name>name</name>
+ <cstring>Spacer30</cstring>
+ </property>
+ <property stdset="1">
+ <name>orientation</name>
+ <enum>Vertical</enum>
+ </property>
+ <property stdset="1">
+ <name>sizeType</name>
+ <enum>Expanding</enum>
+ </property>
+ <property>
+ <name>sizeHint</name>
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
</grid>
</widget>
</widget>
</vbox>
</widget>
+<customwidgets>
+ <customwidget>
+ <class>KeyEdit</class>
+ <header location="global">/usr/src/opie/noncore/net/networksettings/wlan/keyedit.h</header>
+ <sizehint>
+ <width>-1</width>
+ <height>-1</height>
+ </sizehint>
+ <container>0</container>
+ <sizepolicy>
+ <hordata>5</hordata>
+ <verdata>5</verdata>
+ </sizepolicy>
+ <pixmap>image0</pixmap>
+ <slot access="public">setEnabled(bool)</slot>
+ </customwidget>
+</customwidgets>
+<images>
+ <image>
+ <name>image0</name>
+ <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1ddec44f503c0ae2a154410f53d0ed20e2bf6bdb656dd6861dd23d9a66591b0587fd1654235ebded6f0edcd53e419d87ae7b1f4f9b8f906d0bfe012317426a70b07bdc2f3ec77f8ed6b89559061a0343d06a124cc105596482585094bc0ae599b04646c9018926491b2205e140c485cace25755c175d0a967b622ff900b8cc9c7d29af594ea722d589167f813aa852ba07d94b9dce296e883fe7bb163f23896753</data>
+ </image>
+</images>
<connections>
<connection>
<sender>specifyAp</sender>
<signal>toggled(bool)</signal>
<receiver>macLabel</receiver>
<slot>setEnabled(bool)</slot>
</connection>
<connection>
<sender>specifyAp</sender>
<signal>toggled(bool)</signal>
<receiver>macEdit</receiver>
<slot>setEnabled(bool)</slot>
</connection>
<connection>
<sender>specifyChan</sender>
<signal>toggled(bool)</signal>
<receiver>networkChannel</receiver>
<slot>setEnabled(bool)</slot>
</connection>
<connection>
<sender>wepEnabled</sender>
<signal>toggled(bool)</signal>
<receiver>KeyButtonGroup</receiver>
<slot>setEnabled(bool)</slot>
</connection>
<connection>
<sender>wepEnabled</sender>
<signal>toggled(bool)</signal>
<receiver>NonEncButtonGroup</receiver>
<slot>setEnabled(bool)</slot>
</connection>
</connections>
<tabstops>
<tabstop>tabWidget</tabstop>
<tabstop>wepEnabled</tabstop>
<tabstop>keyRadio0</tabstop>
<tabstop>keyLineEdit0</tabstop>
<tabstop>keyRadio1</tabstop>
<tabstop>keyLineEdit1</tabstop>
<tabstop>keyRadio2</tabstop>
<tabstop>keyLineEdit2</tabstop>
<tabstop>keyRadio3</tabstop>
<tabstop>keyLineEdit3</tabstop>
<tabstop>acceptNonEnc</tabstop>
<tabstop>mode</tabstop>
<tabstop>essid</tabstop>
<tabstop>specifyAp</tabstop>
<tabstop>macEdit</tabstop>
<tabstop>specifyChan</tabstop>
<tabstop>networkChannel</tabstop>
</tabstops>
</UI>
diff --git a/noncore/settings/networksettings/wlan/wlanimp2.cpp b/noncore/settings/networksettings/wlan/wlanimp2.cpp
index 73afc92..e7b842b 100644
--- a/noncore/settings/networksettings/wlan/wlanimp2.cpp
+++ b/noncore/settings/networksettings/wlan/wlanimp2.cpp
@@ -1,268 +1,269 @@
#include "wlanimp2.h"
+#include "keyedit.h"
#include "interfacesetupimp.h"
#include <qfile.h>
#include <qdir.h>
#include <qtextstream.h>
#include <qmessagebox.h>
#include <qlineedit.h>
#include <qlabel.h>
#include <qspinbox.h>
#include <qradiobutton.h>
#include <qcheckbox.h>
#include <qtabwidget.h>
#include <qcombobox.h>
#ifdef QWS
#include <opie/oprocess.h>
#else
#define OProcess KProcess
#include <kprocess.h>
#endif
#define WIRELESS_OPTS "/etc/pcmcia/wireless.opts"
#define PREUP "/etc/netwrok/if-pre-up.d/wireless-tools"
/**
* Constructor, read in the wireless.opts file for parsing later.
*/
WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl) : WLAN(parent, name, modal, fl), currentProfile("*"), interface(i) {
interfaces = new Interfaces;
interfaceSetup = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i, interfaces);
tabWidget->insertTab(interfaceSetup, "TCP/IP");
// Check sanity - the existance of the wireless-tools if-pre-up script
QFile file(QString(PREUP));
if (file.exists()) {
qWarning(QString("WLANImp: Unable to open /etc/network/if-pre-up.d/wireless-tools"));
}
}
WLANImp::~WLANImp() {
delete interfaces;
}
/**
* Change the profile for both wireless settings and network settings.
*/
void WLANImp::setProfile(const QString &profile){
interfaceSetup->setProfile(profile);
parseOpts();
}
void WLANImp::parseOpts() {
bool error;
QString opt;
if (! interfaces->isInterfaceSet())
return;
opt = interfaces->getInterfaceOption("wireless_essid", error);
if(opt == "any" || opt == "off" || opt.isNull()){
essid->setEditText("any");
} else {
essid->setEditText(opt);
}
opt = interfaces->getInterfaceOption("wireless_mode", error).simplifyWhiteSpace();
if (opt == "Auto") {
mode->setCurrentItem(0);
} else if (opt == "Ad-Hoc") {
mode->setCurrentItem(2);
} else {
// Managed/Infrastructure mode
mode->setCurrentItem(1);
}
opt = interfaces->getInterfaceOption("wireless_ap", error).simplifyWhiteSpace();
if (! opt.isNull()) {
specifyAp->setChecked(true);
macEdit->setText(opt);
}
opt = interfaces->getInterfaceOption("wireless_channel", error).simplifyWhiteSpace();
if (! opt.isNull()) {
specifyChan->setChecked(true);
networkChannel->setValue(opt.toInt());
}
opt = interfaces->getInterfaceOption("wireless_key", error).simplifyWhiteSpace();
if (opt.isNull())
opt = interfaces->getInterfaceOption("wireless_enc", error).simplifyWhiteSpace();
parseKeyStr(opt);
}
void WLANImp::parseKeyStr(QString keystr) {
int loc = 0;
int index = 1;
QString key;
QStringList keys = QStringList::split(QRegExp("\\s+"), keystr);
int enc = -1; // encryption state
for (QStringList::Iterator it = keys.begin(); it != keys.end(); ++it) {
if ((*it).left(3) == "off") {
// encryption disabled
enc = 0;
} else if ((*it).left(2) == "on") {
// encryption enabled
enc = 1;
} else if ((*it).left(4) == "open") {
// open mode, accept non encrypted packets
acceptNonEnc->setChecked(true);
} else if ((*it).left(10) == "restricted") {
// restricted mode, only accept encrypted packets
rejectNonEnc->setChecked(true);
} else if ((*it).left(3) == "key") {
// new set of options
} else if ((*it).left(1) == "[") {
index = (*it).mid(1, 1).toInt();
// switch current key to index
switch (index) {
case 1:
keyRadio0->setChecked(true);
break;
case 2:
keyRadio1->setChecked(true);
break;
case 3:
keyRadio2->setChecked(true);
break;
case 4:
keyRadio3->setChecked(true);
break;
}
} else {
// key
key = (*it);
}
if (! key.isNull()) {
if (enc == -1)
enc = 1;
QStringList::Iterator next = ++it;
if (it == keys.end()) {
break;
}
if ((*(next)).left(1) == "[") {
// set key at index
index = (*(next)).mid(1, 1).toInt();
} else {
index = 1;
}
switch (index) {
case 1:
keyLineEdit0->setText(key);
break;
case 2:
keyLineEdit1->setText(key);
break;
case 3:
keyLineEdit2->setText(key);
break;
case 4:
keyLineEdit3->setText(key);
break;
}
key = QString::null;
}
}
if (enc == 1) {
wepEnabled->setChecked(true);
} else {
wepEnabled->setChecked(false);
}
}
/**
* Check to see if the current config is valid
* Save interfaces
*/
void WLANImp::accept() {
if (wepEnabled->isChecked()) {
if ((keyRadio0->isChecked() && keyLineEdit0->text().isEmpty()) ||
(keyRadio1->isChecked() && keyLineEdit1->text().isEmpty()) ||
(keyRadio2->isChecked() && keyLineEdit2->text().isEmpty()) ||
(keyRadio3->isChecked() && keyLineEdit3->text().isEmpty())) {
QMessageBox::information(this, "Error", "Please enter a WEP key.", QMessageBox::Ok);
return;
}
}
if (essid->currentText().isEmpty()) {
QMessageBox::information(this, "Error", "Please select/enter an ESSID.", QMessageBox::Ok);
return;
}
if (specifyAp->isChecked() && macEdit->text().isEmpty()) {
QMessageBox::information(this, "Error", "Please enter the MAC address of the Access Point.", QMessageBox::Ok);
return;
}
// Try to save the interfaces settings.
writeOpts();
// Close out the dialog
QDialog::accept();
}
void WLANImp::writeOpts() {
bool error = false;
interfaces->setInterfaceOption(QString("wireless_mode"), mode->currentText());
interfaces->setInterfaceOption(QString("wireless_essid"), essid->currentText());
if (specifyAp->isChecked()) {
interfaces->setInterfaceOption(QString("wireless_ap"), macEdit->text());
} else {
interfaces->removeInterfaceOption(QString("wireless_ap"));
}
if (specifyChan->isChecked()) {
interfaces->setInterfaceOption(QString("wireless_channel"), networkChannel->text());
} else {
interfaces->removeInterfaceOption(QString("wireless_channel"));
}
if (wepEnabled->isChecked()) {
QStringList keyList;
if (! keyLineEdit0->text().isNull()) {
keyList += keyLineEdit0->text();
keyList += "[1]";
} else if (! keyLineEdit1->text().isNull()) {
keyList += keyLineEdit1->text();
keyList += "[2]";
} else if (! keyLineEdit2->text().isNull()) {
keyList += keyLineEdit2->text();
keyList += "[3]";
} else if (! keyLineEdit3->text().isNull()) {
keyList += keyLineEdit3->text();
keyList += "[4]";
}
if (acceptNonEnc->isChecked()) {
keyList += "open";
} else {
keyList += "restricted";
}
keyList += "key";
if (keyRadio0->isChecked()) {
keyList += "[1]";
} else if (keyRadio1->isChecked()) {
keyList += "[2]";
} else if (keyRadio2->isChecked()) {
keyList += "[3]";
} else if (keyRadio3->isChecked()) {
keyList += "[4]";
}
interfaces->setInterfaceOption(QString("wireless_key"), keyList.join(QString(" ")));
} else {
interfaces->removeInterfaceOption(QString("wireless_key"));
}
interfaces->removeInterfaceOption(QString("wireless_enc"));
if(!interfaceSetup->saveChanges())
return;
QDialog::accept();
}