WSF
FileTypeCache.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef FILETYPECACHE_HPP
13#define FILETYPECACHE_HPP
14
15#include <map>
16#include <string>
17#include <vector>
18
19#include <QDateTime>
20#include <QString>
21
22#include "ViExport.hpp"
23
24class QFileInfo;
25
26namespace wizard
27{
28// Determines file types and caches the information
30{
31public:
32 // Provides pluggable file detection
34 {
35 public:
36 virtual ~FileDetector() {}
37 virtual std::string DetectFileType(const QFileInfo& aFileInfo, const std::string& aFileHeader) = 0;
38 };
39
40 std::string GetFileType(const QFileInfo& aFileInfo);
41 static std::string DetermineFileType(const QFileInfo& aFileInfo);
42 static void RegisterDetector(FileDetector* aDetector);
43 static void UnregisterDetector(FileDetector* aDetector);
44 static void SetFileTypeIcon(const std::string& aFileType, const std::string& aFileIcon);
45 static std::string GetFileTypeIcon(const std::string& aFileType);
46
47private:
48 struct FileInfo
49 {
50 QDateTime mLastModified;
51 long long mFileSize;
52 std::string mFileType;
53 };
54
55 typedef std::map<QString, FileInfo> CacheMap;
56 CacheMap mCache;
57 static std::vector<FileDetector*> mDetectors;
58 static std::map<std::string, std::string> mFileTypeIcons;
59};
60} // namespace wizard
61#endif
#define VI_EXPORT
Definition ViExport.hpp:38
Definition FileTypeCache.hpp:34
virtual ~FileDetector()
Definition FileTypeCache.hpp:36
virtual std::string DetectFileType(const QFileInfo &aFileInfo, const std::string &aFileHeader)=0
Definition FileTypeCache.hpp:30
std::string GetFileType(const QFileInfo &aFileInfo)
Definition FileTypeCache.cpp:21
static void SetFileTypeIcon(const std::string &aFileType, const std::string &aFileIcon)
Definition FileTypeCache.cpp:86
static std::string DetermineFileType(const QFileInfo &aFileInfo)
Definition FileTypeCache.cpp:40
static void UnregisterDetector(FileDetector *aDetector)
Definition FileTypeCache.cpp:63
static std::string GetFileTypeIcon(const std::string &aFileType)
Definition FileTypeCache.cpp:73
static void RegisterDetector(FileDetector *aDetector)
Definition FileTypeCache.cpp:68
Definition Runner.hpp:22
Copyrights Multiple, All Rights Reserved