void BrowserApplication::restoreLastSession() { QList<QByteArray> windows; QBuffer buffer(&m_lastSession); QDataStream stream(&buffer); buffer.open(QIODevice::ReadOnly); int windowCount; stream >> windowCount; for (int i = 0; i < windowCount; ++i) { QByteArray windowState; stream >> windowState; windows.append(windowState); } for (int i = 0; i < windows.count(); ++i) { BrowserMainWindow *newWindow = 0; if (m_mainWindows.count() == 1 && mainWindow()->tabWidget()->count() == 1 && mainWindow()->currentTab()->url() == QUrl()) { newWindow = mainWindow(); } else { newWindow = newMainWindow(); } newWindow->restoreState(windows.at(i)); } }
bool BrowserApplication::restoreLastSession() { int version = 2; QList<QByteArray> windows; QBuffer buffer(&m_lastSession); QDataStream stream(&buffer); buffer.open(QIODevice::ReadOnly); qint32 marker; qint32 v; stream >> marker; stream >> v; if (marker != BrowserApplicationMagic || v != version) return false; qint32 windowCount; stream >> windowCount; for (qint32 i = 0; i < windowCount; ++i) { QByteArray windowState; stream >> windowState; windows.append(windowState); } for (int i = 0; i < windows.count(); ++i) { BrowserMainWindow *newWindow = 0; if (m_mainWindows.count() == 1 && mainWindow()->tabWidget()->count() == 1 && mainWindow()->currentTab()->url() == QUrl()) { newWindow = mainWindow(); } else { newWindow = newMainWindow(); } newWindow->restoreState(windows.at(i)); } return true; }
bool BrowserApplication::restoreLastSession() { { QSettings settings; settings.beginGroup(QLatin1String("MainWindow")); if (settings.value(QLatin1String("restoring"), false).toBool()) { QMessageBox::information(0, tr("Restore failed"), tr("The saved session will not be restored because Arora crashed while trying to restore this session.")); return false; } // saveSession will be called by an AutoSaver timer from the set tabs // and in saveSession we will reset this flag back to false settings.setValue(QLatin1String("restoring"), true); } int version = 2; QList<QByteArray> windows; QBuffer buffer(&m_lastSession); QDataStream stream(&buffer); buffer.open(QIODevice::ReadOnly); qint32 marker; qint32 v; stream >> marker; stream >> v; if (marker != BrowserApplicationMagic || v != version) return false; qint32 windowCount; stream >> windowCount; for (qint32 i = 0; i < windowCount; ++i) { QByteArray windowState; stream >> windowState; windows.append(windowState); } for (int i = 0; i < windows.count(); ++i) { BrowserMainWindow *newWindow = 0; if (i == 0 && m_mainWindows.count() >= 1) { newWindow = mainWindow(); } else { newWindow = newMainWindow(); } newWindow->restoreState(windows.at(i)); } return true; }