bool SessionsManager::restoreSession(const QString &path, MainWindow *window) { const SessionInformation session = getSession(path); if (session.windows.isEmpty()) { if (m_session.isEmpty() && path == QLatin1String("default")) { m_session = QLatin1String("default"); } return false; } const QList<SessionMainWindow> closedWindows = m_closedWindows; if (m_session.isEmpty()) { m_session = path; } m_closedWindows = session.windows; if (window && m_closedWindows.count() > 0) { window->getWindowsManager()->restore(m_closedWindows.first()); m_closedWindows.removeAt(0); } const int windows = m_closedWindows.count(); for (int i = 0; i < windows; ++i) { restoreClosedWindow(); } m_closedWindows = closedWindows; return true; }
void Menu::populateClosedWindowsMenu() { clear(); QMenu::addAction(Utils::getIcon(QLatin1String("edit-clear")), tr("Clear"), this, SLOT(clearClosedWindows()))->setData(0); addSeparator(); const QStringList windows = SessionsManager::getClosedWindows(); if (!windows.isEmpty()) { for (int i = 0; i < windows.count(); ++i) { QMenu::addAction(Utils::elideText(tr("Window - %1").arg(windows.at(i)), this), this, SLOT(restoreClosedWindow()))->setData(-(i + 1)); } addSeparator(); } MainWindow *mainWindow = MainWindow::findMainWindow(parent()); if (mainWindow) { const QList<ClosedWindow> tabs = mainWindow->getWindowsManager()->getClosedWindows(); for (int i = 0; i < tabs.count(); ++i) { QAction *action = QMenu::addAction(HistoryManager::getIcon(QUrl(tabs.at(i).window.getUrl())), Utils::elideText(tabs.at(i).window.getTitle(), this), this, SLOT(restoreClosedWindow())); action->setData(i + 1); action->setStatusTip(tabs.at(i).window.getUrl()); } } }