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
}