bool SessionsManager::restoreClosedWindow(int index) { if (index < 0) { index = 0; } Application::getInstance()->createWindow(false, false, m_closedWindows.value(index, SessionMainWindow())); m_closedWindows.removeAt(index); emit m_instance->closedWindowsChanged(); return true; }
SessionInformation StartupDialog::getSession() const { SessionInformation session; if (m_ui->continueSessionButton->isChecked()) { QList<SessionMainWindow> windows; session = SessionsManager::getSession(m_ui->sessionComboBox->currentData().toString()); for (int i = 0; i < m_windowsModel->rowCount(); ++i) { QStandardItem *windowItem = m_windowsModel->item(i, 0); if (!windowItem || (windowItem->flags() & Qt::ItemIsUserCheckable && windowItem->data(Qt::CheckStateRole).toInt() == Qt::Unchecked)) { continue; } const int index = (session.windows.value(i, SessionMainWindow()).index - 1); SessionMainWindow window; window.index = (index + 1); window.geometry = windowItem->data(Qt::UserRole).toByteArray(); for (int j = 0; j < windowItem->rowCount(); ++j) { QStandardItem *tabItem = windowItem->child(j, 0); if (tabItem && tabItem->data(Qt::CheckStateRole).toInt() == Qt::Checked) { window.windows.append(session.windows.value(i, SessionMainWindow()).windows.value(j, SessionWindow())); } else { if (j == index) { window.index = 1; } else if (j > 0 && j < index) { --window.index; } } } windows.append(window); } session.windows = windows; } else { WindowHistoryEntry entry; if (m_ui->homePageButton->isChecked()) { entry.url = SettingsManager::getValue(QLatin1String("Browser/HomePage")).toString(); } else if (m_ui->startPageRadioButton->isChecked()) { entry.url = QLatin1String("about:start"); } else { entry.url = QLatin1String("about:blank"); } SessionWindow tab; tab.history.append(entry); tab.index = 0; SessionMainWindow window; window.windows.append(tab); session.path = QLatin1String("default"); session.title = tr("Default"); session.windows.append(window); session.index = 0; } return session; }