┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2011-03-26 16:37:13 +0100
committerPeter Penz <[email protected]>2011-03-26 16:38:34 +0100
commita90938c414687b6dd85d34a7c9fc16afa03e0b68 (patch)
tree7bb4ce67e237233509d682ea44b10057f9e90d51 /src
parent4b0dc69070af505e2bc620dd1be8fd3e7dff7718 (diff)
Show places selector of URL navigator only when required
The places selector of the URL navigator only needs to get shown if the Places panel is invisible.
Diffstat (limited to 'src')
-rw-r--r--src/dolphinmainwindow.cpp36
-rw-r--r--src/dolphinmainwindow.h12
2 files changed, 43 insertions, 5 deletions
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index 482a5b7e8..cd10a4e67 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -422,7 +422,7 @@ void DolphinMainWindow::openNewTab(const KUrl& url)
ViewTab viewTab;
viewTab.splitter = new QSplitter(this);
viewTab.splitter->setChildrenCollapsible(false);
- viewTab.primaryView = new DolphinViewContainer(url, viewTab.splitter);
+ viewTab.primaryView = createViewContainer(url, viewTab.splitter);
viewTab.primaryView->setActive(false);
connectViewSignals(viewTab.primaryView);
@@ -872,6 +872,19 @@ void DolphinMainWindow::togglePanelLockState()
generalSettings->setLockPanels(newLockState);
}
+void DolphinMainWindow::slotPlacesPanelVisibilityChanged(bool visible)
+{
+ const int tabCount = m_viewTab.count();
+ for (int i = 0; i < tabCount; ++i) {
+ ViewTab& tab = m_viewTab[i];
+ Q_ASSERT(tab.primaryView);
+ tab.primaryView->urlNavigator()->setPlacesSelectorVisible(!visible);
+ if (tab.secondaryView) {
+ tab.secondaryView->urlNavigator()->setPlacesSelectorVisible(!visible);
+ }
+ }
+}
+
void DolphinMainWindow::goBack()
{
clearStatusBar();
@@ -1319,9 +1332,8 @@ void DolphinMainWindow::init()
m_actionHandler = new DolphinViewActionHandler(actionCollection(), this);
connect(m_actionHandler, SIGNAL(actionBeingHandled()), SLOT(clearStatusBar()));
connect(m_actionHandler, SIGNAL(createDirectory()), SLOT(createDirectory()));
- ViewProperties props(homeUrl);
- m_viewTab[m_tabIndex].primaryView = new DolphinViewContainer(homeUrl,
- m_viewTab[m_tabIndex].splitter);
+
+ m_viewTab[m_tabIndex].primaryView = createViewContainer(homeUrl, m_viewTab[m_tabIndex].splitter);
m_activeViewContainer = m_viewTab[m_tabIndex].primaryView;
connectViewSignals(m_activeViewContainer);
@@ -1427,6 +1439,18 @@ void DolphinMainWindow::setActiveViewContainer(DolphinViewContainer* viewContain
emit urlChanged(url);
}
+DolphinViewContainer* DolphinMainWindow::createViewContainer(const KUrl& url, QWidget* parent)
+{
+ DolphinViewContainer* container = new DolphinViewContainer(url, parent);
+
+ // The places-selector from the URL navigator should only be shown
+ // if the places dock is invisible
+ QDockWidget* placesDock = findChild<QDockWidget*>("placesDock");
+ container->urlNavigator()->setPlacesSelectorVisible(!placesDock || !placesDock->isVisible());
+
+ return container;
+}
+
void DolphinMainWindow::setupActions()
{
// setup 'File' menu
@@ -1736,6 +1760,8 @@ void DolphinMainWindow::setupDockWidgets()
this, SLOT(handlePlacesClick(KUrl, Qt::MouseButtons)));
connect(this, SIGNAL(urlChanged(KUrl)),
placesPanel, SLOT(setUrl(KUrl)));
+ connect(placesDock, SIGNAL(visibilityChanged(bool)),
+ this, SLOT(slotPlacesPanelVisibilityChanged(bool)));
// Add actions into the "Panels" menu
KActionMenu* panelsMenu = new KActionMenu(i18nc("@action:inmenu View", "Panels"), this);
@@ -1938,7 +1964,7 @@ void DolphinMainWindow::createSecondaryView(int tabIndex)
const int newWidth = (m_viewTab[tabIndex].primaryView->width() - splitter->handleWidth()) / 2;
const DolphinView* view = m_viewTab[tabIndex].primaryView->view();
- m_viewTab[tabIndex].secondaryView = new DolphinViewContainer(view->rootUrl(), 0);
+ m_viewTab[tabIndex].secondaryView = createViewContainer(view->rootUrl(), 0);
splitter->addWidget(m_viewTab[tabIndex].secondaryView);
splitter->setSizes(QList<int>() << newWidth << newWidth);
connectViewSignals(m_viewTab[tabIndex].secondaryView);
diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h
index 10ebccb80..9c7753112 100644
--- a/src/dolphinmainwindow.h
+++ b/src/dolphinmainwindow.h
@@ -261,6 +261,13 @@ private slots:
*/
void togglePanelLockState();
+ /**
+ * Is invoked if the Places panel got visible/invisible and takes care
+ * that the places-selector of all views is only shown if the Places panel
+ * is invisible.
+ */
+ void slotPlacesPanelVisibilityChanged(bool visible);
+
/** Goes back one step of the URL history. */
void goBack();
@@ -451,6 +458,11 @@ private:
*/
void setActiveViewContainer(DolphinViewContainer* view);
+ /**
+ * Creates a view container and does a default initialization.
+ */
+ DolphinViewContainer* createViewContainer(const KUrl& url, QWidget* parent);
+
void setupActions();
void setupDockWidgets();
void updateEditActions();