summaryrefslogtreecommitdiffstats
path: root/vcs/cvsservice/cvsfileinfoprovider.h
diff options
context:
space:
mode:
Diffstat (limited to 'vcs/cvsservice/cvsfileinfoprovider.h')
-rw-r--r--vcs/cvsservice/cvsfileinfoprovider.h79
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 *
+ * mario.scalas@libero.it *
+ * *
+ * 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;