#include <kiconeffect.h>
#include <kio/netaccess.h>
#include <kio/previewjob.h>
+#include <kmenu.h>
#include <kmimetyperesolver.h>
+#include <knewmenu.h>
#include <konqmimedata.h>
+#include <konq_fileitemcapabilities.h>
#include <konq_operations.h>
#include <kurl.h>
#include "dolphinmodel.h"
#include "dolphincolumnview.h"
#include "dolphincontroller.h"
+#include "dolphindropcontroller.h"
#include "dolphinstatusbar.h"
#include "dolphinmainwindow.h"
#include "dolphindirlister.h"
m_topLayout->setMargin(0);
m_urlNavigator = new KUrlNavigator(DolphinSettings::instance().placesModel(), url, this);
- connect(m_urlNavigator, SIGNAL(urlsDropped(const KUrl::List&, const KUrl&)),
- m_mainWindow, SLOT(dropUrls(const KUrl::List&, const KUrl&)));
+ connect(m_urlNavigator, SIGNAL(urlsDropped(const KUrl&, QDropEvent*)),
+ this, SLOT(dropUrls(const KUrl&, QDropEvent*)));
connect(m_urlNavigator, SIGNAL(activated()),
this, SLOT(activate()));
const GeneralSettings* settings = DolphinSettings::instance().generalSettings();
m_urlNavigator->setUrlEditable(settings->editableUrl());
+ m_urlNavigator->setShowFullPath(settings->showFullPath());
m_urlNavigator->setHomeUrl(settings->homeUrl());
m_dirLister = new DolphinDirLister();
connect(m_urlNavigator, SIGNAL(urlChanged(const KUrl&)),
this, SLOT(restoreView(const KUrl&)));
- m_statusBar = new DolphinStatusBar(this, url);
- connect(m_view, SIGNAL(urlChanged(const KUrl&)),
- m_statusBar, SLOT(updateSpaceInfoContent(const KUrl&)));
+ m_statusBar = new DolphinStatusBar(this, m_view);
m_filterBar = new FilterBar(this);
m_filterBar->setVisible(settings->filterBar());
void DolphinViewContainer::setUrl(const KUrl& newUrl)
{
m_urlNavigator->setUrl(newUrl);
+
+ // Temporary disable the 'File'->'Create New...' menu until
+ // the write permissions can be checked in a fast way at
+ // DolphinViewContainer::slotDirListerCompleted().
+ m_mainWindow->newMenu()->menu()->setEnabled(false);
}
const KUrl& DolphinViewContainer::url() const
return m_view->isActive();
}
+void DolphinViewContainer::refresh()
+{
+ m_view->refresh();
+ m_statusBar->refresh();
+}
+
bool DolphinViewContainer::isFilterBarVisible() const
{
return m_filterBar->isVisible();
updateStatusBar();
QTimer::singleShot(100, this, SLOT(restoreContentsPos()));
+
+ // Enable the 'File'->'Create New...' menu only if the directory
+ // supports writing.
+ KMenu* createNew = m_mainWindow->newMenu()->menu();
+ KFileItem item = m_dirLister->rootItem();
+ if (item.isNull()) {
+ // it is unclear whether writing is supported
+ createNew->setEnabled(true);
+ } else {
+ KonqFileItemCapabilities capabilities(KFileItemList() << item);
+ createNew->setEnabled(capabilities.supportsWriting());
+ }
}
void DolphinViewContainer::showItemInfo(const KFileItem& item)
void DolphinViewContainer::closeFilterBar()
{
m_filterBar->hide();
+ m_filterBar->clear();
emit showFilterBarChanged(false);
}
-QString DolphinViewContainer::defaultStatusBarText() const
-{
- int folderCount = 0;
- int fileCount = 0;
- m_view->calculateItemCount(fileCount, folderCount);
- return KIO::itemsSummaryString(fileCount + folderCount,
- fileCount,
- folderCount,
- 0, false);
-}
-
-QString DolphinViewContainer::selectionStatusBarText() const
-{
- QString text;
- const KFileItemList list = m_view->selectedItems();
- if (list.isEmpty()) {
- // when an item is triggered, it is temporary selected but selectedItems()
- // will return an empty list
- return QString();
- }
-
- int fileCount = 0;
- int folderCount = 0;
- KIO::filesize_t byteSize = 0;
- KFileItemList::const_iterator it = list.begin();
- const KFileItemList::const_iterator end = list.end();
- while (it != end) {
- const KFileItem& item = *it;
- if (item.isDir()) {
- ++folderCount;
- } else {
- ++fileCount;
- byteSize += item.size();
- }
- ++it;
- }
-
- if (folderCount > 0) {
- text = i18ncp("@info:status", "1 Folder selected", "%1 Folders selected", folderCount);
- if (fileCount > 0) {
- text += ", ";
- }
- }
-
- if (fileCount > 0) {
- const QString sizeText(KIO::convertSize(byteSize));
- text += i18ncp("@info:status", "1 File selected (%2)", "%1 Files selected (%2)", fileCount, sizeText);
- }
-
- return text;
-}
-
void DolphinViewContainer::showFilterBar(bool show)
{
Q_ASSERT(m_filterBar != 0);
(m_statusBar->type() == DolphinStatusBar::Information)) &&
(m_statusBar->progress() == 100);
- const QString text(m_view->hasSelection() ? selectionStatusBarText() : defaultStatusBarText());
+ const QString text(m_view->statusBarText());
m_statusBar->setDefaultText(text);
if (updateStatusBarMsg) {
void DolphinViewContainer::restoreView(const KUrl& url)
{
- m_view->updateView(url, m_urlNavigator->savedRootUrl());
+ if (KProtocolManager::supportsListing(url)) {
+ m_view->updateView(url, m_urlNavigator->savedRootUrl());
+ } else {
+ // The URL navigator only checks for validity, not
+ // if the URL can be listed.
+ showErrorMessage(i18nc("@info:status", "Protocol not supported"));
+ }
}
void DolphinViewContainer::saveRootUrl(const KUrl& url)
m_urlNavigator->saveRootUrl(m_view->rootUrl());
}
+void DolphinViewContainer::dropUrls(const KUrl& destination, QDropEvent* event)
+{
+ DolphinDropController::dropUrls(KFileItem(), destination, event, this);
+}
+
void DolphinViewContainer::slotItemTriggered(const KFileItem& item)
{
KUrl url = item.targetUrl();