diff options
Diffstat (limited to 'vcs/cvsservice/cvsfileinfoprovider.h')
-rw-r--r-- | vcs/cvsservice/cvsfileinfoprovider.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/vcs/cvsservice/cvsfileinfoprovider.h b/vcs/cvsservice/cvsfileinfoprovider.h new file mode 100644 index 00000000..2c0b5cf1 --- /dev/null +++ b/vcs/cvsservice/cvsfileinfoprovider.h @@ -0,0 +1,79 @@ +/*************************************************************************** + * Copyright (C) 2003 by Mario Scalas * + * [email protected] * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef CVSFILEINFOPROVIDER_H +#define CVSFILEINFOPROVIDER_H + +#include <qmap.h> + +#include <kdevversioncontrol.h> +#include "cvsservicedcopIface.h" +#include "cvsdir.h" +#include "bufferedstringreader.h" + +class CvsServicePart; +class CvsService_stub; +class CvsJob_stub; + +/** +Provider for CVS file information + +@author Mario Scalas +*/ +class CVSFileInfoProvider : public KDevVCSFileInfoProvider, virtual public CVSServiceDCOPIface +{ + Q_OBJECT +public: + CVSFileInfoProvider( CvsServicePart *parent, CvsService_stub *cvsService ); + virtual ~CVSFileInfoProvider(); + +// -- Sync interface + virtual const VCSFileInfoMap *status( const QString &dirPath ) ; + +// -- Async interface for requesting data + virtual bool requestStatus( const QString &dirPath, void *callerData, bool recursive = true, bool checkRepos = true ); + +public slots: + void updateStatusFor( const CVSDir& ); +private slots: + void propagateUpdate(); + +signals: + void needStatusUpdate(const CVSDir&); + +private: + // DCOP Iface + virtual void slotJobExited( bool normalExit, int exitStatus ); + virtual void slotReceivedOutput( QString someOutput ); + virtual void slotReceivedErrors( QString someErrors ); + + QString projectDirectory() const; + + static VCSFileInfoMap *parse( QStringList stringStream ); + + static VCSFileInfo::FileState String2EnumState( QString stateAsString ); + + static void printOutFileInfoMap( const VCSFileInfoMap &map ); + + BufferedStringReader m_bufferedReader; + QStringList m_statusLines; + + mutable void *m_savedCallerData; + mutable CvsJob_stub *m_requestStatusJob; + CvsService_stub *m_cvsService; + + //! Caching + mutable QString m_previousDirPath; + mutable VCSFileInfoMap *m_cachedDirEntries; +}; + +#endif +//kate: space-indent on; indent-width 4; |