void RestoreManager::createFromFile(const QString &file, QVector<WindowData> &data) { if (!QFile::exists(file)) { return; } QFile recoveryFile(file); recoveryFile.open(QIODevice::ReadOnly); QDataStream stream(&recoveryFile); int version; stream >> version; if (version != Qz::sessionVersion && version != Qz::sessionVersionQt5) { return; } int windowCount; stream >> windowCount; for (int win = 0; win < windowCount; ++win) { QByteArray tabState; QByteArray windowState; stream >> tabState; stream >> windowState; WindowData wd; wd.windowState = windowState; QDataStream tabStream(tabState); if (tabStream.atEnd()) { continue; } QVector<WebTab::SavedTab> tabs; int tabListCount = 0; tabStream >> tabListCount; for (int i = 0; i < tabListCount; ++i) { WebTab::SavedTab tab; tabStream >> tab; tabs.append(tab); } if (tabs.count() == 0) continue; wd.tabsState = tabs; int currentTab; tabStream >> currentTab; wd.currentTab = currentTab; data.append(wd); } }
string ERModel::loadERDiagram( string fileName ) { _fileName= fileName; ifstream inputERDiagramFile; inputERDiagramFile.open(fileName); if (!inputERDiagramFile.is_open()) return TEXT_LOADSAVE_OPENFAILED; resetERModel(); // 取得輸入檔案的所有字元 string erDiagramText((istreambuf_iterator<char>(inputERDiagramFile)),istreambuf_iterator<char>()); inputERDiagramFile.close(); recoveryFile(classifyInputFile(erDiagramText)); return TEXT_LOADSAVE_OPENSUCCESS; }