***************************************************************************/
#include "dolphinviewcontainer.h"
-#include <KProtocolManager>
-#include <QApplication>
-#include <QKeyEvent>
-#include <QItemSelection>
-#include <QBoxLayout>
-#include <QTimer>
-#include <QScrollBar>
+#include "dolphin_generalsettings.h"
+#include "dolphinplacesmodelsingleton.h"
+#include "dolphindebug.h"
+#include "filterbar/filterbar.h"
+#include "global.h"
+#include "search/dolphinsearchbox.h"
+#include "statusbar/dolphinstatusbar.h"
+#include "trash/dolphintrash.h"
+#include "views/viewmodecontroller.h"
+#include "views/viewproperties.h"
-#include <KDesktopFile>
-#include <KFileItemDelegate>
#include <KFileItemActions>
-#include <KFilePlacesModel>
-#include <KLocale>
-#include <KIconEffect>
-#include <KIO/NetAccess>
#include <KIO/PreviewJob>
+#include <KLocalizedString>
#include <KMessageWidget>
-#include <KNewFileMenu>
-#include <konqmimedata.h>
-#include <konq_operations.h>
+#include <KProtocolManager>
+#include <KRun>
#include <KShell>
-#include <KUrl>
#include <KUrlComboBox>
#include <KUrlNavigator>
-#include <KRun>
+#include <kio_version.h>
-#ifdef KActivities_FOUND
-#include <KActivities/ResourceInstance>
-#endif
-
-#include "dolphin_generalsettings.h"
-#include "filterbar/filterbar.h"
-#include "search/dolphinsearchbox.h"
-#include "statusbar/dolphinstatusbar.h"
-#include "views/draganddrophelper.h"
-#include "views/viewmodecontroller.h"
-#include "views/viewproperties.h"
+#include <QDropEvent>
+#include <QLoggingCategory>
+#include <QMimeData>
+#include <QTimer>
+#include <QUrl>
+#include <QVBoxLayout>
-DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
+DolphinViewContainer::DolphinViewContainer(const QUrl& url, QWidget* parent) :
QWidget(parent),
- m_topLayout(0),
- m_urlNavigator(0),
- m_searchBox(0),
- m_messageWidget(0),
- m_view(0),
- m_filterBar(0),
- m_statusBar(0),
- m_statusBarTimer(0),
+ m_topLayout(nullptr),
+ m_navigatorWidget(nullptr),
+ m_urlNavigator(nullptr),
+ m_emptyTrashButton(nullptr),
+ m_searchBox(nullptr),
+ m_messageWidget(nullptr),
+ m_view(nullptr),
+ m_filterBar(nullptr),
+ m_statusBar(nullptr),
+ m_statusBarTimer(nullptr),
m_statusBarTimestamp(),
- m_autoGrabFocus(true),
- m_dropDestination(),
- m_dropEvent(0)
+ m_autoGrabFocus(true)
#ifdef KActivities_FOUND
, m_activityResourceInstance(0)
#endif
m_topLayout->setSpacing(0);
m_topLayout->setMargin(0);
- m_urlNavigator = new KUrlNavigator(new KFilePlacesModel(this), url, this);
- connect(m_urlNavigator, SIGNAL(urlsDropped(KUrl,QDropEvent*)),
- this, SLOT(dropUrls(KUrl,QDropEvent*)));
- connect(m_urlNavigator, SIGNAL(activated()),
- this, SLOT(activate()));
- connect(m_urlNavigator->editor(), SIGNAL(completionModeChanged(KGlobalSettings::Completion)),
- this, SLOT(saveUrlCompletionMode(KGlobalSettings::Completion)));
+ m_navigatorWidget = new QWidget(this);
+ QHBoxLayout* navigatorLayout = new QHBoxLayout(m_navigatorWidget);
+ navigatorLayout->setSpacing(0);
+ navigatorLayout->setMargin(0);
+
+ m_urlNavigator = new KUrlNavigator(DolphinPlacesModelSingleton::instance().placesModel(), url, this);
+ connect(m_urlNavigator, &KUrlNavigator::activated,
+ this, &DolphinViewContainer::activate);
+ connect(m_urlNavigator->editor(), &KUrlComboBox::completionModeChanged,
+ this, &DolphinViewContainer::saveUrlCompletionMode);
const GeneralSettings* settings = GeneralSettings::self();
m_urlNavigator->setUrlEditable(settings->editableUrl());
m_urlNavigator->setShowFullPath(settings->showFullPath());
- m_urlNavigator->setHomeUrl(KUrl(settings->homeUrl()));
+ m_urlNavigator->setHomeUrl(Dolphin::homeUrl());
KUrlComboBox* editor = m_urlNavigator->editor();
- editor->setCompletionMode(KGlobalSettings::Completion(settings->urlCompletionMode()));
+ editor->setCompletionMode(KCompletion::CompletionMode(settings->urlCompletionMode()));
+
+ m_emptyTrashButton = new QPushButton(QIcon::fromTheme(QStringLiteral("user-trash")), "&Empty Trash", this);
+ m_emptyTrashButton->setFlat(true);
+ connect(m_emptyTrashButton, &QPushButton::clicked, this, [this]() { Trash::empty(this); });
+ connect(&Trash::instance(), &Trash::emptinessChanged, m_emptyTrashButton, &QPushButton::setDisabled);
+ m_emptyTrashButton->setDisabled(Trash::isEmpty());
+ m_emptyTrashButton->hide();
m_searchBox = new DolphinSearchBox(this);
m_searchBox->hide();
- connect(m_searchBox, SIGNAL(activated()), this, SLOT(activate()));
- connect(m_searchBox, SIGNAL(closeRequest()), this, SLOT(closeSearchBox()));
- connect(m_searchBox, SIGNAL(searchRequest()), this, SLOT(startSearching()));
- connect(m_searchBox, SIGNAL(returnPressed(QString)), this, SLOT(requestFocus()));
+ connect(m_searchBox, &DolphinSearchBox::activated, this, &DolphinViewContainer::activate);
+ connect(m_searchBox, &DolphinSearchBox::closeRequest, this, &DolphinViewContainer::closeSearchBox);
+ connect(m_searchBox, &DolphinSearchBox::searchRequest, this, &DolphinViewContainer::startSearching);
+ connect(m_searchBox, &DolphinSearchBox::returnPressed, this, &DolphinViewContainer::requestFocus);
m_messageWidget = new KMessageWidget(this);
m_messageWidget->setCloseButtonVisible(true);
m_messageWidget->hide();
m_view = new DolphinView(url, this);
- connect(m_view, SIGNAL(urlChanged(KUrl)), m_urlNavigator, SLOT(setUrl(KUrl)));
- connect(m_view, SIGNAL(urlChanged(KUrl)), m_messageWidget, SLOT(hide()));
- connect(m_view, SIGNAL(writeStateChanged(bool)), this, SIGNAL(writeStateChanged(bool)));
- connect(m_view, SIGNAL(requestItemInfo(KFileItem)), this, SLOT(showItemInfo(KFileItem)));
- connect(m_view, SIGNAL(itemActivated(KFileItem)), this, SLOT(slotItemActivated(KFileItem)));
- connect(m_view, SIGNAL(itemsActivated(KFileItemList)), this, SLOT(slotItemsActivated(KFileItemList)));
- connect(m_view, SIGNAL(redirection(KUrl,KUrl)), this, SLOT(redirect(KUrl,KUrl)));
- connect(m_view, SIGNAL(directoryLoadingStarted()), this, SLOT(slotDirectoryLoadingStarted()));
- connect(m_view, SIGNAL(directoryLoadingCompleted()), this, SLOT(slotDirectoryLoadingCompleted()));
- connect(m_view, SIGNAL(directoryLoadingCanceled()), this, SLOT(slotDirectoryLoadingCanceled()));
- connect(m_view, SIGNAL(itemCountChanged()), this, SLOT(delayedStatusBarUpdate()));
- connect(m_view, SIGNAL(directoryLoadingProgress(int)), this, SLOT(updateDirectoryLoadingProgress(int)));
- connect(m_view, SIGNAL(directorySortingProgress(int)), this, SLOT(updateDirectorySortingProgress(int)));
- connect(m_view, SIGNAL(selectionChanged(KFileItemList)), this, SLOT(delayedStatusBarUpdate()));
- connect(m_view, SIGNAL(urlAboutToBeChanged(KUrl)), this, SLOT(slotViewUrlAboutToBeChanged(KUrl)));
- connect(m_view, SIGNAL(errorMessage(QString)), this, SLOT(showErrorMessage(QString)));
- connect(m_view, SIGNAL(urlIsFileError(KUrl)), this, SLOT(slotUrlIsFileError(KUrl)));
-
- connect(m_urlNavigator, SIGNAL(urlAboutToBeChanged(KUrl)),
- this, SLOT(slotUrlNavigatorLocationAboutToBeChanged(KUrl)));
- connect(m_urlNavigator, SIGNAL(urlChanged(KUrl)),
- this, SLOT(slotUrlNavigatorLocationChanged(KUrl)));
- connect(m_urlNavigator, SIGNAL(historyChanged()),
- this, SLOT(slotHistoryChanged()));
- connect(m_urlNavigator, SIGNAL(returnPressed()),
- this, SLOT(slotReturnPressed()));
+ connect(m_view, &DolphinView::urlChanged,
+ m_urlNavigator, &KUrlNavigator::setLocationUrl);
+ connect(m_view, &DolphinView::urlChanged,
+ m_messageWidget, &KMessageWidget::hide);
+ connect(m_view, &DolphinView::writeStateChanged,
+ this, &DolphinViewContainer::writeStateChanged);
+ connect(m_view, &DolphinView::requestItemInfo,
+ this, &DolphinViewContainer::showItemInfo);
+ connect(m_view, &DolphinView::itemActivated,
+ this, &DolphinViewContainer::slotItemActivated);
+ connect(m_view, &DolphinView::itemsActivated,
+ this, &DolphinViewContainer::slotItemsActivated);
+ connect(m_view, &DolphinView::redirection,
+ this, &DolphinViewContainer::redirect);
+ connect(m_view, &DolphinView::directoryLoadingStarted,
+ this, &DolphinViewContainer::slotDirectoryLoadingStarted);
+ connect(m_view, &DolphinView::directoryLoadingCompleted,
+ this, &DolphinViewContainer::slotDirectoryLoadingCompleted);
+ connect(m_view, &DolphinView::directoryLoadingCanceled,
+ this, &DolphinViewContainer::slotDirectoryLoadingCanceled);
+ connect(m_view, &DolphinView::itemCountChanged,
+ this, &DolphinViewContainer::delayedStatusBarUpdate);
+ connect(m_view, &DolphinView::directoryLoadingProgress,
+ this, &DolphinViewContainer::updateDirectoryLoadingProgress);
+ connect(m_view, &DolphinView::directorySortingProgress,
+ this, &DolphinViewContainer::updateDirectorySortingProgress);
+ connect(m_view, &DolphinView::selectionChanged,
+ this, &DolphinViewContainer::delayedStatusBarUpdate);
+ connect(m_view, &DolphinView::errorMessage,
+ this, &DolphinViewContainer::showErrorMessage);
+ connect(m_view, &DolphinView::urlIsFileError,
+ this, &DolphinViewContainer::slotUrlIsFileError);
+ connect(m_view, &DolphinView::activated,
+ this, &DolphinViewContainer::activate);
+
+ connect(m_urlNavigator, &KUrlNavigator::urlAboutToBeChanged,
+ this, &DolphinViewContainer::slotUrlNavigatorLocationAboutToBeChanged);
+ connect(m_urlNavigator, &KUrlNavigator::urlChanged,
+ this, &DolphinViewContainer::slotUrlNavigatorLocationChanged);
+ connect(m_urlNavigator, &KUrlNavigator::urlSelectionRequested,
+ this, &DolphinViewContainer::slotUrlSelectionRequested);
+ connect(m_urlNavigator, &KUrlNavigator::returnPressed,
+ this, &DolphinViewContainer::slotReturnPressed);
+ connect(m_urlNavigator, &KUrlNavigator::urlsDropped, this, [=](const QUrl &destination, QDropEvent *event) {
+#if KIO_VERSION >= QT_VERSION_CHECK(5, 37, 0)
+ m_view->dropUrls(destination, event, m_urlNavigator->dropWidget());
+#else
+ // TODO: remove as soon as we can hard-depend of KF5 >= 5.37
+ m_view->dropUrls(destination, event, m_view);
+#endif
+ });
+
+ connect(m_view, &DolphinView::directoryLoadingCompleted, this, [this]() {
+ m_emptyTrashButton->setVisible(m_view->url().scheme() == QLatin1String("trash"));
+ });
// Initialize status bar
m_statusBar = new DolphinStatusBar(this);
m_statusBar->setUrl(m_view->url());
m_statusBar->setZoomLevel(m_view->zoomLevel());
- connect(m_view, SIGNAL(urlChanged(KUrl)), m_statusBar, SLOT(setUrl(KUrl)));
- connect(m_view, SIGNAL(zoomLevelChanged(int,int)), m_statusBar, SLOT(setZoomLevel(int)));
- connect(m_view, SIGNAL(infoMessage(QString)), m_statusBar, SLOT(setText(QString)));
- connect(m_view, SIGNAL(operationCompletedMessage(QString)), m_statusBar, SLOT(setText(QString)));
- connect(m_statusBar, SIGNAL(stopPressed()), this, SLOT(stopDirectoryLoading()));
- connect(m_statusBar, SIGNAL(zoomLevelChanged(int)), this, SLOT(slotStatusBarZoomLevelChanged(int)));
+ connect(m_view, &DolphinView::urlChanged,
+ m_statusBar, &DolphinStatusBar::setUrl);
+ connect(m_view, &DolphinView::zoomLevelChanged,
+ m_statusBar, &DolphinStatusBar::setZoomLevel);
+ connect(m_view, &DolphinView::infoMessage,
+ m_statusBar, &DolphinStatusBar::setText);
+ connect(m_view, &DolphinView::operationCompletedMessage,
+ m_statusBar, &DolphinStatusBar::setText);
+ connect(m_statusBar, &DolphinStatusBar::stopPressed,
+ this, &DolphinViewContainer::stopDirectoryLoading);
+ connect(m_statusBar, &DolphinStatusBar::zoomLevelChanged,
+ this, &DolphinViewContainer::slotStatusBarZoomLevelChanged);
m_statusBarTimer = new QTimer(this);
m_statusBarTimer->setSingleShot(true);
m_statusBarTimer->setInterval(300);
- connect(m_statusBarTimer, SIGNAL(timeout()), this, SLOT(updateStatusBar()));
+ connect(m_statusBarTimer, &QTimer::timeout, this, &DolphinViewContainer::updateStatusBar);
KIO::FileUndoManager* undoManager = KIO::FileUndoManager::self();
- connect(undoManager, SIGNAL(jobRecordingFinished(CommandType)),
- this, SLOT(delayedStatusBarUpdate()));
+ connect(undoManager, &KIO::FileUndoManager::jobRecordingFinished,
+ this, &DolphinViewContainer::delayedStatusBarUpdate);
// Initialize filter bar
m_filterBar = new FilterBar(this);
m_filterBar->setVisible(settings->filterBar());
- connect(m_filterBar, SIGNAL(filterChanged(QString)),
- this, SLOT(setNameFilter(QString)));
- connect(m_filterBar, SIGNAL(closeRequest()),
- this, SLOT(closeFilterBar()));
- connect(m_filterBar, SIGNAL(focusViewRequest()),
- this, SLOT(requestFocus()));
- connect(m_view, SIGNAL(urlChanged(KUrl)),
- m_filterBar, SLOT(slotUrlChanged()));
-
- m_topLayout->addWidget(m_urlNavigator);
+ connect(m_filterBar, &FilterBar::filterChanged,
+ this, &DolphinViewContainer::setNameFilter);
+ connect(m_filterBar, &FilterBar::closeRequest,
+ this, &DolphinViewContainer::closeFilterBar);
+ connect(m_filterBar, &FilterBar::focusViewRequest,
+ this, &DolphinViewContainer::requestFocus);
+ connect(m_view, &DolphinView::urlChanged,
+ m_filterBar, &FilterBar::slotUrlChanged);
+
+ navigatorLayout->addWidget(m_urlNavigator);
+ navigatorLayout->addWidget(m_emptyTrashButton);
+
+ m_topLayout->addWidget(m_navigatorWidget);
m_topLayout->addWidget(m_searchBox);
m_topLayout->addWidget(m_messageWidget);
m_topLayout->addWidget(m_view);
{
}
-KUrl DolphinViewContainer::url() const
+QUrl DolphinViewContainer::url() const
{
return m_view->url();
}
return m_autoGrabFocus;
}
+QString DolphinViewContainer::currentSearchText() const
+{
+ return m_searchBox->text();
+}
+
const DolphinStatusBar* DolphinViewContainer::statusBar() const
{
return m_statusBar;
const int unwrappedWidth = m_messageWidget->sizeHint().width();
m_messageWidget->setWordWrap(unwrappedWidth > size().width());
+ if (m_messageWidget->isVisible()) {
+ m_messageWidget->hide();
+ }
m_messageWidget->animatedShow();
}
// settings of the URL navigator and the filterbar.
m_urlNavigator->setUrlEditable(GeneralSettings::editableUrl());
m_urlNavigator->setShowFullPath(GeneralSettings::showFullPath());
- m_urlNavigator->setHomeUrl(KUrl(GeneralSettings::homeUrl()));
+ m_urlNavigator->setHomeUrl(Dolphin::homeUrl());
setFilterBarVisible(GeneralSettings::filterBar());
}
}
m_searchBox->setVisible(enabled);
- m_urlNavigator->setVisible(!enabled);
+ m_navigatorWidget->setVisible(!enabled);
if (enabled) {
- KUrl url = m_urlNavigator->locationUrl();
- m_searchBox->setText(QString());
- m_searchBox->setReadOnly(isSearchUrl(url), url);
-
- // Remember the most recent non-search URL as search path
- // of the search-box, so that it can be restored
- // when switching back to the URL navigator.
- int index = m_urlNavigator->historyIndex();
- const int historySize = m_urlNavigator->historySize();
- while (isSearchUrl(url) && (index < historySize)) {
- ++index;
- url = m_urlNavigator->locationUrl(index);
- }
-
- if (!isSearchUrl(url)) {
- m_searchBox->setSearchPath(url);
- }
+ const QUrl& locationUrl = m_urlNavigator->locationUrl();
+ m_searchBox->fromSearchUrl(locationUrl);
} else {
m_view->setViewPropertiesContext(QString());
// Restore the URL for the URL navigator. If Dolphin has been
// started with a search-URL, the home URL is used as fallback.
- const KUrl url = m_searchBox->searchPath();
- if (url.isValid() && !url.isEmpty()) {
- if (isSearchUrl(url)) {
- m_urlNavigator->goHome();
- } else {
- m_urlNavigator->setLocationUrl(url);
- }
+ QUrl url = m_searchBox->searchPath();
+ if (url.isEmpty() || !url.isValid() || isSearchUrl(url)) {
+ url = Dolphin::homeUrl();
}
+ m_urlNavigator->setLocationUrl(url);
}
}
QString text;
if (isSearchModeEnabled()) {
- text = m_searchBox->searchPath().fileName() + QLatin1String(": ") + m_searchBox->text();
+ text = i18n("Search for %1 in %2", m_searchBox->text(), m_searchBox->searchPath().fileName());
} else {
text = url().fileName();
if (text.isEmpty()) {
text = url().host();
}
+ if (text.isEmpty()) {
+ text = url().scheme();
+ }
}
return text;
}
-void DolphinViewContainer::setUrl(const KUrl& newUrl)
+void DolphinViewContainer::reload()
+{
+ view()->reload();
+ m_messageWidget->hide();
+}
+
+void DolphinViewContainer::setUrl(const QUrl& newUrl)
{
if (newUrl != m_urlNavigator->locationUrl()) {
m_urlNavigator->setLocationUrl(newUrl);
- } else if (m_view->itemsCount() == 0) {
- // Maybe a previously unmounted device has been mounted again.
- // Let's reload the view to be safe (see https://bugs.kde.org/show_bug.cgi?id=161385).
- m_view->reload();
}
#ifdef KActivities_FOUND
}
if (isSearchUrl(url()) && m_view->itemsCount() == 0) {
- // The dir lister has been completed on a Nepomuk-URI and no items have been found. Instead
+ // The dir lister has been completed on a Baloo-URI and no items have been found. Instead
// of showing the default status bar information ("0 items") a more helpful information is given:
m_statusBar->setText(i18nc("@info:status", "No items found."));
} else {
m_statusBar->setText(QString());
}
-void DolphinViewContainer::slotUrlIsFileError(const KUrl& url)
+void DolphinViewContainer::slotUrlIsFileError(const QUrl& url)
{
- const KFileItem item(KFileItem::Unknown, KFileItem::Unknown, url);
- slotItemActivated(item);
+ const KFileItem item(url);
+
+ // Find out if the file can be opened in the view (for example, this is the
+ // case if the file is an archive). The mime type must be known for that.
+ item.determineMimeType();
+ const QUrl& folderUrl = DolphinView::openItemAsFolderUrl(item, true);
+ if (!folderUrl.isEmpty()) {
+ setUrl(folderUrl);
+ } else {
+ slotItemActivated(item);
+ }
}
void DolphinViewContainer::slotItemActivated(const KFileItem& item)
// results in an active view.
m_view->setActive(true);
- const KUrl& url = DolphinView::openItemAsFolderUrl(item, GeneralSettings::browseThroughArchives());
+ const QUrl& url = DolphinView::openItemAsFolderUrl(item, GeneralSettings::browseThroughArchives());
if (!url.isEmpty()) {
- m_view->setUrl(url);
+ setUrl(url);
return;
}
- item.run();
+ KRun *run = new KRun(item.targetUrl(), this);
+ run->setShowScriptExecutionPrompt(true);
}
void DolphinViewContainer::slotItemsActivated(const KFileItemList& items)
setActive(true);
}
-void DolphinViewContainer::slotViewUrlAboutToBeChanged(const KUrl& url)
+void DolphinViewContainer::slotUrlNavigatorLocationAboutToBeChanged(const QUrl&)
{
- // URL changes of the view can happen in two ways:
- // 1. The URL navigator gets changed and will trigger the view to update its URL
- // 2. The URL of the view gets changed and will trigger the URL navigator to update
- // its URL (e.g. by clicking on an item)
- // In this scope the view-state may only get saved in case 2:
- if (url != m_urlNavigator->locationUrl()) {
- saveViewState();
- }
+ saveViewState();
}
-void DolphinViewContainer::slotUrlNavigatorLocationAboutToBeChanged(const KUrl& url)
-{
- // URL changes of the view can happen in two ways:
- // 1. The URL navigator gets changed and will trigger the view to update its URL
- // 2. The URL of the view gets changed and will trigger the URL navigator to update
- // its URL (e.g. by clicking on an item)
- // In this scope the view-state may only get saved in case 1:
- if (url != m_view->url()) {
- saveViewState();
- }
-}
-
-void DolphinViewContainer::slotUrlNavigatorLocationChanged(const KUrl& url)
+void DolphinViewContainer::slotUrlNavigatorLocationChanged(const QUrl& url)
{
slotReturnPressed();
if (KProtocolManager::supportsListing(url)) {
setSearchModeEnabled(isSearchUrl(url));
m_view->setUrl(url);
+ tryRestoreViewState();
if (m_autoGrabFocus && isActive() && !isSearchUrl(url)) {
// When an URL has been entered, the view should get the focus.
// The focus must be requested asynchronously, as changing the URL might create
// a new view widget.
- QTimer::singleShot(0, this, SLOT(requestFocus()));
+ QTimer::singleShot(0, this, &DolphinViewContainer::requestFocus);
}
} else if (KProtocolManager::isSourceProtocol(url)) {
- QString app = "konqueror";
- if (url.protocol().startsWith(QLatin1String("http"))) {
+ QString app = QStringLiteral("konqueror");
+ if (url.scheme().startsWith(QLatin1String("http"))) {
showMessage(i18nc("@info:status", // krazy:exclude=qmethods
"Dolphin does not support web pages, the web browser has been launched"),
Information);
- const KConfigGroup config(KSharedConfig::openConfig("kdeglobals"), "General");
+ const KConfigGroup config(KSharedConfig::openConfig(QStringLiteral("kdeglobals")), "General");
const QString browser = config.readEntry("BrowserApplication");
if (!browser.isEmpty()) {
app = browser;
Information);
}
- const QString secureUrl = KShell::quoteArg(url.pathOrUrl());
+ const QString secureUrl = KShell::quoteArg(url.toDisplayString(QUrl::PreferLocalFile));
const QString command = app + ' ' + secureUrl;
KRun::runCommand(command, app, app, this);
} else {
}
}
-void DolphinViewContainer::dropUrls(const KUrl& destination, QDropEvent* event)
+void DolphinViewContainer::slotUrlSelectionRequested(const QUrl& url)
{
- m_dropDestination = destination;
-
- const QMimeData* mimeData = event->mimeData();
- QMimeData* mimeDataCopy = new QMimeData;
- foreach (const QString& format, mimeData->formats()) {
- mimeDataCopy->setData(format, mimeData->data(format));
- }
-
- m_dropEvent.reset(new QDropEvent(event->pos(),
- event->possibleActions(),
- mimeDataCopy,
- event->mouseButtons(),
- event->keyboardModifiers()));
-
- QTimer::singleShot(0, this, SLOT(dropUrlsDelayed()));
-}
-
-void DolphinViewContainer::dropUrlsDelayed()
-{
- if (m_dropEvent.isNull()) {
- return;
- }
-
- QString error;
- DragAndDropHelper::dropUrls(KFileItem(), m_dropDestination, m_dropEvent.data(), error);
- if (!error.isEmpty()) {
- showMessage(error, Error);
- }
-
- delete m_dropEvent->mimeData();
- m_dropEvent.reset();
+ qCDebug(DolphinDebug) << "slotUrlSelectionRequested: " << url;
+ m_view->markUrlsAsSelected({url});
+ m_view->markUrlAsCurrent(url); // makes the item scroll into view
}
-void DolphinViewContainer::redirect(const KUrl& oldUrl, const KUrl& newUrl)
+void DolphinViewContainer::redirect(const QUrl& oldUrl, const QUrl& newUrl)
{
Q_UNUSED(oldUrl);
const bool block = m_urlNavigator->signalsBlocked();
m_view->setFocus();
}
-void DolphinViewContainer::saveUrlCompletionMode(KGlobalSettings::Completion completion)
+void DolphinViewContainer::saveUrlCompletionMode(KCompletion::CompletionMode completion)
{
GeneralSettings::setUrlCompletionMode(completion);
}
-void DolphinViewContainer::slotHistoryChanged()
-{
- QByteArray locationState = m_urlNavigator->locationState();
- if (!locationState.isEmpty()) {
- QDataStream stream(&locationState, QIODevice::ReadOnly);
- m_view->restoreState(stream);
- }
-}
-
void DolphinViewContainer::slotReturnPressed()
{
if (!GeneralSettings::editableUrl()) {
void DolphinViewContainer::startSearching()
{
- const KUrl url = m_searchBox->urlForSearching();
+ const QUrl url = m_searchBox->urlForSearching();
if (url.isValid() && !url.isEmpty()) {
- m_view->setViewPropertiesContext("search");
+ m_view->setViewPropertiesContext(QStringLiteral("search"));
m_urlNavigator->setLocationUrl(url);
}
}
showMessage(msg, Error);
}
-bool DolphinViewContainer::isSearchUrl(const KUrl& url) const
+bool DolphinViewContainer::isSearchUrl(const QUrl& url) const
{
- const QString protocol = url.protocol();
- return protocol.contains("search") || (protocol == QLatin1String("nepomuk"));
+ return url.scheme().contains(QStringLiteral("search"));
}
void DolphinViewContainer::saveViewState()
m_urlNavigator->saveLocationState(locationState);
}
-#include "dolphinviewcontainer.moc"
+void DolphinViewContainer::tryRestoreViewState()
+{
+ QByteArray locationState = m_urlNavigator->locationState();
+ if (!locationState.isEmpty()) {
+ QDataStream stream(&locationState, QIODevice::ReadOnly);
+ m_view->restoreState(stream);
+ }
+}