#include <KProtocolManager>
#include <KShell>
#include <KUrlComboBox>
-#include <KUrlNavigator>
#include <QDropEvent>
#include <QLoggingCategory>
m_statusBar(nullptr),
m_statusBarTimer(nullptr),
m_statusBarTimestamp(),
- m_autoGrabFocus(true),
- m_urlNavigatorVisualState{}
+ m_autoGrabFocus(true)
#ifdef HAVE_KACTIVITIES
, m_activityResourceInstance(nullptr)
#endif
m_urlNavigator.get(), &DolphinUrlNavigator::setLocationUrl);
connect(m_urlNavigator.get(), &DolphinUrlNavigator::urlChanged,
this, &DolphinViewContainer::slotUrlNavigatorLocationChanged);
+ connect(m_urlNavigator.get(), &DolphinUrlNavigator::urlAboutToBeChanged,
+ this, &DolphinViewContainer::slotUrlNavigatorLocationAboutToBeChanged);
+ connect(m_urlNavigator.get(), &DolphinUrlNavigator::urlSelectionRequested,
+ this, &DolphinViewContainer::slotUrlSelectionRequested);
connect(m_view, &DolphinView::writeStateChanged,
this, &DolphinViewContainer::writeStateChanged);
connect(m_view, &DolphinView::requestItemInfo,
m_statusBar, &DolphinStatusBar::setText);
connect(m_view, &DolphinView::operationCompletedMessage,
m_statusBar, &DolphinStatusBar::setText);
+ connect(m_view, &DolphinView::statusBarTextChanged,
+ m_statusBar, &DolphinStatusBar::setDefaultText);
+ connect(m_view, &DolphinView::statusBarTextChanged,
+ m_statusBar, &DolphinStatusBar::resetToDefaultText);
connect(m_statusBar, &DolphinStatusBar::stopPressed,
this, &DolphinViewContainer::stopDirectoryLoading);
connect(m_statusBar, &DolphinStatusBar::zoomLevelChanged,
}
});
+ KFilePlacesModel *placesModel = DolphinPlacesModelSingleton::instance().placesModel();
+ connect(placesModel, &KFilePlacesModel::dataChanged,
+ this, &DolphinViewContainer::slotPlacesModelChanged);
+ connect(placesModel, &KFilePlacesModel::rowsInserted,
+ this, &DolphinViewContainer::slotPlacesModelChanged);
+ connect(placesModel, &KFilePlacesModel::rowsRemoved,
+ this, &DolphinViewContainer::slotPlacesModelChanged);
+
+ connect(this, &DolphinViewContainer::searchModeEnabledChanged,
+ this, &DolphinViewContainer::captionChanged);
+
// Initialize kactivities resource instance
#ifdef HAVE_KACTIVITIES
Q_CHECK_PTR(m_view);
urlNavigator->setLocationUrl(m_view->url());
- urlNavigator->setActive(isActive());
if (m_urlNavigatorVisualState) {
urlNavigator->setVisualState(*m_urlNavigatorVisualState.get());
m_urlNavigatorVisualState.reset();
}
+ urlNavigator->setActive(isActive());
+ // Url changes are still done via m_urlNavigator.
+ connect(urlNavigator, &DolphinUrlNavigator::urlChanged,
+ m_urlNavigator.get(), &DolphinUrlNavigator::setLocationUrl);
+ connect(urlNavigator, &DolphinUrlNavigator::urlsDropped,
+ this, [=](const QUrl &destination, QDropEvent *event) {
+ m_view->dropUrls(destination, event, urlNavigator->dropWidget());
+ });
+ // Aside from these, only visual things need to be connected.
connect(m_view, &DolphinView::urlChanged,
urlNavigator, &DolphinUrlNavigator::setLocationUrl);
- connect(urlNavigator, &DolphinUrlNavigator::urlChanged,
- this, &DolphinViewContainer::slotUrlNavigatorLocationChanged);
connect(urlNavigator, &DolphinUrlNavigator::activated,
this, &DolphinViewContainer::activate);
- connect(urlNavigator, &DolphinUrlNavigator::urlAboutToBeChanged,
- this, &DolphinViewContainer::slotUrlNavigatorLocationAboutToBeChanged);
- connect(urlNavigator, &DolphinUrlNavigator::urlSelectionRequested,
- this, &DolphinViewContainer::slotUrlSelectionRequested);
- connect(urlNavigator, &DolphinUrlNavigator::urlsDropped, this, [=](const QUrl &destination, QDropEvent *event) {
- m_view->dropUrls(destination, event, urlNavigator->dropWidget());
- });
m_urlNavigatorConnected = urlNavigator;
}
return;
}
+ disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::urlChanged,
+ m_urlNavigator.get(), &DolphinUrlNavigator::setLocationUrl);
+ disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::urlsDropped,
+ this, nullptr);
disconnect(m_view, &DolphinView::urlChanged,
m_urlNavigatorConnected, &DolphinUrlNavigator::setLocationUrl);
- disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::urlChanged,
- this, &DolphinViewContainer::slotUrlNavigatorLocationChanged);
disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::activated,
this, &DolphinViewContainer::activate);
- disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::urlAboutToBeChanged,
- this, &DolphinViewContainer::slotUrlNavigatorLocationAboutToBeChanged);
- disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::urlSelectionRequested,
- this, &DolphinViewContainer::slotUrlSelectionRequested);
- disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::urlsDropped,
- this, nullptr);
m_urlNavigatorVisualState = m_urlNavigatorConnected->visualState();
m_urlNavigatorConnected = nullptr;
m_searchBox->setVisible(enabled);
if (enabled) {
- const QUrl& locationUrl = m_urlNavigatorConnected->locationUrl();
+ const QUrl& locationUrl = m_urlNavigator->locationUrl();
m_searchBox->fromSearchUrl(locationUrl);
}
}
KFilePlacesModel *placesModel = DolphinPlacesModelSingleton::instance().placesModel();
- const auto& matchedPlaces = placesModel->match(placesModel->index(0,0), KFilePlacesModel::UrlRole, QUrl(url().adjusted(QUrl::StripTrailingSlash).toString(QUrl::FullyEncoded).append("/?")), 1, Qt::MatchRegExp);
+ const QString pattern = url().adjusted(QUrl::StripTrailingSlash).toString(QUrl::FullyEncoded).append("/?");
+ const auto& matchedPlaces = placesModel->match(placesModel->index(0,0), KFilePlacesModel::UrlRole, QRegularExpression::anchoredPattern(pattern), 1, Qt::MatchRegularExpression);
if (!matchedPlaces.isEmpty()) {
return placesModel->text(matchedPlaces.first());
void DolphinViewContainer::updateStatusBar()
{
m_statusBarTimestamp.start();
-
- const QString text = m_view->statusBarText();
- m_statusBar->setDefaultText(text);
- m_statusBar->resetToDefaultText();
+ m_view->requestStatusBarText();
}
void DolphinViewContainer::updateDirectoryLoadingProgress(int percent)
m_view->markUrlAsCurrent(url); // makes the item scroll into view
}
+void DolphinViewContainer::disableUrlNavigatorSelectionRequests()
+{
+ disconnect(m_urlNavigator.get(), &KUrlNavigator::urlSelectionRequested,
+ this, &DolphinViewContainer::slotUrlSelectionRequested);
+}
+
+void DolphinViewContainer::enableUrlNavigatorSelectionRequests()
+{
+ connect(m_urlNavigator.get(), &KUrlNavigator::urlSelectionRequested,
+ this, &DolphinViewContainer::slotUrlSelectionRequested);
+}
+
void DolphinViewContainer::redirect(const QUrl& oldUrl, const QUrl& newUrl)
{
Q_UNUSED(oldUrl)
showMessage(msg, Error);
}
+void DolphinViewContainer::slotPlacesModelChanged()
+{
+ if (!GeneralSettings::showFullPathInTitlebar() && !isSearchModeEnabled()) {
+ Q_EMIT captionChanged();
+ }
+}
+
bool DolphinViewContainer::isSearchUrl(const QUrl& url) const
{
return url.scheme().contains(QLatin1String("search"));