1
/***************************************************************************
2
* Copyright (C) 2003 by Mario Scalas *
3
* mario.scalas@libero.it *
5
* This program is free software; you can redistribute it and/or modify *
6
* it under the terms of the GNU General Public License as published by *
7
* the Free Software Foundation; either version 2 of the License, or *
8
* (at your option) any later version. *
10
***************************************************************************/
13
#include <qtextstream.h>
20
#include "kdevproject.h"
21
#include "cvsoptions.h"
23
///////////////////////////////////////////////////////////////////////////////
25
///////////////////////////////////////////////////////////////////////////////
27
#define default_revert QString::fromLatin1("-C")
28
#define default_diff QString::fromLatin1("-p")
29
#define default_rsh QString::fromLatin1("")
30
#define default_contextLines 3
31
#define default_compression 0
33
///////////////////////////////////////////////////////////////////////////////
35
///////////////////////////////////////////////////////////////////////////////
37
CvsOptions *CvsOptions::m_instance = 0;
38
QString CvsOptions::invalidLocation( "ERROR-LOCATION-IS-NOT-SET-IN-PROJECT" );
40
///////////////////////////////////////////////////////////////////////////////
42
///////////////////////////////////////////////////////////////////////////////
44
CvsOptions::CvsOptions()
45
: m_recursiveWhenCommitRemove( true ),
46
m_pruneEmptyDirsWhenUpdate( true ),
47
m_recursiveWhenUpdate( true ),
48
m_createDirsWhenUpdate( true ),
49
m_revertOptions( default_revert ),
50
m_diffOptions( default_diff ),
51
m_cvsRshEnvVar( default_rsh ),
52
m_compressionLevel( default_compression ),
53
m_contextLines( default_contextLines )
55
kdDebug( 9006 ) << " **** CvsOptions instance CREATED!" << endl;
56
// We share some configuration data with cvsservice
57
m_serviceConfig = new KConfig( "cvsservicerc" );
60
///////////////////////////////////////////////////////////////////////////////
62
CvsOptions::~CvsOptions()
64
kdDebug( 9006 ) << " **** CvsOptions instance DESTROYED!" << endl;
65
delete m_serviceConfig;
70
///////////////////////////////////////////////////////////////////////////////
72
CvsOptions* CvsOptions::instance()
76
m_instance = new CvsOptions();
81
///////////////////////////////////////////////////////////////////////////////
83
void CvsOptions::save( KDevProject *project )
85
kdDebug( 9006 ) << " **** CvsOptions::save( KDevProject* ) here" << endl;
88
QDomDocument &dom = *project->projectDom();
90
DomUtil::writeBoolEntry( dom, "/kdevcvsservice/recursivewhenupdate", recursiveWhenUpdate() );
91
DomUtil::writeBoolEntry( dom, "/kdevcvsservice/prunedirswhenupdate", pruneEmptyDirsWhenUpdate() );
92
DomUtil::writeBoolEntry( dom, "/kdevcvsservice/createdirswhenupdate", createDirsWhenUpdate() );
93
DomUtil::writeBoolEntry( dom, "/kdevcvsservice/recursivewhencommitremove", recursiveWhenCommitRemove() );
94
DomUtil::writeEntry( dom, "/kdevcvsservice/revertoptions", revertOptions() );
95
// DomUtil::writeEntry( dom, "/kdevcvsservice/location", location() );
97
// [Repository-:ext:anonymous@cvs.ogre.sourceforge.net:/cvsroot/ogrenew]
98
QString groupName = "Repository-" + guessLocation( project->projectDirectory() );
99
m_serviceConfig->setGroup( groupName );
101
m_serviceConfig->writeEntry( "ContextLines", contextLines() );
102
m_serviceConfig->writeEntry( "DiffOptions", diffOptions() );
103
m_serviceConfig->writeEntry( "rsh", cvsRshEnvVar() );
106
///////////////////////////////////////////////////////////////////////////////
108
void CvsOptions::load( KDevProject *project )
110
kdDebug( 9006 ) << " **** CvsOptions::load( KDevProject* ) here" << endl;
112
QDomDocument &dom = *project->projectDom();
114
m_recursiveWhenUpdate = DomUtil::readBoolEntry( dom, "/kdevcvsservice/recursivewhenupdate", true );
115
m_pruneEmptyDirsWhenUpdate = DomUtil::readBoolEntry( dom, "/kdevcvsservice/prunedirswhenupdate", true );
116
m_createDirsWhenUpdate = DomUtil::readBoolEntry( dom, "/kdevcvsservice/createdirswhenupdate", true );
117
m_recursiveWhenCommitRemove = DomUtil::readBoolEntry( dom, "/kdevcvsservice/recursivewhencommitremove", true );
118
m_revertOptions = DomUtil::readEntry( dom, "/kdevcvsservice/revertoptions", default_revert );
119
// m_location = DomUtil::readEntry( dom, "/kdevcvsservice/location", guessLocation( project->projectDirectory() ) );
121
QString groupName = "Repository-" + guessLocation( project->projectDirectory() );
122
m_serviceConfig->setGroup( groupName );
124
m_contextLines = m_serviceConfig->readUnsignedNumEntry( "ContextLines", default_contextLines );
125
m_diffOptions = m_serviceConfig->readEntry( "DiffOptions", default_diff );
126
m_cvsRshEnvVar = m_serviceConfig->readEntry( "rsh", default_rsh );
129
///////////////////////////////////////////////////////////////////////////////
131
void CvsOptions::setRecursiveWhenCommitRemove( bool b )
133
this->m_recursiveWhenCommitRemove = b;
136
///////////////////////////////////////////////////////////////////////////////
138
bool CvsOptions::recursiveWhenCommitRemove() const
140
return this->m_recursiveWhenCommitRemove;
143
///////////////////////////////////////////////////////////////////////////////
145
void CvsOptions::setPruneEmptyDirsWhenUpdate( bool b )
147
this->m_pruneEmptyDirsWhenUpdate = b;
150
///////////////////////////////////////////////////////////////////////////////
152
bool CvsOptions::pruneEmptyDirsWhenUpdate() const
154
return this->m_pruneEmptyDirsWhenUpdate;
157
///////////////////////////////////////////////////////////////////////////////
159
void CvsOptions::setRecursiveWhenUpdate( bool b )
161
this->m_recursiveWhenUpdate = b;
164
///////////////////////////////////////////////////////////////////////////////
166
bool CvsOptions::recursiveWhenUpdate() const
168
return this->m_recursiveWhenUpdate;
171
///////////////////////////////////////////////////////////////////////////////
173
void CvsOptions::setCreateDirsWhenUpdate( bool b )
175
this->m_createDirsWhenUpdate = b;
178
///////////////////////////////////////////////////////////////////////////////
180
bool CvsOptions::createDirsWhenUpdate() const
182
return this->m_createDirsWhenUpdate;
185
///////////////////////////////////////////////////////////////////////////////
187
void CvsOptions::setRevertOptions( const QString &p )
189
this->m_revertOptions = p;
192
///////////////////////////////////////////////////////////////////////////////
194
QString CvsOptions::revertOptions()
196
return this->m_revertOptions;
199
///////////////////////////////////////////////////////////////////////////////
201
void CvsOptions::setDiffOptions( const QString &p )
203
this->m_diffOptions = p;
206
///////////////////////////////////////////////////////////////////////////////
208
QString CvsOptions::diffOptions()
210
return this->m_diffOptions;
213
///////////////////////////////////////////////////////////////////////////////
215
void CvsOptions::setCvsRshEnvVar( const QString &p )
217
this->m_cvsRshEnvVar = p;
220
///////////////////////////////////////////////////////////////////////////////
222
QString CvsOptions::cvsRshEnvVar()
224
return this->m_cvsRshEnvVar;
227
///////////////////////////////////////////////////////////////////////////////
229
QString CvsOptions::location()
234
///////////////////////////////////////////////////////////////////////////////
236
void CvsOptions::setLocation( const QString &p )
241
///////////////////////////////////////////////////////////////////////////////
243
void CvsOptions::setContextLines( unsigned int contextLines )
245
m_contextLines = contextLines;
248
///////////////////////////////////////////////////////////////////////////////
250
unsigned int CvsOptions::contextLines() const
252
return m_contextLines;
255
///////////////////////////////////////////////////////////////////////////////
257
void CvsOptions::setCompressionLevel( unsigned int compressionLevel )
259
m_compressionLevel = compressionLevel;
262
///////////////////////////////////////////////////////////////////////////////
264
unsigned int CvsOptions::compressionLevel() const
266
return m_compressionLevel;
269
///////////////////////////////////////////////////////////////////////////////
271
QString CvsOptions::guessLocation( const QString &projectDir ) const
273
QString rootFileName( projectDir + "/CVS/Root" );
275
QFile f( rootFileName );
276
if (f.open( IO_ReadOnly ))
279
QString serverLocation = t.readLine();
280
kdDebug(9000) << "===> Server location guessed: " << serverLocation << endl;
281
return serverLocation;
285
kdDebug(9000) << "===> Error: could not open CVS/Entries!! " << endl;
286
return i18n( "Error while guessing repository location." );