FileHandler VirtualDiskNode::openFile(MyString path) { if (!isNormalizedPath(path)) { assert(0); return FileHandler(nullptr); } path = path.toLower(); MyString dir_path = dirname(path); DirNode* parent = getDirNode(dir_path); if (!parent) return FileHandler(nullptr); MyString file_name = basename(path); // 文件至少被存放在根目录之下 if (file_name.isEmpty()) { return FileHandler(nullptr); } int file = parent->findFile(file_name); if (file == -1) { return FileHandler(nullptr); } else { return FileHandler(parent->getFileRef(file)); } }
FileHandler VirtualDiskNode::createFile(MyString path) { if (!isNormalizedPath(path)) { assert(0); return FileHandler(nullptr); } MyString dir_path = dirname(path).toLower(); DirNode* parent = getDirNode(dir_path); if (!parent) return FileHandler(nullptr); // 文件名创建时保留大小写 MyString file_name = basename(path); if (parent->findFile(file_name) != -1) { return FileHandler(nullptr); } FileNode* nfile = parent->addFile(); assert(nfile); nfile->set_name(file_name); nfile->set_path(path.toLower()); return FileHandler(nfile); }
void MainWindow::on_actionAbout_triggered() { ui->htmlView->setHtml(FileHandler().open(":/help/about.txt")); }
void MainWindow::on_actionDocumentation_triggered() { ui->htmlView->setHtml(FileHandler().open(":/help/doc.txt")); }