File indexing completed on 2024-04-21 09:33:14

0001 // clang-format off
0002 /*
0003  * KDiff3 - Text Diff And Merge Tool
0004  *
0005  * SPDX-FileCopyrightText: 2018-2020 Michael Reeves reeves.87@gmail.com
0006  * SPDX-License-Identifier: GPL-2.0-or-later
0007  */
0008 // clang-format on
0009 #ifndef DIRECTORYINFO_H
0010 #define DIRECTORYINFO_H
0011 
0012 #include "fileaccess.h"
0013 #include "options.h"
0014 
0015 class DirectoryInfo
0016 {
0017   public:
0018     explicit DirectoryInfo() = default;
0019 
0020     DirectoryInfo(const FileAccess& dirA, const FileAccess& dirB, const FileAccess& dirC, const FileAccess& dirDest)
0021     {
0022         m_dirA = dirA;
0023         m_dirB = dirB;
0024         m_dirC = dirC;
0025         m_dirDest = dirDest;
0026 
0027         m_dirListA.clear();
0028         m_dirListB.clear();
0029         m_dirListC.clear();
0030     }
0031 
0032     inline const FileAccess& dirA() const { return m_dirA; }
0033     inline const FileAccess& dirB() const { return m_dirB; }
0034     inline const FileAccess& dirC() const { return m_dirC; }
0035     inline const FileAccess& destDir() const
0036     {
0037         if(m_dirDest.isValid())
0038             return m_dirDest;
0039         else
0040             return m_dirC.isValid() ? m_dirC : m_dirB;
0041     }
0042 
0043     inline bool allowSyncMode() { return !m_dirC.isValid() && !m_dirDest.isValid(); }
0044 
0045     bool listDirA();
0046     bool listDirB();
0047     bool listDirC();
0048     DirectoryList& getDirListA() { return m_dirListA; }
0049     DirectoryList& getDirListB() { return m_dirListB; }
0050     DirectoryList& getDirListC() { return m_dirListC; }
0051 
0052   private:
0053     bool listDir(FileAccess& fileAccess, DirectoryList& dirList);
0054 
0055     FileAccess m_dirA, m_dirB, m_dirC;
0056 
0057     DirectoryList m_dirListA;
0058     DirectoryList m_dirListB;
0059     DirectoryList m_dirListC;
0060     FileAccess m_dirDest;
0061 };
0062 
0063 extern QSharedPointer<DirectoryInfo> gDirInfo;
0064 
0065 #endif