Hello.
This patch makes opened tabs in rekonq saved and restored between application
sessions.
this is somewhat naive, but does the trick, it also works when application
crashes (which never happen to me).
diff --git a/src/application.cpp b/src/application.cpp
index ebd9900..d2c95e4 100644
--- a/src/application.cpp
+++ b/src/application.cpp
@@ -107,8 +107,12 @@ int Application::newInstance()
}
else
{
- m_mainWindow->mainView()->newTab();
- m_mainWindow->slotHome();
+ int tabs = loadSession();
+ connect (m_mainWindow->mainView(),SIGNAL(tabsChanged()),this,SLOT(saveSession())) ;
+ if (tabs == 0) {
+ m_mainWindow->mainView()->newTab();
+ m_mainWindow->slotHome();
+ }
}
return 0;
@@ -329,3 +333,44 @@ void Application::loadUrl(const QString& urlString, const Rekonq::OpenType& typ
{
return loadUrl( guessUrlFromString(urlString), type );
}
+
+int Application::saveSession()
+{
+ int i;
+ QString sessionFilePath = KStandardDirs::locateLocal("appdata" , "session");
+ QFile sessionFile(sessionFilePath);
+ if (!sessionFile.open(QFile::WriteOnly | QFile::Truncate))
+ {
+ kWarning() << "Unable to open session file" << sessionFile.fileName();
+ return 0;
+ }
+ QDataStream out(&sessionFile);
+ for (i = 0 ; i < m_mainWindow->mainView()->count() ; i++) {
+ out << m_mainWindow->mainView()->webView(i)->url().toEncoded() ;
+ }
+ return i;
+
+}
+
+int Application::loadSession()
+{
+ int i = 0 ;
+ QString sessionFilePath = KStandardDirs::locateLocal("appdata" , "session");
+ QFile sessionFile(sessionFilePath);
+ if (!sessionFile.exists())
+ return 0;
+ if (!sessionFile.open(QFile::ReadOnly))
+ {
+ kWarning() << "Unable to open session file" << sessionFile.fileName();
+ return 0;
+ }
+ QString url ;
+ QDataStream in(&sessionFile);
+ while (!sessionFile.atEnd()) {
+ ++i;
+ QByteArray data;
+ in >> data;
+ loadUrl(data,Rekonq::NewCurrentTab) ;
+ }
+ return i;
+}
\ No newline at end of file
diff --git a/src/application.h b/src/application.h
index cd617b7..e83b254 100644
--- a/src/application.h
+++ b/src/application.h
@@ -127,6 +127,8 @@ private slots:
* Any actions that can be delayed until the window is visible
*/
void postLaunch();
+ int saveSession();
+ int loadSession();
private:
_______________________________________________
rekonq mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/rekonq