┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2009-03-19 07:23:41 +0000
committerPeter Penz <[email protected]>2009-03-19 07:23:41 +0000
commitabc9b188165c290addf1a30a588eb874df999578 (patch)
tree683b1bbe69477bd0c2d969d52d6d846a22ac7c97 /src
parent9a810d4df0480bc4de618b4722646e262db4d8cb (diff)
Fixed issue that tabs are not remembered when restoring a session. Thanks a lot to Rahman Duran for the patch!
BUG: 181227 CCMAIL: [email protected] svn path=/trunk/KDE/kdebase/apps/; revision=941226
Diffstat (limited to 'src')
-rw-r--r--src/dolphinmainwindow.cpp76
-rw-r--r--src/dolphinmainwindow.h7
2 files changed, 55 insertions, 28 deletions
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index c64e85b29..6e6d4cc12 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -478,46 +478,61 @@ void DolphinMainWindow::closeEvent(QCloseEvent* event)
void DolphinMainWindow::saveProperties(KConfigGroup& group)
{
- // TODO: remember tabs
- DolphinViewContainer* cont = m_viewTab[m_tabIndex].primaryView;
- group.writeEntry("Primary Url", cont->url().url());
- group.writeEntry("Primary Editable Url", cont->isUrlEditable());
+ const int tabCount = m_viewTab.count();
+ group.writeEntry("Tab Count", tabCount);
+ group.writeEntry("Active Tab Index", m_tabBar->currentIndex());
+
+ for (int i = 0; i < tabCount; ++i) {
+ const DolphinViewContainer* cont = m_viewTab[i].primaryView;
+ group.writeEntry(tabProperty("Primary URL", i), cont->url().url());
+ group.writeEntry(tabProperty("Primary Editable", i), cont->isUrlEditable());
- cont = m_viewTab[m_tabIndex].secondaryView;
- if (cont != 0) {
- group.writeEntry("Secondary Url", cont->url().url());
- group.writeEntry("Secondary Editable Url", cont->isUrlEditable());
+ cont = m_viewTab[i].secondaryView;
+ if (cont != 0) {
+ group.writeEntry(tabProperty("Secondary URL", i), cont->url().url());
+ group.writeEntry(tabProperty("Secondary Editable", i), cont->isUrlEditable());
+ }
}
}
void DolphinMainWindow::readProperties(const KConfigGroup& group)
{
- // TODO: read tabs
- DolphinViewContainer* cont = m_viewTab[m_tabIndex].primaryView;
+ const int tabCount = group.readEntry("Tab Count", 1);
+ for (int i = 0; i < tabCount; ++i) {
+ DolphinViewContainer* cont = m_viewTab[i].primaryView;
+
+ cont->setUrl(group.readEntry(tabProperty("Primary URL", i)));
+ const bool editable = group.readEntry(tabProperty("Primary Editable", i), false);
+ cont->urlNavigator()->setUrlEditable(editable);
- cont->setUrl(group.readEntry("Primary Url"));
- bool editable = group.readEntry("Primary Editable Url", false);
- cont->urlNavigator()->setUrlEditable(editable);
+ cont = m_viewTab[i].secondaryView;
+ const QString secondaryUrl = group.readEntry(tabProperty("Secondary URL", i));
+ if (!secondaryUrl.isEmpty()) {
+ if (cont == 0) {
+ // a secondary view should be shown, but no one is available
+ // currently -> create a new view
+ toggleSplitView();
+ cont = m_viewTab[i].secondaryView;
+ Q_ASSERT(cont != 0);
+ }
- cont = m_viewTab[m_tabIndex].secondaryView;
- const QString secondaryUrl = group.readEntry("Secondary Url");
- if (!secondaryUrl.isEmpty()) {
- if (cont == 0) {
- // a secondary view should be shown, but no one is available
- // currently -> create a new view
+ cont->setUrl(secondaryUrl);
+ const bool editable = group.readEntry(tabProperty("Secondary Editable", i), false);
+ cont->urlNavigator()->setUrlEditable(editable);
+ } else if (cont != 0) {
+ // no secondary view should be shown, but the default setting shows
+ // one already -> close the view
toggleSplitView();
- cont = m_viewTab[m_tabIndex].secondaryView;
- Q_ASSERT(cont != 0);
}
- cont->setUrl(secondaryUrl);
- bool editable = group.readEntry("Secondary Editable Url", false);
- cont->urlNavigator()->setUrlEditable(editable);
- } else if (cont != 0) {
- // no secondary view should be shown, but the default setting shows
- // one already -> close the view
- toggleSplitView();
+ // openNewTab() needs to be called only tabCount - 1 times
+ if (i != tabCount - 1) {
+ openNewTab();
+ }
}
+
+ const int index = group.readEntry("Active Tab Index", 0);
+ m_tabBar->setCurrentIndex(index);
}
void DolphinMainWindow::updateNewMenu()
@@ -1512,6 +1527,11 @@ void DolphinMainWindow::createSecondaryView(int tabIndex)
m_viewTab[tabIndex].secondaryView->show();
}
+QString DolphinMainWindow::tabProperty(const QString& property, int tabIndex) const
+{
+ return "Tab " + QString::number(tabIndex) + ' ' + property;
+}
+
DolphinMainWindow::UndoUiInterface::UndoUiInterface() :
KIO::FileUndoManager::UiInterface()
{
diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h
index 2b5b00515..35fc57db4 100644
--- a/src/dolphinmainwindow.h
+++ b/src/dolphinmainwindow.h
@@ -418,6 +418,13 @@ private:
void createSecondaryView(int tabIndex);
+ /**
+ * Helper method for saveProperties() and readProperties(): Returns
+ * the property string for a tab with the index \a tabIndex and
+ * the property \a property.
+ */
+ QString tabProperty(const QString& property, int tabIndex) const;
+
private:
/**
* Implements a custom error handling for the undo manager. This