|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "tfiletype.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tfilepath.h"
|
|
Toshihiro Shimizu |
890ddd |
#include <qstring></qstring>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
namespace {
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class FileTypeData {
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
std::map<std::string, int=""> m_table;</std::string,>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
FileTypeData() {
|
|
Shinya Kitaoka |
120a6e |
// Base, hard-coded known file types
|
|
Shinya Kitaoka |
120a6e |
m_table["tnz"] = TFileType::TOONZSCENE;
|
|
Shinya Kitaoka |
120a6e |
m_table["tab"] = TFileType::TABSCENE;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
static FileTypeData *instance() {
|
|
Shinya Kitaoka |
120a6e |
static FileTypeData data;
|
|
Shinya Kitaoka |
120a6e |
return &data;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
} // namespace
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//================================================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TFileType::Type TFileType::getInfo(const TFilePath &fp) {
|
|
Shinya Kitaoka |
120a6e |
FileTypeData *data = FileTypeData::instance();
|
|
Shinya Kitaoka |
120a6e |
std::map<std::string, int="">::iterator it = data->m_table.find(fp.getType());</std::string,>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
int type = (it == data->m_table.end()) ? TFileType::UNKNOW_FILE : it->second;
|
|
Shinya Kitaoka |
120a6e |
if ((type & TFileType::LEVEL) == 0 && (fp.getDots() == ".."))
|
|
Shinya Kitaoka |
120a6e |
type |= TFileType::LEVEL;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
return (TFileType::Type)type;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TFileType::Type TFileType::getInfoFromExtension(const std::string &extension) {
|
|
Shinya Kitaoka |
120a6e |
FileTypeData *data = FileTypeData::instance();
|
|
Shinya Kitaoka |
120a6e |
std::map<std::string, int="">::iterator it = data->m_table.find(extension);</std::string,>
|
|
Shinya Kitaoka |
120a6e |
int type = (it == data->m_table.end()) ? TFileType::UNKNOW_FILE : it->second;
|
|
Shinya Kitaoka |
120a6e |
return (TFileType::Type)type;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TFileType::Type TFileType::getInfoFromExtension(const QString &type) {
|
|
Shinya Kitaoka |
120a6e |
return getInfoFromExtension(type.toStdString());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//--------------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void TFileType::declare(std::string extension, Type type) {
|
|
Shinya Kitaoka |
120a6e |
FileTypeData *data = FileTypeData::instance();
|
|
Shinya Kitaoka |
120a6e |
data->m_table[extension] = type;
|
|
Toshihiro Shimizu |
890ddd |
}
|