25static const int restoreDataVersion = 2;
30 if (!window.isValid()) {
46 stream << static_cast<int>(data.
windows.count());
51 stream << restoreDataVersion;
61 stream >> windowCount;
62 data.
windows.reserve(windowCount);
64 for (
int i = 0;
i < windowCount; ++
i) {
92 delete m_recoveryObject;
104 QDataStream stream(&crashedSession, QIODevice::ReadOnly);
115 m_recoveryObject->
setPage(page);
116 return m_recoveryObject;
119static void loadCurrentVersion(QDataStream &stream,
RestoreData &data)
124static void loadVersion3(QDataStream &stream,
RestoreData &data)
127 stream >> windowCount;
128 data.
windows.reserve(windowCount);
130 for (
int i = 0;
i < windowCount; ++
i) {
131 QByteArray tabsState;
132 QByteArray windowState;
135 stream >> windowState;
140 QDataStream stream1(&windowState, QIODevice::ReadOnly);
148 QDataStream stream2(&tabsState, QIODevice::ReadOnly);
149 stream2 >> tabsCount;
150 window.
tabs.reserve(tabsCount);
151 for (
int i = 0;
i < tabsCount; ++
i) {
154 window.
tabs.append(tab);
173 if (!QFile::exists(file)) {
177 QFile recoveryFile(file);
178 if (!recoveryFile.open(QIODevice::ReadOnly)) {
182 QDataStream stream(&recoveryFile);
188 loadCurrentVersion(stream, data);
189 }
else if (version == 0x0003 || version == (0x0003 | 0x050000)) {
190 loadVersion3(stream, data);
192 qWarning() <<
"Unsupported session file version" << version;
void setPage(WebPage *page)
RestoreManager(const QString &file)
static bool validateFile(const QString &file)
RestoreData restoreData() const
QObject * recoveryObject(WebPage *page)
static void createFromFile(const QString &file, RestoreData &data)
virtual ~RestoreManager()
QDataStream & operator<<(QDataStream &stream, const RestoreData &data)
QDataStream & operator>>(QDataStream &stream, RestoreData &data)
QVector< WebTab::SavedTab > tabs
QVector< BrowserWindow::SavedWindow > windows
QByteArray crashedSession