KDevelop API Documentation

vcs/cvsservice/cvsoptions.cpp

Go to the documentation of this file.
00001 /*************************************************************************** 00002 * Copyright (C) 2003 by Mario Scalas * 00003 * mario.scalas@libero.it * 00004 * * 00005 * This program is free software; you can redistribute it and/or modify * 00006 * it under the terms of the GNU General Public License as published by * 00007 * the Free Software Foundation; either version 2 of the License, or * 00008 * (at your option) any later version. * 00009 * * 00010 ***************************************************************************/ 00011 00012 #include <qfile.h> 00013 #include <qtextstream.h> 00014 00015 #include <kdebug.h> 00016 #include <kconfig.h> 00017 00018 #include "domutil.h" 00019 #include "kdevproject.h" 00020 #include "cvsoptions.h" 00021 00023 // Macros 00025 00026 #define default_revert QString::fromLatin1("-C") 00027 #define default_diff QString::fromLatin1("-p") 00028 #define default_rsh QString::fromLatin1("") 00029 #define default_contextLines 3 00030 #define default_compression 0 00031 00033 // static members 00035 00036 CvsOptions *CvsOptions::m_instance = 0; 00037 QString CvsOptions::invalidLocation( "ERROR-LOCATION-IS-NOT-SET-IN-PROJECT" ); 00038 00040 // class CvsOptions 00042 00043 CvsOptions::CvsOptions() 00044 : m_recursiveWhenCommitRemove( true ), 00045 m_pruneEmptyDirsWhenUpdate( true ), 00046 m_recursiveWhenUpdate( true ), 00047 m_createDirsWhenUpdate( true ), 00048 m_revertOptions( default_revert ), 00049 m_diffOptions( default_diff ), 00050 m_cvsRshEnvVar( default_rsh ), 00051 m_compressionLevel( default_compression ), 00052 m_contextLines( default_contextLines ) 00053 { 00054 kdDebug( 9006 ) << " **** CvsOptions instance CREATED!" << endl; 00055 // We share some configuration data with cvsservice 00056 m_serviceConfig = new KConfig( "cvsservicerc" ); 00057 } 00058 00060 00061 CvsOptions::~CvsOptions() 00062 { 00063 kdDebug( 9006 ) << " **** CvsOptions instance DESTROYED!" << endl; 00064 delete m_serviceConfig; 00065 00066 m_instance = 0; 00067 } 00068 00070 00071 CvsOptions* CvsOptions::instance() 00072 { 00073 if (!m_instance) 00074 { 00075 m_instance = new CvsOptions(); 00076 } 00077 return m_instance; 00078 } 00079 00081 00082 void CvsOptions::save( KDevProject *project ) 00083 { 00084 kdDebug( 9006 ) << " **** CvsOptions::save( KDevProject* ) here" << endl; 00085 Q_ASSERT( project ); 00086 00087 QDomDocument &dom = *project->projectDom(); 00088 00089 DomUtil::writeBoolEntry( dom, "/kdevcvsservice/recursivewhenupdate", recursiveWhenUpdate() ); 00090 DomUtil::writeBoolEntry( dom, "/kdevcvsservice/prunedirswhenupdate", pruneEmptyDirsWhenUpdate() ); 00091 DomUtil::writeBoolEntry( dom, "/kdevcvsservice/createdirswhenupdate", createDirsWhenUpdate() ); 00092 DomUtil::writeBoolEntry( dom, "/kdevcvsservice/recursivewhencommitremove", recursiveWhenCommitRemove() ); 00093 DomUtil::writeEntry( dom, "/kdevcvsservice/revertoptions", revertOptions() ); 00094 // DomUtil::writeEntry( dom, "/kdevcvsservice/location", location() ); 00095 00096 // [Repository-:ext:anonymous@cvs.ogre.sourceforge.net:/cvsroot/ogrenew] 00097 QString groupName = "Repository-" + guessLocation( project->projectDirectory() ); 00098 m_serviceConfig->setGroup( groupName ); 00099 00100 m_serviceConfig->writeEntry( "ContextLines", contextLines() ); 00101 m_serviceConfig->writeEntry( "DiffOptions", diffOptions() ); 00102 m_serviceConfig->writeEntry( "rsh", cvsRshEnvVar() ); 00103 } 00104 00106 00107 void CvsOptions::load( KDevProject *project ) 00108 { 00109 kdDebug( 9006 ) << " **** CvsOptions::load( KDevProject* ) here" << endl; 00110 Q_ASSERT( project ); 00111 QDomDocument &dom = *project->projectDom(); 00112 00113 m_recursiveWhenUpdate = DomUtil::readBoolEntry( dom, "/kdevcvsservice/recursivewhenupdate", true ); 00114 m_pruneEmptyDirsWhenUpdate = DomUtil::readBoolEntry( dom, "/kdevcvsservice/prunedirswhenupdate", true ); 00115 m_createDirsWhenUpdate = DomUtil::readBoolEntry( dom, "/kdevcvsservice/createdirswhenupdate", true ); 00116 m_recursiveWhenCommitRemove = DomUtil::readBoolEntry( dom, "/kdevcvsservice/recursivewhencommitremove", true ); 00117 m_revertOptions = DomUtil::readEntry( dom, "/kdevcvsservice/revertoptions", default_revert ); 00118 // m_location = DomUtil::readEntry( dom, "/kdevcvsservice/location", guessLocation( project->projectDirectory() ) ); 00119 00120 QString groupName = "Repository-" + guessLocation( project->projectDirectory() ); 00121 m_serviceConfig->setGroup( groupName ); 00122 00123 m_contextLines = m_serviceConfig->readUnsignedNumEntry( "ContextLines", default_contextLines ); 00124 m_diffOptions = m_serviceConfig->readEntry( "DiffOptions", default_diff ); 00125 m_cvsRshEnvVar = m_serviceConfig->readEntry( "rsh", default_rsh ); 00126 } 00127 00129 00130 void CvsOptions::setRecursiveWhenCommitRemove( bool b ) 00131 { 00132 this->m_recursiveWhenCommitRemove = b; 00133 } 00134 00136 00137 bool CvsOptions::recursiveWhenCommitRemove() const 00138 { 00139 return this->m_recursiveWhenCommitRemove; 00140 } 00141 00143 00144 void CvsOptions::setPruneEmptyDirsWhenUpdate( bool b ) 00145 { 00146 this->m_pruneEmptyDirsWhenUpdate = b; 00147 } 00148 00150 00151 bool CvsOptions::pruneEmptyDirsWhenUpdate() const 00152 { 00153 return this->m_pruneEmptyDirsWhenUpdate; 00154 } 00155 00157 00158 void CvsOptions::setRecursiveWhenUpdate( bool b ) 00159 { 00160 this->m_recursiveWhenUpdate = b; 00161 } 00162 00164 00165 bool CvsOptions::recursiveWhenUpdate() const 00166 { 00167 return this->m_recursiveWhenUpdate; 00168 } 00169 00171 00172 void CvsOptions::setCreateDirsWhenUpdate( bool b ) 00173 { 00174 this->m_createDirsWhenUpdate = b; 00175 } 00176 00178 00179 bool CvsOptions::createDirsWhenUpdate() const 00180 { 00181 return this->m_createDirsWhenUpdate; 00182 } 00183 00185 00186 void CvsOptions::setRevertOptions( const QString &p ) 00187 { 00188 this->m_revertOptions = p; 00189 } 00190 00192 00193 QString CvsOptions::revertOptions() 00194 { 00195 return this->m_revertOptions; 00196 } 00197 00199 00200 void CvsOptions::setDiffOptions( const QString &p ) 00201 { 00202 this->m_diffOptions = p; 00203 } 00204 00206 00207 QString CvsOptions::diffOptions() 00208 { 00209 return this->m_diffOptions; 00210 } 00211 00213 00214 void CvsOptions::setCvsRshEnvVar( const QString &p ) 00215 { 00216 this->m_cvsRshEnvVar = p; 00217 } 00218 00220 00221 QString CvsOptions::cvsRshEnvVar() 00222 { 00223 return this->m_cvsRshEnvVar; 00224 } 00225 00227 00228 QString CvsOptions::location() 00229 { 00230 return m_location; 00231 } 00232 00234 00235 void CvsOptions::setLocation( const QString &p ) 00236 { 00237 m_location = p; 00238 } 00239 00241 00242 void CvsOptions::setContextLines( unsigned int contextLines ) 00243 { 00244 m_contextLines = contextLines; 00245 } 00246 00248 00249 unsigned int CvsOptions::contextLines() const 00250 { 00251 return m_contextLines; 00252 } 00253 00255 00256 void CvsOptions::setCompressionLevel( unsigned int compressionLevel ) 00257 { 00258 m_compressionLevel = compressionLevel; 00259 } 00260 00262 00263 unsigned int CvsOptions::compressionLevel() const 00264 { 00265 return m_compressionLevel; 00266 } 00267 00269 00270 QString CvsOptions::guessLocation( const QString &projectDir ) const 00271 { 00272 QString rootFileName( projectDir + "/CVS/Root" ); 00273 00274 QFile f( rootFileName ); 00275 if (f.open( IO_ReadOnly )) 00276 { 00277 QTextStream t( &f ); 00278 QString serverLocation = t.readLine(); 00279 kdDebug(9000) << "===> Server location guessed: " << serverLocation << endl; 00280 return serverLocation; 00281 } 00282 else 00283 { 00284 kdDebug(9000) << "===> Error: could not open CVS/Entries!! " << endl; 00285 return "Error while guessing repository location!!"; 00286 } 00287 }
KDE Logo
This file is part of the documentation for KDevelop Version 3.0.4.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Oct 19 08:01:53 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003