summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings2/networksettings2/systemfile.cpp
Side-by-side diff
Diffstat (limited to 'noncore/settings/networksettings2/networksettings2/systemfile.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings2/networksettings2/systemfile.cpp144
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;
+}
+