3 files changed, 174 insertions, 2 deletions
diff --git a/noncore/settings/networksettings/mainwindow/mainwindow.ui b/noncore/settings/networksettings/mainwindow/mainwindow.ui index a730dd5..185b345 100644 --- a/noncore/settings/networksettings/mainwindow/mainwindow.ui +++ b/noncore/settings/networksettings/mainwindow/mainwindow.ui @@ -11,7 +11,7 @@ <rect> <x>0</x> <y>0</y> - <width>240</width> + <width>340</width> <height>289</height> </rect> </property> @@ -41,6 +41,9 @@ <property> <name>layoutMargin</name> </property> + <property> + <name>layoutSpacing</name> + </property> <widget> <class>QWidget</class> <property stdset="1"> @@ -432,9 +435,108 @@ </widget> </grid> </widget> + <widget> + <class>QWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>devicenametab</cstring> + </property> + <attribute> + <name>title</name> + <string>Device name</string> + </attribute> + <vbox> + <property stdset="1"> + <name>margin</name> + <number>11</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>m_NameHead</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string><b>Name of the device</b></string> + </property> + </widget> + <widget> + <class>QLineEdit</class> + <property stdset="1"> + <name>name</name> + <cstring>m_Nameinput</cstring> + </property> + </widget> + <widget> + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>m_setButton</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Set value</string> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>m_Infolabel</cstring> + </property> + <property stdset="1"> + <name>sizePolicy</name> + <sizepolicy> + <hsizetype>3</hsizetype> + <vsizetype>3</vsizetype> + </sizepolicy> + </property> + <property stdset="1"> + <name>text</name> + <string>The name here is that one your device identifying with on +console or infrared.</string> + </property> + </widget> + <spacer> + <property> + <name>name</name> + <cstring>Spacer5</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> + </vbox> + </widget> </widget> </vbox> </widget> +<connections> + <connection> + <sender>m_setButton</sender> + <signal>clicked()</signal> + <receiver>MainWindow</receiver> + <slot>setHostname()</slot> + </connection> + <slot access="protected">setHostname()</slot> +</connections> <tabstops> <tabstop>tabWidget</tabstop> <tabstop>connectionList</tabstop> diff --git a/noncore/settings/networksettings/mainwindow/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindow/mainwindowimp.cpp index f83e370..0a3312c 100644 --- a/noncore/settings/networksettings/mainwindow/mainwindowimp.cpp +++ b/noncore/settings/networksettings/mainwindow/mainwindowimp.cpp @@ -8,6 +8,7 @@ /* OPIE */ #include <opie2/odebug.h> +#include <opie2/oprocess.h> #include <qpe/applnk.h> #include <qpe/qcopenvelope_qws.h> #include <qpe/qpeapplication.h> @@ -24,6 +25,7 @@ #include <qlabel.h> #include <qtabwidget.h> // in order to disable the profiles tab #include <qmessagebox.h> +#include <qtextstream.h> #if QT_VERSION < 0x030000 @@ -44,6 +46,12 @@ #define DEFAULT_SCHEME "/var/lib/pcmcia/scheme" #define _PROCNETDEV "/proc/net/dev" +// is this always right? +#define _HOSTFILE "/etc/hostname" +#define _IRDANAME "/proc/sys/net/irda/devname" + +using namespace Opie::Core; + MainWindowImp::MainWindowImp(QWidget *parent, const char *name, WFlags) : MainWindow(parent, name, Qt::WStyle_ContextHelp), advancedUserMode(true), scheme(DEFAULT_SCHEME) { connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked())); @@ -122,6 +130,7 @@ MainWindowImp::MainWindowImp(QWidget *parent, const char *name, WFlags) : MainWi file.close(); } makeChannel(); + initHostname(); } /** @@ -714,3 +723,53 @@ void MainWindowImp::receive(const QCString &msg, const QByteArray &arg) if (found) QPEApplication::setKeepRunning(); else odebug << "Huh what do ya want" << oendl; } + +void MainWindowImp::setHostname() +{ + QFile f(_HOSTFILE); + + OProcess*h = new OProcess; + _procTemp=""; + *h << "hostname" << m_Nameinput->text(); + connect(h,SIGNAL(receivedStderr(Opie::Core::OProcess*,char*,int)),this,SLOT(slotHostname(Opie::Core::OProcess*,char*,int))); + h->start(OProcess::Block,OProcess::Stderr); + odebug << "Got " << _procTemp << " - " << h->exitStatus() << oendl; + _procTemp=""; + delete h; + + if (f.open(IO_Truncate|IO_WriteOnly)) + { + QTextStream s(&f); + s << m_Nameinput->text(); + } + f.close(); + f.setName(_IRDANAME); + if (f.open(IO_WriteOnly)) + { + QTextStream s(&f); + s << m_Nameinput->text(); + } +} + +void MainWindowImp::initHostname() +{ + OProcess h; + _procTemp=""; + + h << "hostname"; + connect(&h,SIGNAL(receivedStdout(Opie::Core::OProcess*,char*,int)),this,SLOT(slotHostname(Opie::Core::OProcess*,char*,int))); + h.start(OProcess::Block,OProcess::AllOutput); + odebug << "Got " << _procTemp <<oendl; + m_Nameinput->setText(_procTemp); + _procTemp=""; +} + +void MainWindowImp::slotHostname(Opie::Core::OProcess *proc, char *buffer, int buflen) +{ + if (buflen < 1 || buffer==0) return; + char*_t = new char[buflen+1]; + ::memset(_t,0,buflen+1); + ::memcpy(_t,buffer,buflen); + _procTemp+=_t; + delete[]_t; +} diff --git a/noncore/settings/networksettings/mainwindow/mainwindowimp.h b/noncore/settings/networksettings/mainwindow/mainwindowimp.h index f211d6e..da1bb8f 100644 --- a/noncore/settings/networksettings/mainwindow/mainwindowimp.h +++ b/noncore/settings/networksettings/mainwindow/mainwindowimp.h @@ -18,6 +18,11 @@ class KLibLoader; #define QLibrary KLibrary #endif +namespace Opie { +namespace Core { + class OProcess; +} +} class MainWindowImp : public MainWindow { Q_OBJECT @@ -46,12 +51,17 @@ private slots: void receive (const QCString &, const QByteArray &); +protected slots: + virtual void setHostname(); + virtual void slotHostname(Opie::Core::OProcess *proc, char *buffer, int buflen); + private: void makeChannel(); void loadModules(const QString &path); + void initHostname(); Module* loadPlugin(const QString &pluginFileName, - const QString &resolveString = "create_plugin"); + const QString &resolveString = "create_plugin"); // For our local list of names QMap<QString, Interface*> interfaceNames; @@ -66,6 +76,7 @@ private: bool advancedUserMode; QString scheme; + QString _procTemp; #ifndef QWS KLibLoader *loader; #endif |