summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp42
-rw-r--r--noncore/settings/networksettings2/gprs/GPRS_NNI.cpp5
-rw-r--r--noncore/settings/networksettings2/gprs/GPRS_NNI.h3
-rw-r--r--noncore/settings/networksettings2/networksettings.cpp2
-rw-r--r--noncore/settings/networksettings2/networksettings2/netnode.cpp7
-rw-r--r--noncore/settings/networksettings2/networksettings2/netnode.h10
-rw-r--r--noncore/settings/networksettings2/nsdata.cpp55
-rw-r--r--noncore/settings/networksettings2/nsdata.h1
-rw-r--r--noncore/settings/networksettings2/opietooth2/Opietooth.cpp10
-rw-r--r--noncore/settings/networksettings2/ppp/ppp_NNI.cpp4
-rw-r--r--noncore/settings/networksettings2/ppp/ppp_NNI.h2
-rw-r--r--noncore/settings/networksettings2/profile/profilerun.cpp5
12 files changed, 121 insertions, 25 deletions
diff --git a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp
index cd7bb4a..63b214e 100644
--- a/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp
+++ b/noncore/settings/networksettings2/bluetooth/bluetoothRFCOMMrun.cpp
@@ -1,17 +1,29 @@
#include <qapplication.h>
#include <resources.h>
+
+#include <OTPeer.h>
#include <OTDevice.h>
#include <OTGateway.h>
+#include <Opietooth.h>
+
+#include <qlistbox.h>
+#include <qframe.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qdialog.h>
+
#include "bluetoothRFCOMMrun.h"
using Opietooth2::OTGateway;
using Opietooth2::OTDevice;
using Opietooth2::OTDeviceAddress;
+using Opietooth2::OTScan;
+using Opietooth2::OTPeer;
BluetoothRFCOMMRun::~BluetoothRFCOMMRun( void ) {
if( OT ) {
OTGateway::releaseOTGateway();
}
}
State_t BluetoothRFCOMMRun::detectState( void ) {
@@ -50,16 +62,19 @@ QString BluetoothRFCOMMRun::setMyState( NetworkSetup *,
QStringList S;
S << "rfcomm"
<< "bind"
<< QString().setNum( DeviceNr )
<< Ch->BDAddress
<< QString().setNum( Ch->Channel );
+ // no longer needed
+ delete Ch;
+
if( Sys.runAsRoot( S ) ) {
return QString( "Error starting %1").arg(S.join(" "));
}
// here rfcomm should be running -> we will detect state later
return QString();
} else {
Log(( "No channel selected -> cancel\n" ));
@@ -73,30 +88,40 @@ QString BluetoothRFCOMMRun::setMyState( NetworkSetup *,
return QString( "Cannot release RFCOMM NetworkSetup" );
}
DeviceNr = -1;
}
}
return QString();
}
-#include <qlistbox.h>
-#include <qframe.h>
-#include <qlabel.h>
-#include <qlayout.h>
-#include <qdialog.h>
-
RFCOMMChannel * BluetoothRFCOMMRun::getChannel( void ) {
if( Data->Devices.count() == 1 ) {
// only one device -> return channel
return Data->Devices[0];
}
RFCOMMChannel * Ch = 0;
+
+ if( Data->Devices.count() == 0 ) {
+ OTPeer * Peer;
+ int Channel;
+
+ if( OTScan::getDevice( Peer, Channel, OT ) == QDialog::Accepted ) {
+ Ch = new RFCOMMChannel;
+ Ch->BDAddress = Peer->address().toString();
+ Ch->Name = Peer->name();
+ Ch->Channel = Channel;
+ return Ch;
+ }
+
+ return 0;
+ }
+
QDialog * Dlg = new QDialog( qApp->mainWidget(), 0, TRUE );
QVBoxLayout * V = new QVBoxLayout( Dlg );
QLabel * L = new QLabel(
qApp->translate( "BluetoothRFCOMMRun",
"Select device to connect to"),
Dlg );
QListBox * LB = new QListBox( Dlg );
@@ -115,17 +140,20 @@ RFCOMMChannel * BluetoothRFCOMMRun::getChannel( void ) {
Dlg->move( 20,
(qApp->desktop()->height()-100)/2 );
if( Dlg->exec() == QDialog::Accepted ) {
unsigned int i = 0;
for( i = 0; i < Data->Devices.count(); i ++ ) {
if( LB->isSelected(i) ) {
odebug << "Selected " << Data->Devices[i]->Name << oendl;
- Ch = Data->Devices[i];
+ Ch = new RFCOMMChannel;
+ Ch->BDAddress = Data->Devices[i]->BDAddress;
+ Ch->Name = Data->Devices[i]->Name;
+ Ch->Channel = Data->Devices[i]->Channel;
break;
}
}
}
delete Dlg;
return Ch;
}
diff --git a/noncore/settings/networksettings2/gprs/GPRS_NNI.cpp b/noncore/settings/networksettings2/gprs/GPRS_NNI.cpp
index bf8cc59..2dd54ff 100644
--- a/noncore/settings/networksettings2/gprs/GPRS_NNI.cpp
+++ b/noncore/settings/networksettings2/gprs/GPRS_NNI.cpp
@@ -202,29 +202,32 @@ short AGPRSDevice::generateFile( SystemFile & SF,
<< " # profile "
<< removeSpaces( networkSetup()->name() )
<<oendl;
}
}
return 1;
}
-bool AGPRSDevice::openFile( SystemFile & SF ) {
+bool AGPRSDevice::openFile( SystemFile & SF, QStringList & SL ) {
if( SF.name() == "peers" ) {
+ SL << "/etc" << "ppp" << "peers";
SF.setPath(
QString( "/etc/ppp/peers/" ) +
removeSpaces( networkSetup()->name() )
);
return 1;
} else if ( SF.name() == "chatscripts" ) {
+ SL << "/etc" << "chatscripts";
SF.setPath(
QString( "/etc/chatscripts/" ) +
removeSpaces( networkSetup()->name() )
);
return 1;
+ SL << "/etc" << "ppp";
} else if ( SF.name() == "extra" ) {
SF.setPath(
QString( "/etc/ppp/" ) +
removeSpaces( networkSetup()->name() ) + ".fixed"
);
return 1;
}
return 0;
diff --git a/noncore/settings/networksettings2/gprs/GPRS_NNI.h b/noncore/settings/networksettings2/gprs/GPRS_NNI.h
index 1060a6e..b5bf1b9 100644
--- a/noncore/settings/networksettings2/gprs/GPRS_NNI.h
+++ b/noncore/settings/networksettings2/gprs/GPRS_NNI.h
@@ -19,17 +19,18 @@ public :
{ return
( RT ) ? RT : ( RT = new GPRSRun( this, Data ) );
}
QWidget * edit( QWidget * parent );
QString acceptable( void );
void commit( void );
- virtual bool openFile( SystemFile & SF );
+ virtual bool openFile( SystemFile & SF,
+ QStringList & SL );
virtual void * data( void )
{ return (void *)&Data; }
virtual bool hasDataForFile( SystemFile & S );
virtual short generateFile( SystemFile & SF,
long DevNr );
diff --git a/noncore/settings/networksettings2/networksettings.cpp b/noncore/settings/networksettings2/networksettings.cpp
index 80dcb3d..2714dd5 100644
--- a/noncore/settings/networksettings2/networksettings.cpp
+++ b/noncore/settings/networksettings2/networksettings.cpp
@@ -246,17 +246,17 @@ void NetworkSettings::SLOT_EditNode( QListBoxItem * LBI ) {
} else {
// new item
int ci = Profiles_LB->count();
NSResources->addNetworkSetup( NC, 0 );
NC->setNumber( NSResources->assignNetworkSetupNumber() );
Profiles_LB->insertItem( NC->devicePixmap(), NC->name() );
Profiles_LB->setSelected( ci, TRUE );
}
- updateProfileState( LBI );
+ SLOT_RefreshStates();
}
} else {
// cancelled : reset NetworkSetup
if( LBI ) {
NetworkSetup * NC = NSResources->findNetworkSetup( LBI->text() );
NC->reassign();
}
}
diff --git a/noncore/settings/networksettings2/networksettings2/netnode.cpp b/noncore/settings/networksettings2/networksettings2/netnode.cpp
index 0ab0e5b..1bcd95c 100644
--- a/noncore/settings/networksettings2/networksettings2/netnode.cpp
+++ b/noncore/settings/networksettings2/networksettings2/netnode.cpp
@@ -84,18 +84,19 @@ bool ANetNode::isToplevel( void ) {
if( strcmp( *P, "fullsetup") == 0 )
return 1;
P ++;
}
return 0;
}
bool ANetNode::openFile( SystemFile & SF,
- ANetNodeInstance * NNI ) {
- return (NNI ) ? NNI->openFile( SF ) : 0 ;
+ ANetNodeInstance * NNI,
+ QStringList & SL ) {
+ return (NNI ) ? NNI->openFile( SF, SL ) : 0 ;
}
//
//
// ANETNODEINSTANCE
//
//
@@ -401,21 +402,23 @@ QString NetworkSetup::setState( Action_t A, bool Force ) {
Action_t Actions[10];
int NoOfActions = 0;
// get current state
state( Force );
switch( A ) {
case Disable :
+ /*
if( CurrentState < Disabled ) {
// disabled
CurrentState = Disabled;
return QString();
}
+ */
if( CurrentState == IsUp ) {
Actions[NoOfActions++] = Down;
Actions[NoOfActions++] = Deactivate;
} else if( CurrentState == Available ) {
Actions[NoOfActions++] = Deactivate;
}
Actions[NoOfActions++] = Disable;
diff --git a/noncore/settings/networksettings2/networksettings2/netnode.h b/noncore/settings/networksettings2/networksettings2/netnode.h
index 8aebdc0..fa4ab70 100644
--- a/noncore/settings/networksettings2/networksettings2/netnode.h
+++ b/noncore/settings/networksettings2/networksettings2/netnode.h
@@ -116,20 +116,25 @@ public:
// open proper file SF identified by S
// this method is called by NS2.
//
// overrule this ONLY if this proper file is a common file
// for all NNI of this node class and the data generated
// by each of the NNI needs to be put in one file
//
+ // the function can return a set of folders that should
+ // be created (or perhaps already exist) prior to opening
+ // the file
+ //
// if this is the case the file should be (re)opened in append
// return 0 if file cannot be opened
virtual bool openFile( SystemFile &SF,
- ANetNodeInstance * NNI );
+ ANetNodeInstance * NNI,
+ QStringList & PathToCreate );
// generate instance independent stuff
// 0 : data output, 1 no data, 2 error
virtual short generatePreamble( SystemFile & )
{ return 1; }
// generate instance independent stuff
// 0 : data output, 1 no data, 2 error
@@ -254,17 +259,18 @@ public:
//
// Virtual methods with sensible defaults
//
//
// open proper file identified by S
- virtual bool openFile( SystemFile & )
+ virtual bool openFile( SystemFile &,
+ QStringList & )
{ return 0; }
// check if this node (or sub nodes) have data for this file
virtual bool hasDataForFile( SystemFile & S )
{ return nodeClass()->hasDataForFile( S ); }
// generate code specific for this node but embedded
// in the section of the parent
diff --git a/noncore/settings/networksettings2/nsdata.cpp b/noncore/settings/networksettings2/nsdata.cpp
index 835c7c3..6b87399 100644
--- a/noncore/settings/networksettings2/nsdata.cpp
+++ b/noncore/settings/networksettings2/nsdata.cpp
@@ -331,22 +331,33 @@ QString NetworkSettingsData::generateSettings( void ) {
nniit.current();
++nniit ) {
if( nniit.current()->nodeClass() != CurDevNN )
// different class
continue;
// open proper file
{ SystemFile SF( (*it) );
+ QStringList SL;
- if( ! CurDevNN->openFile( SF, nniit.current()) ) {
+ if( ! CurDevNN->openFile( SF, nniit.current(), SL) ) {
// cannot open
S = qApp->translate( "NetworkSettings",
- "<p>Cannot open proper file \"%1\" for node \"%2\"</p>" ).
- arg( (*it) ).arg( CurDevNN->name() );
+ "<p>Cannot build proper file \"%1\" for node \"%2\"</p>" ).
+ arg( (*it) ).
+ arg( CurDevNN->name() );
+ return S;
+ }
+
+ if( ! createPath( SL ) ) {
+ S = qApp->translate( "NetworkSettings",
+ "<p>Cannot create path \"%1\" for proper file \"%2\" for node \"%3\"</p>" ).
+ arg( SL.join("/") ).
+ arg( (*it) ).
+ arg( CurDevNN->name() );
return S;
}
if( ! SF.open() ) {
S = qApp->translate( "NetworkSettings",
"<p>Cannot open proper file \"%1\" for node \"%2\"</p>" ).
arg( (*it) ).arg( CurDevNN->name() );
return S;
@@ -374,25 +385,36 @@ QString NetworkSettingsData::generateSettings( void ) {
arg( CurDevNN->name() );
return S;
}
}
}
if( Generated ) {
SystemFile SF( (*it) );
+ QStringList SL;
- if( CurDevNN->openFile( SF, 0 ) &&
+ if( CurDevNN->openFile( SF, 0, SL ) &&
! SF.path().isEmpty()
) {
+ if( ! createPath( SL ) ) {
+ S = qApp->translate( "NetworkSettings",
+ "<p>Cannot create path \"%1\" for proper file \"%2\" for node \"%3\"</p>" ).
+ arg( SL.join("/") ).
+ arg( (*it) ).
+ arg( CurDevNN->name() );
+ return S;
+ }
+
if( ! SF.open() ) {
S = qApp->translate( "NetworkSettings",
"<p>Cannot open proper file \"%1\" for node \"%2\"</p>" ).
- arg( (*it) ).arg( CurDevNN->name() );
+ arg( (*it) ).
+ arg( CurDevNN->name() );
return S;
}
if( CurDevNN->generatePostamble( SF ) == 2 ) {
S = qApp->translate( "NetworkSettings",
"<p>Error in section \"postamble\" for proper file \"%1\" and node \"%2\"</p>" ).
arg( (*it) ).
arg( CurDevNN->name() );
@@ -780,8 +802,31 @@ QList<NetworkSetup> NetworkSettingsData::collectTriggered(
Log( ( "Append %s for %s\n",
NC->name().latin1(), Interface.latin1() ));
PossibleTriggered.append( NC );
}
}
return PossibleTriggered;
}
+bool NetworkSettingsData::createPath( const QStringList & SL ) {
+
+ QDir D( SL[0] );
+
+ for ( QStringList::ConstIterator it = SL.begin();
+ it != SL.end();
+ ++it ) {
+
+ printf( "Create %s\n", (*it).latin1() );
+ if( it == SL.begin() )
+ continue;
+
+ if( ! D.exists( *it ) ) {
+ if( ! D.mkdir( *it ) ) {
+ printf( "Failed %s %s\n", D.path().latin1(), (*it).latin1() );
+ return 0;
+ }
+ }
+
+ D.cd( *it );
+ }
+ return 1;
+}
diff --git a/noncore/settings/networksettings2/nsdata.h b/noncore/settings/networksettings2/nsdata.h
index b9c216d..65b61a3 100644
--- a/noncore/settings/networksettings2/nsdata.h
+++ b/noncore/settings/networksettings2/nsdata.h
@@ -24,15 +24,16 @@ public :
bool canStart( const QString & Interface );
// return TRUE if there are vpns that could be triggered
// by this interface
bool couldBeTriggered( const QString & Interface );
private :
QList<NetworkSetup> collectTriggered( const QString &Interface );
+ bool createPath( const QStringList & SL );
bool ForceModified;
// collect strings in config file nobody wants
QStringList LeftOvers;
};
#endif
diff --git a/noncore/settings/networksettings2/opietooth2/Opietooth.cpp b/noncore/settings/networksettings2/opietooth2/Opietooth.cpp
index 8323549..fc30bf8 100644
--- a/noncore/settings/networksettings2/opietooth2/Opietooth.cpp
+++ b/noncore/settings/networksettings2/opietooth2/Opietooth.cpp
@@ -179,17 +179,16 @@ void OTSniffing::SLOT_Trace( bool Run ) {
);
delete HciDump;
HciDump = 0;
}
}
void OTSniffing::SLOT_Show( const QString & S ) {
- printf( "%s\n", S.latin1() );
Output_TV->setText( Output_TV->text() + S + "\n" );
QScrollBar *scroll = Output_TV->verticalScrollBar();
scroll->setValue(scroll->maxValue());
//Output_LB->insertItem( S );
//Output_LB->setCurrentItem( Output_LB->count()-1 );
//Output_LB->ensureCurrentVisible();
}
@@ -372,16 +371,17 @@ void OTPairing::SLOT_Unpair( ) {
//
//
//
OTScan::OTScan( QWidget * parent, OTIcons * _IC ) :
OTScanGUI( parent ), Filter() {
OT = OTGateway::getOTGateway();
+
Icons = (_IC ) ? _IC : new OTIcons();
MyIcons = (_IC == 0 );
DetectedPeers_LV->header()->hide();
Current = 0;
SelectedPeer = 0;
SelectedChannel = 0;
StrengthTimer = new QTimer( this );
@@ -439,16 +439,24 @@ OTScan::~OTScan() {
int OTScan::getDevice( OTPeer *& Peer,
int & Channel,
OTGateway * OT,
const UUIDVector & Filter,
QWidget* Parent ) {
bool IsUp = 0;
unsigned int i;
+ if( ! OT->isEnabled() ) {
+ QMessageBox::warning( 0,
+ tr("Scanning problem"),
+ tr("Bluetooth not enabled" )
+ );
+ return QDialog::Rejected;
+ }
+
// check if bluetooth is up
OTDriverList & DL = OT->getDriverList();
for( i = 0;
i < DL.count();
i ++ ) {
if( DL[i]->isUp() ) {
// one device that is up found
IsUp = 1;
diff --git a/noncore/settings/networksettings2/ppp/ppp_NNI.cpp b/noncore/settings/networksettings2/ppp/ppp_NNI.cpp
index 7286d96..9cdd51e 100644
--- a/noncore/settings/networksettings2/ppp/ppp_NNI.cpp
+++ b/noncore/settings/networksettings2/ppp/ppp_NNI.cpp
@@ -141,22 +141,24 @@ QString APPP::acceptable( void ) {
}
void APPP::commit( void ) {
if( GUI && GUI->commit( Data ) ) {
setModified( 1 );
}
}
-bool APPP::openFile( SystemFile & SF ) {
+bool APPP::openFile( SystemFile & SF, QStringList & SL ) {
if( SF.name() == "peers" ) {
+ SL << "/tmp/ppp" << "peers" ;
SF.setPath( removeSpaces(
QString( "/tmp/ppp/peers/" ) + networkSetup()->name() ) );
return 1;
} else if ( SF.name() == "chatscripts" ) {
+ SL << "/tmp/chatscripts";
SF.setPath( removeSpaces(
QString( "/tmp/chatscripts/" ) + networkSetup()->name() ) );
return 1;
}
return 0;
}
short APPP::generateFile( SystemFile & SF, long DevNr ) {
diff --git a/noncore/settings/networksettings2/ppp/ppp_NNI.h b/noncore/settings/networksettings2/ppp/ppp_NNI.h
index 76afb21..7830a4a 100644
--- a/noncore/settings/networksettings2/ppp/ppp_NNI.h
+++ b/noncore/settings/networksettings2/ppp/ppp_NNI.h
@@ -20,17 +20,17 @@ public :
QWidget * edit( QWidget * parent );
QString acceptable( void );
void commit( void );
virtual void * data( void )
{ return (void *)&Data; }
- virtual bool openFile( SystemFile & Sf );
+ virtual bool openFile( SystemFile & Sf, QStringList &SL );
short generateFile( SystemFile & TS,
long DevNr );
protected :
virtual void setSpecificAttribute( QString & Attr, QString & Value );
virtual void saveSpecificAttribute( QTextStream & TS );
diff --git a/noncore/settings/networksettings2/profile/profilerun.cpp b/noncore/settings/networksettings2/profile/profilerun.cpp
index 48011ea..77bf9ac 100644
--- a/noncore/settings/networksettings2/profile/profilerun.cpp
+++ b/noncore/settings/networksettings2/profile/profilerun.cpp
@@ -1,17 +1,16 @@
#include <resources.h>
#include "profilerun.h"
State_t ProfileRun::detectState( void ) {
- InterfaceInfo * II = networkSetup()->assignedInterface();
- Log(( "Interface %p %p %p: %d\n", II,
- netNode(), netNode()->networkSetup(), (II) ? II->IsUp : 0 ));
+ Log(( "Profile %sabled\n", (Data->Disabled) ? "dis" : "en" ));
+
if( Data->Disabled ) {
return Disabled;
}
return Unknown;
}
QString ProfileRun::setMyState( NetworkSetup * NC, Action_t A, bool ) {
odebug << "Profile " << Data->Disabled << oendl;