From: Peter Penz Date: Sat, 26 Mar 2011 15:37:13 +0000 (+0100) Subject: Show places selector of URL navigator only when required X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/a90938c414687b6dd85d34a7c9fc16afa03e0b68?ds=sidebyside 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. --- 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("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() << 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();