diff options
| author | Peter Penz <[email protected]> | 2011-03-26 16:37:13 +0100 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2011-03-26 16:38:34 +0100 |
| commit | a90938c414687b6dd85d34a7c9fc16afa03e0b68 (patch) | |
| tree | 7bb4ce67e237233509d682ea44b10057f9e90d51 /src | |
| parent | 4b0dc69070af505e2bc620dd1be8fd3e7dff7718 (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.cpp | 36 | ||||
| -rw-r--r-- | src/dolphinmainwindow.h | 12 |
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(); |
