/*************************************************************************** * 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 CVSDIR_H #define CVSDIR_H #include #include #include #include "cvsentry.h" /** Helper classes for handling CVS dirs @author Mario Scalas */ class CVSDir : public TQDir { public: CVSDir(); CVSDir( const TQDir &dir ); explicit CVSDir( const CVSDir & ); CVSDir &operator=( const CVSDir & ); virtual ~CVSDir(); /** * A client can use this method to validate the directory state. * @return true if the directory is a valid CVS dir, false otherwise */ bool isValid() const; /** * Returns a list of all the files registered into repository */ TQStringList registeredEntryList() const; /** * @param fileName is the file name (with no path info, just the file name!) * @param refreshCache update internal cache re-parsing "/CVS/Entries" * @return an empty CVSEntry if the file is not present */ CVSEntry fileStatus( const TQString &fileName, bool refreshCache = false ) const; /** */ VCSFileInfoMap dirStatus() const; VCSFileInfoMap *cacheableDirStatus() const; /** * @return true if the file is registered into repository, false otherwise */ bool isRegistered( const TQString fileName ) const; /** * Check if the specified @p fileName is in "/.cvsignore" and, if not, * append it. */ void ignoreFile( const TQString &fileName ); /** * Check if the specified @p fileName is in "/.cvsignore" and, if yes, * remove it. */ void doNotIgnoreFile( const TQString &fileName ); /** * @return the content of "/CVS/Repository" */ TQString repository() const; /** * @return the content of "/CVS/Root" */ TQString root() const; /** * @return full path of "/CVS/Entries" */ TQString entriesFileName() const; /** * @return full path of "/CVS/Root" */ TQString rootFileName() const; /** * @return full path of "/CVS/Repository" */ TQString repoFileName() const; /** * @return full path of "/.cvsignore" */ TQString cvsIgnoreFileName() const; private: void refreshEntriesCache() const; static TQByteArray cacheFile( const TQString &fileName ); TQString m_cvsDir; typedef TQMap CVSEntriesCacheMap; mutable CVSEntriesCacheMap m_cachedEntries; }; #endif