X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/3c6ecfa246c17077f2e84a45e56da8943d6db1c3..f3a86bf29e9165bbe2861c0af5e537d6d6f80854:/src/dolphinviewcontainer.cpp diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index f473752dc..e21262977 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -30,7 +30,11 @@ #include "views/viewmodecontroller.h" #include "views/viewproperties.h" +#ifdef HAVE_KACTIVITIES +#include +#endif #include +#include #include #include #include @@ -39,7 +43,6 @@ #include #include #include -#include #include #include @@ -55,6 +58,7 @@ DolphinViewContainer::DolphinViewContainer(const QUrl& url, QWidget* parent) : m_urlNavigator(nullptr), m_emptyTrashButton(nullptr), m_searchBox(nullptr), + m_searchModeEnabled(false), m_messageWidget(nullptr), m_view(nullptr), m_filterBar(nullptr), @@ -62,20 +66,20 @@ DolphinViewContainer::DolphinViewContainer(const QUrl& url, QWidget* parent) : m_statusBarTimer(nullptr), m_statusBarTimestamp(), m_autoGrabFocus(true) -#ifdef KActivities_FOUND - , m_activityResourceInstance(0) +#ifdef HAVE_KACTIVITIES + , m_activityResourceInstance(nullptr) #endif { hide(); m_topLayout = new QVBoxLayout(this); m_topLayout->setSpacing(0); - m_topLayout->setMargin(0); + m_topLayout->setContentsMargins(0, 0, 0, 0); m_navigatorWidget = new QWidget(this); QHBoxLayout* navigatorLayout = new QHBoxLayout(m_navigatorWidget); navigatorLayout->setSpacing(0); - navigatorLayout->setMargin(0); + navigatorLayout->setContentsMargins(0, 0, 0, 0); m_urlNavigator = new KUrlNavigator(DolphinPlacesModelSingleton::instance().placesModel(), url, this); connect(m_urlNavigator, &KUrlNavigator::activated, @@ -220,11 +224,10 @@ DolphinViewContainer::DolphinViewContainer(const QUrl& url, QWidget* parent) : // Initialize kactivities resource instance - #ifdef KActivities_FOUND - m_activityResourceInstance = new KActivities::ResourceInstance( - window()->winId(), url); +#ifdef HAVE_KACTIVITIES + m_activityResourceInstance = new KActivities::ResourceInstance(window()->winId(), url); m_activityResourceInstance->setParent(this); - #endif +#endif } DolphinViewContainer::~DolphinViewContainer() @@ -242,13 +245,13 @@ void DolphinViewContainer::setActive(bool active) m_urlNavigator->setActive(active); m_view->setActive(active); - #ifdef KActivities_FOUND +#ifdef HAVE_KACTIVITIES if (active) { m_activityResourceInstance->notifyFocusedIn(); } else { m_activityResourceInstance->notifyFocusedOut(); } - #endif +#endif } bool DolphinViewContainer::isActive() const @@ -310,6 +313,10 @@ void DolphinViewContainer::showMessage(const QString& msg, MessageType type) m_messageWidget->setText(msg); + // TODO: wrap at arbitrary character positions once QLabel can do this + // https://bugreports.qt.io/browse/QTBUG-1276 + m_messageWidget->setWordWrap(true); + switch (type) { case Information: m_messageWidget->setMessageType(KMessageWidget::Information); break; case Warning: m_messageWidget->setMessageType(KMessageWidget::Warning); break; @@ -377,11 +384,13 @@ void DolphinViewContainer::setSearchModeEnabled(bool enabled) } m_urlNavigator->setLocationUrl(url); } + + m_searchModeEnabled = enabled; } bool DolphinViewContainer::isSearchModeEnabled() const { - return m_searchBox->isVisible(); + return m_searchModeEnabled; } QString DolphinViewContainer::placesText() const @@ -409,15 +418,62 @@ void DolphinViewContainer::reload() m_messageWidget->hide(); } +QString DolphinViewContainer::caption() const +{ + if (GeneralSettings::showFullPathInTitlebar()) { + if (!url().isLocalFile()) { + return url().adjusted(QUrl::StripTrailingSlash).toString(); + } + return url().adjusted(QUrl::StripTrailingSlash).path(); + } + + KFilePlacesModel *placesModel = DolphinPlacesModelSingleton::instance().placesModel(); + const auto& matchedPlaces = placesModel->match(placesModel->index(0,0), KFilePlacesModel::UrlRole, url(), 1, Qt::MatchExactly); + + if (!matchedPlaces.isEmpty()) { + return placesModel->text(matchedPlaces.first()); + } + + if (isSearchModeEnabled()) { + if (currentSearchText().isEmpty()){ + return i18n("Search"); + } else { + return i18n("Search for %1", currentSearchText()); + } + } + + if (!url().isLocalFile()) { + QUrl adjustedUrl = url().adjusted(QUrl::StripTrailingSlash); + QString caption; + if (!adjustedUrl.fileName().isEmpty()) { + caption = adjustedUrl.fileName(); + } else if (!adjustedUrl.path().isEmpty() && adjustedUrl.path() != "/") { + caption = adjustedUrl.path(); + } else if (!adjustedUrl.host().isEmpty()) { + caption = adjustedUrl.host(); + } else { + caption = adjustedUrl.toString(); + } + return caption; + } + + QString fileName = url().adjusted(QUrl::StripTrailingSlash).fileName(); + if (fileName.isEmpty()) { + fileName = '/'; + } + + return fileName; +} + void DolphinViewContainer::setUrl(const QUrl& newUrl) { if (newUrl != m_urlNavigator->locationUrl()) { m_urlNavigator->setLocationUrl(newUrl); } - #ifdef KActivities_FOUND +#ifdef HAVE_KACTIVITIES m_activityResourceInstance->setUri(newUrl); - #endif +#endif } void DolphinViewContainer::setFilterBarVisible(bool visible) @@ -633,7 +689,6 @@ void DolphinViewContainer::slotUrlNavigatorLocationChanged(const QUrl& url) void DolphinViewContainer::slotUrlSelectionRequested(const QUrl& url) { - qCDebug(DolphinDebug) << "slotUrlSelectionRequested: " << url; m_view->markUrlsAsSelected({url}); m_view->markUrlAsCurrent(url); // makes the item scroll into view }