Exemplo n.º 1
0
bool VirtualKeyboard::openPack(const String &packName, const FSNode &node) {
	if (node.getChild(packName + ".xml").exists()) {
		_fileArchive = new FSDirectory(node, 1);

		// uncompressed keyboard pack
		if (!_parser->loadFile(node.getChild(packName + ".xml"))) {
			delete _fileArchive;
			_fileArchive = 0;
			return false;
		}

		return true;
	}

	if (node.getChild(packName + ".zip").exists()) {
		// compressed keyboard pack
		_fileArchive = makeZipArchive(node.getChild(packName + ".zip"));
		if (_fileArchive && _fileArchive->hasFile(packName + ".xml")) {
			if (!_parser->loadStream(_fileArchive->createReadStreamForMember(packName + ".xml"))) {
				delete _fileArchive;
				_fileArchive = 0;
				return false;
			}
		} else {
			warning("Could not find %s.xml file in %s.zip keyboard pack", packName.c_str(), packName.c_str());
			delete _fileArchive;
			_fileArchive = 0;
			return false;
		}

		return true;
	}

	return false;
}
Exemplo n.º 2
0
Archive *makeZipArchive(const FSNode &node) {
	return makeZipArchive(node.createReadStream());
}
Exemplo n.º 3
0
Archive *makeZipArchive(const String &name) {
	return makeZipArchive(SearchMan.createReadStreamForMember(name));
}