Diffstat (limited to 'noncore/settings/networksettings2/networksettings2/systemfile.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/settings/networksettings2/networksettings2/systemfile.cpp | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/noncore/settings/networksettings2/networksettings2/systemfile.cpp b/noncore/settings/networksettings2/networksettings2/systemfile.cpp new file mode 100644 index 0000000..7249976 --- a/dev/null +++ b/noncore/settings/networksettings2/networksettings2/systemfile.cpp @@ -0,0 +1,144 @@ +#include <stdio.h> +#include <qpe/qpeapplication.h> +#include <qfileinfo.h> +#include <qmessagebox.h> +#include <qfile.h> +#include <qtextstream.h> + +#include "resources.h" +#include "systemfile.h" + +#define TEMPLATEDIR "networktemplates/" +QString TemplDir; + +SystemFile::SystemFile( const QString & N, const QString & P ){ + Name = N; + Path = P; + F = 0; + // get template info + { QString S; + QFileInfo FI; + + // find location of templates + TemplDir = QPEApplication::qpeDir() + "etc/" + TEMPLATEDIR; + FI.setFile( TemplDir ); + if( ! FI.isDir() ) { + // try current dir + TemplDir = "./" TEMPLATEDIR; + FI.setFile( TemplDir ); + if( ! FI.isDir() ) { + hasPreSection = + hasPostSection = + hasPreNodeSection = + hasPostNodeSection = 0; + return; + } + } + + // have found location + S = TemplDir + Name + "/presection"; + FI.setFile( S ); + hasPreSection = ( FI.exists() && FI.isReadable() ); + S = TemplDir + Name + "/postsection"; + FI.setFile( S ); + hasPostSection = ( FI.exists() && FI.isReadable() ); + S = TemplDir + Name + "/prenodesection"; + FI.setFile( S ); + hasPreNodeSection = ( FI.exists() && FI.isReadable() ); + S = TemplDir + Name + "/postnodesection"; + FI.setFile( S ); + hasPostNodeSection = ( FI.exists() && FI.isReadable() ); + } +} + +SystemFile::~SystemFile( void ) { + if( F ) + delete F; +} + +bool SystemFile::open( void ) { + if( F ) { + F->close(); + delete F; + } + + F = new QFile( Path + "bup" ); + if( ! F->open( IO_WriteOnly ) ) { + return 0; + } + setDevice( F ); + return 1; +} + +bool SystemFile::close( void ) { + if( ! F ) { + return 1 ; + } + + QString OldP = Path + "bup"; + + F->close(); + delete F; + F = 0; + + return ( rename( OldP.latin1(), Path.latin1() ) >= 0 ); +} + +bool SystemFile::preSection( void ) { + if( hasPreSection ) { + QFile Fl( TemplDir + Name + "/presection" ); + if( ! Fl.open( IO_ReadOnly ) ) + return 1; // error + // copy file to this file + F->writeBlock( Fl.readAll() ); + } + return 0; +} + +bool SystemFile::postSection( void ) { + if( hasPostSection ) { + QFile Fl( TemplDir + Name + "/postsection" ); + if( ! Fl.open( IO_ReadOnly ) ) + return 1; // error + // copy file to this file + F->writeBlock( Fl.readAll() ); + } + return 0; +} + +bool SystemFile::preNodeSection( ANetNodeInstance * NNI, long ) { + if( hasPreNodeSection ) { + QFile Fl( TemplDir + Name + "/prenodesectoin" ); + if( ! Fl.open( IO_ReadOnly ) ) + return 1; // error + QTextStream TX( &Fl ); + QString Out; + QString S = TX.readLine(); + while( ! TX.eof() ) { + Out = S. + arg(NNI->netNode()->nodeName()); + (*this) << Out << endl; + S = TX.readLine(); + } + } + return 0; +} + +bool SystemFile::postNodeSection( ANetNodeInstance * NNI, long DevNr ) { + if( hasPostNodeSection ) { + QFile Fl( TemplDir + Name + "/postnodesectoin" ); + if( ! Fl.open( IO_ReadOnly ) ) + return 1; // error + QTextStream TX( &Fl ); + QString Out; + QString S = TX.readLine(); + while( ! TX.eof() ) { + Out = S. + arg(NNI->nodeName()); + (*this) << Out << endl; + S = TX.readLine(); + } + } + return 0; +} + |