KDevelop API Documentation

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.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Feb 22 09:22:43 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003