1
mirror of https://invent.kde.org/network/falkon.git synced 2024-11-13 10:32:11 +01:00

Refactor some codes related to sessions. (#2280)

This commit is contained in:
srazi 2017-03-26 13:57:04 +04:30 committed by David Rosca
parent d544a5dc5f
commit ade7b9c690
4 changed files with 42 additions and 16 deletions

View File

@ -403,17 +403,17 @@ MainApplication::AfterLaunch MainApplication::afterLaunch() const
return static_cast<AfterLaunch>(Settings().value(QSL("Web-URL-Settings/afterLaunch"), RestoreSession).toInt()); return static_cast<AfterLaunch>(Settings().value(QSL("Web-URL-Settings/afterLaunch"), RestoreSession).toInt());
} }
bool MainApplication::restoreSession(BrowserWindow* window, RestoreData restoreData) void MainApplication::openSession(BrowserWindow* window, RestoreData &restoreData)
{ {
if (m_isPrivate || restoreData.isEmpty()) {
return false;
}
m_isRestoring = true;
setOverrideCursor(Qt::BusyCursor); setOverrideCursor(Qt::BusyCursor);
if (!window)
window = createWindow(Qz::BW_OtherRestoredWindow);
window->setUpdatesEnabled(false); window->setUpdatesEnabled(false);
window->tabWidget()->closeRecoveryTab();
if (m_isRestoring)
window->tabWidget()->closeRecoveryTab();
if (window->tabWidget()->normalTabsCount() > 1) { if (window->tabWidget()->normalTabsCount() > 1) {
// This can only happen when recovering crashed session! // This can only happen when recovering crashed session!
@ -452,8 +452,20 @@ bool MainApplication::restoreSession(BrowserWindow* window, RestoreData restoreD
processEvents(); processEvents();
} }
destroyRestoreManager();
restoreOverrideCursor(); restoreOverrideCursor();
}
bool MainApplication::restoreSession(BrowserWindow* window, RestoreData restoreData)
{
if (m_isPrivate || restoreData.isEmpty()) {
return false;
}
m_isRestoring = true;
openSession(window, restoreData);
destroyRestoreManager();
m_isRestoring = false; m_isRestoring = false;
return true; return true;
@ -696,12 +708,8 @@ void MainApplication::postLaunch()
QTimer::singleShot(5000, this, &MainApplication::runDeferredPostLaunchActions); QTimer::singleShot(5000, this, &MainApplication::runDeferredPostLaunchActions);
} }
void MainApplication::saveSession() void MainApplication::writeCurrentSession(const QString &filePath)
{ {
if (m_isPrivate || m_isRestoring || m_windows.count() == 0 || m_restoreManager) {
return;
}
QByteArray data; QByteArray data;
QDataStream stream(&data, QIODevice::WriteOnly); QDataStream stream(&data, QIODevice::WriteOnly);
@ -718,12 +726,21 @@ void MainApplication::saveSession()
} }
} }
QFile file(DataPaths::currentProfilePath() + QLatin1String("/session.dat")); QFile file(filePath);
file.open(QIODevice::WriteOnly); file.open(QIODevice::WriteOnly);
file.write(data); file.write(data);
file.close(); file.close();
} }
void MainApplication::saveSession()
{
if (m_isPrivate || m_isRestoring || m_windows.count() == 0 || m_restoreManager) {
return;
}
writeCurrentSession(DataPaths::currentProfilePath() + QLatin1String("/session.dat"));
}
void MainApplication::saveSettings() void MainApplication::saveSettings()
{ {
if (isPrivate()) { if (isPrivate()) {

View File

@ -79,6 +79,7 @@ public:
AfterLaunch afterLaunch() const; AfterLaunch afterLaunch() const;
void openSession(BrowserWindow* window, RestoreData &restoreData);
bool restoreSession(BrowserWindow* window, RestoreData restoreData); bool restoreSession(BrowserWindow* window, RestoreData restoreData);
void destroyRestoreManager(); void destroyRestoreManager();
void reloadSettings(); void reloadSettings();
@ -119,6 +120,8 @@ public slots:
void changeOccurred(); void changeOccurred();
void quitApplication(); void quitApplication();
void writeCurrentSession(const QString &filePath);
signals: signals:
void settingsReloaded(); void settingsReloaded();
void activeWindowChanged(BrowserWindow* window); void activeWindowChanged(BrowserWindow* window);

View File

@ -49,7 +49,7 @@ QObject *RestoreManager::recoveryObject(WebPage *page)
return m_recoveryObject; return m_recoveryObject;
} }
void RestoreManager::createFromFile(const QString &file) void RestoreManager::createFromFile(const QString &file, QVector<WindowData> &data)
{ {
if (!QFile::exists(file)) { if (!QFile::exists(file)) {
return; return;
@ -97,6 +97,11 @@ void RestoreManager::createFromFile(const QString &file)
tabStream >> currentTab; tabStream >> currentTab;
wd.currentTab = currentTab; wd.currentTab = currentTab;
m_data.append(wd); data.append(wd);
} }
} }
void RestoreManager::createFromFile(const QString &file)
{
createFromFile(file, m_data);
}

View File

@ -42,6 +42,7 @@ public:
QObject *recoveryObject(WebPage *page); QObject *recoveryObject(WebPage *page);
static void createFromFile(const QString &file, QVector<RestoreManager::WindowData> &data);
private: private:
void createFromFile(const QString &file); void createFromFile(const QString &file);