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(directoryLoadingCompleted()), 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(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_view, SIGNAL(activated()), this, SLOT(activate()));
connect(m_urlNavigator, SIGNAL(urlAboutToBeChanged(KUrl)),
this, SLOT(slotUrlNavigatorLocationAboutToBeChanged(KUrl)));
const int unwrappedWidth = m_messageWidget->sizeHint().width();
m_messageWidget->setWordWrap(unwrappedWidth > size().width());
+ if (m_messageWidget->isVisible()) {
+ m_messageWidget->hide();
+ }
m_messageWidget->animatedShow();
}
m_urlNavigator->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 KUrl& 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);
- }
+ KUrl url = m_searchBox->searchPath();
+ if (url.isEmpty() || !url.isValid() || isSearchUrl(url)) {
+ url = GeneralSettings::self()->homeUrl();
}
+ m_urlNavigator->setLocationUrl(url);
}
}
void DolphinViewContainer::slotUrlIsFileError(const KUrl& url)
{
const KFileItem item(KFileItem::Unknown, KFileItem::Unknown, url);
- slotItemActivated(item);
+
+ // 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 KUrl& folderUrl = DolphinView::openItemAsFolderUrl(item, true);
+ if (!folderUrl.isEmpty()) {
+ m_view->setUrl(folderUrl);
+ } else {
+ slotItemActivated(item);
+ }
}
void DolphinViewContainer::slotItemActivated(const KFileItem& item)